Register two pointclouds based on icp like registration technique.
-
~input
(sensor_msgs/PointCloud2
)Target pointcloud.
-
~input/camera_info
(sensor_msgs/CameraInfo
)Camera info. This topic is always subscribed but needed only when
~correspondence_algorithm
==Projective (1)
. -
~input_reference
(sensor_msgs/PointCloud2
)Reference pointcloud. frame_id of this pointlcoud is ignored.
This topic is subscribed only when
~synchronize_reference
is false. Only one of~input_reference
and~input_reference_array
can be used. -
~input_reference_array
(jsk_recognition_msgs/PointsArray
)Array of reference pointcloud.
ICPRegistration
uses the reference which provides the best fitting score.This topic is subscribed only when
~synchronize_reference
is false. Only one of~input_reference
and~input_reference_array
can be used. -
~input_reference_add
(sensor_msgs/PointCloud2
)Reference pointcloud in addition to
~input_reference
or~input_reference_array
.This topic is subscribed only when
~synchronize_reference
is false. -
~input_box
(jsk_recognition_msgs/BoundingBox
)Bounding box to align pointcloud with.
This topic is subscribed only when
~synchronize_reference
is false and~align_box
is true. -
~input_offset
(geometry_msgs/PoseStamped
)Offset of pose.
It will only be subscribed if
~synchronize_reference
is false and~align_box
is false and~use_offset_pose
is true. -
~reference
(sensor_msgs/PointCloud2
)Reference pointcloud.
This topic is subscribed only when
~synchronize_reference
is true.
-
~output
(sensor_msgs/PointCloud2
)Reference pointcloud aligned with target pointcloud.
-
~output_pose
(geometry_msgs/PoseStamped
)Result pose of alignment.
-
~debug/source
(sensor_msgs/PointCloud2
) -
~debug/target
(sensor_msgs/PointCloud2
) -
~debug/result
(sensor_msgs/PointCloud2
)Pointcloud for debugging.
-
~debug/flipped
(sensor_msgs/PointCloud2
)This topic is advertised but not published for now.
-
~icp_result
(jsk_recognition_msgs/ICPResult
)Result pose of alignment with score and ID of best fitted reference pointcloud.
-
~output/latest_time
(std_msgs/Float32
)latest computation time
-
~output/average_time
(std_msgs/Float32
)average computation time
-
~icp_align
(jsk_recognition_msgs/ICPAlign
)Service API of registration using target and reference pointcloud.
-
~icp_service
(jsk_recognition_msgs/ICPAlignWithBox
)Service API of registration using target pointcloud and bounding box.
Reference pointcloud should be stored in advance from
~input_reference
,~input_reference_array
or~input_reference_add
.
-
~synchronize_reference
(Bool, default:false
)If true,
~input
and~reference
will be subscribed with synchronization.If false, parameter
~align_box
and~use_offset_pose
are enabled. Also,~input_reference
,~input_reference_array
and~input_reference_add
will be subscribed separately. -
~align_box
(Bool, default:false
)If true,
~input
and~input_box
will be subscribed with synchronization. -
~use_offset_pose
(Bool, default:false
)If
~align_box
is false and~use_offset_pose
is true,~input
and~input_offset
will be subscribed with synchronization.If both of
~align_box
and~use_offset_pose
are false,~input
will be subscribed.
-
~use_normal
(Bool, default:false
)Use normal information in registration. In order to use this feature, reference and target pointcloud should have valid normal fields.
-
~transform_3dof
(Bool, default:false
)Add constraint to transform estimation on 3D (1D rotation + 2D translation) from header frame of input cloud. See
TfTransformCloud
to change header frame of point cloud.
Parameters below can be changed by dynamic_reconfigure
.
-
~algorithm
(Int, default:0
)Should be one of
ICP (0)
,GICP (1)
orNDT (2)
. -
~correspondence_algorithm
(Int, default:0
)Should be one of
NN (0)
orProjective (1)
. -
~max_iteration
(Int, default:100
)Maximum iterations of ICP alignment.
-
~correspondence_distance
(Float, default:10
)Maximum correspondence distance in meters.
-
~transform_epsilon
(Float, default:1e-9
)Maximum allowable difference between two consecutive transformations for an optimization to be considered as having converged to the final solution.
-
~euclidean_fittness_epsilon
(Float, default:0.01
)Maximum allowed Euclidean error between two consecutive steps in the ICP loop, before the algorithm is considered to have converged.
-
~ransac_iterations
(Int, default:1000
)Number of iterations RANSAC should run for.
-
~ransac_outlier_threshold
(Float, default:0.05
)Outlier distance threshold for the internal RANSAC outlier rejection loop.
-
~rotation_epsilon
(Float, default:2e-3
)Maximum allowable difference between two consecutive rotations for an optimization to be considered as having converged to the final solution.
This parameter is used only when
~algorithm
isGICP (1)
. -
~correspondence_randomness
(Int, default:20
)Number of neighbors used when selecting a point neighborhood to compute covariances.
This parameter is used only when
~algorithm
isGICP (1)
. -
~maximum_optimizer_iterations
(Int, default:20
)Maximum number of iterations at the optimization step.
This parameter is used only when
~algorithm
isGICP (1)
. -
~ndt_resolution
(Float, default:1.0
) -
~ndt_step_size
(Float, default:0.05
) -
~ndt_outlier_ratio
(Float, default:0.35
)These parameters are not used for now.
-
~use_flipped_initial_pose
(Bool, default:true
)Whether to consider flipped initial pose.
roslaunch jsk_pcl_ros sample_icp_registration.launch