hdl_graph_slam源码分析(4)——SLAM建图

写在前面

四个nodelet,这已经是最后一个了,代码约1000行,包含的内容也是最多的。

4. SLAM建图

在hdl_graph_slam_nodelet.cpp里定义了继承自Nodelet的HdlGraphSlamNodelet类。同样的,也需要实现onInit和cloud_callback。

4.1 onInit()

比起前几个,多定义了一个mt_nh = getMTNodeHandle(),这是个多线程句柄。
参数初始化:
帧id;地图分辨率;最大关键帧更新量;unique_ptr(生产者和订阅者)的reset,stddev的赋值.

sync.reset(new message_fliters::TimeSynchrizer<nav_msgs::Odometry,sensor_msgs::PointCloud2>(*odom_sub,*cloud_sub,32));
sync->registerCallback(boost::bind(&HdlGraohSlamNodelet::cloud_callback,this,_1,_2));
sync是一个最多支持九个传感器的时间同步器,当odom_sub和cloud_sub的Header里的时间戳一致,则触发cloud_callback,bind里的_1和_2是占位符。
给定graph更新间隔;给定map_cloud更新间隔;

subscribers:

`hdl_graph_slam` 是一个用于2D激光雷达(LIDAR)数据的实时同步定位与建图SLAM)的ROS(机器人操作系统)包。它支持基于图优化的后端,可以利用ROS中的GPS信息进行定位。创建一个完整的`launch`文件用于启动`hdl_graph_slam`以及集成GPS信息,需要按照特定的格式来配置ROS节点和参数。 下面是一个简单的示例`launch`文件,它包含启动`hdl_graph_slam`节点和GPS转换节点所需的基本配置。请注意,你需要根据实际情况调整参数和节点名称。 ```xml <launch> <!-- 启动 hdl_graph_slam 节点 --> <node pkg="hdl_graph_slam" type="hdl_graph_slam" name="hdl_graph_slam" output="screen"> <param name="use_imu" value="false" /> <param name="use_scan_context" value="false" /> <param name="use_gnss" value="true" /> <!-- GPS参数配置 --> <param name="gnss_topic" value="/gps/fix" /> <param name="gnss_frame_id" value="gps" /> <param name="map_frame_id" value="map" /> <param name="base_frame_id" value="base_footprint" /> <!-- 其他参数根据需要进行配置 --> </node> <!-- 启动 GPS 到地图坐标系转换的节点 --> <node pkg="gps_tools" type="gps_transform_node" name="gps_transform_node" output="screen"> <param name="use_gnss_time" value="true" /> <param name="use_gnss_statistics" value="false" /> <param name="use_utm" value="true" /> <param name="use_localENU" value="false" /> <param name="useENU" value="false" /> <!-- GPS转换节点参数 --> <remap from="/gps/filtered" to="/gps/fix" /> <param name="local_frame_id" value="gps" /> <param name="base_frame_id" value="base_footprint" /> <param name="map_frame_id" value="map" /> <!-- 其他参数根据需要进行配置 --> </node> <!-- 这里可以添加其他需要的节点和参数配置 --> </launch> ``` 请注意,这个`launch`文件只是一个模板,具体的参数值需要根据你的系统配置和需求进行调整。例如,GPS话题`/gps/fix`需要对应你的GPS话题名称,同时其他参数如地图和基础框架的ID也需要与你的ROS设置相匹配。 在使用这个`launch`文件之前,确保你已经安装了`hdl_graph_slam`包以及`gps_tools`包,且这些包的依赖项都已正确配置。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值