src/hdl_graph_slam/registration.cpp :
初始化匹配对象,提供可供选择的点云匹配方法(ICP,GICP,NDT)。
apps/prefiltering_nodelet.cpp :
接收名为 “velodyne_points” 的点云消息,降采样之后再以 “filtered_points” 的消息发布出去。
降采样方法包括: pcl::VoxelGrid,pcl::ApproximateVoxelGrid,NONE(不降采样)三种方式可选。
apps/scan_matching_odometry_nodelet.cpp :
根据选择的匹配方法,获取相应的对象,接收 “filtered_points” 点云 —> ScanMatchingOdometryNodelet::cloud_callback —> Eigen::Matrix4f pose = matching(stamp, cloud);
在 matching 方法中:
根据选择的点云匹配方法,将当前帧与关键帧进行匹配,得到相对位姿,通过相对位姿拼接,得到全局的 odom,将其发布出去,并作为函数值返回。(是点云SLAM前端配准过程)
关于这里关键帧的选取,if(delta_trans > 0.25 || delta_angle > 0.15 || delta_time > 1.0) 则更新关键帧,这三个阈值可在参数中设置。
apps/floor_detection_nodelet.cpp :
接收 “filtered_points” 点云 —> FloorDetectionNodelet::cloud_callback —> boost::optionalEigen::Vect