1. 导航基础:机器人导航概述、坐标系与位姿表示、里程计模型与误差分析

1.1 机器人导航到底在解决什么问题?

说白了,机器人导航就是让机器人知道「我在哪」「要去哪」「怎么去」。听起来简单,对吧?但我在项目里见过太多翻车案例——机器人原地打转、撞墙、甚至从楼梯上掉下去。嗯,这些坑我们后面都会讲到。

导航系统通常包含三个核心模块:

  • 定位:确定机器人在地图中的位置和朝向
  • 建图:构建环境地图(通常是栅格地图或拓扑地图)
  • 路径规划:从A点到B点找一条安全可走的路线

我个人习惯把导航比作「人找路」:你看地图、认路标、迈步子。机器人也一样——它用传感器认路标(激光雷达、摄像头),用里程计算步子(轮子转了多少圈),再用算法规划路线。

核心要点:导航的成败,90%取决于你对「位姿」和「坐标系」的理解。这两块地基没打牢,后面所有算法都是空中楼阁。

1.2 坐标系与位姿表示——机器人的「世界观」

坐标系是导航的通用语言。你想想看,如果我说「往前走2米」,你得知道这个「前」是相对于谁的「前」。机器人也一样,它需要多个坐标系来理解世界。

1.2.1 常用坐标系

坐标系 符号 说明 典型用途
世界坐标系 W / map 固定在地面上的全局参考系 地图构建、全局路径规划
机器人坐标系 R / base_link 固定在机器人本体上,通常以中心为原点 里程计、运动控制
传感器坐标系 S / laser_frame 固定在传感器(如激光雷达)上 传感器数据采集、坐标变换

我在项目中遇到过最头疼的问题,就是坐标系标定没做好。有一次,激光雷达的数据和里程计数据差了10厘米,结果机器人死活建不出正确的图。后来发现是传感器安装位置没校准——嗯,这种低级错误,犯过一次就记住了。

1.2.2 位姿表示

位姿 = 位置 + 姿态。在二维平面中,我们用 (x, y, θ) 来表示:

  • x, y:机器人在世界坐标系中的坐标(单位:米)
  • θ:机器人的朝向角(单位:弧度),通常以x轴正方向为0,逆时针为正

三维空间里就复杂一些,需要用到四元数或旋转矩阵。不过咱们这门课主要讲二维导航,三维的后面有机会再聊。

小技巧:ROS里用 geometry_msgs/Pose 消息表示位姿。我个人习惯在代码里统一用四元数存储,需要角度时再转成欧拉角——这样可以避免万向锁问题。

1.3 里程计模型——机器人怎么「感觉」自己在动?

里程计,说白了就是机器人用自己的轮子来估算自己走了多远、转了多少。它不依赖外部传感器,所以也叫「航位推算」。

1.3.1 差速轮模型

最常见的两轮差速底盘,左右轮各有一个编码器。假设:

  • 左轮速度:v_l
  • 右轮速度:v_r
  • 轮距(两轮中心距离):L

那么机器人的线速度和角速度分别为:

v = (v_r + v_l) / 2
ω = (v_r - v_l) / L

有了 v 和 ω,我们就可以更新位姿:

Δx = v * cos(θ) * Δt
Δy = v * sin(θ) * Δt
Δθ = ω * Δt

这段代码看起来简单,但实际跑起来问题很多。我记得有一次在瓷砖地面上测试,机器人走直线走了不到5米就偏了30度——因为地面太滑,轮子打滑了。编码器还在转,但机器人根本没动。

避坑指南:我曾经在工厂地坪上吃过亏——地面有油污,轮子打滑导致里程计完全失效。后来我养成了一个习惯:每次部署前先做一次「空转测试」,确认轮子不打滑再跑导航。

1.3.2 其他常见底盘模型

模型类型 特点 适用场景
差速轮 结构简单,可原地旋转 室内服务机器人、AGV
阿克曼 类似汽车,不能原地旋转 室外无人车、巡检机器人
全向轮 可横向移动,灵活性高 仓储机器人、竞赛机器人

1.4 误差分析——为什么里程计「越走越偏」?

里程计最大的问题就是误差会累积。你想想看,每走一步都有微小误差,走了一千步之后,误差可能已经大到离谱了。

1.4.1 误差来源

  • 系统误差:轮子直径不准确、轮距测量偏差、编码器分辨率有限
  • 非系统误差:地面打滑、地面不平、轮胎磨损

我做过一个实验:让机器人沿着一个2米×2米的正方形走一圈,回到起点。理论上位姿应该是 (0, 0, 0),但实际测出来是 (0.15, -0.08, 0.05)。这就是误差累积的结果。

1.4.2 误差模型

常用的误差模型是「概率里程计模型」,它把位姿更新看作一个概率分布:

p(x_t | x_{t-1}, u_t) ~ N(μ_t, Σ_t)

其中 μ_t 是预测位姿,Σ_t 是协方差矩阵,表示不确定性。随着时间推移,Σ_t 会越来越大——这就是为什么里程计不能单独用太久。

关键认知:里程计在短距离内(比如10米以内)精度还不错,但长距离必须结合其他传感器(激光雷达、IMU、GPS)做融合。我见过有人只用里程计跑了100米,结果定位误差超过2米——这种数据建出来的图根本没法用。

1.5 本章知识体系总览

下面这张图把本章的核心知识点串起来了。你可以把它当作导航基础的地图——后面每一章都会回到这里。

导航基础知识体系 导航基础 · 知识体系 机器人导航问题 坐标系与位姿 里程计模型 误差分析 世界坐标系 机器人坐标系 传感器坐标系 差速轮模型 阿克曼模型 全向轮模型 系统误差 非系统误差 概率模型 核心:坐标系是基础,里程计是手段,误差分析是必修课 三者缺一不可,否则导航系统就是「瘸腿」的

1.6 本章小结

这一章我们聊了导航的三大基础:

  1. 坐标系与位姿——机器人的「世界观」,搞不清楚坐标系,后面全是错的
  2. 里程计模型——机器人怎么估算自己的运动,差速轮是最常见的模型
  3. 误差分析——里程计会越走越偏,必须理解误差来源才能对症下药

我个人觉得,这一章最重要的不是记住公式,而是建立「坐标系思维」和「误差意识」。后面讲到卡尔曼滤波、粒子滤波、SLAM的时候,你会发现这些基础概念会反复出现。嗯,打好地基,后面才能盖高楼。