宏观架构
┌──────────────────────┐
│ 机器人系统 │
└──────────┬───────────┘
│
┌─────────────────┴─────────────────┐
│ │
▼ ▼
┌────────────────────┐ ┌────────────────────┐
│ 主导航定位链 │ │ 视觉重定位旁路 │
│ (常驻运行) │ │ (按需触发) │
└─────────┬──────────┘ └─────────┬──────────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ 2D LiDAR │ │ RGB-D Camera│
└──────┬──────┘ └──────┬──────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ AMCL │ │ Visual │
│ 定位 │ │ Relocalize │
└──────┬──────┘ └──────┬──────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Nav2 │◄────恢复───────┤ │ AMCL Reset │
│ 导航 │ └─────────────┘
└─────────────┘
核心原则:
- 正常运行: LiDAR + AMCL + Nav2
- 异常恢复: RGB-D视觉辅助找回位置
- 视觉: 不参与日常导航 不替代AMCL
数据流架构
地图资产
┌─────────────────────────┐
│ Map Package │
├─────────────────────────┤
│ │
│ 2D Occupancy Map │
│ │ │
│ ▼ │
│ AMCL / Nav2 │
│ │
│ │
│ Visual Map │
│ │ │
│ ▼ │
│ VPR Keyframes │
│ RGB + Depth + Pose │
│ Descriptor │
└───────────┬─────────────┘
│
机器人当前状态
┌───────────┐
│ Gemini335 │
└─────┬─────┘
│
▼
当前查询帧 Query Image
│
▼
┌───────────────┐
│ Visual │
│ Relocalizer │
└──────┬────────┘
│
▼
输出:
T(map → robot)
│
▼
/initialpose
│
▼
┌───────────────┐
│ AMCL重新收敛 │
└───────────────┘
视觉重定位算法流程
当前RGB图像
│
▼
┌────────────────┐
│ 图像质量检测 │
│ Quality Gate │
└───────┬────────┘
│
▼
┌────────────────┐
│ VPR检索 │
│ CNN + GeM │
│ │
│ 全局搜索 │
│ 返回Top-K │
└───────┬────────┘
│
▼
候选关键帧:
KF1
KF2
...
KF10
│
▼
┌────────────────┐
│ 局部特征匹配 │
│ │
│ SuperPoint │
│ ↓ │
│ KNN / LightGlue│
└───────┬────────┘
│
▼
┌────────────────┐
│ Depth恢复3D点 │
│ │
│ 2D → 3D │
└───────┬────────┘
│
▼
┌────────────────┐
│ PnP + RANSAC │
│ │
│ 求相机位姿 │
└───────┬────────┘
│
▼
┌────────────────┐
│ LiDAR Map验证 │
│ │
│ 几何一致性 │
└───────┬────────┘
│
▼
┌────────────────┐
│ 多视角确认 │
│ 防误定位 │
└───────┬────────┘
│
▼
输出可信Pose
│
▼
AMCL Reset
RK3588部署架构
RK3588
┌─────────────────────┐
│ │
│ NPU │
│ │
│ ┌───────────────┐ │
│ │ CNN VPR │ │
│ └───────────────┘ │
│ │
│ ┌───────────────┐ │
│ │ SuperPoint │ │
│ └───────────────┘ │
│ │
└─────────┬───────────┘
│
┌─────────▼───────────┐
│ CPU │
│ │
│ KNN Matcher │
│ │
│ LightGlue(增强) │
│ │
│ PnP/RANSAC │
│ │
│ LiDAR Verify │
│ │
│ State Machine │
└─────────┬────────────┘
│
▼
ROS2 Interface
│
┌───────────┴───────────┐
▼ ▼
/initialpose 状态反馈
│ │
▼ ▼
AMCL Localization Manager
常见术语理解
| 术语 | 一句话解释 |
|---|---|
| VPR(视觉地点识别) | 给照片打”指纹”,按指纹快速找”最像的照片”的技术 |
| 全局描述子 | 就是那个”指纹”:一串数字,代表整张照片的内容 |
| R@10 / 候选命中率 | “前 10 张候选里能找到正确答案的比例”(越高越好) |
| Top-K 候选 | 检索后留下的最像的 K 张照片(K=10 就是 10 张) |
| Visual Map(视觉相册) | 带位置信息的照片数据库,建图时生成 |
| SuperPoint | 一个 AI 模型,专门在照片上找”钉子”(稳定特征点) |
| LightGlue | 一个 AI 模型,专门把两张照片的”钉子”对上 |
| KNN 匹配 | 另一种配”钉子”的办法,老但可靠、省算力 |
| 深度相机 | 能测出”每个像素离相机多远”的相机 |
| PnP | 由”空间中的点 + 照片上的点”反推相机位置的数学方法 |
| RANSAC | 一种自动剔除”配错钉子”的技巧 |
| LiDAR 验证 | 用激光雷达和地图做最终核对,确认位置没算错 |
| 误定位 | 找错了位置还当成对的(最危险的情况,要求必须为零) |
| 多视角验证 | 转个头拍第二张、第三张,多次结果一致才相信 |
| NPU | 开发板上的 AI 加速芯片,专门加速神经网络计算 |
| RK3588 / LPA3588 | 我们用的这块开发板(性能一般,靠 NPU 加速) |
| 召回(Recall) | “该找到的找到了多少”的比例 |
0
次点赞