全向轮机器人运动学:雅可比矩阵如何连接轮速与世界速度?
【免费下载链接】roboticsNotebook-based book "Introduction to Robotics and Perception" by Frank Dellaert and Seth Hutchinson项目地址: https://gitcode.com/gh_mirrors/ro/robotics
全向轮机器人运动学是移动机器人最优雅的数学之一:只需一个 3×2 的雅可比矩阵,就能把机器人在世界中的平移速度,映射为三个全向轮各自的轮速。本文基于开源教科书《Introduction to Robotics and Perception》(Frank Dellaert 与 Seth Hutchinson 合著)中的“仓库机器人运动”章节,用最通俗的方式讲清全向轮机器人运动学中的速度分解、雅可比矩阵推导,以及轮速与世界速度之间的换算关系。全程几乎没有复杂代码,只保留最核心的直觉与公式,新手也能轻松上手。
为什么仓库机器人偏爱全向轮?
传统的差速驱动机器人只能前进、后退和转弯,倒车入库总让人捏一把汗。而全向轮(Omni Wheel)的轮缘上安装了一圈小滚子,滚子轴线与轮轴垂直,这让轮子不仅能沿滚动方向前进,还能在垂直方向“自由滑动”。三个全向轮按 120° 均匀分布在机器人底盘边缘时,机器人就可以像碟仙一样,在平面内瞬时朝任意方向移动——这在物流仓库里简直是平行停车的利器。
在书中,作者设想了一个半径 R=0.5 米的圆形仓库机器人,三个全向轮分别安装在机体坐标系的 0°、120°、240° 位置:
- 轮 i 的安装角:θⁱ = i × 2π/3
- 轮 i 的安装坐标:pⁱₓ = R·cos(θⁱ),pⁱᵧ = R·sin(θⁱ)
这段内容对应 S40_logistics_intro.ipynb 的引入部分,而完整推导则集中在 S42_logistics_actions.ipynb 中。
全向轮运动学第一步:单个轮子的速度分解
要理解全向轮机器人运动学,先看单个轮子。每个轮子定义了两个正交方向:
- 转向方向(驱动方向)u∥:与轮轴垂直,滚子在此方向“无滑动”地滚动,由电机直接驱动;
- 滑动方向u⊥:与轮轴平行,滚子在此方向自由滚动,几乎不产生阻力。
设轮轴与世界 x 轴的夹角为 θ,则两个单位向量分别为 u∥ = (−sinθ, cosθ),u⊥ = (cosθ, sinθ)。当机器人以平移速度 v=(vₓ, vᵧ) 运动时,把 v 投影到这两个方向上,就得到轮子处的平行分量与垂直分量:
- v∥ⁱ = −vₓ·sinθⁱ + vᵧ·cosθⁱ
- v⊥ⁱ = vₓ·cosθⁱ + vᵧ·sinθⁱ
这张速度分解示意图来自书中的 Figure 5(wheel-velocity),蓝色是期望速度,紫色是驱动分量,绿色是滑动分量:
雅可比矩阵如何连接轮速与世界速度?
既然滚子不抵抗滑动方向的速度,真正需要电机“扛起来”的就只有驱动分量 v∥ⁱ。若轮子半径为 r,则轮子的角速度(即轮速)必须满足:
ωⁱ = v∥ⁱ / r
把三个轮子的方程堆叠起来,就得到全向轮机器人运动学的核心——一个 3×2 的雅可比矩阵J:
ω = J · v,其中 J = (1/r) · [[−sinθ¹, cosθ¹], [−sinθ², cosθ²], [−sinθ³, cosθ³]]
对于 θ¹=0、θ²=2π/3、θ³=4π/3 的规则布局,代入具体数值后雅可比矩阵变为:
J = (1/r) · [[0, 1], [−0.866, −0.5], [0.866, −0.5]]
这个矩阵就是轮速与世界速度之间的“翻译官”:给出任意期望的平移速度 (vₓ, vᵧ),一次矩阵乘法就能得到三个轮子各自该转多快、朝哪个方向转。书中的jacobian_matrix()函数(S42_logistics_actions.ipynb)就是用 NumPy 实现这一映射的,并验证了矩阵乘法与逐轮速度分解的结果完全一致。
给雅可比矩阵加一列:实现原地旋转
上面的 3×2 雅可比矩阵只处理了纯平移。如果希望机器人原地旋转,只需给雅可比矩阵增加第三列,用来把期望的角速度映射到轮速。直观地说:给三个轮子施加相同的角速度,机器人就会绕着中心原地打转。有了这第三列,我们就能同时控制线速度与角速度的组合,让全向轮机器人在仓库里既平移又转向,动作行云流水。
延伸:麦克纳姆轮与不确定性建模
如果你听说过麦克纳姆轮(Mecanum Wheel),它其实是全向轮的一般化——滚子不是与轮缘平行,而是倾斜一个固定角度。数学上稍微复杂一些,但最终依然会得到一个连接机器人速度与轮速的雅可比矩阵。
另外,书中还特别提醒:全向轮在不平整地面或地毯上表现“娇气”,实际执行常带有不确定性。因此后续章节会用高斯动态贝叶斯网络对轮速命令的随机扰动建模,这恰恰体现了“运动学给理想解、概率给现实解”的完整思路,对应 S42_logistics_actions.ipynb 的后半部分。
如何动手学习这套全向轮机器人运动学?
想要亲手跑一遍雅可比矩阵的推导与验证,推荐按下面的路径阅读开源教科书《Introduction to Robotics and Perception》:
- 场景引入:S40_logistics_intro.ipynb —— 仓库机器人与全向轮登场
- 状态与动作建模:S41_logistics_state.ipynb、S42_logistics_actions.ipynb —— 全向轮运动学与雅可比矩阵的完整推导
- 感知与规划:感知章节与规划章节 —— 把运动学放进更大的机器人系统中
也可以用git clone https://gitcode.com/gh_mirrors/ro/robotics拉取整个仓库,在本地 Jupyter 中修改vx、vy的取值,观察轮速如何随世界速度变化——亲自动手之后,你会发现全向轮机器人运动学的本质,就是用一张小小的矩阵,让机器人真正实现“指哪打哪”。
【免费下载链接】roboticsNotebook-based book "Introduction to Robotics and Perception" by Frank Dellaert and Seth Hutchinson项目地址: https://gitcode.com/gh_mirrors/ro/robotics
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考