6.如何利用LIO-SAM生成可用于机器人/无人机导航的二维/三维栅格地图--以octomap为例

目录

[1 octomap的安装](#1 octomap的安装)

[2 二维导航节点的建立及栅格地图的构建](#2 二维导航节点的建立及栅格地图的构建)

[3 三维栅格地图的建立](#3 三维栅格地图的建立)


1 octomap的安装

这里采用命令安装:

复制代码
sudo apt install ros-melodic-octomap-msgs ros-melodic-octomap-ros ros-melodic-octomap-rviz-plugins ros-melodic-octomap-server

这样子就是安装好了。

2 二维导航节点的建立及栅格地图的构建

我们进入liosam的工作空间下的launch文件夹:

新建一个launch文件,就叫octomap2D.launch

将下面的内容粘贴其中:

XML 复制代码
<launch>
  <node pkg="octomap_server" type="octomap_server_node" name="octomap_server"> 
 
     <!--resolution in meters per pixel-->
    <param name="resulution" value="0.6" />
    
     <!--name of the fixed frame,needs to be "/map" for SLAM-->
    <param name="frame_id" type="string" value="/map" />
 
     <!--max range/depth resolution of the kinect meters-->
    <param name="sensor_model/max_range" value="5.0" />
    <param name="latch" value="true" />
 
     <!--max/min height for occupancy map, should be in meters-->
    <param name="pointcloud_max_z" value="5" />
    <param name="pointcloud_min_z" value="0" />
 
    <param name="graound_filter_angle" value="3.14" />
 
     <!--topic from where pointcloud2 messages are subscribed-->
    <remap from="/cloud_in" to="/lio_sam/mapping/cloud_registered" />
 
  </node>
 
</launch>

我来解释下各个参数的含义:

resolution:分辨率或精度,越小精度越高计算需要资源越庞大

frame_id:世界坐标系的话题,即圆点坐标系

sensor_model/max_range:扫描的最大距离

cloud_in:点云话题

pointcloud_max_z:最大的Z扫描值

pointcloud_min_z:最小的Z扫描值(激光雷达和垂直平面有一定距离)

当然,还有其他可选参数:

1.剔除地面点的

加上的话类似这样:

XML 复制代码
<launch>
  <node pkg="octomap_server" type="octomap_server_node" name="octomap_server"> 
 
     <!--resolution in meters per pixel-->
    <param name="resulution" value="0.6" />
    
     <!--name of the fixed frame,needs to be "/map" for SLAM-->
    <param name="frame_id" type="string" value="/map" />
 
     <!--max range/depth resolution of the kinect meters-->
    <param name="sensor_model/max_range" value="1000.0" />
    <param name="latch" value="true" />
 
     <!--max/min height for occupancy map, should be in meters-->
    <param name="pointcloud_max_z" value="5" />
    <param name="pointcloud_min_z" value="-1.5" />
 
    <param name="filter_ground" value="true" />
    <param name="ground_filter/distance" value="0.05" />
    <param name="ground_filter/angle" value="0.2" />

 
     <!--topic from where pointcloud2 messages are subscribed-->
    <remap from="/cloud_in" to="/lio_sam/mapping/cloud_registered" />
 
  </node>
 
</launch>

我们启动liosam主节点和本节点。

播放bag包:

发现地面有很多噪点。调参...

好点了,继续调参。。

不停的调参后.....

勉强可以用。。。因为我们手持的原因...

保存栅格地图:

XML 复制代码
 rosrun map_server map_saver map:=/projected_map -f sbmap

3 三维栅格地图的建立

下载octomap_tutor并编译:

安装依赖:

XML 复制代码
sudo apt-get install liboctomap-dev octomap

生成可执行文件pcd2octomap,记得一定要设置可执行,可以打开这个文件的属性看一看。

执行:

XML 复制代码
pcd2octomap carto_demo.pcd carto.bt

执行成功,发现八叉树文件:

查看地图:

XML 复制代码
octovis carto.bt

OK

相关推荐
Blossom.1181 小时前
基于深度学习的智能视频分析系统:技术与实践
人工智能·深度学习·神经网络·目标检测·机器学习·机器人·sklearn
硅谷秋水15 小时前
NORA:一个用于具身任务的小型开源通才视觉-语言-动作模型
人工智能·深度学习·机器学习·计算机视觉·语言模型·机器人
扫地的小何尚15 小时前
全新NVIDIA Llama Nemotron Nano视觉语言模型在OCR基准测试中准确率夺冠
c++·人工智能·语言模型·机器人·ocr·llama·gpu
cnbestec1 天前
UR机器人解锁关节扭矩控制:利用英伟达Isaac Lab框架,推动装配自动化的Sim2Real迁移
机器人·nvidia·协作机器人·优傲机器人·关节扭矩控制·ur机器人
刘延林.1 天前
ROS 2安装 slam_toolbox
人工智能·机器人·自动驾驶
lingling0091 天前
智驱未来:迁移科技3D视觉系统重塑复合机器人产业生态
科技·3d·机器人
davidson14711 天前
gazebo仿真中对无人机集成的相机进行标定(VINS-Fusion)
ubuntu·无人机·slam·d435i·px4·gazebo·vins-fusion
nenchoumi31191 天前
UE5 学习系列(五)导入贴图资产
学习·游戏·ue5·机器人
DFminer2 天前
【仿生机器人】建模—— 图生3D 的几个办法
人工智能·安全·机器人
lul~2 天前
[科研理论]无人机底层控制算法PID、LQR、MPC解析
c++·人工智能·无人机