一、简介
底盘跟随在RoboMaster比赛中,是一种常见的底盘控制方式。而底盘的轮子是两种不同类型的麦克纳姆轮,如下图所示:

根据麦轮小滚轮的旋向,可以组成如下图所示的X型底盘小车:

其中,连接麦轮的电机为比赛使用的3508电机。本文规定:以电机底面顺时针旋转方向为正方向 (如下图从左往右看)

(图片来源于官方文档)
二、程序流程
底盘控制流程图如下所示,实际代码中是将YAW轴角度PID的控制量与遥控遥感值叠加,最后再赋值到底盘电机的速度环目标值中。

这个流程图的代码能实现的效果是,当YAW轴的机械角度不在车头机械角度时,底盘就会沿着YAW轴当前的机械角度方向一直旋转。
当云台控制YAW轴电机保持不动时,就能实现底盘跟随。
流程图中PID各个量赋值如下图所示:

三、逻辑解释
解释起来其实不难,如下图所示,
左图中,angle_output<0, 四个电机均反转,表现为底盘原地向左旋转。
右图中,angle_output>0, 四个电机均正转,表现为底盘原地向右旋转。

此时,如果云台对YAW轴电机无控制,则表现为:底盘电机一直跟,永远跟不上。
要想让云台能被跟上,则需要通过云台上陀螺仪提供的角度进行串级PID控制,当云台的目标角度确定时(即云台保持不动),底盘才能“跟得上”。