第5章 移动机器人的定位#
⭐ 马尔可夫定位是核心考点
5.1 什么是定位?我在哪里?#
定位是导航中最具挑战性的能力之一。
编码器 → 位置预测(里程表) → 预测位置 → 匹配? → 位置更新
↑ ↓
地图数据库 是
↑ ↓
感知 ← 原始感知数据/提取特征
plaintext
三种定位方式:
- 测程法/航位推算法
- 基于外部传感器定位(灯塔/地标)
- 基于概率地图的定位
5.2 定位的三大挑战#
(1) 传感器噪声#
- 受环境影响(表面、照明…)
- 受测量原理影响(超声波相互干扰)
- 解决: 多次读取、时间融合、多传感器融合
(2) 传感器混叠 (Aliasing)#
- 多个环境状态 → 同一传感器读数(多对一映射)
- 单次测量不足以定位 → 需要数据序列
- 随时间的滤波方法恢复足够信息
(3) 执行器噪声 — 里程表误差#
- 里程表: 车轮编码器积分 → 路程
- 航位推算法: 编码器 + 航向传感器(陀螺仪)
- 优点: 直观简单
- 缺点: 误差累积 → 无界
5.3 里程表误差分类#
按性质分#
| 类型 | 特点 | 处理 |
|---|
| 确定性(系统) | 可建模 | 标定消除 |
| 非确定性(随机) | 不可预测 | 误差模型描述 |
按表现分#
| 误差类型 | 来源 | 后果 |
|---|
| 路程误差 | 轮子移动总和误差 | 距离不准 |
| 转动误差 | 差动轮移动之差 | 转角不准 |
| 漂移误差 | 轮子误差差异 | 角度偏差 → 位置误差放大 |
长时间运行后,转动和漂移误差比路程误差严重得多!
移动 d 米: y误差≈d⋅sin(Δθ),角度误差 Δθ 增大会被放大。
主要误差源#
- 积分中有限分辨率
- 轮子不正确装配(确定性)
- 轮子直径不等(确定性)
- 轮子触地点变化
- 不同地面接触(打滑、不平坦)
5.4 导航方式对比#
基于行为的导航#
- 取消地图、定位、路径规划
- 直接设计行为: 跟踪左墙 + 房间检测器
- 优点: 小环境简单
- 缺点: 难推广、多行为融合不稳定
基于模型的导航#
- 包括定位 + 认知两个模块
- 根据传感器 + 地图更新位置信任度
- 优点: 位置概念清晰、人机可交流
- 缺点: 依赖地图准确性
5.5 信任度表示 ⭐核心#
两种基本方式#
| 单假设信任度 | 多假设信任度 |
|---|
| 含义 | 机器人假定唯一位置 | 描述位置的不确定度 |
| 表示 | 一个位姿估计 | 一组可能位置的概率分布 |
| 发散时 | 失败! | 收敛到另一单元 |
| 存储要求 | 适中 | 高 |
四种表示组合#
| 地图类型 | 假设数 | 特点 |
|---|
| 连续地图 + 单假设 | 唯一位置 | 精度高,发散即失败 |
| 连续地图 + 多假设 | 多个可能位置 | — |
| 离散栅格 + 概率 | 每个单元有概率 | 多假设,计算量大 |
| 离散拓扑 + 概率 | 节点概率分布 | 处理能力要求高 |
5.6 地图表示方法#
| 类型 | 说明 | 特点 |
|---|
| 连续度量 | x,y,θ | 精确 |
| 离散度量 | 度量栅格 | 分辨率 = 精度上限 |
| 离散拓扑 | 节点 + 连通性 | 需识别节点 |
单元分解#
| 方法 | 特点 |
|---|
| 精确单元分解 | 多边形障碍物,自由空间内位置无关紧要 |
| 固定单元分解 | 窄通道可能消失 |
| 自适应单元分解 | 平衡精度与计算量 |
5.7 概率性基于地图的定位 ⭐#
两步更新机制#
| 步骤 | 输入 | 效果 |
|---|
| 动作更新 (ACT) | 编码器测量 ot | → 增加不确定性 |
| 感知更新 (SEE) | 外感受传感器输入 it | → 降低不确定性 |
五步骤过程#
- 里程表法预测位置
- 机载传感器获得观测
- 基于预测 + 地图做测量预测
- 观测与地图匹配
- 估计 → 位置更新(后验位置)
5.8 马尔可夫定位 ⭐核心#
基本思想#
- 用显式离散形式表示状态空间中所有位置的概率
- 每次更新整个空间中每个状态的概率(全分布更新)
- 可从任意未知点出发定位
- 可恢复不明确的状态
动作模型 ACT#
从上时刻信任状态 + 控制 ot → 新信任状态:
pt(l∣ot)=l′∑p(l∣l′,ot)⋅pt−1(l′)
- p(l∣l′,ot): 当 t−1 时刻在 l′,控制为 ot 时,t 时刻在 l 的概率
- 依赖上次状态概率分布和控制 → 得到当前状态的验前概率
感知模型 SEE (贝叶斯更新)#
pt(l)=pt(l∣ot,i)=p(i)p(i∣l)⋅pt(l∣ot)
- p(i∣l): 在位置 l 时得到测量 i 的概率(查地图)
- p(i): 归一化因子
马尔可夫假设#
更新仅依赖前一时刻的状态及最近的动作和感知。
完整信任状态更新#
pt(l)=p(i∣l)⋅l′∑p(l∣l′,ot)⋅pt−1(l′)
关键认知#
- 动作更新扩散概率(增加不确定)
- 感知更新集中概率(降低不确定)
- 每次更新所有位置的概率
5.9 马尔可夫 vs 卡尔曼滤波 ⭐#
| 马尔可夫定位 | 卡尔曼滤波定位 |
|---|
| 起点 | 任意未知点 | 已知起始位置 |
| 失败恢复 | 可恢复 | 不确定性大时失败 |
| 表示方式 | 全状态空间离散概率分布 | 高斯分布(均值 + 协方差) |
| 计算量 | 大(需离散化栅格) | 小(闭合形式) |
| 精度 | 受离散分辨率限制 | 固有高精度 |
卡尔曼滤波核心思想#
加权最小二乘融合多次估计:
q^=σ12+σ22σ22⋅q1+σ12⋅q2
融合后方差比单独方差更小。
马尔可夫定位降复杂度#
- 精细栅格 → 巨大状态空间
- 随机采样 / 粒子滤波: 只表示有代表性的子集(如 10%)
- 采样被特色加权,峰值周围更多采样
- 风险: 必须确保跟踪小概率位置,否则机器人会迷路
考前速记#
| 要点 | 答案 |
|---|
| ACT 做什么 | 根据动作更新信任度,增加不确定性 |
| SEE 做什么 | 根据感知更新信任度,降低不确定性 |
| 马尔可夫假设 | 仅依赖前一时刻状态 + 最近动作和感知 |
| ACT 公式 | pt(l∣ot)=∑l′p(l∣l′)⋅pt−1(l′) |
| SEE 公式 | pt(l)∝p(i∣l)⋅pt(l∣ot) |
| 马尔可夫 vs 卡尔曼 | 马尔可夫可从任意点出发;卡尔曼不确定性大时失败 |
| 漂移误差 | 最严重,角度偏差导致位置偏差放大 |
| 传感器混叠 | 多环境状态 → 同一读数,需时间序列滤波 |