仓库介绍
原版fast-lio代码风格糟糕,虽然它效果好,抗旋转,消耗小,但一旦要去进行个性化地修改,比如添加一个service使其进行程序内重启,或者添加初始位姿设定等,便会感到万般无奈,大量无效变量和调试用变量充斥其中,全局变量一层套一层,using namespace std
惊现其中,于是乎,我愤然将其重构,重命名为 rmcs-slam,供我们战队使用。
这是仓库地址:Alliance-Algorithm/rmcs_slam
该如何部署
下载mid-360的驱动程序
首先是 livox-sdk2,这是该激光雷达的底层驱动,安装教程看这里
下一步安装 livox-ros-driver2,它将激光雷达的扫描信息以 ros2 的 topic 形式发布出来,这里是安装教程
配置 livox-ros-driver2 中的 ip 信息,这在驱动的仓库README中有简略的说明,TODO
下载Cpp依赖库
使用ros2工具链提供的一键下载依赖的指令,不知道什么是 workspace 的给我回去学 ros2 基本知识
1 | # 进入 rmcs-slam 的 workspace 中 |
或者你也可以挨个手动下载,我知道你不会想这样做的
- PCL(点云库)
1
sudo apt-get install ros-humble-pcl-conversions
- Eigen(线性代数库)
1
sudo apt-get install libeigen3-dev
配置项目
先把项目克隆下来吧,记得找一个好地方,规范整理你的项目(不要让你的download
目录,成为垃圾桶)
1 | git clone https://github.com/Alliance-Algorithm/rmcs_slam.git |
在项目根目录下有一个 config 文件夹,里面有一个配置文件,可以配置哪些信息被发出来,哪些信息不被发出来
1 | /**: |
随后便是构建这个项目
1 | # 进入你的 workspace |
SLAM,启动!
首先,你要确保运算平台的IP和雷达处于同一网段下,这需要手动配置
1 | # ensure setup.bash is sourced |
现在,你可以使用 ros2 topic list
,查看当前的topic情况,你可以发现诸如 /rmcs_slam/*
这种形式的 topic,说明项目成功运行起来了
使用可视化工具查看
TODO
一些需要注意的问题
- 扫描范围动态物体过多,可能会导致误差点累积,最终定位彻底发散,2024赛季我们雷达朝下放置,在人多的环境下调试导航,时间一长定位很容易漂移,原因便是人来人往造成了误差的累积
- mid-360其实很耐摔(
- 当扫描的点云过少时,FAST-LIO 很容易进入退化,随后造成定位漂移,所以要保证雷达的遮挡面积足够小
- 大部分连接不上雷达的情况都是因为主机和雷达不在一个网段,注意检查配置