hdl_graph_slam 源码阅读笔记

这篇博客详细解读了hdl_graph_slam的源码,涉及点云匹配方法如ICP、GICP、NDT在registration.cpp中的应用。在prefiltering_nodelet.cpp中,介绍了点云降采样处理。scan_matching_odometry_nodelet.cpp通过选择的匹配方法获取相对位姿,用于构建全局odom。floor_detection_nodelet.cpp则实现了地面检测功能。hdl_graph_slam_nodelet.cpp将这些组件整合,通过flush_floor_queue()、map_points_publish_timer_callback()和optimization_timer_callback()进行关键帧存储、地图生成和图优化。同时,介绍了loop_detector.hpp中闭环检测的候选帧挑选与匹配过程。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值