Project

General

Profile

Statistics
| Revision:

root / trunk / code / projects / mapping / matlab / model_sensor.m @ 1606

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;