底盘差速环

本文介绍了在调试机器人底盘时如何利用PID控制的差速环来解决四个轮子转速不一致导致的运动变形问题。通过平移差速环的算法实现,即使重心偏移也能尽量保持轮子转速相同,从而提高底盘运动的稳定性。然而,这种方法在某些情况下效果并不明显,存在一定的缺陷。文章中还展示了差速环与无差速环对比的转速效果。
摘要由CSDN通过智能技术生成

在调试机器人底盘的时候常常会遇到四个轮子工况不一样导致运动变形的问题,那四个轮子的差速环就可以作为抑制这种运动变形的一种方法,使四个轮子不管在什么情况下都可以较好地保持相同的转速,这里采用的是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:四个颜色代表四个电机的转速 第一张图是差速环的效果 第二章是没有差速环 可以比自我调节更快达到相同的转速

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值