开源自主导航小车MickX4(八)LeGo-LOAM 室外3D建图

2023-05-16

开源自主导航小车MickX4(八)LeGo-LOAM 室外3D建图

  • 1 安装 LeGO-LOAM
    • 1.1安装依赖项
  • 2 运行 LeGO-LOAM
    • 2.1 运行论文demo
    • 2.2 修改配置文件
    • 2.3 运行自己的bag包
    • 2.4 地图保存
  • 3 大范围场景测试
  • 3.1 路线1
  • 3.2 路线2
  • 4 小结
  • 参考资料

1 安装 LeGO-LOAM

LeGO-LOAM [1] 需要依赖 ROS 环境 和 gtsam

1.1安装依赖项

step1 安装 gtsam

wget wget -O ~/software/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip
cd ~/software && unzip gtsam.zip -d ~/software/
cd ~/software/gtsam-4.0.0-alpha2/
mkdir build && cd build
cmake ..
sudo make install

step2 安装 下载编译源码

cd ~/catkin_ws/src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd ..
catkin_make -j1

这两步基本没有很大的问题,按照作者给出的指令即可安装成功。

2 运行 LeGO-LOAM

2.1 运行论文demo

LeGO-LOAM 坐在提供了一些bag包,可以通过这些bag包检测我们安装的环境是否正确,还可以查看以下 LeGO-LOAM 的建图效果。
step1 启动 LeGO-LOAM

roslaunch lego_loam run.launch

step2 播放bag包, bag可以在作者的github上[1]下载(可能会很慢),也可以在我们的百度云里面下载。

rosbag play lego-loam-demo-2017-06-08-15-49-45_0.bag --clock --topic /velodyne_points /imu/data

2.2 修改配置文件

在使用速腾16线类雷达的时候注意修改 launch 文件 和 utility.h 配置文件。 LeGO-LOAM 不需要里程计 且 IMU 也不是必须的。
step1 创建 launch 文件 mickx4.launch

<launch>
    
    <!--- Sim Time -->
    <param name="/use_sim_time" value="true" />
 
    <node pkg="nodelet" type="nodelet" name="pcl_manager" args="manager" output="screen" />
    
    <!-- Run a passthrough filter to clean NaNs -->
    <node pkg="nodelet" type="nodelet" name="passthrough" args="load pcl/PassThrough pcl_manager" output="screen">
        <remap from="~input" to="/rslidar_points" />
        <remap from="/passthrough/output" to="/velodyne_points" />
        
        <rosparam>
        filter_field_name: z
        filter_limit_negative: True
        </rosparam>

    <rosparam>
        filter_field_name: x
        filter_limit_negative: True
        </rosparam>

    <rosparam>
        filter_field_name: y
        filter_limit_negative: True
       
        </rosparam>
    </node>

    <!--- Run Rviz-->
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find lego_loam)/launch/test.rviz" />

    <!--- TF -->
    <node pkg="tf" type="static_transform_publisher" name="camera_init_to_map"  args="0 0 0 1.570795   0        1.570795 /map    /camera_init 10" />
    <node pkg="tf" type="static_transform_publisher" name="base_link_to_camera" args="0 0 0 -1.570795 -1.570795 0        /camera /base_link   10" />

 
    <!--- LeGO-LOAM -->    
    <node pkg="lego_loam" type="imageProjection"    name="imageProjection"    output="screen"/>
    <node pkg="lego_loam" type="featureAssociation" name="featureAssociation" output="screen"/>
    <node pkg="lego_loam" type="mapOptmization"     name="mapOptmization"     output="screen"/>
    <node pkg="lego_loam" type="transformFusion"    name="transformFusion"    output="screen"/>

</launch>

中间的 “ Run a passthrough filter to clean NaNs ”段是为了去除 速腾16线的激光雷达的 NaN 点[2] 。

step2 修改 utility.h 文件

在LeGO-LOAM/LeGO-LOAM/include文件夹的 utility.h 文件中, useCloudRing false

extern const bool useCloudRing = false;

因为Velodyne的雷达单独有一个ring通道 [3],而robosense的雷达好像并没有,在代码中可以将这一功能关闭。如不修改启动的时候会报错 测试时报错:Failed to find match for field ‘ring’

运行作者提供的数据包的视频(作者提供的额数据包在github上可以下载,也可以在这个链接里面下载 (提取码:yd1o ))

LeGO-LOAM-3D 建图 Demo

2.3 运行自己的bag包

启动 LeGO-LOAM

roslaunch lego_loam mickx4.launch

运行bag ,我们自己录制的bag可以在这个链接里面下载 (提取码:yd1o )

rosbag play mick_2021-01-28-10-03-01.bag --clock --topic /rslidar_points /imu/data

点云输出在 /laser_cloud_surround Topic上 PointCloud2类型, 可以通过第三方脚本进行保存。

下面是在实验室门口外运行的视频,场景属于室外小范围场景

LeGO-LOAM-3D mapping owith MickX4 -小范围场景

在这里插入图片描述

2.4 地图保存

LeGO-LOAM 的点云地图是发布在 /laser_cloud_surround 这个话题上的,在这篇博客[7]中提供了一种方法就是记录这个topic上的数据,然后利用 pcl_ros 包进行转换。
step1: 记录话题 /laser_cloud_surround 数据,这个可以在快结束的时候录制

rosbag record -o lego-loam-out /laser_cloud_surround

step2: 把 lego-loam-out* 这个bag的话题上的数据存为pcd文件

rosrun pcl_ros bag_to_pcd lego-loam-out_2021-02-01-17-01-06.bag /laser_cloud_surround test

这时候会在你的目录下生成一个test目录,然后里面会有很多个pcd文件,选最后一个就是最新的点云地图了

在这里插入图片描述

3 大范围场景测试

3.1 路线1

第一个场景是围绕我们学校的主教楼转了一圈,大约有1公里,最后回环没有回上,我只保留了效果较好的一部分地图。地图在有结构化的场景中建图效果是比较好的,在操场边那个地方停有很多的车,其环境比较空旷。在这种情况下感觉估计的位姿就不准了,导致后面的点云有重影

roslaunch lego_loam mickx4.launch
rosbag play mick_2021-02-01-15-43-14.bag --clock --topic /rslidar_points /imu/data

LeGO-LOAM-大范围场景-1KM


在这里插入图片描述

3.2 路线2

第一个场景是围绕我们学校的几个楼之间转了一圈,大约有1.5公里。这个场景中大部分都是沿着公路走的,公路旁边都是建筑物和数,整体的定位效果很好,走一圈下来位置也没差多远,估计有个2M左右。

roslaunch lego_loam mickx4.launch
rosbag play mick_2021-02-01-15-22-28.bag --clock --topic /rslidar_points /imu/data

LeGO-LOAM-大范围场景-1.5KM

在这里插入图片描述

4 小结

这里运行的环境还是前几篇博客中的场景, 从我自己测试的结果来看 LeGO-LOAM 在 3D 环境下建图效果要优于 Cartographer。博客中使用的代码和launch文件可以在Github[8].下载

关于 LeGO-LOAM 的计算原理和模型可以参考博客[4] 。 此外LeGO-LOAM 还有一个升级版 LIO-SAM,效果比LeGO-LOAM更加好。

LeGO-LOAM 没有地图保存、重定位和回环检测的功能,地图保存这个比较简单,可以通过自己写一个节点保存点云,但是重定位的功能就不太容易了。

有需要 大范围场景测试 中的两个录制的bag的同学,可在评论区留下邮箱。(记得来一波点赞加关注哦)

参考资料

[1] https://github.com/RobustFieldAutonomyLab/LeGO-LOAM
[2] https://blog.csdn.net/heirenlop/article/details/111475684
[3] https://blog.csdn.net/weixin_39754100/article/details/112186264
[4] https://blog.csdn.net/try_again_later/article/details/105367531
[5] https://arxiv.org/abs/2007.00258
[6] https://github.com/TixiaoShan/LIO-SAM
[7] https://blog.csdn.net/qq_36396941/article/details/83048415
[8] https://github.com/RuPingCen/mick_robot/tree/master/SLAM/LeGO-LOAM/LeGO-LOAM

上一篇:开源自主导航小车MickX4(七)cartographer 室外3D建图

下一篇:开源自主导航小车MickX4(九)基于move_base 的自主导航框架

欢迎大家点赞在评论区交流讨论(cenruping@vip.qq.com) O(∩_∩)O

或者加群交流(1149897304)
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

开源自主导航小车MickX4(八)LeGo-LOAM 室外3D建图 的相关文章

随机推荐

  • ArUco----一个微型现实增强库的介绍及视觉应用(二)

    ArUco 一个微型现实增强库的介绍及视觉应用 xff08 二 xff09 ArUco 一个微型现实增强库的介绍及视觉应用 xff08 二 xff09 一 第一个ArUco的视觉应用 首先介绍第一个视觉应用的Demo xff0c 这个应用场
  • ssh连接失败,排错经验

    一 场景描述 ssh连接服务器 xff0c 发现连接失败 xff0c 但是对应服务器的ip能够ping通 场景 xff1a root 64 yl web ssh root 64 10 1 101 35 ssh exchange identi
  • 什么是真正的程序员?

    什么是真正的程序员 这篇文章的原文来自 xff1a A Little Printf Story 作者仿照 小王子 中的情节 xff0c 通过小printf遇见的不同类型的程序员 xff0c 最后悟出什么才是真正的程序员 xff01 第一次翻
  • gpio引脚介绍 树莓派3b_树莓派介绍

    树莓派介绍 陈拓 chentuo 64 ms xab ac cn 2018 05 16 2018 05 16 1 什么是树莓派 xff08 Raspberry Pi xff09 树莓派是由树莓派基金会研发的一种只有信用卡大小的单板机电脑 x
  • 解析kubernetes架构

    一 简介 xff1a kubernetes是一个开源的容器管理工具 xff0c 是基于GO语言开实现的 xff0c 轻量级和便携式的应用 xff0c 可以把kubernetes cluster在linux主机上部署 管理和扩容docker容
  • STM32串口/RS232/RS485

    1 串口引脚 xff0c 如果是异步通讯将UART CLK共地即可 xff0c 如果同步需要时钟 a UART RX 数据接收引脚 b UART TX 数据发送引脚 c UART CLK 时钟引脚 2 UART描述 为全双工 xff0c 异
  • 又是一年年终总结

    起 这篇年终总结草稿是在12 03起的 xff0c 那是突然之间感觉到今年不大平常 xff0c 可以考虑写个年终总结来记录一下 xff0c 但是谁能料到今年真的是太不平常了 xff0c 到了12月中 xff0c 公司就解散了 xff0c 所
  • 开源自主导航小车MickX4(七)cartographer 室外3D建图

    开源自主导航小车MickX4 xff08 七 xff09 cartographer 室外3D建图 1 cartographer 3D建图demo1 1 cartographer 安装1 2 3D数据集建图1 3 3D定位 2 小车上的3D建
  • FreeRTOS+Trace(04) Xilinx Microblaze平台使用FreeRTOS+Trace

    本章节以 Xilinx Microblaze 平台为例 介绍如何在该目标平台上使用 FreeRTOS Trace 的快照记录功能 所使用的 Xilinx SDK 版本为 2018 2 并在 SDk 中已经创建好了一个目标平台为 Microb
  • Git子模块相关

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 添加子模块 如果项目分的模块比较多 xff0c 而且对每个模块需要独立管理的话 xff0c 子模块就派上用场了 每一个子模块都是一个独立的git仓库 xff0c 有点类似于
  • 更新k8s镜像版本的三种方式

    一 知识准备 更新镜像版本是在k8s日常使用中非常常见的一种操作 xff0c 本文主要介绍更新介绍的三种方法 二 环境准备 组件版本OSUbuntu 18 04 1 LTSdocker18 06 0 ce 三 准备镜像 首先准备2个不同版本
  • LTE中的各种ID含义

    原文链接 xff1a http www hropt com ask q 7128 html ECI 28 Bits 61 eNB ID 20 Bits 43 Cell ID 8 Bits 换成16进制就是ECI共7位 xff0c eNB I
  • 西门子Step7找不到有效授权的解决方法

    1 停止automation license manager service服务 2 删除授权文件 检查你的授权文件夹AX NF ZZ是放在哪个盘 xff0c C盘还是D盘 xff0c 在工具 文件夹选项 查看 选上显示所有文件和文件夹 x
  • AUGULAR安装使用

    先下载并安装NODE js xff0c 里面包含安装完成后已包含NPM NPM应该是augular一个管理工具 https www angular cn docs ts latest guide setup html develop loc
  • 成功不是依靠机会 ---- 参加移动开发者大会大会有感

    这次有幸参加了CSDN和创新工厂主办的移动开发者大会 xff0c 感觉良多 第一印象是 xff1a 这真的是一次技术的大会 我之前参加过很多大会 我特别说的是微软的技术大会 xff0c 已经感受不到什么技术的味道了 xff0c 或者说是这种
  • 基于机器学习的web异常检测

    基于机器学习的web异常检测 Web防火墙是信息安全的第一道防线 随着网络技术的快速更新 xff0c 新的黑客技术也层出不穷 xff0c 为传统规则防火墙带来了挑战 传统web入侵检测技术通过维护规则集对入侵访问进行拦截 一方面 xff0c
  • rosserial_java_ros系统下通过pyserial模块实现串口通讯(Python)

    经过几天的摸索终于实现了 xff1a 在ros系统下 xff0c 订阅Twist cmd vel 消息 xff0c 经过USB转串口通信 xff0c 实现了通过灯带实时反映小车 差速 运行状态的功能 通信部分主要依赖pyserial模块的功
  • 禁止显示Apache目录列表-Indexes FollowSymLinks

    禁止显示Apache目录列表 Indexes FollowSymLinks 如何修改目录的配置以禁止显示 Apache 目录列表 缺省情况下如果你在浏览器输入地址 xff1a http localhost 8080 如果你的文件根目录里有
  • 一个老兵的linux学习和面试经验分享

    特别说明 xff1a 本文为约9个月前老男孩linux培训内部师兄给师弟的经验分享 xff0c 经过该同学同意 xff0c 特此分享给所有博友 学习和面试经验分享 大家好 xff0c 非常高兴能在这里给大家分享学习和面试的经验 xff0c
  • 开源自主导航小车MickX4(八)LeGo-LOAM 室外3D建图

    开源自主导航小车MickX4 xff08 八 xff09 LeGo LOAM 室外3D建图 1 安装 LeGO LOAM1 1安装依赖项 2 运行 LeGO LOAM2 1 运行论文demo2 2 修改配置文件2 3 运行自己的bag包2