1 Laser SLAM概述
Laser SLAM(Simultaneous Localization and Mapping,激光同步定位与地图构建)是一种机器人技术,旨在解决机器人在未知环境中定位与地图构建问题,它主要依靠激光传感器获取环境信息。
以上为基于子地图的2D SLAM的基本流程图,摘自高翔的"自动驾驶与机器人中的SLAM技术"。
2 cartographer
对于机器人激光SLAM而言,cartographer是最接近落地的开源激光SLAM项目。它是一套完整的工程化代码,包括基于图优化的算法及ROS的集成。它的软件架构设计非常的优秀,便于接入IMU、(单/多线)雷达、里程计、甚至为二维码辅助等视觉识别方式也预留了接口。它的地图为2D栅格地图,可以直接用于导航。以下为cartographer的软件框架[摘自官网]。
虽然cartographer非常的优秀,但距离真正的落地,中间还是存在一道鸿沟。特别是消费类产品,需要考虑硬件成本,产品需求等。
本专栏会基于cartographer、cartographer_ros2的工程化代码,首先裁剪与重构carto,然后新增实用功能,最终构建出一套轻量级、实用级的室内2D激光SLAM。此套2D激光SLAM为不带后端优化的版本。它适用于小区域作业的机器人,例如家庭扫地机器人,陪伴机器人等。
3 裁剪与重构carto
- 删除cloud、ground_truth、metrics、grpc、测试模块
- 删除后端优化模块
- 删除3D SLAM模块
- 删除因3D SLAM而引入的各种多态
- 删除基于轨迹ID的建图与定位方案
- 裁剪并修改msg模块及对应实现
- 封装ROS接口的的topic、service、action消息
- 解除cartographer_ros内topic机制与ID的绑定
- 修改传感器数据传输机制
- 修改map数据的获取与发布机制
- 修改地图的保存机制
- 修改地图的加载机制
- 裁剪最终产物
4 gorilla slam
- 建图与定位
- 业务输入与输出
- 寻找主方向
- 重定位
- 地图管理
- 异常处理
- 地图美化
- 地图分区
5 效果展示

6 VS cartographer
- 无abseil、protobuf、lua、cairo、boost、pcl
- 参数只用yaml文件构成,配置参数少,更容易上手
- 无各种多态,无轨迹策略,无3D相关内容,调用清晰明了
- 新增了地图裁剪、美化和分区
- 新增产品级别的ROS接口
- 基于cmake方式编译,结果只有可执行程序和相应的.so文件
7 合作
本教程不会对外公布,有需求请私信。

496

被折叠的 条评论
为什么被折叠?



