第1章:运动学模型入门

各位同学好,我是你们这门课的主讲工程师。今天咱们来聊聊全向轮底盘最核心的东西——运动学模型。

说实话,我最早接触全向轮的时候,也走了不少弯路。那时候刚毕业,觉得轮子能转,底盘能动,不就完事了吗?结果第一次调试,底盘像个喝醉的螃蟹,横着走、斜着走,完全不听使唤。后来才明白,不懂运动学模型,你连底盘怎么动都控制不了。

好,咱们正式开始。

1.1 底盘坐标系定义

做机器人控制,第一件事就是定规矩。坐标系就是规矩。

我个人习惯用右手定则来定义底盘坐标系:

  • X轴:指向底盘正前方
  • Y轴:指向底盘正左方
  • Z轴:垂直向上

你可能会问,为什么不用别的定义方式?其实都可以,但团队协作时一定要统一。我记得有一次,合作方的工程师用了不同的坐标系定义,结果我们俩的代码拼在一起,底盘直接原地转圈。嗯,从那以后,我每次项目启动都会先确认坐标系定义。

重要提醒:坐标系一旦确定,整个项目的运动学计算、传感器数据、控制指令都基于这个坐标系。中途改坐标系?那等于重写一半代码。

对于全向轮底盘,我们通常只关心平面运动,也就是X轴、Y轴的平移,以及绕Z轴的旋转。这三个自由度,我们称为:

  • vx:沿X轴的速度(前进/后退)
  • vy:沿Y轴的速度(左移/右移)
  • ω:绕Z轴的角速度(左转/右转)

说白了,你给底盘下指令,就是告诉它这三个值是多少。

1.2 轮子速度与底盘速度的关系

好,现在底盘有了坐标系,轮子呢?

全向轮有个特点——每个轮子都能独立驱动。但底盘要动,所有轮子得协同工作。这就引出了核心问题:轮子转速和底盘速度之间,到底是什么关系?

我画了一张图,帮你理解这个关系:

全向轮底盘运动学关系图 底盘 X Y ω W1 W2 W3 W4 ω1 ω2 ω3 ω4 底盘速度 (vx, vy, ω) ←→ 轮子转速 (ω1, ω2, ω3, ω4)

你看,底盘有4个轮子,每个轮子有自己的转速。底盘速度是3个量,轮子转速是4个量。3个输入要控制4个输出?这里其实有个数学上的小技巧——超定系统。不过别担心,实际工程中我们通过轮子布局的对称性,可以解出唯一解。

具体公式是这样的(以四轮全向轮为例):

// 轮子转速到底盘速度的转换(正运动学)
vx = (ω1 + ω2 + ω3 + ω4) * R / 4
vy = (-ω1 + ω2 + ω3 - ω4) * R / 4
ω  = (-ω1 + ω2 - ω3 + ω4) * R / (4 * L)

// 底盘速度到轮子转速的转换(逆运动学)
ω1 = (vx - vy - ω * L) / R
ω2 = (vx + vy + ω * L) / R
ω3 = (vx + vy - ω * L) / R
ω4 = (vx - vy + ω * L) / R

其中:

  • R:轮子半径
  • L:轮子到底盘中心的距离
  • ω1~ω4:四个轮子的转速
我的经验:实际项目中,R和L这两个参数一定要实测,别信图纸。我吃过亏,图纸上写的轮子直径是100mm,实际量出来只有98.5mm。差这1.5mm,跑10米就偏了15厘米。

1.3 速度分解与合成概念

好,现在咱们聊聊速度分解与合成。这个概念其实特别直观。

你想想看,底盘要往东北方向走,但轮子只能往前或往后转。怎么办?

答案就是:把东北方向的速度,分解成X轴和Y轴的分量。每个轮子贡献一部分X方向的速度,一部分Y方向的速度,合起来就是东北方向。

我举个例子:

假设底盘要沿45°方向以1m/s的速度移动。那么:

  • vx = 1 * cos(45°) ≈ 0.707 m/s
  • vy = 1 * sin(45°) ≈ 0.707 m/s

然后把这俩值代入逆运动学公式,算出每个轮子的转速。轮子一转,底盘就沿着45°方向走了。

核心思想:速度合成是「我要去哪」,速度分解是「轮子怎么转」。两者通过运动学公式连接。

这里有个容易搞混的地方——角速度ω的合成。平移和旋转是独立的,可以叠加。也就是说:

底盘最终速度 = 平移速度 + 旋转速度

用公式表达就是:

// 底盘上任意一点的速度
V_point = V_translation + ω × r_point

其中r_point是该点相对于底盘中心的位置向量。这个公式在后续章节会反复用到。

避坑指南:我曾经在调试时,把角速度的单位搞错了。ROS里角速度默认是rad/s,但我用了deg/s,结果底盘转得飞快,差点撞墙。记住:所有角度相关的计算,统一用弧度!

1.4 本章小结

好,咱们捋一捋今天的内容:

  1. 坐标系:X前、Y左、Z上,三个自由度vx、vy、ω
  2. 运动学关系:底盘速度和轮子转速通过公式互相转换
  3. 速度分解与合成:把目标速度拆成轮子能执行的动作

这些概念看着简单,但它们是整个全向轮控制的基石。后面讲PID控制、轨迹规划、里程计,全都离不开今天的内容。

我建议你动手写个小程序,输入vx、vy、ω,算算四个轮子的转速。再反过来,输入四个轮子转速,算算底盘速度。来回验证几次,你就彻底理解了。

好了,今天就到这儿。记住:理论要落地,代码要跑通。下次见。


专注资料整理