root / trunk / code / projects / mapping / matlab / model_sensor.m @ 1211
History | View | Annotate | Download (1.28 KB)
1 |
function [sensor_model, udata, vdata] = model_sensor |
---|---|
2 |
|
3 |
%Definitions: |
4 |
sensor_model_width = 25; |
5 |
sensor_model_height = 100; |
6 |
sensor_bounds_x = 85; %cm |
7 |
sensor_bounds_y = 15; %cm |
8 |
sensor_width = 10; %cm |
9 |
empty_weight = 0.4; |
10 |
wall_weight = 2.0; |
11 |
outside_weight = 1; |
12 |
|
13 |
%Space creation: |
14 |
Sx = linspace(0, sensor_bounds_x, sensor_model_width); |
15 |
Sy = linspace(-sensor_bounds_y, sensor_bounds_y, sensor_model_height); |
16 |
sensor_model = zeros(size(Sx,1), size(Sy,1), 71); |
17 |
|
18 |
%k ranges over distances (cm) |
19 |
for k=10:80 |
20 |
for j = 1:sensor_model_height; |
21 |
for i = 1:sensor_model_width; |
22 |
slope = double(k) / double(sensor_width); |
23 |
if abs(Sy(j)) < (Sx(i) / slope) && Sx(i) < (k - 2) |
24 |
sensor_model(j,i,k) = empty_weight; |
25 |
elseif abs(Sy(j)) < (Sx(i) / slope) && Sx(i) < (k + 2) |
26 |
sensor_model(j,i,k) = wall_weight; |
27 |
else |
28 |
sensor_model(j,i,k) = outside_weight; |
29 |
end |
30 |
end |
31 |
end |
32 |
map(k,1,1) = 100.0; |
33 |
end |
34 |
|
35 |
%Define the sensor model for when no measurement is made (-1) |
36 |
slope = 80 / sensor_width; |
37 |
for j = 1:sensor_model_height; |
38 |
for i = 1:sensor_model_width; |
39 |
if abs(Sy(j)) < Sx(i) / slope && Sx(i) < 80 && Sx(i) > 0 |
40 |
sensor_model(j,i,71) = empty_weight; |
41 |
else |
42 |
sensor_model(j,i,71) = outside_weight; |
43 |
end |
44 |
end |
45 |
end |
46 |
|
47 |
image(sensor_model(:,:,70).*20); |
48 |
|
49 |
udata = [0, 2] * sensor_bounds_x; |
50 |
vdata = [-1, 1] * sensor_bounds_y; |