当前位置: 首页 > news >正文

使用octomap将pcd点云地图转化为八叉树地图和占据栅格地图

首先跑LIO-SAM或者LVI-SAM跑包完成按Ctrl+c结束进程后会自动保存为如cloudGlobal.pcd的文件。

1.rviz中显示pcd文件

安装pcl_ros后执行下面命令在rviz中显示

rosrun pcl_ros pcd_to_pointcloud /home/qian/Downloads/LOAM/cloudGlobal.pcd  _frame_id:=map _rate:=1.0 _topic:=/cloud_pcd _latch:=true

注意_latch:=true 保持最后一次发布,适用于 RViz 启动较晚的情况,确保 RViz 能收到点云数据。
_topic指导发布点云topic为/cloud_pcd
加载建的全局地图如图
在这里插入图片描述

2.安装octomap

sudo apt-get update
sudo apt-get install ros-noetic-octomap ros-noetic-octomap-mapping ros-noetic-octomap-ros ros-noetic-octomap-rviz-plugins

3.加载pcd并使用rviz显示

(1)由于默认订阅 /cloud_in 话题,需要更改话题,可以修改参数为上文中的发布点云话题:

roslaunch octomap_server octomap_mapping.launch cloud_in:=/cloud_pcd

注意
1)输入的点云要一直发布,保证/cloud_pcd话题有数据
2)由于默认的文件octomap_mapping.launch参数不会适配,需要修改
octomap_mapping.launch文件适配。
修改后的文件如下

<launch><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="map" /><!-- maximum range to integrate (speedup!) --><param name="sensor_model/max_range" value="50.0" /><!-- data source to integrate (PointCloud2) --><remap from="cloud_in" to="/cloud_pcd" /></node>
</launch>
~        

其中,max_range参数会调整截取的点云范围.

(2)OccupancyGrid(2D 平面地图rviz显示):
在rviz中
Add → By Topic → /projected_map
显示如下
在这里插入图片描述其中黑色为障碍物,将地面也当成障碍物了,因此需要修改配置参数

修改octomap_server的octomap_mapping.launch文件配置参数,设置点云z轴范围(-0.5,-0.8)

cd /opt/ros/noetic/share/octomap_server/launch/
sudo vim octomap_mapping.launch

最后octomap_mapping.launch文件如下

<launch><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="map" /><!-- maximum range to integrate (speedup!) --><param name="sensor_model/max_range" value="50.0" /><!-- data source to integrate (PointCloud2) --><remap from="cloud_in" to="/cloud_pcd" /><param name="pointcloud_max_z" value="0.8" /><param name="pointcloud_min_z" value="-0.5" /></node>
</launch>
~        

修改后再次启动如图
在这里插入图片描述

(3)OctoMap(3D 八叉树地图rviz)
Add → By Topic → MarkerArray 选/occupied_cells_vis_array
如图

在这里插入图片描述

4.保存地图

(1)保存2d地图

rosrun map_server map_saver map:=/projected_map -f /home/qian/mymap

输出

[INFO] [1752116581.968634035]: Writing map occupancy data to /home/qian/mymap.pgm
[INFO] [1752116581.988410154]: Writing map occupancy data to /home/qian/mymap.yaml

保存的文件有两个地图图片文件mymap.pgm和配置文件mymap.yaml

(2)保存3d八叉树地图
以上都启动好后调用

rosrun octomap_server octomap_saver -f mapfile.ot

参考文献
使用octomap_server将点云地图转化为八叉树地图和占据栅格地图
使用Octomap生成二维占据栅格导航地图

http://www.dtcms.com/a/271233.html

相关文章:

  • MCP快速入门—快速构建自己的服务器
  • 龙虎榜——20250709
  • OpenAI 推出其 AI 代理框架的四项关键更新
  • Python数据分析案例|从模拟数据到可视化:零售门店客流量差异分析全流程
  • 拼多多正在错失即时零售?
  • C++智能指针与Qt内存管理详解
  • RESTful接口设计规范详解
  • SAP采购管理系统替代选谁?8Manage SRM全面优势测评与深度对比
  • 码云创建分支
  • 网络请求与现实生活:用办理业务类比理解HTTP通信
  • ubuntu环境下调试 RT-Thread
  • 降AI工具有哪些推荐?降AI率网站的选择与使用指南
  • 人工智能-基础篇-27-模型上下文协议--MCP到底怎么理解?对比HTTP的区别?
  • SDR(软件定义无线电)与软件定义声学系统详解
  • ECR仓库CloudFormation模板完整指南
  • 第1章 Excel界面环境与基础操作指南
  • 精准医疗,AR 锚定球囊扩张导管为健康护航​
  • 微信小程序控制空调之微信小程序篇
  • 机器学习(西瓜书) 第四章 决策树
  • 【论文阅读】AdaReasoner: Adaptive Reasoning Enables More Flexible Thinking
  • 量化数据接口,level2历史数据,level2实时数据,逐笔成交,逐笔委托,10档行情接口
  • 姿态估计:捕捉人体动作的科技艺术
  • 科技对生态保育的影响?
  • Git系列--3.分支管理
  • 自学软件测试需要学哪些内容?
  • 图像硬解码和软解码
  • 轻量锁偏向锁重量锁害人不浅!synchronized源码!
  • eggNOG数据库注释文件
  • HCIA暑期作业
  • 阿里云和腾讯云RocketMQ 发消息和消费消息客户端JAVA接口