ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

mid360+LIO-SAM四足机器狗室外建图实践指南

2026/9/3 4:42:17 拓冰建站 浏览量
mid360+LIO-SAM四足机器狗室外建图实践指南 用 mid360 跑 LIO-SAM四足机器狗室外建图效果实拍这次我们来看一个很实际的组合Livox MID-360 雷达 LIO-SAM 算法 四足机器狗用来做室外建图。先说结论如果你手里正好有一台四足机器狗想给它加一个“环境感知”能力mid360 是一个性价比很高的选择。它体积小、重量轻、视场角大装上就能用LIO-SAM 是 LOAM 系列里比较成熟的紧耦合 LiDAR-Inertial 里程计与建图方案能和 mid360 的内置 IMU 配合输出频率稳定、点云地图完整。室外建图能不能跑通关键不在算法本身多高级而在驱动、外参、IMU 方向和主题名对不对。这篇文章不讲虚的。我们从硬件选型、环境准备、驱动安装、参数配置到室外数据采集和地图效果验证按一套通用流程走下来。你在自己的机器狗上做室外建图时可以直接照着这个思路排查问题。顺便说一句很多人在 mid360 上用的是 FAST-LIO。LIO-SAM 和 FAST-LIO 各有优势我会在后面的章节里专门做一个选型对比。你先确认自己的目标场景再决定跑哪套能少走很多弯路。1. 核心能力速览能力项说明传感器Livox MID-360360° 视场角内置 IMU适用于近距离室外建图算法LIO-SAM基于因子图优化的紧耦合 LiDAR-Inertial 里程计与建图方案定位定姿mid360 内置 IMU 与激光点云紧耦合无需额外购买高精度 IMU支持平台Ubuntu 18.04/20.04 ROS Melodic/Noetic也可在 ROS2 分支上尝试启动方式先启动 livox_ros_driver再启动 LIO-SAM 节点通过 RViz 观察地图室外效果在小型建筑物、树木、道路边缘等场景可构建可用的二维/三维点云地图四足适配重量、供电、安装支架需要按机器狗型号设计震动影响需要实测调整接口能力输出 /lio_sam/mapping/map 点云和 TF可继续接 move_base、导航或路径规划批量任务支持录制 rosbag 后离线建图和在线实时建图两种模式上面这张表里最值得注意的一点是LIO-SAM 并不需要太强的算力。主流的工控机、Jetson Orin NX 这类平台就能实时跑。真正影响效果的是 IMU 数据是否干净、外参标定是否准确、雷达安装是否稳固。这是整个建图流程的底层逻辑后面所有步骤都围绕这三点展开。2. 适用场景与使用边界2.1 适合什么场景mid360 LIO-SAM 这套组合最适合的场景是室外园区、校园、矿区、工地等中小范围环境的地图构建。四足机器狗、轮式机器人、履带式机器人上的实时定位与建图。需要把建好的地图交给导航栈做路径规划的场景。室内外过渡场景例如从楼内走到楼外再回到楼内。mid360 的近距离盲区小对四足机器狗这种离地高度不高的平台很友好。LIO-SAM 的帧间匹配和回环检测在特征丰富的室外环境里表现稳定建出的地图轮廓清楚。2.2 不适合什么场景超大范围室外建图例如整个城市街区、大范围矿山mid360 的量程和点云密度会吃紧。长时间退化环境例如笔直且两侧无特征的走廊、空旷广场激光匹配会退化需要更谨慎的回环策略。需要高精度厘米级地图的场景mid360 的精度定位在近距和中距远距点云精度有限。动态物体极多的场景例如车辆穿行的城市道路地图中会出现大量拖影和残影。2.3 使用边界与合规提醒室外建图涉及到的数据包括环境点云、建筑轮廓、道路结构。在校园、园区或自己单位内部测试没有问题但如果要对公共区域采集数据建议先确认当地对地理信息和公共空间数据采集的管理要求避免采集到敏感区域或未授权场所的空间数据。另外四足机器狗属于移动机器人设备如果在公共场所运行注意人员安全和设备管控尽量在非高峰时段测试并设置急停开关。涉及第三方场地、楼宇结构和人员隐私的区域要提前获得授权。3. 硬件与环境准备3.1 硬件清单部件建议配置说明激光雷达Livox MID-360自带 IMU视场角 360°体积小适合小型机器人四足机器狗市面常见四足平台需要确认载重、供电接口和安装空间计算平台x86 工控机或 Jetson 系列建议至少 8GB 内存CPU 4 核以上供电雷达独立供电或通过机器狗供电模块mid360 供电要求严格按规格书来安装支架3D 打印或定制金属支架尽量减少悬臂降低震动网线/串口根据雷达型号选择mid360 通常走网口通信这里提醒一点如果选择 Jetson 平台LIO-SAM 需要编译 PCL、GTSAM 等依赖在 ARM 架构下的编译时间比你预想的要长。建议准备至少 30GB 的磁盘空间和稳定的网络环境。3.2 软件环境一套标准的软件环境如下环境项推荐版本操作系统Ubuntu 18.04 或 Ubuntu 20.04ROSMelodic 或 NoeticLivox SDK对应 livox_ros_driver 的配套版本GTSAM4.0.xLIO-SAM 依赖PCLROS 自带版本OpenCVROS 自带版本更稳妥的做法是直接在已有 ROS 环境的机器上编译 LIO-SAM先不单独升级 PCL 和 OpenCV避免依赖冲突。第一次跑通之后再考虑性能优化。3.3 磁盘和网络室外采集 rosbag 会占用大量磁盘空间。mid360 点云频率较高一条 20 分钟的室外 bag 可能占用 5GB 以上。建议/home 目录预留至少 50GB。采集时用固态硬盘避免机械硬盘写入掉速。如果在线建图需要保证计算平台和雷达之间网口连接稳定。4. Livox 驱动与 LIO-SAM 安装4.1 安装 Livox ROS 驱动mid360 官方推荐使用 livox_ros_driver2它支持 livox_ros_driver 的消息格式也提供了更简单的启动方式。先创建 ROS 工作空间mkdir -p ~/mid360_lio_ws/src cd ~/mid360_lio_ws/src git clone https://github.com/Livox-SDK/livox_ros_driver2.git cd ~/mid360_lio_ws catkin_make编译完成后在 launch 文件里mid360 通常使用mid360_config.json配置。你不需要改太多参数但要确认source ~/mid360_lio_ws/devel/setup.bash roslaunch livox_ros_driver2 msg_MID360.launch启动后用rostopic list查看是否有/livox/lidar和/livox/imu话题。4.2 编译 GTSAMGTSAM 是 LIO-SAM 的因子图后端依赖。在 Ubuntu 20.04 上可以这样装sudo apt install -y libgtsam-dev libgtsam-unstable-dev如果你需要自己编译最新版可以使用git clone https://github.com/borglab/gtsam.git cd gtsam mkdir build cd build cmake .. make -j4 sudo make install注意 GTSAM 编译时间较长建议用-j4控制并发避免内存溢出。如果你用的是 Jetson 平台可能还需要额外设置CMAKE_CXX_FLAGS来覆盖编译参数。4.3 编译 LIO-SAMcd ~/mid360_lio_ws/src git clone https://github.com/TixiaoShan/LIO-SAM.git cd ~/mid360_lio_ws catkin_make如果 catkin_make 过程中报找不到geodesy或nav_msgs先安装sudo apt install -y ros-${ROS_DISTRO}-geodesy ros-${ROS_DISTRO}-nav-msgs编译通过后启动前需要修改 LIO-SAM 的 mid360 配置。这一步非常关键如果配置不对即使驱动正常地图也会飞掉。5. LIO-SAM 的 mid360 参数配置5.1 主题名配置LIO-SAM 默认配置写的是 velodyne 的/points_raw和/imu_raw。mid360 的 lisyros_driver2 发布的是/livox/lidar和/livox/imu所以需要改config/params.yaml。推荐把 mid360 参数单独保存成一份params_mid360.yaml避免覆盖原始配置。主要修改内容pointCloudTopic: /livox/lidar imuTopic: /livox/imu lidarFrame: base_link baselinkFrame: base_link odometryFrame: odom mapFrame: map5.2 IMU 方向与噪声参数mid360 内置 IMU 的安装方向会影响 LIO-SAM 的行为。LIO-SAM 默认把 IMU 的x轴指向正前方z轴朝上。如果你的机器狗上把雷达倒置或者旋转了 90°需要修改配置里的外参。常用方式是先用一个静态 TF 把雷达坐标系对准机器狗的本体坐标系。更简单的方法是把雷达按标准方向安装正面朝向机器狗前进方向。IMU 噪声参数按 mid360 的数据手册填写但注意要通过实测微调accNoise: 0.00498443 accBiasN: 0.00137984 gyrNoise: 0.00174781 gyrBiasN: 0.00015126如果不能确定准确值可以先保留一套保守值建图时观察漂移再做调整。实际跑下来IMU 噪声参数对里程计短期稳定性影响明显但回环能纠正一部分漂移。5.3 外参设置LIO-SAM 的配置里有一个非常重要的外参extrinsicTrans: [0.02, 0.0, 0.12] extrinsicRot: [1, 0, 0, 0, 1, 0, 0, 0, 1]这个外参表示雷达坐标系相对base_link的位置和旋转。你必须按照自己机器狗上的实际安装位置填写。如果装歪了可以先用卷尺和水平尺测量再通过后续建图结果做微调。要提醒的是LIO-SAM 的 extrinsicRot 采用的是雷达到 base 的方式填写时要和你的雷达朝向一致否则点云在每次旋转匹配时会明显分层。6. 四足机器狗上的安装与数据采集6.1 安装方式四足机器狗的顶部一般有安装底板mid360 可以直接通过螺丝固定但要注意雷达的扫描平面最好与地面平行或者略向下倾斜 0°~5°这样能扫到更多地面点提高建图稳定性。雷达不要装在机器狗运动时会剧烈摆动的部位例如腿部或尾部支架。线缆要留出足够长度避免运动时拉扯。如果机器狗运行时震动较大可以加一层减震垫但注意不要完全隔离 IMU 的角速度信息否则会影响紧耦合效果。6.2 启动顺序建议按下面的顺序启动# 终端 1 source ~/mid360_lio_ws/devel/setup.bash roslaunch livox_ros_driver2 msg_MID360.launch # 终端 2 source ~/mid360_lio_ws/devel/setup.bash roslaunch lio_sam run.launch如果一切正常RViz 中会看到点云地图逐渐累积。6.3 录制 rosbag录制原始数据便于离线调参mkdir -p ~/bagfiles rosbag record -O ~/bagfiles/outdoor_01 /livox/lidar /livox/imu /tf /tf_static录制时需要注意让机器狗缓慢行走避免快速旋转。路径要设计成有回环的路线LIO-SAM 的回环检测需要闭环。每次测试前先保持雷达静止 2~3 秒让初始位姿收敛。录制完后离线回放时再启动 LIO-SAMroslaunch lio_sam run.launch rosbag play --clock outdoor_01.bag6.4 数据质量检查在跑正式建图之前先检查 mid360 的数据质量检查项方法良好表现点云发布频率rostopic hz /livox/lidar稳定在 10Hz 左右IMU 频率rostopic hz /livox/imu200Hz 左右TFrosrun tf view_frames坐标树完整平移畸变RViz 中观察点云静止时点云无重影如果点云频率抖动较大优先检查网线连接和供电。如果 IMU 频率不稳定看雷达是否过热或供电电压偏低。7. 室外建图效果验证7.1 怎么判断地图好不好室外建图效果不是只看“点云密度够不够”。需要关注墙体是否笔直在 RViz 中测量墙面的点云厚度。边缘是否重影树木、电线杆边缘如果出现双层说明匹配有问题。回环是否闭合走过一圈回到起点地图末尾和开头是否对齐。轨迹是否平滑查看 odom 轨迹不应有突然的跳变。7.2 常见验证方法建议把建图过程录成视频或者截图方便对比参数调整前后的效果。也可以保存最终地图rosrun pcl_ros pointcloud_to_pcd input:/lio_sam/mapping/map生成 PCD 之后可以用 CloudCompare 打开测量点云厚度。如果墙体厚度超过 20cm基本可以确认匹配或外参有问题。7.3 实拍效果观察重点这里说一个很多人容易忽略的地方四足机器狗行走时是周期性的四腿交替运动机体会产生轻微的俯仰和横滚震荡。LIO-SAM 依靠 IMU 来估计姿态如果 IMU 数据被震动干扰地图中地面会出现波浪形。实拍时重点看两个位置地面点云是否在同一高度有没有明显波纹。远处墙体是否随狗步态出现周期性抖动。如果出现上述现象可以先降低行走速度或者在配置里调低 IMU 角速度噪声让激光里程计在姿态估计中权重更大。7.4 效果好的标准参考一套比较理想的效果是这样的机器狗在约 50m x 50m 的园区内走一圈耗时 5 分钟左右。起点与终点闭环误差小于 1m。点云地图中的建筑轮廓清晰树木呈放射状地面平整。回环检测触发至少一次轨迹出现明显的约束修正。这个标准是通用参考实际效果以你的测试环境和传感器标定为准。如果第一次跑出来的地图有漂移不要急着怀疑算法先检查外参和 IMU 方向。8. FAST-LIO 与 LIO-SAM 选型对比网络热词里频繁出现 “mid360 使用 fast-lio 建图”所以这里单独聊一下选型。很多人在 mid360 上跑 FAST-LIO 是因为它开源迭代快、代码结构简单而且对 Livox 点云的适配更直接。对比维度LIO-SAMFAST-LIO / FAST-LIO2核心思路因子图优化帧图匹配 回环检测滤波式紧耦合增量式建图回环检测支持能消累积误差部分版本无回环需要靠外部方案计算负载相对较高相对较低代码可读性结构清晰模块多更紧凑适合学习和魔改mid360 适配需要改主题名和外参官方有 livox 版本起点更快四足机器人场景适合需要最终建图和闭环的场景适合快速状态估计和实时定位联合使用可以可以简单说如果你的目标是“最终得到一张可用的室外地图”LIO-SAM 更合适因为回环检测能修掉一部分漂移如果你的目标是“在运动过程中保持稳定实时位姿”FAST-LIO 更快。两者不是二选一也可以先用 FAST-LIO 估计姿态再用 LIO-SAM 做后端建图不过配置复杂度会上升。从社区讨论看mid360 上跑 FAST-LIO 的保姆教程更多原因主要是 FAST-LIO 对 mid360 的初始外参敏感度低一些调起来更容易。LIO-SAM 虽然也能跑但初次配置时容易因为 IMU 轴方向不对导致地图发散。所以如果你是在校学生或刚开始做科研可以先用 FAST-LIO 熟悉流程再切换到 LIO-SAM 做最终建图。9. 常见问题与排查方法下面这张表是 mid360 LIO-SAM 最常见的几类问题按照“现象 → 原因 → 排查 → 解决”的顺序整理。9.1 点云话题或 IMU 话题不存在项目内容现象roslaunch 后LIO-SAM 终端提示等待点云或 IMU 主题可能原因livox 驱动未启动或话题名与配置不一致排查方式rostopic list查看实际话题名解决方案修改 params_mid360.yaml 中的 pointCloudTopic 和 imuTopic9.2 地图发散项目内容现象RViz 中的点云越来越乱轨迹突变可能原因IMU 方向错误、外参错误、IMU 噪声参数不当排查方式观察 TF 是否稳定使用 rqt_tf_tree 查看坐标关系解决方案确认雷达朝向与配置一致先用静止数据测试里程计是否漂移9.3 墙体重影或边缘分层项目内容现象墙、地面出现双层点云边缘不清晰可能原因外参不准、震动过大、传感器时间戳不同步排查方式静止采集一段点云看是否仍然重影解决方案重新标定外参检查雷达与 IMU 时间戳9.4 启动后 RViz 不显示地图项目内容现象LIO-SAM 启动正常但 RViz 中没有点云可能原因没有启动 Livox 驱动或 RViz 没有订阅正确话题排查方式rostopic hz /livox/lidar查看是否发布解决方案先启动驱动再启动 LIO-SAM确认 RViz 的 Fixed Frame 为 map9.5 回环检测不触发项目内容现象轨迹明显漂移但地图没有闭环可能原因路径没有回环或回环检测参数较保守排查方式查看 LIO-SAM 终端是否打印 loop 相关日志解决方案设计更明显的闭环路径或降低回环检测的置信度阈值9.6 rosbag 回放时建图效果差项目内容现象在线建图正常离线回放效果差可能原因时间戳未使用 bag 的 /clock或回放速度不匹配排查方式检查 bag 时间范围确认 LIO-SAM 启动时是否设置 use_sim_time解决方案启动 LIO-SAM 前设置rosparam set use_sim_time true10. 最佳实践与使用建议10.1 部署层面的建议先做静态测试机器狗静止时启动 LIO-SAM观察点云是否稳定里程计是否漂移。如果静止状态下都漂不要直接去室外。做一次外参粗标定用卷尺和水平尺量出雷达相对 base_link 的位置再配合点云对齐调整。录制多段不同场景的 bag分别用于回环、非回环、快速转弯、上下坡等工况测试避免在同一个场景反复调参。每次修改配置后只改一个参数避免同时改外参和噪声后无法判断是哪个变更导致效果变好或变差。10.2 调参与性能观察观察 CPU 占用使用htop或top查看 LIO-SAM 三个核心节点是否单核满载。如果单核满载考虑降低点云频率或使用特征降采样。观察内存占用如果长时间运行内存持续增长可能有消息积压或地图点云未压缩需要定时保存地图并清理节点内缓存。显存占用对 LIO-SAM 不是主要限制因为它不是深度学习模型。如果你在 Jetson 上跑GPU 负载主要集中在可视化 RViz 上。10.3 工程化建议把 livox_ros_driver2 和 LIO-SAM 写成一个一键启动脚本用 roslaunch 嵌套启动减少现场操作步骤。在采集端设置自动断电保护机器狗跌倒或电量低时自动停止建图避免运动畸变污染地图。定期用rosbag record保留原始数据方便后续回放调参。如果你需要把地图交给导航使用建议在 LIO-SAM 建图后做一次点云过滤和降采样用pcl::VoxelGrid把地图点云体素化降低导航内存占用。10.4 合规提示室外建图过程中注意不采集未授权的建筑内部信息。如果是在校园避开特定实验楼和敏感区域如果是在园区提前与物业沟通。机器狗属于移动设备建议使用开发者模式设置好安全参数在人少时段测试。所有采集数据仅用于技术验证不做超出授权的复现和传播。11. 总结与下一步mid360 LIO-SAM 跑到四足机器狗上最值得尝试的点是用一个相对便宜的激光雷达在室外环境中构建出能用的点云地图再交给导航栈做路径规划。你最先需要验证的不是建图效果而是“点云能不能稳定发布、IMU 频率是否正常、外参是否装对”。这三件事做了LIO-SAM 的建图效果只是时间问题。最容易踩的坑集中在三处第一是话题名没改成/livox/lidar和/livox/imu第二是 IMU 方向装反导致轨迹翻转第三是四足狗行走时的震动让 IMU 数据污染地图出现波浪形地面。建议你第一次测试时先用手推着机器狗慢速走一圈确认基础流程跑通再切换到四足行走模式。后续可以继续扩展的方向有在 LIO-SAM 基础上接入 RTK 做全局定位补偿、增加地面分割算法提高地面点质量、把建好的地图导入 Nav2 做自主导航、或者用 FAST-LIO 做前端状态估计与 LIO-SAM 后端建图联动。先把今天这篇流程跑通后面每一步都有了可靠的数据基础。