点击“计算机视觉life”,选择“星标”
机器人AI干货第一时间送达
以下文章转载自智驾机器人技术前线
首先,话不多说,先把github链接发出来,github地址如下,快去star:
-
https://github.com/gaoxiang12/lightning-lm
上周,在逛github的时候,发现高博上传新代码,真的有种“神不知鬼不觉”的感觉,赶紧点进去,发现高博完整的开源了LiDAR SLAM框架,并实现了诸多实际工程中的方法,真的是在此造福SLAM行业呀,特别是在职的SLAMer,又可以好好学习了。对于在校学生,我觉得也是狂欢,可以欣赏一下高博的框架架构,值得好好学习,看看实际工业界的框架是如何搭建的。
下面,先展示一下高博在VBR数据集上的最终建图效果,目测建图精度和定位精度都非常高。因为gif实在太大,无法上传,大家可以去github主页看看。
看完demo之后,我来给大家简单梳理一下高博最新开源的lightning-lm这个架构的开发环境以及基本特性等。其实,如果熟悉高博的风格,大家都知道高博的readme写的非常完善,看完readme基本对编译,算法主要干了什么事情,都可以知道的一清二楚。
首先是最基础的开发环境。从readme来看,高博自测的环境应该是Ubuntu 22.04,在Ubuntu 20.04已经更高的版本上应该都可以流程编译。这个高博也强调了Ubuntu 20.04应该也可以编译通过,但是没有自测过。这里,如果有同学在Ubuntu 20.04上自测成功了,可以在评论区留言一下。借此机会,也可以和大家说一下,我知道很多人目前还在Ubuntu 18.04开发,这个开发环境实在太老了,可以换环境了,不然你编译很多最新的算法都会有问题。
对于环境依赖,感觉都是比较基础的,如PCL,OpenCV等。这里要注意的是,需要依赖ros2,在Dependencies的第一条,高博就列出来了“ros2 humble or above”。
紧接着,就是环境编译。其实,SLAM的编码没啥特殊,都是CMake管理的,大家自行去看即可。
说完了开发环境,下面就是重点要关注的。这个开源工程中,高博开发了哪些功能以及还有哪些正在开发的?这里我就直接复制高博readme中的原话了,写的非常详细。
lightning-lm已有的功能:
-
[done] 完整的3D Lidar SLAM,快速的LIO前端(AA-FasterLIO),标配 -
[done] 3D至2D地图转换(g2p5),选配,选上的话会输出实时的2D栅格,可以保存 -
[done] 实时回环检测,标配,选上的话会进行后端回环检测并闭环 -
[done] 流畅的高精3D Lidar 定位,标配 -
[done] 地图分区动态加载方案,适用大场景 -
[done] 动静态图层分离定位,适配动态场景,可选择动态图层的策略,选配,选上的话会保存动态图层的地图内容,有三种策略可以选(短期、中期、永久),默认永久 -
[done] 高频率IMU平滑输出,标配,100Hz -
[done] 轻量优化库miao以及增量式优化(来自g2o,但更轻更快,支持增量优化,不需要重新构建优化模型),标配,在回环、定位中均有用到 -
[done] 离线与在线两种验证方案。离线可以断点调试,一致性强。在线可以多线程并发,处理速度快,可以设置动态跳帧,占用低。 -
[done] 基于外推器和平滑器的高频率输出,平滑因子可调 -
[done] 高性能计算:以上这些特性在纯CPU端不到一个核心就可以运行(在线定位0.8个核,建图1.2个核,32线雷达,无UI情况) -
[done] UI显示闭环后轨迹 -
[done] 栅格地图保存为兼容ROS的形式 -
[done] 检查栅格地图的分辨率取值是否正常
不得不说,简直完美,开发者的福音,真的是发自内心的感叹!通过这些功能,大家可以明显看出,并不是一个简简单单的LIO框架,而是一个LiDAR SLAM框架,配备完整的前端和后端,前端是AA-FasterLIO,后端有回环检测,然后通过PGO优化。最后,还有一个点不能被忽视,就是外推器和平滑器模块。可能很多在学同学不太关注这个模块,这个模块是实际工程中必不可少。
这么一个完整的框架,大家感觉去学习吧,真的。这里也有一个特别值得注意的模块,就是高博给出了一个处理动态环境的方式,就是 “动静态地图分离定位”,这个模块在处理高动态场景是非常有效的,值得大家去学习和思考,以及进一步的优化。后期,有时间我可以给大家解析一下这部分代码的实现。
除了上述已有,还有一些待开发项,具体如下:
-
GPS地理信息关联,选配 (TODO) -
车辆里程计输入,选配 (TODO) -
强制2D输出 -
额外便利性功能(打开关闭定位,重新初始化,指定位置等)
通过待开发项,不难看出来,高博的目标应该是开源一个完整的基于LiDAR的多传感器融合架构。大家先去star,后续发布了,可以第一时间知晓。
开发完架构,就是测试。高博也给出了在VBR和NCLT上的测试结果,大家可以自行去看看。
最后,最重要的来啦。这么完美的架构,怎么跑我们自己的数据集呢?高博也贴心给出了解答,爆赞。这里,直接copy过来。
可以在配置文件中对lightning进行微调,打开或者关闭一些功能。常见的配置项有:
-
system.with_loop_closing 是否需要回环检测 -
system.with_ui 是否需要3DUI -
system.with_2dui 是否需要2DUI -
system.with_g2p5 是否需要栅格地图 -
system.map_path 地图的存储路径 -
fasterlio.point_filter_num 点的采样数。调大后点数会少一些,计算更快,但不建议调到10以上。 -
g2p5.esti_floor g2p5是否需要动态估计地面参数。如果雷达水平旋转且高度不变,可以关闭此选项. -
g2p5.grid_map_resolution 栅格地图的分辨率
好勒,整个项目的简单梳理就到这里了。总结下来就是:真的完美,是一个产品级的算法框架,赶紧去学习吧!
推荐阅读
详细介绍!超远距EDU-SCAN三维激光雷达扫描仪,为开放生态而生!
三维空间扫描仪化身机器人感知定位利器!
用于机器人自主定位导航、实景三维重建!
扫描仪+机器人,实时定位建图超简单!
隧道低纹理大摆锤,暴力SLAM!
暴力升级!暗黑隧道极限测试SLAM!
效果哇塞!3D高斯泼溅来实景重建公园!
全面启动!全国线下试用报名!
MetaCam EDU 产品功能及细节详细介绍
MetaCam EDU 实机展示和操作

