使用mid360部署FASTLIO2_ROS2
1.安装LIVOX驱动
1.1.基础系统环境准备
系统要求
- 操作系统:Ubuntu 22.04.5 LTS(推荐使用64位版本)
- ROS2版本:Humble Hawksbill(ROS2长期支持版本)
- CMake版本:3.27或更高版本
- 硬件配置:建议至少8GB内存和64GB存储空间
更新系统软件包和安装基础开发工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y \
build-essential \
cmake \
git \
wget \
curl \
software-properties-common \
lsb-release
1.2.CMake 3.27安装
Fast-LIO2对CMake版本有特定要求,需从源码安装:
# 下载CMake 3.27.1源码
wget https://cmake.org/files/v3.27/cmake-3.27.1.tar.gz
# 解压并编译安装
tar -zxvf cmake-3.27.1.tar.gz
cd cmake-3.27.1
./bootstrap
make
sudo make install
# 配置环境变量
echo 'export PATH=/usr/local/bin:PATH' >> ~/.bashrc
source ~/.bashrc
# 验证版本
cmake --version
1.3.Livox Mid-360 SDK安装
# 创建ROS2工作空间
mkdir -p fast_lio2_ws/src
cd fast_lio2_ws
# 安装Livox SDK2,进入src目录并克隆仓库
cd src
git clone https://github.com/Livox-SDK/Livox-SDK2.git --recursive
# 创建build目录并编译SDK
cd Livox-SDK2
mkdir build
cd build
# 指定CMake路径以避免版本冲突
/usr/local/bin/cmake .. && make -j
sudo make install
1.4.Livox Mid-360 ROS2驱动安装
1.4.1 克隆Livox ROS2驱动
# 返回src目录并克隆ROS2驱动仓库
cd ../..
git clone https://github.com/Livox-SDK/livox_ros_driver2.git --recursive
sudo apt update
sudo apt install ros-humble-ament-cmake-auto
1.4.2. 修改mid360的配置文件 (livox_ros_driver2/config/MID360_config.json):
-
"host_net_info"中的"cmd_data_ip"和"push_msg_ip"应设置为与雷达同一子网的IP地址(如192.168.1.50)
-
"host_net_info"中的"cmd_data_port"、"push_msg_port"和"point_data_port"分别设置为56101、56201和56301
-
"lidar_configs"中的"ip"应设置为雷达的IP地址(通常为192.168.1.1XX,XX为雷达SN序列号最后两位)
{
"lidar_summary_info" : {
"lidar_type": 8
},
"MID360": {
"lidar_net_info" : {
"cmd_data_port": 56100,
"push_msg_port": 56200,
"point_data_port": 56300,
"imu_data_port": 56400,
"log_data_port": 56500
},
"host_net_info" : {
"cmd_data_ip" : "192.168.1.5",
"cmd_data_port": 56101,
"push_msg_ip": "192.168.1.5",
"push_msg_port": 56201,
"point_data_ip": "192.168.1.5",
"point_data_port": 56301,
"imu_data_ip" : "192.168.1.5",
"imu_data_port": 56401,
"log_data_ip" : "",
"log_data_port": 56501
}
},
"lidar_configs" : [
{
"ip" : "192.168.1.100",
"pcl_data_type" : 1,
"pattern_mode" : 0,
"extrinsic_parameter" : {
"roll": 0.0,
"pitch": 0.0,
"yaw": 0.0,
"x": 0,
"y": 0,
"z": 0
}
}
]
}
1.4.3 修改驱动发布格式
- 驱动默认发布 PointCloud2 格式
- Fast-LIO2 期望 CustomMsg 格式
- 导致 Fast-LIO2 无法接收和处理雷达数据
修改livox_ros_driver2/launch_ROS2/rviz_MID360_launch.py
# 修改前
xfer_format = 0 # PointCloud2
# 修改后
xfer_format = 1 # CustomMsg
1.4.4 编译驱动
cd /home/guan2/Desktop/fast_lio2_ws/src/livox_ros_driver2
sudo chmod +x build.sh
source /opt/ros/humble/setup.sh
./build.sh humble
1.4.5 测试驱动
# 临时设置IP(重启后失效)
sudo ip addr add 192.168.1.5/24 dev enP8p1s0
sudo ip link set enP8p1s0 up
# 验证设置
ip addr show enP8p1s0
# 运行驱动不查看点云数据
cd /home/guan2/Desktop/fast_lio2_ws
source install/setup.sh
ros2 launch livox_ros_driver2 msg_MID360_launch.py
# 运行驱动并查看点云数据
# ros2 launch livox_ros_driver2 rviz_MID360_launch.py
2.安装FASTLIO2_ROS2
2.1 克隆FASTLIO2_ROS2
git clone https://github.com/liangheming/FASTLIO2_ROS2.git
2.2 sophus编译
git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout 1.22.10 #旧版本
mkdir build && cd build
cmake .. -DSOPHUS_USE_BASIC_LOGGING=ON
make
sudo make install
2.1 gtsam编译
需要添加dllexport.h文件,不然编译会报错
git clone https://github.com/borglab/gtsam.git
# 进入 cephes 目录
cd gtsam/gtsam/3rdparty/cephes
# 创建 dllexport.h 文件
tee dllexport.h > /dev/null << 'EOF'
#ifndef DLLEXPORT_H
#define DLLEXPORT_H
/* Define DLLEXPORT for Windows, empty for other platforms */
#ifdef _WIN32
#ifdef GTSAM_SHARED_LIB
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT __declspec(dllimport)
#endif
#else
#define DLLEXPORT
#endif
#endif // DLLEXPORT_H
EOF
cd ../../../..
cd gtsam
#!bash
mkdir build
cd build
cmake ..
make check -j8 #多线程编译
sudo make install
将fast-lio2移动到自己src中编译即可使用
colcon build --cmake-args -DROS_EDITION=ROS2 -DHUMBLE_ROS=humble
3.使用FASTLIO2_ROS2
3.1激光惯性里程计
先启动驱动,然后再启动FASTLIO2_ROS2节点
source install/setup.bash
ros2 launch livox_ros_driver2 rviz_MID360_launch.py
source install/setup.bash
ros2 launch fastlio2 lio_launch.py
ros2 bag play your_bag_file
3.2里程计加回环
source install/setup.bash
# 先设置环境变量,让系统libusb优先
export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:$LD_LIBRARY_PATH
# 然后启动pgo
ros2 launch pgo pgo_launch.py
ros2 bag play your_bag_file
3.3里程计加重定位
source install/setup.bash
ros2 launch localizer localizer_launch.py
ros2 bag play your_bag_file // 可选
3.3里程计加重定位
启动一致性地图优化节点
source install/setup.bash
ros2 launch hba hba_launch.py
调用优化服务
ros2 service call /hba/refine_map interface/srv/RefineMap "{"maps_path": "your maps directory"}"