Insert ray from laser scan observation
inserts one or more lidar scan sensor observations in the occupancy grid,
map, using the input
scan, to get ray endpoints.
The ray endpoints are considered free space if the input scan ranges are below
maxrange. Cells observed as occupied are updated with
an observation of 0.7. All other points along the ray are treated as obstacle
free and updated with an observation of 0.4. Endpoints above
maxrange are not updated.
are ignored. This behavior correlates to the inverse sensor model.
inserts rays with updated probabilities given in the two-element vector,
invModel, that corresponds to obstacle-free and
occupied observations. Use any of the previous syntaxes to input the
Insert Laser Scans into Occupancy Map
Create an empty occupancy grid map.
map = occupancyMap(10,10,20);
Specify the pose of the vehicle, ranges, angles, and the maximum range of the laser scan.
pose = [5,5,0]; ranges = 3*ones(100,1); angles = linspace(-pi/2,pi/2,100); maxrange = 20;
lidarScan object with the specified ranges and angles.
scan = lidarScan(ranges,angles);
Insert the laser scan data into the occupancy map.
Show the map to see the results of inserting the laser scan.
Check the occupancy of the spot directly in front of the vehicle.
ans = 0.7000
Add a second reading and view the update to the occupancy values. The additional reading increases the confidence in the readings. The free and occupied values become more distinct.
ans = 0.8448
map — Map representation
Map representation, specified as a
occupancyMap object. This object
represents the environment of the vehicle. The object contains a matrix grid
with values representing the probability of the occupancy of that cell.
Values close to 1 represent a high probability that the cell contains an
obstacle. Values close to 0 represent a high probability that the cell is
not occupied and obstacle free.
pose — Position and orientation of vehicle
Position and orientation of vehicle, specified as an
theta] vector. The vehicle pose is an
x and y position with angular
orientation theta (in radians) measured from the
ranges — Range values from scan data
Range values from scan data, specified as a vector of elements measured in
meters. These range values are distances from a sensor at given
angles. The vector must be the same length as the
angles — Angle values from scan data
Angle values from scan data, specified as a vector of elements measured in
radians. These angle values correspond to the given
ranges. The vector must be the same length as the
maxrange — Maximum range of sensor
Maximum range of laser range sensor, specified as a scalar in meters.
Range values greater than or equal to
considered free along the whole length of the ray, up to
startpt — Start point for rays
Start point for rays, specified as a two-element vector,
y], in the world coordinate frame. All rays
are line segments that originate at this point.
invModel — Inverse sensor model values
Inverse sensor model values, specified as a two-element vector
corresponding to obstacle-free and occupied probabilities. Points along the
ray are updated according to the inverse sensor model and the specified
NaN range values are ignored. Range
values greater than
maxrange are not updated. See Inverse Sensor Model.
Inverse Sensor Model
The inverse sensor model determines how
values are set along a ray from a range sensor reading to the obstacles in the map.
You can customize this model by specifying different probabilities for free and
occupied locations in the
NaN range values are ignored. Range values greater than
maxrange are not updated.
Grid locations that contain range readings are updated with the occupied probability. Locations before the reading are updated with the free probability. All locations after the reading are not updated.
Introduced in R2019b