Creeper5820 WorkStation

哨兵定位建图简明教程四 你的SLAM首选,FAST-LIO

字数统计: 933阅读时长: 3 min
2024/11/02

仓库介绍

原版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
2
3
4
# 进入 rmcs-slam 的 workspace 中
cd /path/to/workspace
# 下载依赖
sudo rosdep install --from-paths src --ignore-src -r -y

或者你也可以挨个手动下载,我知道你不会想这样做的

  • 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**:
ros__parameters:
preprocess:
# default: 4
scan_line: 40

publish:
# 路径消息发布
path_en: true
# 所有信息的发布
scan_publish_en: true
# 陀螺仪坐标系的点云扫描消息的发布
scan_bodyframe_pub_en: false

pcd_save:
pcd_save_en: false
# how many LiDAR frames saved in each pcd file;
# -1 : all frames will be saved in ONE pcd file, may lead to memory crash when having too much frames.
interval: -1

随后便是构建这个项目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 进入你的 workspace
cd /path/to/workspace

# ensure setup.bash is sourced
# terminal used by this example is zsh
source /opt/ros/humble/setup.zsh
source /path/to/livox_ws/install/setup.zsh

# build
colcon build --merge-install

# 如果你只是想编译这一个包
colcon build --merge-install --packages-select rmcs_slam

# 你所想要的一切都在 workspace/install/

SLAM,启动!

首先,你要确保运算平台的IP和雷达处于同一网段下,这需要手动配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# ensure setup.bash is sourced
# terminal used by this example is zsh
source /opt/ros/humble/setup.zsh
source /path/to/livox_ws/install/setup.zsh

# then start the lidar msg publisher
ros2 launch livox_ros_driver2 msg_MID360_launch.py

# open another terminal
# source the environment of rmcs_slam
source /opt/ros/humble/setup.zsh
source /path/to/rmcs_ws/install/setup.zsh

# start
ros2 launch rmcs_slam slam.py

# if you want to check situation in rviz
# do not forget to choose the correct frame_id
ros2 launch rmcs_slam slam.py rviz:=true

现在,你可以使用 ros2 topic list,查看当前的topic情况,你可以发现诸如 /rmcs_slam/*这种形式的 topic,说明项目成功运行起来了

使用可视化工具查看

TODO

一些需要注意的问题

  1. 扫描范围动态物体过多,可能会导致误差点累积,最终定位彻底发散,2024赛季我们雷达朝下放置,在人多的环境下调试导航,时间一长定位很容易漂移,原因便是人来人往造成了误差的累积
  2. mid-360其实很耐摔
  3. 当扫描的点云过少时,FAST-LIO 很容易进入退化,随后造成定位漂移,所以要保证雷达的遮挡面积足够小
  4. 大部分连接不上雷达的情况都是因为主机和雷达不在一个网段,注意检查配置
CATALOG
  1. 1. 仓库介绍
  2. 2. 该如何部署
    1. 2.1. 下载mid-360的驱动程序
    2. 2.2. 下载Cpp依赖库
    3. 2.3. 配置项目
  3. 3. SLAM,启动!
  4. 4. 使用可视化工具查看
  5. 5. 一些需要注意的问题