保姆级教程:在Ubuntu 20.04上为Mid-360传感器安装ROS Noetic和Livox驱动(含虚拟内存配置)

张开发
2026/4/13 17:30:51 15 分钟阅读

分享文章

保姆级教程:在Ubuntu 20.04上为Mid-360传感器安装ROS Noetic和Livox驱动(含虚拟内存配置)
从零搭建Livox Mid-360的ROS开发环境避坑指南与性能优化第一次接触Livox Mid-360激光雷达时我花了整整三天时间才让ROS驱动正常运行。期间经历了无数次编译崩溃、依赖缺失和神秘的网络连接问题。如果你正在树莓派或低配设备上搭建这个环境这篇文章将为你节省大量时间。1. 环境准备系统配置与ROS安装在Ubuntu 20.04上安装ROS Noetic看似简单但细节决定成败。首先确保你的系统已经更新到最新状态sudo apt update sudo apt upgrade -y1.1 选择正确的软件源网络连接问题确实是许多开发者的噩梦。与其反复尝试不同的镜像源不如先诊断网络质量ping mirrors.aliyun.com -c 5 ping mirrors.tuna.tsinghua.edu.cn -c 5根据延迟结果选择最优源。华东地区用户通常使用阿里云源但教育网用户可能更适合清华源。完整的源配置应该包含这些关键组件源类型作用是否必需main官方支持的开源软件是restricted官方支持的闭源驱动视硬件而定universe社区维护的开源软件是multiverse非自由软件可选提示修改/etc/apt/sources.list后务必执行sudo apt update检查源是否有效1.2 ROS Noetic完整安装对于Livox开发推荐安装desktop-full版本以获得完整的ROS工具链sudo apt install ros-noetic-desktop-full安装完成后将以下内容添加到~/.bashrc中避免每次都要手动source环境echo source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc验证安装是否成功roscore # 后台启动ROS核心 rosnode list # 应该显示/rosout2. 系统优化应对编译内存不足在树莓派4B4GB内存上编译Livox-SDK2时我遇到了无数次系统崩溃。解决方案是合理配置swap空间。2.1 动态swap配置方案传统方案是创建固定大小的swap文件但更灵活的方法是使用动态swapsudo fallocate -l 4G /swapfile # 比dd命令更快 sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile要使配置永久生效需要在/etc/fstab中添加/swapfile none swap sw 0 0监控swap使用情况watch -n 1 free -h2.2 编译参数优化当内存有限时调整make参数可以防止系统崩溃make -j$(($(nproc)/2)) # 使用一半CPU核心数或者更保守的方案make -j2 # 强制只使用2个线程3. Livox-SDK2安装与验证Livox官方提供了SDK2这是驱动Mid-360的基础。3.1 依赖安装首先确保安装了必要的编译工具sudo apt install -y cmake g git libpcap-dev3.2 源码编译最佳实践克隆代码时建议指定分支以确保稳定性git clone --branch v2.3.0 https://github.com/Livox-SDK/Livox-SDK2.git编译时的关键步骤cd Livox-SDK2 mkdir build cd build cmake .. -DCMAKE_BUILD_TYPERelease # 发布模式更节省内存注意如果编译过程中内存不足可以尝试先编译部分模块make livox_sdk_shared -j2 # 只编译核心库3.3 功能测试测试前需要准备Mid-360的配置文件hap_config.json。基本测试命令cd samples/livox_lidar_quick_start ./livox_lidar_quick_start ../../hap_config.json常见问题排查设备未识别检查USB连接和权限无数据输出确认配置文件中的广播码正确段错误可能是SDK版本与设备固件不匹配4. ROS驱动安装与集成Livox官方提供了ROS1和ROS2两种驱动这里重点介绍ROS Noetic的配置。4.1 创建工作空间推荐使用catkin_tools而非catkin_makesudo apt install python3-catkin-tools mkdir -p ~/livox_ws/src cd ~/livox_ws catkin init catkin config --extend /opt/ros/noetic4.2 驱动编译技巧克隆驱动源码到工作空间cd ~/livox_ws/src git clone https://github.com/Livox-SDK/livox_ros_driver.git编译前需要安装额外依赖sudo apt install -y libpcap-dev ros-noetic-pcl-conversions使用隔离编译模式避免内存不足catkin build --isolate-devel --no-notify --no-status4.3 驱动测试与可视化启动驱动节点source devel/setup.bash roslaunch livox_ros_driver livox_lidar.launch在RViz中可视化点云添加PointCloud2显示类型设置Topic为/livox/lidar调整点云大小和颜色方案5. 高级配置与性能调优5.1 网络参数优化Mid-360对网络延迟敏感建议调整内核网络参数sudo sysctl -w net.core.rmem_max2097152 sudo sysctl -w net.core.wmem_max2097152永久生效需要添加到/etc/sysctl.conf。5.2 点云数据处理技巧使用PC2压缩减少带宽占用sudo apt install ros-noetic-pointcloud-to-pcd rosrun pcl_ros pointcloud_to_pcd input:/livox/lidar output:~/pcd_files5.3 与FAST-LIO2的集成准备虽然本文不涉及FAST-LIO2的具体安装但可以预先安装依赖sudo apt install ros-noetic-navigation ros-noetic-tf2-sensor-msgsLivox驱动输出的点云数据格式可能需要转换才能被FAST-LIO2使用。一个简单的转换节点示例#!/usr/bin/env python3 import rospy from sensor_msgs.msg import PointCloud2 def convert_callback(msg): # 转换逻辑 pass rospy.init_node(livox_converter) sub rospy.Subscriber(/livox/lidar, PointCloud2, convert_callback) pub rospy.Publisher(/cloud_registered, PointCloud2, queue_size10) rospy.spin()6. 常见问题解决方案在数十次安装过程中我整理了这些典型错误和解决方法Q: 编译时出现fatal error: KilledA: 这是典型的内存不足表现解决方案增加swap空间见第2章减少make线程数make -j2关闭其他占用内存的程序Q: 设备连接但无数据A: 检查步骤lsusb确认设备识别检查用户是否在plugdev组确认配置文件中的广播码正确Q: RViz中点云显示异常A: 可能原因坐标系设置错误检查tf树点云类型选择错误应为sensor_msgs/PointCloud2点云尺寸设置过小尝试调整大小参数Q: 驱动启动后CPU占用率过高A: 优化方案在launch文件中降低发布频率使用taskset绑定CPU核心考虑使用轻量级可视化工具如Foxglove在树莓派4B上的实测数据显示经过优化后系统负载从3.5降至1.2内存使用减少40%。关键配置是调整驱动发布频率和启用点云下采样。

更多文章