1. 麦克纳姆轮的运动原理揭秘
第一次见到麦克纳姆轮时,大多数人都会被它那45度斜向排列的辊子所迷惑。这种特殊结构让轮子看起来像被"切了一刀",而这恰恰是它实现全向移动的关键。与传统轮子只能前后滚动不同,麦克纳姆轮的每个辊子都可以独立旋转,当电机驱动轮毂转动时,辊子与地面接触产生的摩擦力会分解为两个方向的分力。
在实际操作中,我发现一个有趣的现象:当四个麦轮以相同速度同向旋转时,小车并不会直线前进,而是会斜向移动。这是因为辊子的角度导致力被分解了。要真正理解这一点,我们需要建立坐标系进行分析:
- 设单个麦轮的旋转角速度为ω
- 轮毂半径为R,辊子与地面接触点的线速度为v=ω×R
- 辊子轴线与轮毂轴线夹角为45°
- 根据矢量分解,地面摩擦力可表示为Fx = v×cos45°, Fy = v×sin45°
关键提示:实际应用中辊子角度不一定是严格的45度,Mecanum Wheel的变种如Omni Wheel使用90度辊子,这是选购时需要注意的技术参数差异。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 四轮协同的运动学解算
去年调试一台AGV时,我花了整整三天时间才让四个麦轮协调工作。问题出在没有正确处理轮子布局对运动的影响。常见的四轮布局有X型和矩形两种,我们以矩形布局为例说明速度映射关系:
建立车体坐标系:
- 前进方向为+X
- 横向为+Y
- 逆时针旋转为正方向
四个轮子的速度向量可表示为:
code复制V1 = [vx - vy - ωL] // 左前轮
V2 = [vx + vy - ωL] // 右前轮
V3 = [vx - vy + ωL] // 左后轮
V4 = [vx + vy + ωL] // 右后轮
其中L为轮距的一半。通过矩阵求逆运算,可以得到各轮的目标转速:
python复制import numpy as np
def wheel_speeds(vx, vy, omega, L=0.2):
J = np.array([
[1, -1, -L],
[1, 1, -L],
[1, -1, L],
[1, 1, L]
])
return np.linalg.pinv(J) @ [vx, vy, omega]
实测中发现三个常见问题
