Octomap建图复现记录——使用Mid360(3)

我在上篇里写了想要实时发布接收点云建图,又刚到手了mid360,这下可以试一试。

思想就和这篇博客里的差不多。

想要实现我这篇里的内容,你需要:

1.已经安装编译好octomap,是可以修改源码的那种。

Octomap复现记录(2)-优快云博客

2.已经可以使用mid360或其他雷达,收到点云数据。

Livox_Mid-360激光雷达使用教程-优快云博客

现在,我们就来实现使用mid360激光雷达实时发布点云数据,让octomap_server接收到点云数据生成八叉树地图。

1.需要看现有launch文件

(1)mid360发布的点云话题是livox/lidar

(2)octomap的launch文件:octomap_mapping.launch

<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!) -->
			<!-- 固定的地图坐标系 -->
		<param name="frame_id" type="string" value="livox_frame" />  #修改1
		
		<!-- 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 -->
		<remap from="cloud_in" to="/livox/lidar" />   #修改2
	
	</node>
</launch>

这是我已经修改过的文件,作了两个修改:

一是:更改“frame_id”为“livox_frame”,使其与雷达的一致。不然octomap_server会报错,把雷达信息滤除。(但这里我也存有疑惑,这里涉及了TF变换,做个标记),先贴一个不更改的时候的节点图:

二是:更改remap话题为“/livox/lidar”,使其接收雷达发布的点云。

2.准备运行

#启动雷达
cd catkin_livox_ros_driver2  #换成你自己的工作空间
source devel/setup.bash
roslaunch livox_ros_driver2 rviz_MID360.launch

#启动建图
cd octomap_mapping_ws     #换成自己的工作空间
source devel/setup.bash
roslaunch octomap_server octomap_mapping.launch

#地图保存
rosrun octomap_server octomap_saver -f my_map1.bt

#查看保存的地图
cd octomap_mapping_ws
octovis my_map.bt

3.结果展示

这里保存地图的时候我觉得也有点奇怪,因为它保存地图的时间似乎是一定的,在我还没想结束的时候它就停止保存了,也就是说,这样保存的地图似乎只是静态的?不知道是不是我理解有误,欢迎各位大佬指出!

可以调调看分辨率?:


 

好了,这样就完成了使用mid360发布点云,octomap建图啦!还有的问题留待后面解决。

最后还有一点,我觉得直接用octomap接收点云建图效果不好,而且他好像不能实时更新,也就是不能滤除已经不需要的部分。看了一些其他教程,我觉得或许可以先使用一个slam来建图。把建的点云地图传给octomap建三维占据地图。比如这个:使用mid360从0开始搭建实物机器人入门级导航系统,基于Fast_Lio,Move_Base | AI技术聚合

后面再尝试尝试吧!不过我要先在平台上把现有的给部署上。

### MID360 点云可视化方法 对于 Livox Mid-360 激光雷达所获取的点云数据,实现其可视化的方法主要依赖于特定工具和软件的支持。RViz 是 ROS (Robot Operating System) 提供的一个非常流行的三维可视化工具,在此背景下被广泛用于展示来自各种传感器的数据,包括激光雷达产生的点云。 #### RViz 配置文件差异分析 `rviz_MID360.launch` 和 `msg_MID360.launch` 这两个启动脚本之间的区别体现在参数设定上: - **xfer_format**: 控制着传输给 RViz 显示的内容格式。 - **rviz_enable**: 决定了是否开启 RViz 应用程序来显示点云像[^1]。 为了更好地理解这些配置项的作用以及如何调整它们以适应不同的应用场景,议查阅官方文档或者相关社区资源获得更详细的指导说明。 #### 利用 PCL 库进行高级处理与自定义渲染 除了借助像 RViz 这样的集成开发环境外,还可以利用 Point Cloud Library(PCL),这是一个专为点云操作设计的强大 C++/Python 库。它不仅能够读取、写入多种类型的点云文件格式,还支持复杂的几何变换、特征提取等功能。因此,如果希望创更加个性化的点云查看器,则可以通过编写基于 PCL 的应用程序来进行深入定制[^3]。 ```cpp // 加载并显示点云示例代码片段 #include <pcl/io/pcd_io.h> #include <pcl/visualization/cloud_viewer.h> int main(int argc, char** argv){ pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); // 假设我们已经有一个 .pcd 文件包含了要可视化的点云数据 if(pcl::io::loadPCDFile<pcl::PointXYZ>("mid_360_cloud.pcd", *cloud)==-1){ PCL_ERROR("Couldn&#39;t read file mid_360_cloud.pcd \n"); return (-1); } pcl::visualization::CloudViewer viewer("Simple Cloud Viewer"); viewer.showCloud(cloud); while (!viewer.wasStopped()) { /* code */ } } ``` 上述例子展示了怎样加载一个预先存在的 `.pcd` 格式的点云集,并将其传递给简单的交互式窗口以便观察者浏览。当然实际应用中可能还需要考虑更多因素比如性能优化、实时更新等特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值