当前位置:   article > 正文

三维点云地图转二维栅格地图_点云地图转换成二维栅格地图

点云地图转换成二维栅格地图


前言

三维点云地图转二维栅格地图的实现需要1.地图转换工具——octomap;2.栅格地图保存工具——map_server;3.点云发布和转换工具启动launch文件。

一、安装octomap

安装octomap

sudo apt-get install ros-melodic-octomap-ros 
sudo apt-get install ros-melodic-octomap-server
  • 1
  • 2

安装octomap在rviz中的插件

 sudo apt-get install ros-melodic-octomap-rviz-plugins
  • 1

再打开RViz,点击Add时可以看到增加了octomap-rviz-plugins相关的模块。

二、安装map_server

sudo apt-get install ros-melodic-map-server
  • 1

或者直接

sudo apt-get install ros-melodic-navigation
  • 1

三、发布、转换并保存

1.运行三维地图发布程序

如果是存为pcd文件的点云地图,需要自己写点云文件读取和发布的代码,通过ROS的publish以话题形式发布出来,所发布的点云地图topic在下一步中被使用。最好一定频率发布,方便octomap获取数据。

一般的SLAM系统具备地图发布功能,也可以获取到相应的地图topic,供octomap_server使用。

2.启动octomap_server

和一般的ROS工具包启动方式一样,rosrun或者roslaunch。由于地图转换涉及到一些参数的调整,最好配置成launch文件来启动。

进入octomap_server的launch文件夹(此步可选,也可以放在其他地方)
cd /opt/ros/melodic/share/octomap_server/launch

创建launch文件
sudo touch octomap_server.launch

如果无权限,则给launch文件加可写权限(可选)
sudo chmod a+w octomap_server.launch

填写文件内容

<launch>
  <!--启动的节点-->
  <node pkg="octomap_server" type="octomap_server_node" name="octomap_server"> 

     <!--栅格分辨率-->
    <param name="resolution" value="0.1" />
    
    <!--世界坐标系话题,一般为map-->
    <param name="frame_id" type="string" value="/map" />
 
    <param name="sensor_model/max_range" value="1000.0" />
    <param name="latch" value="true" />
 
     <!--截取的三维点云范围--> 
    <param name="pointcloud_max_z" value="0.8" />
    <param name="pointcloud_min_z" value="-0.5" />
 
    <param name="graound_filter_angle" value="3.14" />
    
     <!--订阅的点云消息名称 PointClout2,即上一步发布出来的点云topic--> 
     <!-- cloud_in是octomap默认的输入话题,做一下映射-->
    <remap from="cloud_in" to="your_map_topic" />
  </node>
 
</launch>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

3.RViz显示结果
启动RViz后,点击“add”,分别添加"Map"、“OccupancyGrid"与"OccupancyMap”,并把其话题名依次改为"/projected_map"、“octomap_full"与"octomap_binary”,结合点云发布程序就可以看了。

4.保存二维地图

rosrun map_server map_saver map:=/projected_map -f [PATH_TO_FILE]/mymap
  • 1

/projected_map是octomap_server默认发布的名字;
[PATH_TO_FILE]/mymap是转换后的栅格地图保存的路径。


over!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/96227
推荐阅读
相关标签
  

闽ICP备14008679号