学习路线中级

全向驱动:无需转向,直接横向移动

你能为一套四轮全向传动系统完成选型、接线、编程和调试,并实事求是地说出它在附着力和位置精度上让你付出了什么代价。

这条路线是干什么的

到目前为止本站的每一台行驶机器人都有同一个限制,却从没提起过: 它只能沿自己的正前方移动。要往左挪 20 cm,它必须先转弯、开过去、再转回来。 这是一条非完整约束,而且它如此正常,以至于大多数人根本不会意识到 它是一条约束。

这条路线把它去掉。到最后你会得到一台拥有三个独立可控速度的机器人—— 前进、横移和旋转——由四个普通减速电机和四个带滚子的轮子搭成。

它还会花很大篇幅讲这件事的代价,因为代价是真实的、而且很少被说明: 大约 29% 的附着力、对角方向上大约 29% 的最高速度、物料成本大约翻倍, 以及你自己里程计的可信度显著下降。全向底盘是对一个特定问题的绝佳答案。 这条路线同样是为了让你学会辨认:什么时候那个问题并不是你的问题。

你需要什么

物品 数量 大致成本 说明
麦克纳姆轮,80–97 mm 4 整套 £28–70 **两个左手、两个右手。**要买就买四只一套
带编码器的减速电机 4 每只 £8–14 要配对的,轮上 100–250 rpm。小底盘用 N20,大底盘用 25 mm 减速电机
双 H 桥(TB6612FNG 或 L298N) 2 每块 £3–8 或者用一块四通道板。TB6612FNG 浪费的电压少得多
带 4 路 PWM + 4 路中断的控制器 1 £8–20 Arduino Mega 2560 或 ESP32。Uno 这两样都不够
IMU(MPU6050 或更好) 1 £2–20 用于场地坐标系驾驶和航向保持
2S 或 3S 电池组 1 £12–25 要按四个电机来配,不是按两个——见电源预算教程
底盘板 1 £10–25 或者自己割。割的时候要量轮中心到轮中心的距离

全套大约 £90–170,而一台等效的两轮机器人只要 £40–70。

为什么按这个顺序

**在买任何东西之前先选定传动方式。**第一个节点是一次比较,而不是一个 制作步骤,因为这条路线上最贵的错误,就是在底盘都打孔之后才发现差速驱动 本来会更好。

**先运动学,后电子。**那个四行矩阵解释了四个电机是干什么的、为什么 它们会被要求转差别如此大的速度,以及为什么轮子的组合才是转向本身。 在弄懂它之前,接线的一切都说不通。

**先实验台,后制作。**把一个轮子装反是最常见的麦克纳姆错误, 它会造出一台前进完美、横移却画螺旋的机器人。在浏览器里刻意做一遍, 就是让你在台架上用三十秒而不是一整天认出它的原因。

**在任何自主功能之前先速度环。**在差速驱动机器人上,开环是一个 可行的起点。在这里不是,因为不存在一个单一的配平常数能修正四个 随每条指令而变化的组合比。

场地坐标系排在控制工作的最后,因为它是戴在一个已经能工作的 传动系统之上的帽子。把它加到一台轮子根本保持不住速度的机器人上, 只会把困惑挪到一个更难排查的地方。

检查点

每个阶段都有一项带通过标准的台架测试。不要把失败带到下一步—— 在四电机机器人上,失败会成倍放大。

在……之后 测试 通过是什么样
轮子装好 站在机器人上方,顺着顶部滚子看 四条线都指向中心,画出一个 X
电机接好 单独给每个轮子指令前进 四个轮子都朝你所说的前进方向转,没有一处接线被对调
运动学写好 把机器人架空,指令一次纯横移 对角的两对互相对抗;左前和右后一致
编码器读数 用手把每个轮子转一整圈 计数与算出的每转计数相差在 2% 以内,而且符号正确
速度环 在架子上指令 0.3 m/s,然后用手指压住轮子 速度保持住;遥测线上的 PWM 明显上升
四个环一起 在地面上开一条 3 m 直线 横向漂移在 20 mm 以内,且可重复
横移 横着开 1 m 并测量 在 5 cm 以内,而且航向变化不超过几度
IMU 用手把机器人转 360° 偏航在 5° 以内回到原位,静止时漂移小于 3°/分
场地坐标系 摇杆保持前推,同时用手转动机器人 它在地面上继续朝同一个方向走
正方形 先开横移正方形,再开转弯正方形 两者都闭合;横移那个把航向保持在一度以内

这条路线到哪里为止

有三处刻意的省略,点名是为了让你知道它们是选择。

**舵轮驱动。**唯一一种不拿附着力换自由度的全向传动,代价是八个电机、 每个模块一台转向控制器,以及真实存在的奇异点。如果你的机器人既要全向 又要能用力推,那就该去那里,而那是一个比整条路线都大的项目。

**知道自己在哪里。**这条路线诚实地承认麦克纳姆里程计会漂移,并告诉你要 加一个 IMU 和死轮。它不涵盖绝对定位。那件事请跟着 路径规划与建图走,那条路线会经由 占据栅格一路建到 SLAM。

全向路径跟踪。纯跟踪和 Stanley 都假设机器人靠转弯来转向,而一个能横移的底盘能严格优于两者。把它们 恰当地适配过来本身就是一个独立话题;在那之前,一台全向底盘跟着 一个汽车式的控制器跑也完全够用,只是把能力白白留在桌上。

下一步

从全向驱动类型开始, 先决定你到底要不要这个。然后再做麦克纳姆全向机器人。

学习路线

路线

按顺序完成各个节点——完成一个就会解锁下一个。你的进度会保存在这台设备上。

已完成 0 / 14

100%
目标

三个自由度,以及它们的代价

先读

打开教程
搭建

做一台

一个周末

常见问题

常见问题解答

学全向驱动之前需要先学差速驱动吗?

会有很大帮助,这条路线也默认你掌握了其中一部分。读取编码器、速度环、电源预算和打滑问题,都是两轮机器人同样需要的技能,只不过这里每样都变成了四份。这里真正新的是运动学——差速机器人有两个可控速度,全向机器人有三个——以及随之而来的坐标系问题。如果你从没做过任何一台能行驶的机器人,就先做一台循迹车或避障车;这样你的时间会花在新的想法上,而不是花在焊接上。

麦克纳姆底盘比普通机器人贵多少?

大约贵一倍,而且涨价的地方是人们容易忘记的。四只麦克纳姆轮的价格是四只普通轮子的两到四倍。你需要四台电机而不是两台,所以要四路 H 桥通道和四根编码器线,而四台电机的电流预算大约是两倍。控制器通常也得升级:四个编码器需要四个支持中断的引脚,还需要分布在不同定时器上的四路 PWM 通道,而 Arduino Uno 没有这些,所以大多数制作最后都用上了 Mega 或 ESP32。要从一开始就把控制器升级算进预算,而不是等底盘钻好孔之后才发现。

麦克纳姆轮可以不用编码器、开环运行吗?

可以开,而对于在好地面上手动驾驶的机器人来说,老实说也没问题。你做不到的是去任何指定的地方。运动学依靠保持四个轮速之间的比例来工作,而开环 PWM 保持不住比例——随着电池电压下垂、某台电机发热、负载变化,比例会漂移,机器人执行每一条指令都会走偏成弧线。在差速驱动机器人上,你可以用一个常数把它配平掉。而在全向底盘上,正确的比例随每一条指令而变,所以根本没有可以配平的东西。正是编码器让这条路线上的数学成立。

为什么这条路线要花这么多时间讲里程计会出错?

因为这是人们预料不到的失败。麦克纳姆底盘看起来是你做过的最有本事的机器人,而它的航位推算却是最差的。滚子打滑不是需要修复的故障——它正是横向运动得以发生的方式——所以横向走的每一毫米,都是编码器测到了、地面却不一定真的给了你的行程。这条路线上有两篇教程专门确保你从一开始就为此做好规划:加一个 IMU 来测航向,加上不驱动的死轮或外部参考来测位置,并且永远不要写一个假设驱动编码器知道机器人在哪里的自主程序。

这条路线到哪里为止?

到一台你能在平坦地面上开往任何地方的机器人为止:它能保持被指令的速度,知道自己朝向哪边,并且诚实地承认自己并不确切知道身在何处。它刻意略去了三样东西。舵轮驱动,因为八个电机加上一个转向奇异点是另一个项目。绝对定位——SLAM、信标、视觉——如果机器人必须知道自己的位置,这就是你下一步要去的地方;从路径规划与建图路线开始。还有全向路径跟踪,因为纯跟踪和 Stanley 都假设机器人靠转向行驶,把它们适配到一个能横移的底盘上,控制器的改动大到值得单独讲。

学完之后能做什么?

本站的麦克纳姆全向机器人项目就是直接的目标:一个每个轮子都有速度环的四轮底盘、场地坐标系驾驶,以及一套能告诉你每个部分是否真正在工作的台架测试。除此之外,同样的传动系统可以作为任何需要在重新定位时保持航向的东西的底盘——相机平台、小型仓储搬运车、在狭窄过道里工作的巡检机器人,或者一台需要对准某个目标、却不能把车头指向它的比赛机器人。