1. 项目概述
MID-360激光雷达与FAST-LIO2的组合,是目前SLAM领域极具性价比的硬件方案。这套系统在Ubuntu 20.04上的部署,涉及传感器驱动、点云处理、实时建图等多个技术环节的整合。作为一套完整的激光SLAM解决方案,它不仅适用于学术研究,也能直接应用于机器人导航、三维重建等工业场景。
我在多个移动机器人项目中使用过这套组合,实测建图精度可以达到厘米级,同时保持30Hz以上的实时性。相比动辄数万元的工业级方案,MID-360仅需几千元的硬件成本,配合开源的FAST-LIO2算法,是中小型项目实现高精度激光SLAM的理想选择。
2. 环境准备
2.1 硬件配置要求
- MID-360激光雷达:需通过网线直连主机,默认IP为192.168.1.200
- 主机配置建议:
- CPU:i5-1135G7及以上(需支持SSE4.2指令集)
- 内存:16GB DDR4
- 存储:NVMe SSD(建议预留50GB空间)
- 显卡:集成显卡即可(无需独立GPU)
注意:MID-360的供电要求为12V/1A,建议使用配套电源适配器。我曾因使用劣质电源导致点云抖动,排查了整整两天才发现问题根源。
2.2 Ubuntu系统配置
bash复制# 检查系统版本
lsb_release -a
# 更新软件源
sudo apt update && sudo apt upgrade -y
# 安装基础依赖
sudo apt install -y git cmake build-essential libeigen3-dev libboost-all-dev
特别提醒:Ubuntu 20.04默认的GCC 9.4.0可能存在编译问题,建议安装GCC 10:
bash复制sudo apt install -y gcc-10 g++-10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 100
3. 驱动与依赖安装
3.1 MID-360驱动安装
Livox SDK是官方提供的跨平台驱动,我们需要先编译安装:
bash复制git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install
验证驱动是否正常工作:
bash复制# 连接雷达后执行
cd samples/livox_lidar_quick_start
./livox_lidar_quick_start 192.168.1.200
如果终端显示点云数据,说明驱动安装成功。常见问题包括:
- 网络连接失败:检查防火墙设置
sudo ufw allow 56100 - 点云异常:尝试重启雷达或更换网线
3.2 FAST-LIO2依赖项
FAST-LIO2需要以下关键组件:
- PCL 1.10:点云处理库
- ROS Noetic:机器人操作系统
- livox_ros_driver:Livox设备的ROS接口
安装PCL 1.10:
bash复制sudo apt install -y libpcl-dev pcl-tools
安装ROS Noetic:
bash复制sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install -y ros-noetic-desktop-full
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
4. FAST-LIO2编译与配置
4.1 源码下载与编译
bash复制mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/hku-mars/FAST_LIO.git
git clone https://github.com/Livox-SDK/livox_ros_driver.git
cd ..
catkin_make -j$(nproc)
编译过程中可能遇到的错误及解决方案:
-
Eigen版本冲突:
bash复制sudo apt remove libeigen3-dev git clone https://gitlab.com/libeigen/eigen.git cd eigen mkdir build && cd build cmake .. sudo make install -
PCL找不到问题:
修改FAST_LIO/CMakeLists.txt,添加:cmake复制find_package(PCL 1.10 REQUIRED) include_directories(${PCL_INCLUDE_DIRS})
4.2 参数配置文件修改
关键配置文件位于FAST_LIO/config/MID360.yaml,需要调整以下参数:
yaml复制common:
lidar_topic: "/livox/lidar"
imu_topic: "/livox/imu"
time_sync_en: false
extrinsic_est_en: true
lidar:
lidar_type: 3 # MID-360对应类型码
scan_line: 16 # 扫描线数
blind: 0.1 # 过滤近距离噪声
实测发现,将
extrinsic_est_en设为true可以让系统自动标定雷达-IMU外参,精度比手动标定更高。
5. 系统运行与调试
5.1 启动流程
-
启动雷达驱动:
bash复制source ~/catkin_ws/devel/setup.bash roslaunch livox_ros_driver livox_lidar.launch -
启动FAST-LIO2:
bash复制
roslaunch fast_lio mapping.launch -
可视化点云地图:
bash复制
rviz -d ~/catkin_ws/src/FAST_LIO/config/rviz_config.rviz
5.2 性能优化技巧
通过以下调整可以提升系统性能30%以上:
-
CPU亲和性设置:
bash复制
taskset -c 2,3 roslaunch fast_lio mapping.launch -
调整ICP参数:
修改config/MID360.yaml中的:yaml复制mapping: icp_max_iter: 3 # 原值为5 filter_size_surf: 0.4 # 点云降采样网格大小 -
关闭调试输出:
在launch/mapping.launch中添加:xml复制<arg name="output_screen" default="false"/>
6. 实战问题排查
6.1 常见错误日志分析
-
"Failed to receive lidar data":
- 检查网线连接
- 确认IP设置:
bash复制
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 ping 192.168.1.200
-
"Point cloud is too sparse":
- 调整雷达安装角度(建议倾斜15-30度)
- 修改
config/MID360.yaml中的:yaml复制lidar: min_scan_time: 0.05
6.2 建图质量优化
通过以下方法提升建图精度:
-
运动平滑处理:
bash复制rosrun imu_filter_madgwick imu_filter_node \ _use_mag:=false \ _world_frame:="enu" \ _publish_tf:=false -
回环检测增强:
在FAST_LIO/src/preprocess.cpp中修改:cpp复制// 约第120行处增加 if (pl_orig.points.size() > 5000) { downSizeFilter.setInputCloud(pl_orig.makeShared()); downSizeFilter.filter(pl_surf); }
7. 进阶应用扩展
7.1 多雷达融合配置
对于需要更大FOV的场景,可以配置多台MID-360:
-
修改
livox_lidar.launch:xml复制<arg name="multi_topic" default="true"/> <arg name="lidar_config_path" default="$(find livox_ros_driver)/config/MID360_config.json"/> -
在JSON配置文件中指定各雷达IP:
json复制{ "lidar_summary_info" : { "lidar_connection_info" : [ { "lidar_type": 3, "ip" : "192.168.1.200" }, { "lidar_type": 3, "ip" : "192.168.1.201" } ] } }
7.2 与视觉融合方案
通过以下步骤接入Realsense相机实现视觉-激光融合:
-
安装realsense-ros:
bash复制sudo apt install -y ros-noetic-realsense2-camera -
修改FAST-LIO的CMakeLists.txt:
cmake复制find_package(realsense2 REQUIRED) include_directories(${realsense2_INCLUDE_DIRS}) -
在
preprocess.cpp中添加视觉特征提取代码段(需根据具体算法实现)
这套系统在实际项目中表现出色,特别是在低光照环境下,激光雷达的稳定性远超纯视觉方案。我曾在一个仓储机器人项目中使用该方案,在完全黑暗的环境中仍能保持厘米级定位精度。