Jetson Orin NX + Ubuntu 22.04:Livox Mid360与FAST-LIO2的实时建图实战

张开发
2026/4/19 7:56:34 15 分钟阅读

分享文章

Jetson Orin NX + Ubuntu 22.04:Livox Mid360与FAST-LIO2的实时建图实战
1. 从零搭建实时3D SLAM系统的硬件准备在开始之前我们需要先了解这套系统的核心硬件组成。NVIDIA Jetson Orin NX作为边缘计算平台其强大的AI算力最高100 TOPS和紧凑的尺寸70mm×45mm使其成为移动机器人应用的理想选择。我实测下来Orin NX的功耗表现相当出色在持续负载下也能保持稳定运行。Livox Mid360固态激光雷达是这个方案的另一大亮点。与传统机械式雷达不同它的非重复扫描模式能实现360°×59°的视场覆盖而且没有运动部件可靠性更高。我在室内测试时发现它的点云密度在10米范围内能达到惊人的0.05°×0.05°角分辨率这对建图精度至关重要。硬件连接方面有个小技巧建议使用带屏蔽层的CAT6网线连接雷达和Jetson这能有效减少电磁干扰。我第一次测试时用了普通网线偶尔会出现点云丢包的情况。另外记得给Jetson配备至少16GB的NVMe SSD因为后续编译ROS2和算法时会占用大量存储空间。2. Ubuntu 22.04系统环境配置2.1 系统基础设置安装完Ubuntu 22.04后第一件事是更新软件源。这里有个坑要注意默认的NVIDIA源在国内访问可能较慢建议替换为国内镜像源。我通常使用清华源具体操作如下sudo sed -i shttp://.*archive.ubuntu.comhttps://mirrors.tuna.tsinghua.edu.cng /etc/apt/sources.list sudo sed -i shttp://.*security.ubuntu.comhttps://mirrors.tuna.tsinghua.edu.cng /etc/apt/sources.list接着安装基础开发工具链。这里有个经验之谈Jetson平台最好使用系统自带的gcc版本Ubuntu 22.04默认是gcc-11自行升级高版本可能导致CUDA兼容性问题。sudo apt update sudo apt upgrade -y sudo apt install -y build-essential cmake git libeigen3-dev libboost-all-dev2.2 网络配置优化由于Mid360需要通过以太网通信我们需要配置静态IP。我建议使用192.168.1.50作为Jetson的IP地址这与Livox设备的出厂设置最匹配。配置时有个细节容易被忽略MTU值建议设置为9000巨型帧可以提升点云数据传输效率。sudo nmcli con mod 有线连接 ipv4.addresses 192.168.1.50/24 sudo nmcli con mod 有线连接 ipv4.gateway 192.168.1.1 sudo nmcli con mod 有线连接 ipv4.method manual sudo nmcli con mod 有线连接 ethernet.mtu 9000 sudo nmcli con up 有线连接3. Livox Mid360驱动安装与调试3.1 SDK编译安装Livox官方提供了SDK2版本但直接编译可能会遇到依赖问题。我整理了一个更稳妥的安装流程git clone https://github.com/Livox-SDK/Livox-SDK2.git cd Livox-SDK2 mkdir build cd build cmake .. -DCMAKE_BUILD_TYPERelease make -j$(nproc) sudo make install安装完成后建议运行示例程序测试硬件连接cd samples/livox_lidar_quick_start ./livox_lidar_quick_start 192.168.1.100如果看到实时点云输出说明硬件连接正常。这里有个实用技巧可以用livox_viewer工具可视化点云比命令行更直观。3.2 ROS2驱动配置官方ROS2驱动需要根据Mid360的特殊参数进行调整。关键是要修改MID360_config.json中的以下参数{ lidar_configs: [ { ip: 192.168.1.100, pcl_data_type: 1, pattern_mode: 0, extrinsic_parameter: { roll: 0, pitch: 0, yaw: 0, x: 0, y: 0, z: 0 } } ], host_network_config: { recv_ip: 192.168.1.50, host_ip: 192.168.1.50, host_udp_port: 60000 } }特别注意pcl_data_type设置为1单回波模式这对FAST-LIO2的输入数据格式很重要。我在实际项目中发现使用双回波模式会导致算法处理异常。4. FAST-LIO2算法部署与优化4.1 源码编译技巧FAST-LIO2的ROS2版本需要一些特殊处理。我推荐使用以下编译命令可以避免常见的链接错误git clone https://github.com/Ericsii/FAST_LIO.git --recursive cd FAST_LIO mkdir build cd build cmake .. -DROS_EDITIONROS2 -DHUMBLE_ROShumble make -j$(nproc)编译过程中可能会遇到PCL库版本冲突的问题。Ubuntu 22.04默认安装的是PCL 1.12而FAST-LIO2需要1.10的某些特性。我的解决方案是手动编译PCL 1.10git clone https://github.com/PointCloudLibrary/pcl.git -b pcl-1.10.0 cd pcl mkdir build cd build cmake .. -DCMAKE_BUILD_TYPERelease make -j$(nproc) sudo make install4.2 参数调优实战Mid360的配置文件mid360.yaml需要针对嵌入式平台优化。经过多次测试我总结出以下关键参数common: lidar_topic: /livox/lidar imu_topic: /livox/imu time_sync_en: false time_offset_lidar_to_imu: 0.0 preprocess: lidar_type: 4 # Livox MID360 point_filter_num: 1 scan_line: 64 mapping: acc_cov: 0.1 gyr_cov: 0.1 b_acc_cov: 0.0001 b_gyr_cov: 0.0001 max_iteration: 3 # 降低迭代次数减轻计算负担特别提醒在Jetson Orin NX上建议将max_iteration控制在3次以内否则实时性会受影响。我在室内20㎡环境测试时这样配置能达到15Hz的稳定建图频率。5. 实时建图实战与性能分析5.1 系统启动流程启动顺序很有讲究正确的流程应该是先启动Livox驱动再启动FAST-LIO2最后开始移动设备具体命令如下假设工作空间在~/fastlio_ws# 终端1 - 驱动 source ~/fastlio_ws/install/setup.sh ros2 launch livox_ros_driver2 msg_MID360_launch.py # 终端2 - 算法 source ~/fastlio_ws/install/setup.sh ros2 launch fast_lio mapping.launch.py config_file:mid360.yaml5.2 建图效果评估使用Mid360FAST-LIO2组合在典型办公室环境中能达到以下指标定位精度±2cm建图分辨率5cm系统延迟100msCPU占用率约60%4核我常用的评估方法是回环测试让设备沿固定路径移动后返回起点观察起点和终点的重合度。好的参数配置下位置偏差应该小于5cm。5.3 点云保存与后处理FAST-LIO2默认不保存点云需要修改laserMapping.cpp中的相关代码。找到约517行的保存逻辑取消注释并调整if (pcd_save_en) { int size feats_undistort-points.size(); PointCloudXYZI::Ptr laserCloudWorld(new PointCloudXYZI(size, 1)); for (int i 0; i size; i) { RGBpointBodyToWorld(feats_undistort-points[i], laserCloudWorld-points[i]); } *pcl_wait_save *laserCloudWorld; static int scan_wait_num 0; scan_wait_num; if (pcl_wait_save-size() 0 pcd_save_interval 0 scan_wait_num pcd_save_interval) { pcd_index; string all_points_dir(string(string(ROOT_DIR) PCD/scans_) to_string(pcd_index) string(.pcd)); pcl::PCDWriter pcd_writer; cout current scan saved to /PCD/ all_points_dir endl; pcd_writer.writeBinary(all_points_dir, *pcl_wait_save); pcl_wait_save-clear(); scan_wait_num 0; } }保存后的点云可以用CloudCompare查看。我习惯用以下命令进行点云滤波和降采样pcl_voxel_grid -input scan_1.pcd -output filtered.pcd -leaf 0.05,0.05,0.056. 常见问题排查指南在实际部署中我遇到过几个典型问题问题1点云数据延迟严重解决方案检查网络配置确保没有启用QoS等网络优化功能。可以用ping -f -l 8000 192.168.1.100测试大包传输稳定性。问题2建图出现重影可能原因IMU和雷达时间未同步。建议在配置文件中启用time_sync_en并校准time_offset_lidar_to_imu参数。问题3Jetson运行过热降频解决方法安装散热风扇并使用jetson_clocks脚本锁定最高频率sudo /usr/bin/jetson_clocks问题4ROS2节点频繁崩溃排查步骤先用ros2 daemon stop重启ROS2核心然后检查内存使用情况。Jetson Orin NX的16GB内存有时仍显不足可以尝试减少FAST-LIO2的max_iteration值。经过多次项目实践这套方案已经能在大多数室内场景稳定运行。最近在一个仓库巡检机器人项目中使用时连续工作8小时没有出现定位漂移证明其可靠性已经达到商用水平。

更多文章