158 lines
5.8 KiB
Markdown
158 lines
5.8 KiB
Markdown
# 纯 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 → 验证后交付
|
||
```
|
||
|