保姆级教程在Jetson Orin NX上用Ubuntu 22.04和MID-360激光雷达跑通FAST-LIOROS2 Humble版当机器人需要在不依赖GPS的环境中实现精准定位时激光雷达与惯性测量单元IMU的融合算法成为关键技术。FAST-LIO作为当前最先进的激光雷达-惯性里程计之一以其计算效率和稳定性在嵌入式设备上展现出独特优势。本教程将手把手带你在NVIDIA Jetson Orin NX开发板上从零搭建完整的FAST-LIO运行环境特别针对Livox MID-360激光雷达和ROS2 Humble进行深度适配。1. 环境准备与硬件配置1.1 系统基础环境搭建Jetson Orin NX出厂时通常预装Ubuntu 20.04我们需要先升级到22.04版本以获得对ROS2 Humble的完整支持。执行以下命令进行系统升级sudo apt update sudo apt upgrade -y sudo do-release-upgrade -d升级完成后建议安装以下基础开发工具链sudo apt install -y \ build-essential \ cmake \ git \ python3-colcon-common-extensions \ python3-rosdep \ python3-vcstool特别注意Jetson Orin NX的ARM架构可能导致某些x86平台的预编译包不可用所有依赖都需要从源码构建。1.2 网络静态IP配置MID-360激光雷达通过有线网络与主机通信需要为Jetson Orin NX配置静态IP地址通过GUI操作打开Settings → Network选择有线连接点击齿轮图标在IPv4选项卡中选择Manual填写以下参数Address: 192.168.1.50Netmask: 255.255.255.0Gateway: 192.168.1.1或通过命令行修改适用于无显示器场景sudo nmcli con mod Wired connection 1 \ ipv4.method manual \ ipv4.addresses 192.168.1.50/24 \ ipv4.gateway 192.168.1.1 sudo nmcli con up Wired connection 1提示激光雷达的IP地址如192.168.1.1XX需要根据设备SN码后两位确定这个信息会在后续驱动配置中用到。2. Livox MID-360驱动安装2.1 SDK2源码编译安装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编译完成后验证安装是否成功ls /usr/local/include/livox应该能看到livox_def.h等头文件。如果遇到权限问题可能需要调整/usr/local/lib的访问权限sudo chmod 755 /usr/local/lib2.2 ROS2驱动配置创建ROS2工作空间并获取驱动源码mkdir -p ~/livox_ws/src cd ~/livox_ws/src git clone https://github.com/Livox-SDK/livox_ros_driver2.git修改MID-360配置文件nano ~/livox_ws/src/livox_ros_driver2/config/MID360_config.json关键参数修改项原参数修改值说明ip192.168.1.50Jetson主机IPhost_ip192.168.1.1XX雷达SN后两位3. FAST-LIO源码适配与编译3.1 获取适配ROS2的代码分支cd ~/livox_ws/src git clone https://github.com/Ericsii/FAST_LIO.git --recursive这个分支已经针对ROS2 Humble做了适配但还需要进行一些ARM架构相关的调整。3.2 关键代码修改点点云保存功能激活 修改FAST_LIO/src/laserMapping.cpp找到约517行处的pcd_save_en相关代码取消注释if (pcd_save_en) { int size feats_undistort-points.size(); PointCloudXYZI::Ptr laserCloudWorld(new PointCloudXYZI(size, 1)); // ...保持其余代码不变... }ARM架构优化 在CMakeLists.txt中添加针对Jetson的编译选项if(CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) add_compile_options(-O3 -mcpucortex-a78 -mtunecortex-a78) endif()3.3 依赖安装与编译安装Eigen3和PCL等核心依赖sudo apt install -y \ libeigen3-dev \ libpcl-dev \ ros-humble-pcl-conversions执行编译cd ~/livox_ws source /opt/ros/humble/setup.sh colcon build --symlink-install \ --cmake-args \ -DROS_EDITIONROS2 \ -DHUMBLE_ROShumble \ -DLIVOX_INTERFACES_INCLUDE_DIRECTORIES/usr/local/include/livox4. 系统联调与性能优化4.1 启动流程与验证启动激光雷达驱动source ~/livox_ws/install/setup.sh ros2 launch livox_ros_driver2 msg_MID360_launch.py新建终端启动FAST-LIOsource ~/livox_ws/install/setup.sh ros2 launch fast_lio mapping.launch.py config_file:mid360.yaml4.2 Jetson专属性能调优电源模式设置sudo nvpmodel -m 0 # 切换到MAXN模式 sudo jetson_clocks # 锁定最高频率ROS2参数优化 修改mid360.yaml中的关键参数preprocess: lidar_type: 3 # MID-360类型代码 point_filter_num: 2 # 降采样率实时性保障sudo apt install rt-tests sudo sysctl -w kernel.sched_rt_runtime_us9500004.3 建图效果评估当雷达移动时FAST-LIO会实时输出位姿估计。完成建图后点云文件会保存在~/PCD/目录下。使用CloudCompare查看效果sudo apt install cloudcompare cloudcompare ~/PCD/scans_1.pcd典型性能指标参考指标Orin NX表现说明处理频率10-15Hz取决于环境复杂度内存占用1.2-1.8GB长时间运行需监控CPU负载60-80%四核均衡使用5. 常见问题解决方案Q1: 编译时出现undefined reference错误A: 这通常是链接顺序问题尝试修改CMakeLists.txt中的target_link_libraries顺序确保livox_sdk2在最前面。Q2: 雷达点云数据无法接收A: 按步骤检查ifconfig确认IP配置正确尝试ping 192.168.1.1XX测试雷达连通性检查MID360_config.json中的SN码匹配Q3: 建图出现严重漂移A: 可能的原因和解决IMU数据不同步检查mid360.yaml中的imu_topic配置时间戳问题尝试启用use_lidar_clock参数运动过于剧烈保持匀速运动有助于算法收敛Q4: Jetson上运行卡顿A: 优化建议sudo systemctl stop nvgetty # 关闭调试服务 sudo renice -n -20 -p $(pidof fast_lio_node) # 提高进程优先级