使用Mid360进行FAST_LIO建图,并使用Octomap在线转栅格地图

在之前的教程中,我们已经成功的安装了激光雷达驱动,成功复现了FAST_LIO,并使用OCtomap将点云地图转为栅格地图。

但是之前我们是建图生成了.PCD文件后,读取pcd文件进行离线octomap转栅格地图,这样在实际的场景中并不完全适用,所以现在我需要改成在线的方式,也就是:一边进行同步定位与建图,一边将其转为栅格地图。

一、确保激光雷达能够使用

传送门:Mid-360 快速配置指南 | JiaFan's Blog

二、确保建图能够使用

传送门:https://github.com/66Lau/NEXTE_Sentry_Nav/tree/main?tab=readme-ov-file

 三、确保安装octomap源码

注意,是源码!好多教程都是不能修改源码的

传送门:octomap(3):搭建一个完整的octomap建图工作空间-CSDN博客

以上如果有问题可以去看我前面的教程!

 四、修改octpomap源码,使其可以在线建栅格图

这个修改十分的简单,因为我们只需要对齐输入和坐标系。

先理清一下思路:我想使用建图后配准的点云输入octomap,转为栅格地图。

那么只需要找到建图后配准的点云在哪个话题发布?使用的坐标系是什么?找清楚这两个就可以了。

直接用rqt_graph查看建图的话题,发现是/cloud_registered输出了配准后的点云,那就让octomap订阅这个点云话题。

先来看看源码中的launch文件octomap_mapping.launch

<!-- 
  Example launch file for octomap_server mapping: 
  Listens to incoming PointCloud2 data and incrementally builds an octomap. 
  The data is sent out in different representations. 

  Copy this file into your workspace and adjust as needed, see
  www.ros.org/wiki/octomap_server for details  
-->
<launch>
<!-- 启动octomap_server节点 -->
	<node pkg="octomap_server" type="octomap_server_node" name="octomap_server">
		<!-- 设置分辨率参数,表示八叉树中每个体素的大小 -->
		<param name="resolution" value="0.05" />
		
		<!-- fixed map frame (set to 'map' if SLAM or localization running!) -->
			<!-- 固定的地图坐标系 -->
#此处我已经对坐标系做了修改,将原来的"odom_combined"修改为"camera_init",和建图一个坐标系
		<param name="frame_id" type="string" value="camera_init" />
		<!--param name="frame_id" type="string" value="odom_combined" />-->
		<!--param name="frame_id" type="string" value="livox_frame" />-->

		<!-- maximum range to integrate (speedup!) -->
		<!-- 最大传感器整合范围,超过此范围的数据将被忽略,以提高处理速度 -->
		<param name="sensor_model/max_range" value="5.0" />
		
		
		<!-- data source to integrate (PointCloud2) -->
		<!-- 数据源重映射,将输入数据源从cloud_in重映射到/narrow_stereo/points_filtered2 -->
#此处我已经对输入话题进行了修改,将原来的"/narrow_stereo/points_filtered2" 修改为“/cloud_registered”
		<!--remap from="cloud_in" to="/livox/lidar" />-->
	     <!--remap from="cloud_in" to="/narrow_stereo/points_filtered2" />-->
		 <remap from="cloud_in" to="/cloud_registered" />
	</node>
</launch>

修改后先运行雷达,再运行建图,最后运行这个launch文件就可以得到结果啦!

五、话题

最后让我们直观的看看整个过程的话题是怎么走的,这样对我们理解代码也有很大帮助

1.雷达点云


2.FAST_LIO建图

可以看到,雷达发布了两个话题信息/livox/imu和/livox/lidar,这两个话题被/laserMapping节点订阅,然后被发布到三个话题,其中/cloud_registered是配准后的点云。

3.octoma转点云地图为栅格地图

这是整个完整流程的graph,octomap_sercer订阅了配准后的点云用于转栅格地图,然后把它发布到/octmap_full这个话题,所以我们在rviz里选择这个话题就能看到建成的栅格图

好啦,到此结束,有些细节有问题的话可以在评论里讨论。!

  • 25
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值