Main Content

rayIntersection

Find intersection points of rays and occupied map cells

Description

[intersectionPts,isOccupied] = rayIntersection(map3D,sensorPose,directions,maxrange) returns intersection points of rays in the specified map, map3D. Rays emanate from the specified sensorPose at the given orientations, directions. Intersection points are returned in the world coordinate frame. Use isOccupied to determine if the intersection point is at the sensor max range or if it intersects an obstacle.

[intersectionPts,isOccupied] = rayIntersection(map3D,sensorPose,directions,maxrange,ignoreUnknown)additionally accepts optional arguments for the sensors max range and whether to ignore unknown values. By default, the rays extend to the map boundary and unknown values are ignored.

Input Arguments

collapse all

3-D occupancy map, specified as a occupancyMap3D object.

Position and orientation of sensor, specified as an [x y z qw qx qy qz] vector. The vehicle pose is an xyz-position vector with a quaternion orientation vector specified as [qw qx qy qz].

Orientation of rays emanating from the sensor relative to the sensor coordinate frame, specified as an n-by-3 [dx dy dz] matrix or n-by-2 [az el] matrix.

  • [dx dy dz] is a directional vector in xyz-coordinates.

  • [az el] is a vector with azimuth angle, az, measured from the positive x direction to the positive y direction, and elevation angle from the xy-plane to the positive z-direction in sensor coordinate frame.

Maximum range of laser range sensor, specified as a scalar in meters. Range values greater than or equal to maxrange are considered free along the whole length of the ray, up to maxrange.

Interpret unknown values in the map as free or occupied specified as 1 or 0. Set this value to 0 to assume unknown values are occupied.

Output Arguments

collapse all

Intersection points, returned as n-by-3 matrix of [x y z] points in the world frame, where n is the length of directions.

Occupancy status of ray end points, returned as a vector of zeroes and ones. Use isOccupied to determine if the intersection point is at the sensor max range or if it intersects an obstacle.

Introduced in R2020a