共轴麦轮直立、运动、位置串级PID

角度PID

  • 微分项Angle_Pram[KD] * gyroy:根据角速度的变化率来调整电机PWM,角速度变化越快,调整的幅度也越大。

速度PID

 

  • Encoder_Least = (Encoder1 + Encoder2 + Encoder3 + Encoder4) - Trg_Speed;:计算速度偏差,即四个编码器的读数之和与目标速度Trg_Speed的差值。
  • Encoder *= 0.8;:将之前的滤波结果乘以0.8,实现低通滤波的效果,减少噪声。
  • Encoder += Encoder_Least * 0.2;:将新的速度偏差乘以0.2后加到滤波结果上,更新滤波后的速度读数。
  • Encoder_Integral += Encoder;:将滤波后的速度读数加到积分项上,实现积分控制。

积分限幅

  • if(Encoder_Integral > 20) Encoder_Integral = 20;:如果积分项超过20,将其限制在20。
  • if(Encoder_Integral < -20) Encoder_Integral = -20;:如果积分项低于-20,将其限制在-20。这是为了防止积分饱和。

  • sudu_out = Speed_Pram[KP] * Encoder + Speed_Pram[KI] * Encoder_Integral;:根据比例项和积分项计算速度控制器的输出。这里使用了Speed_Pram[KP]作为比例增益,Speed_Pram[KI]作为积分增益。

转向环

  • Direct_Out = Direct_Pram[KD] * gyro_z;:在这种情况下,控制器仅使用微分项(D项),其中Direct_Pram[KD]是微分增益,gyro_z是陀螺仪的读数。这个微分项有助于机器人在直线行驶时快速响应并抑制任何不必要的转向或旋转。

最后实现基本运动

Angle_PID_Out = Angle_PID(Speed_PID_Out+Mid_Angle);  这个是串级pid,将速度环的输出作为直立环的输入

然后叠加转向环和轮子差速。最后得到PWM。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值