第1章:运动学模型入门
各位同学好,我是你们这门课的主讲工程师。今天咱们来聊聊全向轮底盘最核心的东西——运动学模型。
说实话,我最早接触全向轮的时候,也走了不少弯路。那时候刚毕业,觉得轮子能转,底盘能动,不就完事了吗?结果第一次调试,底盘像个喝醉的螃蟹,横着走、斜着走,完全不听使唤。后来才明白,不懂运动学模型,你连底盘怎么动都控制不了。
好,咱们正式开始。
1.1 底盘坐标系定义
做机器人控制,第一件事就是定规矩。坐标系就是规矩。
我个人习惯用右手定则来定义底盘坐标系:
- X轴:指向底盘正前方
- Y轴:指向底盘正左方
- Z轴:垂直向上
你可能会问,为什么不用别的定义方式?其实都可以,但团队协作时一定要统一。我记得有一次,合作方的工程师用了不同的坐标系定义,结果我们俩的代码拼在一起,底盘直接原地转圈。嗯,从那以后,我每次项目启动都会先确认坐标系定义。
对于全向轮底盘,我们通常只关心平面运动,也就是X轴、Y轴的平移,以及绕Z轴的旋转。这三个自由度,我们称为:
- vx:沿X轴的速度(前进/后退)
- vy:沿Y轴的速度(左移/右移)
- ω:绕Z轴的角速度(左转/右转)
说白了,你给底盘下指令,就是告诉它这三个值是多少。
1.2 轮子速度与底盘速度的关系
好,现在底盘有了坐标系,轮子呢?
全向轮有个特点——每个轮子都能独立驱动。但底盘要动,所有轮子得协同工作。这就引出了核心问题:轮子转速和底盘速度之间,到底是什么关系?
我画了一张图,帮你理解这个关系:
你看,底盘有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:四个轮子的转速
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是该点相对于底盘中心的位置向量。这个公式在后续章节会反复用到。
1.4 本章小结
好,咱们捋一捋今天的内容:
- 坐标系:X前、Y左、Z上,三个自由度vx、vy、ω
- 运动学关系:底盘速度和轮子转速通过公式互相转换
- 速度分解与合成:把目标速度拆成轮子能执行的动作
这些概念看着简单,但它们是整个全向轮控制的基石。后面讲PID控制、轨迹规划、里程计,全都离不开今天的内容。
我建议你动手写个小程序,输入vx、vy、ω,算算四个轮子的转速。再反过来,输入四个轮子转速,算算底盘速度。来回验证几次,你就彻底理解了。
好了,今天就到这儿。记住:理论要落地,代码要跑通。下次见。