# 纯 LiDAR–IMU：标定流程与采集清单

**用途：** 现场怎么采合格数据（看完根目录 [README](../README.md) 后再看本文即可）。  
算法命令与结果判读以 README 为准；改动史见 [`imu_lidar/CHANGELOG.md`](../imu_lidar/CHANGELOG.md)。

仅有激光雷达与 IMU、无 RTK/绝对位姿时的推荐采集与流程要点。  
目标外参：`p_IMU = T_IMU_lidar · p_lidar`（`T_A_B` 表示把 B 系点变到 A 系）。

---

## 1. 原则（先读）

1. **时间对齐优先**：时钟偏置未对准时，旋转与平移都不可信；正式数据用**设备时间戳**。
2. **先旋转，再平移**：旋转通常更稳；平面低速时竖直方向平移常常不可观。
3. **用连续运动**：停车多站适合 RTK 手眼，不适合作为纯 IMU 外参主流程。
4. **可观才交平移**：激励不够就只交旋转，不强交“假精确”六自由度。
5. **残差小 ≠ 标定对**：需叠点云、跨会话等独立验证。

相对运动模型：

```text
A ≈ IMU 预积分相对运动（关键帧区间）
B ≈ 雷达关键帧配准相对运动
R_A · R_X ≈ R_X · R_B     → 先求旋转
完整模式且可观时再求平移 t
```

---

## 2. 端到端流程（与现行代码一致）

```text
确认轴向 / 单位 / 时间语义
  → 现场采集（首尾静止 + 低速多转弯；建议 ≥2 段独立会话）
  → 导出标准中间格式（imu.csv + lidar 会话目录）
  → 质检（时间 / IMU）不通过则停
  → 粗估时间偏置 δt
  → 关键帧 → 配准得 B；完整 IMU 预积分得 A（旋转/速度/位移增量）
  → 加权旋转手眼得 R
  → 用 R 精修 δt，必要时重新组对再解 R（可交替数轮）
  → 联合精修 R 与常值陀螺零偏
  → full_se3 且可观：再估重力、关键帧速度、时变零偏与平移 t
  → 写出 T / δt / summary → 叠点云 / 跨会话验证后交付
```


| 步骤  | 现行模块                                                                 | 说明                                      |
| --- | -------------------------------------------------------------------- | --------------------------------------- |
| 质检  | `timestamp_audit` / `imu_audit`                                      | 含静止段陀螺零偏初值                              |
| 时间  | `time_offset`                                                        | 模长相关粗估 + 有符号三轴精修                        |
| 运动对 | `keyframes` / `registration` / `imu_preintegration` / `motion_pairs` | 预积分始终算满；手眼先用旋转                          |
| 旋转  | `rotation_handeye`                                                   | 加权手眼                                    |
| 精修  | `joint_optimizer` / `observability`                                  | `rotation_only` 到旋转为止；`full_se3` 可观才碰平移 |


点云去畸变（`lidar_deskew`）可选；低速首轮可不依赖。

---



## 3. 采集设计



### 3.1 单趟会话结构

```text
静止 20–30 s → 连续运动 3–8 min → 再静止 10–20 s
```

运动优先：低速「8」字 / 左右圆；再补加减速直线。  
要可靠竖直方向外参时，另加缓坡（约 3°～8°，有效长度优先 ≥20～30 m），或改用外测垂直尺寸先验。

### 3.2 会话安排


| 会话    | 作用                                 |
| ----- | ---------------------------------- |
| A     | 主标定                                |
| B     | 独立验证（**同一场地**换一条不完全相同的路线即可，不参与求外参） |
| C（可选） | 不同速度/路线，测稳定性                       |


安装全程不得改动。多会话不要跨会话拼运动对。

### 3.3 录制字段（原始，勿先做姿态融合）

- IMU：设备时间、陀螺、加速度（建议同时留主机接收时间便于排查）
- LiDAR：每帧起止时间（最好有包级/逐点时间）、原始点云

中间格式见 `[V1_数据格式.md](V1_数据格式.md)`。

---



## 4. 现场 Checklist

**出发前**

- [ ] 安装固定；草图/卷尺粗测仅作参考，不当真值
- [ ] 单位与轴向确认；设备时间可写盘
- [ ] 结构化路线（墙/杆/路缘），避开空旷无特征区
- [ ] 存储与供电充足

**录制中**

- [ ] 首尾静止；中间有明显左右转与加减速
- [ ] 不改安装、不切换时间源
- [ ] 记录会话 ID、天气、异常（急刹、掉包等）

**当场快查**

- [ ] IMU 静止段平稳，转弯时角速度明显
- [ ] 点云帧数/点数正常，无明显大面积丢帧
- [ ] 雷达与 IMU 时间覆盖同一时段

**回实验室**

- [ ] 已导出中间格式并通过质检
- [ ] 本次目标：`rotation_only` 还是尝试 `full_se3`
- [ ] 若要竖直方向：确认真有俯仰/高度激励，否则降级交付

---



## 5. 精度预期


| 量          | 较现实范围     | 说明               |
| ---------- | --------- | ---------------- |
| 旋转         | 约 0.5°–2° | 最精确部分            |
| 水平平移       | 数厘米～十几厘米  | 强依赖配准、激励与同步      |
| 竖直 / 部分杠杆臂 | 往往更差甚至不可观 | 无高度激励时无法得出“精确 z” |


如果条件有限，优先交付：**可靠旋转 + δt + 可观的平移分量（若有）+ 明确限制说明**。

满足条件后的模式与成功标志见根目录 [`README.md`](../README.md) §0。

---



## 6. 交付物建议

程序默认写出：`T_IMU_lidar.json`、`time_offset.json`、`summary.json`。  
完整报告目录还可补充：可观性结论、跨会话对比、运动对质量表、限制说明（尤其竖直方向与时间同步方式）。

```text
静止 + 激励录制（多会话）
  → 质检 → 估 δt → 关键帧 A/B → 先解 R
  → 精修 δt 与 R → 可观则求 t → 验证后交付
```

