运动学模型基础:差速轮、阿克曼、全向轮
做轨迹跟踪,第一步要搞清楚你的机器人到底怎么动。
说白了,运动学模型就是描述「轮子转多少,车体怎么走」的数学关系。我见过不少新手,一上来就调PID参数,结果发现模型都选错了——差速轮的车用阿克曼的算法,那肯定跑偏。
今天咱们把三种主流模型掰开揉碎讲清楚。你想想看,搞懂了这些,后面调参才能有的放矢。
一、差速轮模型
差速轮,最常见,也最直观。两个驱动轮独立控制,靠转速差实现转向。
我记得刚入行时,第一个项目就是给扫地机器人做轨迹跟踪。用的就是差速轮。当时觉得简单,结果一跑起来就原地打转...嗯,后来才发现是轮距参数没标定准。
1.1 运动学方程
差速轮的核心公式就两个:
v = (v_r + v_l) / 2 // 线速度
ω = (v_r - v_l) / L // 角速度
其中:
v_r、v_l:右轮和左轮的线速度L:轮距(两轮中心距离)
反过来,给定目标速度 (v, ω),也能算出每个轮子该转多快:
v_r = v + (ω * L) / 2
v_l = v - (ω * L) / 2
关键点:差速轮无法原地横向移动。它只能前进、后退、转弯。转弯半径由 v/ω 决定。
1.2 实际项目中的坑
我曾经在一个AGV项目里吃过亏。轮距L用卡尺量了,但跑直线时总偏。后来发现——轮胎有磨损,实际滚动半径变了。
我的建议是:轮距和轮径一定要做在线标定。让机器人跑一段已知距离,反算实际参数。别信手册上的标称值。
调优技巧:差速轮做轨迹跟踪时,角速度控制环的带宽要比线速度环高2-3倍。这样转弯才跟得上。
二、阿克曼模型
阿克曼模型,就是汽车转向模型。前轮转向,后轮驱动。你开的车就是这原理。
做室外无人车时,我几乎都用阿克曼。它有个好处:高速稳定性好。差速轮跑快了容易甩尾,阿克曼不会。
2.1 运动学方程
阿克曼模型的核心是「转向几何」:
R = L / tan(δ) // 转弯半径
ω = v / R // 角速度
其中:
L:轴距(前后轮中心距离)δ:前轮转向角(平均值)v:后轴中心速度
注意,左右前轮的转向角其实不一样。内侧轮转角更大。这就是「阿克曼几何」的精髓——保证所有轮子绕同一个圆心转。
常见错误:很多人直接用 δ = atan(L / R) 算转向角,但忽略了内外轮差。高速转弯时,这会导致轮胎侧滑严重。
2.2 实际项目中的坑
我记得做园区物流车时,发现轨迹跟踪误差总在弯道处突然变大。查了半天,原来是转向执行器有死区——小角度转向时,电机根本不响应。
我的解决办法:在控制器里加一个「死区补偿」。给转向指令加个偏置,让执行器越过死区。效果立竿见影。
调优技巧:阿克曼模型做轨迹跟踪时,建议用「预瞄控制」。提前看前方1-2个车身距离的路径点,转向响应会更平滑。
三、全向轮模型
全向轮,也叫麦克纳姆轮。它能原地平移、斜着走、任意方向移动。灵活性最高。
我最早接触全向轮是在一个仓储机器人项目里。仓库通道窄,需要机器人侧着身子进去。差速轮做不到,阿克曼更不行。全向轮是唯一解。
3.1 运动学方程
全向轮通常有4个轮子,呈矩形分布。每个轮子由独立电机驱动。运动学关系是:
ω_1 = (v_x - v_y - ω * (a + b)) / r
ω_2 = (v_x + v_y + ω * (a + b)) / r
ω_3 = (v_x + v_y - ω * (a + b)) / r
ω_4 = (v_x - v_y + ω * (a + b)) / r
其中:
v_x、v_y:车体在x、y方向的速度ω:车体自转角速度a、b:轮子到车体中心的距离r:轮子半径
看着复杂,其实原理很简单:每个轮子的转速,是「平移分量」和「旋转分量」的叠加。
关键点:全向轮对地面要求高。稍微有点坑洼,轮子上的小滚子就会打滑。室内光滑地面最好用。
3.2 实际项目中的坑
我曾经在一个全向轮项目里翻过车。代码写好了,仿真跑得完美。一上真机,机器人原地转圈不走直线。
排查了两天,发现是轮子安装方向搞反了。全向轮的滚子有45°倾角,装反了运动学就全错了。嗯,从那以后我每次装机都要亲自确认轮子朝向。
调优技巧:全向轮做轨迹跟踪时,建议把 v_x 和 v_y 的控制分开调。先调好x方向,再调y方向,最后调旋转。这样问题定位快。
四、三种模型对比
| 特性 | 差速轮 | 阿克曼 | 全向轮 |
|---|---|---|---|
| 自由度 | 2(前进+旋转) | 2(前进+转向) | 3(x+y+旋转) |
| 横向移动 | ❌ 不能 | ❌ 不能 | ✅ 可以 |
| 高速稳定性 | 一般 | 好 | 差 |
| 地面要求 | 低 | 低 | 高 |
| 控制复杂度 | 低 | 中 | 高 |
| 典型应用 | 扫地机、AGV | 无人车、机器人车 | 仓储机器人、竞赛 |
五、知识体系总览
下面这张图,把三种模型的核心逻辑串起来了。我建议你保存下来,调参时对照着看。
选模型就像选工具。差速轮是锤子,阿克曼是扳手,全向轮是瑞士军刀。没有哪个最好,只有哪个最合适。
我个人习惯是:室内平地、需要灵活移动的,用全向轮。室外道路、高速行驶的,用阿克曼。成本敏感、结构简单的,用差速轮。
最后提醒一句:无论用哪种模型,运动学参数(轮距、轴距、轮径)一定要实测标定。我见过太多项目,算法调得再好,参数不对全白费。
好了,三种模型的基础就讲到这里。你先把这些搞透,后面讲轨迹跟踪控制算法时,咱们才能聊得深入。