在调试机器人底盘的时候常常会遇到四个轮子工况不一样导致运动变形的问题,那四个轮子的差速环就可以作为抑制这种运动变形的一种方法,使四个轮子不管在什么情况下都可以较好地保持相同的转速,这里采用的是pid的方法去实现
/*-------------------平移差速环--------------------------------*/
/*---------------@note:可用于解决重心不在底盘中间运动变形----------*/
/*---------------------但效果不明显,有些缺陷-----------------*/
if(TargetVelocity_X != 0 && TargetVelocity_Y == 0 && TargetVelocity_Z == 0)
{ //当底盘想要平移时
for(uint8_t num = 0; num < 4 ;num ++)
{
dif[num] = myabs(Chassis_PID[num].Target - Chassis_PID[num].Current);
}
difout[0] = dif[0] - ((dif[1]+dif[2]+dif[3])/3);
difout[1] = dif[1] - ((dif[0]+dif[2]+dif[3])/3);
difout[2] = dif[2] - ((dif[0]+dif[1]+dif[3])/3);
difout[3] = dif[3] - ((dif[0]+dif[1]+dif[2])/3);
for(uint8_t num1 = 0; num1 < 4 ;num1 ++)
{
Differential_PID[num1].Current = difout[num1];
Differential_PID[num1].Adjust();
}
for(uint8_t num2 = 0; num2 < 4 ;num2 ++)
{
if(Chassis_PID[num2].Out >0)
Chassis_out[num2] = (Chassis_PID[num2].Out - Differential_PID[num2].Out);
else
Chassis_out[num2] = (Chassis_PID[num2].Out + Differential_PID[num2].Out);
}
}
else
{
for(uint8_t motor = 0; motor < 4; motor++)
{
Chassis_out[motor] = Chassis_PID[motor].Out;
}
}
这里通过python理想得看了一下效果
ps:四个颜色代表四个电机的转速 第一张图是差速环的效果 第二章是没有差速环 可以比自我调节更快达到相同的转速