AI

视觉重定位

无人车

Posted by LXG on August 15, 2026

宏观架构


                    ┌──────────────────────┐
                    │       机器人系统       │
                    └──────────┬───────────┘
                               │

             ┌─────────────────┴─────────────────┐
             │                                   │

             ▼                                   ▼

┌────────────────────┐              ┌────────────────────┐
│   主导航定位链      │              │   视觉重定位旁路    │
│   (常驻运行)        │              │   (按需触发)        │
└─────────┬──────────┘              └─────────┬──────────┘
          │                                   │

          ▼                                   ▼

  ┌─────────────┐                    ┌─────────────┐
  │ 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) “该找到的找到了多少”的比例