Skip to content

ndt_scan_matcher#

Purpose#

ndt_scan_matcher is a package for position estimation using the NDT scan matching method.

There are two main functions in this package:

  • estimate position by scan matching
  • estimate initial position via the ROS service using the Monte Carlo method

Inputs / Outputs#

Input#

Name Type Description
ekf_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped initial pose
pointcloud_map sensor_msgs::msg::PointCloud2 map pointcloud
points_raw sensor_msgs::msg::PointCloud2 sensor pointcloud

Output#

Name Type Description
ndt_pose geometry_msgs::msg::PoseStamped estimated pose
ndt_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped estimated pose with covariance
/diagnostics diagnostic_msgs::msg::DiagnosticArray diagnostics
points_aligned sensor_msgs::msg::PointCloud2 [debug topic] pointcloud aligned by scan matching
initial_pose_with_covariance geometry_msgs::msg::PoseWithCovarianceStamped [debug topic] initial pose used in scan matching
exe_time_ms tier4_debug_msgs::msg::Float32Stamped [debug topic] execution time for scan matching [ms]
transform_probability tier4_debug_msgs::msg::Float32Stamped [debug topic] score of scan matching
iteration_num tier4_debug_msgs::msg::Int32Stamped [debug topic] number of scan matching iterations
initial_to_result_distance tier4_debug_msgs::msg::Float32Stamped [debug topic] distance difference between the initial point and the convergence point [m]
initial_to_result_distance_old tier4_debug_msgs::msg::Float32Stamped [debug topic] distance difference between the older of the two initial points used in linear interpolation and the convergence point [m]
initial_to_result_distance_new tier4_debug_msgs::msg::Float32Stamped [debug topic] distance difference between the newer of the two initial points used in linear interpolation and the convergence point [m]
ndt_marker visualization_msgs::msg::MarkerArray [debug topic] markers for debugging
monte_carlo_initial_pose_marker visualization_msgs::msg::MarkerArray [debug topic] particles used in initial position estimation

Service#

Name Type Description
ndt_align_srv autoware_localization_srvs::srv::PoseWithCovarianceStamped service to estimate initial pose

Parameters#

Core Parameters#

Name Type Description
base_frame string Vehicle reference frame
input_sensor_points_queue_size int Subscriber queue size
ndt_implement_type int NDT implementation type (0=PCL_GENERIC, 1=PCL_MODIFIED, 2=OMP)
trans_epsilon double The maximum difference between two consecutive transformations in order to consider convergence
step_size double The newton line search maximum step length
resolution double The ND voxel grid resolution [m]
max_iterations int The number of iterations required to calculate alignment
converged_param_transform_probability double Threshold for deciding whether to trust the estimation result
omp_neighborhood_search_method int neighborhood search method in OMP (0=KDTREE, 1=DIRECT26, 2=DIRECT7, 3=DIRECT1)
omp_num_threads int Number of threads used for parallel computing
Back to top