教程 · 入门 · 25 分钟
全向驱动对比:全向轮、麦克纳姆轮与舵轮
全向驱动到底意味着什么、差速底盘为什么没法横着停进车位,以及对全向轮、麦克纳姆轮和舵轮在附着力与成本上的一次诚实比较。
这个词,以及它要你付什么
在平地上的一台机器人有三个自由度:它可以在某个 x、某个 y,指向某个方向 θ。这就是“地面上的一个位置”的全部含义。
当一套传动能同时独立控制这三个量——当它能瞬时移动的方向数等于它最终能到达的方向数——它就是全向的。当它做不到时,它就是非完整的:它最终能到达任何位姿,但不能直接移动过去。
日常的例子是汽车。车可以停到街上任何一个车位,包括紧挨着它左侧的那个。它只是没法开到那儿去——它得倒库。那就是一个非完整约束,也是侧方停车之所以是一项技能的唯一原因。
差速机器人有同样的问题,只是形式更友善。它能原地旋转,这是汽车做不到的,所以它只有两个可控速度——前进和旋转——对应三个自由度。横向那个不见了。要向左移动 20 cm,它必须先转、开、再转回来,这花掉它可能没有的时间,也花掉它可能余不起的航向精度。
全向驱动就是直接往左走。
为什么它比听上去重要得多
“它能横着走”读起来像个聚会把戏。它真正派上用场的地方是:
- **狭窄空间。**一台永远不需要转弯半径的机器人,能挤进正好等于它自身宽度的过道。仓库 AGV 用麦克纳姆就是为了这个,没有别的原因。
- **移动时保持航向。**相机、传感器杆或夹爪,必须在底盘重新摆位时始终朝着同一个方向。非完整驱动根本做不到这件事。
- 解耦的路径跟踪。纯跟踪控制器放在差速底盘上,必须在位置误差和航向误差之间做取舍,因为它们共用一个执行器。全向底盘给每一个都配一根自己的轴。
- 不花航向的修正。从线上偏了 3 cm,全向车踏 3 cm 就回来了。差速车得先弧出去再弧回来,而在滑地面上,那两次多余的转弯正是误差的来源。在模拟器里,用横移在油地面上走一个正方形,结束时航向仍然是正好 0.0°,因为从来没有下过旋转指令;同一个正方形改成在拐角处转弯,结束时偏出去几十度,然后它会把之后的每一条直边都开在错误的方向上。每一次自转都是又一次丢掉航向的机会,而全向车一次都不给它这个机会。
而它不派上用场的地方是:任何需要推、爬或跨过门槛的场合。每一种全向轮都是在用附着力换自由度。
四个选项
差速驱动——基线
两个驱动轮,一个万向轮。非全向,但对大多数机器人来说仍然是正确答案。有普通轮的全部附着力、两个电机,以及三十年来假定就是这个几何的库。
X 形全向轮(X-drive)
四个全向轮——滚子与轮子成 90° 而不是 45°——装在四个角上,每个再转 45°,使它的滚动方向指向那个角。每个轮子沿一条对角线推,四条对角线相加能得到任何方向。
- 它就是麦克纳姆的速度包络转 45°、再放大 √2。两种传动都能到达一个菱形速度集合;在麦克纳姆上快方向是正前和正横,在 X-drive 上则是底盘的两条对角线。从同样的轮缘速度出发,X-drive 前进快 1.41 倍——代价是产生少 √2 的力。这是一档齿轮比,不是一顿免费午餐。
- **包装很别扭。**轮子相对底盘成 45°,浪费角落空间,而且通常逼你用直接驱动。
- 附着力差,轮子也脆弱——小滚子、小接触斑。
麦克纳姆——45° 滚子
四个看起来像普通轮子的轮子,按普通方式安装,把 45° 藏在轮子里面。两个左手、两个右手,排成 X 形。
- **包装得像一套普通传动。**这是实践中麦克纳姆胜过 X-drive 的真正原因。
- **前进和横向一样快;对角线要付 1/√2。**一个 45° 的指令向两个轮子要全部、向另外两个什么都不要,于是机器人最高只能到直线速度的 71%。(这种 X-drive 布置有同样的 71% 惩罚——只是作用在另一对方向上。)
- **附着力要付 1/√2。**地面上的力被钉在 45°,摩擦给整个矢量封了顶,只有沿滚动方向的那个分量有用。
- **推力很差。**同样重量的前提下,麦克纳姆底盘在推搡比赛里每次都输给普通轮子的机器人。
舵轮——每个轮子都能转向
四个模块,每个都有一个驱动电机加一个转向电机。把四个都指到你想的方向,然后开。
- **全向,而且附着力完整。**没有滚子,没有 45°,没有惩罚。这是清单里唯一一项不用附着力换自由度的选择。
- **八个电机、八个编码器、滑环或者线缆管理,以及一个带真实奇异点的控制问题。**对一台做同样三件事、只是更快也更难的机器人来说,大约是麦克纳姆的四倍工作量。
诚实的对比
速度都是相对各传动自己的正前方极速给出的,只有“每轮速前进速度”那一行是把它们放在同样的电机和轮子上比较。
| 差速 | 全向 X-drive | 麦克纳姆 | 舵轮 | |
|---|---|---|---|---|
| 全向 | 否 | 是 | 是 | 是 |
| 电机 | 2 | 4 | 4 | 8 |
| 横向速度 | — | 100% | 100% | 100% |
| 对角速度 | — | 71% | 71% | 100% |
| 每轮速前进速度 | 100% | 141% | 100% | 100% |
| 相对普通轮的附着力 | 100% | 71%,换橡胶更糟 | 71%,这还没算滚子上的橡胶 | 约 100% |
| 地形 | 好 | 仅平地 | 仅平地 | 好 |
| 用驱动轮做里程计 | 尚可 | 差 | 差 | 尚可 |
| 包装 | 容易 | 别扭 | 容易 | 困难 |
| 成本与制作时间 | ★ | ★★ | ★★ | ★★★★★ |
只有舵轮逃出了那个菱形:因为它能让每个轮子都指向同一个方向,它可达的速度是一个整圆,所以没有任何方向需要付代价。每一种基于滚子的传动都是用一个 45° 的力矢量换横向运动,然后把同一个 √2 付了两次。
怎么选
一条短决策路径,大多数时候都能选对:
- **它需要横移,或者需要在移动中保持航向吗?**否 → 差速驱动。到此为止;你刚刚省下两个电机、四根线和一个月。
- **地面每次都是平的、硬的、干净的吗?**否 → 差速驱动;如果预算不计代价,舵轮也行。
- **它需要推、拉或者顶什么东西吗?**是 → 别用麦克纳姆。那个 71% 还没算滚子上的橡胶,而真实的麦克纳姆底盘在推搡比赛里会输得很惨。
- **包装很紧,或者它必须看起来像一台普通机器人吗?**是 → 麦克纳姆。否 → 全向 X-drive 更好推理,而且在同样的电机上把挡位加高 1.41 倍。
- 这是一场会有人故意来推你的比赛吗?→ 舵轮,或者接受你会被推。
全向不会给你的东西
有三样东西人们期待却得不到:
**它不会给你更好的里程计。**它给你更差的。一个在打滑的滚子是在干它该干的活,所以全向底盘上的轮子编码器量的是轮子而不是地面,比平时更是如此。从一开始就为 IMU、或者不被驱动的死轮做好预算。
**它不会免掉规划的需要。**全向机器人仍然得绕过障碍;它只是办法更多。占据栅格上的 A*和覆盖规划照常工作,而路径是更容易跟随,不是更容易找到。
**它不会让机器人开起来更直观。**恰恰相反:一个人开一台横移的机器人,十秒之内就会搞不清它指着哪边。解法是场地坐标控制,那是很小一块数学,也是必做的一块。
下一步
让这四组力矢量能正确相加的那套数学:麦克纳姆轮运动学。然后开一台,在麦克纳姆驱动模拟器里试着把它玩坏——油地面预设是感受全向究竟要付多少的最快方式。
探索关联图谱
本教程所属的搭建
包含本教程的项目和学习路线。
延伸阅读