麦克纳姆轮让小车实现全方位移动——前进、后退、左右平移、原地旋转、斜向运动都不在话下。本文从底盘设计到运动控制一步步讲解。
一、麦克纳姆轮原理
每个麦克纳姆轮的外圈装有多个45度斜辊。当轮子转动时,斜辊与地面接触产生斜向摩擦力。通过四个轮子的不同转速和转向组合,合成不同方向的运动矢量。
典型的四轮布局为O-长方形(左前、右前、左后、右后):
左前轮:斜辊朝左上45度
右前轮:斜辊朝右上45度
左后轮:斜辊朝左上45度
右后轮:斜辊朝右上45度
二、硬件材料
麦克纳姆轮(60mm直径,铝合金轮毂) × 4
直流减速电机(带编码器,1:30减速比) × 4
铝合金底盘(250×250mm,5mm厚) × 1
双路L298N驱动模块 × 2(或4路一体驱动板 × 1)
主控板(STM32F103C8T6或Arduino Mega) × 1
12V锂电池 + 降压模块
电机安装支架、M3螺丝铜柱套装
三、运动学解算
设定四个轮子的转速分别为 FL(左前)、FR(右前)、RL(左后)、RR(右后),正数前进负数后退:
前进: FL=+V, FR=+V, RL=+V, RR=+V
后退: FL=-V, FR=-V, RL=-V, RR=-V
左平移: FL=-V, FR=+V, RL=+V, RR=-V
右平移: FL=+V, FR=-V, RL=-V, RR=+V
原地左转: FL=-V, FR=+V, RL=-V, RR=+V
原地右转: FL=+V, FR=-V, RL=+V, RR=-V
实际应用中,通过操纵杆的X/Y轴和旋转轴,可以计算出每个轮子的目标转速。
// 全向移动运动学解算
// 输入:x(左右,-255~255), y(前后,-255~255), z(旋转,-255~255)
void MecanumKinematics(int x, int y, int z, int *fl, int *fr, int *rl, int *rr) {
*fl = y + x + z;
*fr = y - x - z;
*rl = y - x + z;
*rr = y + x - z;
// 限幅
int maxVal = max(max(abs(*fl), abs(*fr)), max(abs(*rl), abs(*rr)));
if (maxVal > 255) {
*fl = *fl * 255 / maxVal;
*fr = *fr * 255 / maxVal;
*rl = *rl * 255 / maxVal;
*rr = *rr * 255 / maxVal;
}
}
四、底盘组装注意事项
1. 底盘必须保持水平,四个轮子同时着地。麦克纳姆轮对地面平整度敏感。
2. 注意轮子安装方向!左前和左后的斜辊朝向相同,右前和右后的斜辊朝向相同。装反了运动会完全不对。
3. 编码器接线要牢固,用于PID闭环速度控制。
4. 电池尽量放在底盘中心位置,保持重心居中。
五、调试要点
1. 先不装轮子,单独测试每个电机转向是否正常。
2. 装上轮子后悬空测试,确认各方向运动矢量正确。
3. 实际落地测试时,如果平移时出现旋转,说明四个轮子转速不一致,需要校准编码器或调整PID参数。
六、常见问题
Q:小车平移时打转?
A:检查轮子安装方向,确认左前/左后斜辊方向一致,右前/右后斜辊方向一致。
Q:小车走不了直线?
A:编码器测速有误差,需要用PID闭环控制确保四轮转速一致。也可以用陀螺仪做航向闭环。

微信联系
淘宝联系