# Livox Mid-360 倾斜或倒装在四足/人形机身时 FAST-LIO2 里程计发散飘飞

> 原文链接：https://robotics.hellobike.com/pitfalls/livox-mid360-fast-lio2-imu-extrinsic-divergence
> 频道：pitfalls | 更新日期：2026-10-21 | 标签：Livox, Mid-360, FAST-LIO2, 激光SLAM, 外参标定, IMU
> 核心摘要：雷达非水平安装时内置 IMU 重力加速度分量与雷达外参未同步旋转，导致 FAST-LIO2 初始化重力对齐失败、点云地图迅速发散。

# Livox Mid-360 倾斜或倒装在四足/人形机身时 FAST-LIO2 里程计发散飘飞

## 硬件与软件环境
- **传感器**：览沃 Livox Mid-360 混合固态激光雷达（内置 6 轴 IMU）
- **适配本体**：宇树 G1（头部倒装）、宇树 Go2（车头下倾安装）、行业四足巡检平台
- **算法栈**：`livox_ros_driver2` + `FAST-LIO2`

## 故障现象与报错
雷达水平放置桌面时建图完全正常；但一旦按机器人结构要求**倒装（Roll = 180°）**或**前倾下视（如 Pitch = 30°）**安装到机器人本体后，启动 FAST-LIO2 并在原地轻微晃动机身，RViz2 中的点云和 `Odometry` 轨迹在 2～3 秒内沿 Z 轴或水平方向加速飘飞至数千米外。

## 根因分析
1. **Mid-360 内置 IMU 单位为 `g` 而非 `m/s²`**：`livox_ros_driver2` 发布 `/livox/imu` 时线性加速度单位为重力加速度 `g`（静止模长约为 1.0），若外部算法误按 `9.81 m/s²` 处理且关闭了在线重力模长归一化，会导致加速度积分尺度错误。
2. **`extrinsic_R` 配置错误或驱动层重复旋转**：如果在 `config.json`（`livox_ros_driver2`）里已经填写了 `roll/pitch/yaw` 做了点云硬件坐标旋转，同时又在 `mid360.yaml`（`FAST-LIO2`）的 `extrinsic_R` 中填了旋转矩阵，会导致点云与 IMU 之间的相对外参被错误破坏（Mid-360 内部激光与内置 IMU 之间的固联外参是出厂固定的，不应随整机安装倾角改变！）。

## 解决步骤
1. **保持 `livox_ros_driver2` 内部外参全零**：在 `MID360_config.json` 的 `extrinsic_parameter` 中保持 `roll: 0, pitch: 0, yaw: 0, x: 0, y: 0, z: 0`，确保点云和内置 IMU 均工作在雷达原生坐标系，此时 `mid360.yaml` 中的 `extrinsic_R` 保持单位阵 `I_3`、`extrinsic_T: [-0.011, -0.02329, 0.04412]` 即可稳定建图。
2. **在 TF 树而非驱动内部处理机身倾角**：启动 FAST-LIO2 时保持機器人静止 3 秒完成重力方向初始化，然后通过 `static_transform_publisher` 发布 `base_link -＞ body`（包含实际安装俯仰角或 180° 倒装翻滚角）将里程计对齐回机器人底盘水平系。

## 原始参考来源 (Sources)

- [GitHub hku-mars/FAST_LIO](https://github.com/hku-mars/FAST_LIO)
- [GitHub Livox-SDK/livox_ros_driver2](https://github.com/Livox-SDK/livox_ros_driver2)