Lidar2DMatchScansGrid
- class quanser.image_processing.lidar_match_scans.Lidar2DMatchScansGrid(resolution=20.0, max_range=5.0)
A Python wrapper for the Quanser LIDAR 2D Match Scans Grid API.
- Parameters
resolution (float) – The resolution.
max_range (float) – The maximum range.
- Raises
ImageProcessingError – On non-zero return code. A suitable error message may be retrieved using get_error_message.
Examples
Construct a new 2D LIDAR scan matcher.
>>> from quanser.image_processing import Lidar2DMatchScanGrid >>> lidar2d_match_scan = Lidar2DMatchScanGrid() >>> # ... ... >>> lidar2d_match_scan.close()
- close()
Closes the 2D LIDAR scan matcher and frees up resources allocated by the matcher. Scan matching can consume a significant amount of memory and system resources.
- Raises
ImageProcessingError – On non-zero return code. A suitable error message may be retrieved using get_error_message.
Example
Close the 2D LIDAR scan matcher.
>>> from quanser.image_processing import Lidar2DMatchScanGrid >>> resolution = 13.0 >>> max_range = 8.0 >>> lidar2d_match_scan = Lidar2DMatchScanGrid() >>> lidar2d_match_scan.open(resolution, max_range) >>> # ... ... >>> lidar2d_match_scan.close()
- match(ref_ranges, ref_angles, num_ref_points, ranges, angles, num_points, initial_pose, translation_search_range, rotation_search_range, pose, score, covariance)
Match the current scan to the reference scan, returning the pose of the current scan relative to the reference scan. If the score and/or covariance outputs are non-NULL then it will return the confidence in the match as a scalar score and/or 3x3 covariance matrix. For the fastest results, an initial pose may be specified, that may be derived from IMU data, for instance. In that case, if a translation search range and/or rotation search range is indicated then it will limit the search to those ranges.
If the translation_search_range is NULL then values of 4 meters will be used. If the rotation_search_range is zero then a search range of 2*PI will be used.
- Parameters
ref_ranges (array_like) – A vector of range values for the reference scan.
ref_angles (array_like) – A vector of angles or heading values for the reference scan.
num_ref_points (int) – The number of valid points in reference scan as specified in the “ref_ranges” and “ref_angles” array.
ranges (array_like) – A vector of range values for the current scan.
angles (array_like) – A vector of angle or heading values for the current scan.
num_points (int) – The number of valid points in the current scan.
initial_pose (array_like) – The initial pose as a 3-vector at which to start the grid search. The “translation_search_range” and “rotation_search_range” are relative to this initial pose. The pose consists of the elements [x, y, theta] where x and y denote the translation in meters and theta denotes the rotation in radians.
translation_search_range (array_like) – The translation search range as a 2-vector [x,y] indicating the cartesian search range in meters.
rotation_search_range (float) – The rotation search range as a scalar indicating the angular search range in radians.
pose (array_like) – The pose as a 3-vector [x,y,theta] representing the transformation between the current scan and the reference scan. The (x,y) components are the translation and the theta component is the rotation.
score (array_like) – A score representing the confidence in the match. Higher values denote higher confidence. The value is not normalized so it is highly dependent on the input scans and block parameters.
covariance (array_like) – A 3x3 matrix representing an estimate of the covariance of the result. This output is currently set to zero but may be added in future revisions.
- Raises
ImageProcessingError – On non-zero return code. A suitable error message may be retrieved using get_error_message.
Example
Read the 2D LIDAR scan matcher.
>>> from quanser.image_processing import Lidar2DMatchScanGrid >>> resolution = 13.0 >>> max_range = 8.0 >>> lidar2d_match_scan = Lidar2DMatchScanGrid() >>> lidar2d_match_scan.open(resolution, max_range) >>> # ... ...#TODO: <to be filled in> >>> lidar2d_match_scan.close()
- open(max_range)
Opens a 2D LIDAR scan matcher.
- Parameters
resolution (float) – The resolution.
max_range (float) – The maximum range.
- Raises
ImageProcessingError – On non-zero return code. A suitable error message may be retrieved using get_error_message.
Examples
Open the 2D LIDAR scan matcher with 13 grid cells per meter and any LIDAR scan data beyond 8 metre to be discarded.
>>> from quanser.image_processing import Lidar2DMatchScanGrid >>> resolution = 13.0 >>> max_range = 8.0 >>> lidar2d_match_scan = Lidar2DMatchScanGrid() >>> lidar2d_match_scan.open(resolution, max_range) >>> # ... ... >>> lidar2d_match_scan.close()