代码先锋网 代码片段及技术文章聚合

三维点云地图转二维栅格地图

技术标签: 工具  SLAM  自动驾驶  ubuntu


前言

三维点云地图转二维栅格地图的实现需要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

安装octomap在rviz中的插件

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

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

二、安装map_server

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

或者直接

sudo apt-get install ros-melodic-navigation

三、发布、转换并保存

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>

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

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


over!

版权声明:本文为Wenyue_Wang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Wenyue_Wang/article/details/125243957

智能推荐

02创建三维地图

步骤与上一篇二维地图差不多,完整代码如下...

echarts三维建筑地图注解

代码主要来自echarts实例, 本文是对实例做了些注解,最好还是复制下来自己试一下,具体配置看echarts官网...

三维地图代码 echarts demo

扩展脚本 https://echarts.baidu.com/resource/echarts-gl-latest/dist/echarts-gl.min.js echarts:“4.2.1” echarts/map/js/china.js options 整体引入 参考链接...

激光雷达点云---点云二维栅格化处理

激光点云栅格化处理    激光点云地图存储的是传感器对环境的原始扫描点云,优点是保留信息完整,缺点是计算量大、不能直接用于导航避障;特征地图存储的是环境中的特殊几何特征,如电线杆、路标、障碍物边缘等,其计算量小但保留信息过少需进行过滤后才能进行使用。    激光点云栅格化核心思想是将激光雷达所扫描到的区域用网格进行处理,每个栅格点云代表空间的一小块区域,内含一部分点云,点云栅格...

猜你喜欢

用octomap生成的二维栅格地图进行move_base路径规划仿真

1.map_server保存二维栅格地图 octomap生成的二维栅格地图可以用map_server保存 map_server是个功能包,这个功能包可以单独下载,也可以直接下载navigation包,navigation包里包括了map_server,建议直接下载navigation,因为后续路径规划仿真也要用到这个功能包.地址如下 我的是kenetic版本,注意别下载错了版本. 下载编译好之后,...

三维坐标生成点云

halcon matlab中的代码https://download.csdn.net/download/qq_22904277/10480605...

三维点云处理(6)

Octree Octree Construction Octant Representation Recursive Build Octree KNN Search radiusNN Each node has 8 children Specifically for 3D, 23=82^3=823=8 In kd-tree, it is non-trivial to determine wheth...

三维点云投影(一)

一、立体几何基础知识 1.1 平面表示         三维平面的统一表示方法: 1.2 法向量         假设(x1, y1, z1)、(x2,y2,z2)为平面上两个点,那么可以得到:    &nbs...

鼠标操作贝塞尔曲线

1 贝塞尔曲线 贝塞尔曲线(The Bézier Curves),是一种在计算机图形学中相当重要的参数曲线(三维空间中称为贝塞尔曲面). 贝塞尔曲线由法国工程师皮埃尔·贝塞尔(Pierre Bézier)于1962年发表,他运用贝塞尔曲线来为汽车的主体进行设计. 接下来将从一次贝塞尔曲线开始(以下简称一次曲线. 类似的,N次贝塞尔曲线称为N次曲线),研究贝...