当前位置:   article > 正文

自动跟随推车项目总结_pid uwb跟随

pid uwb跟随

自动跟随推车项目总结

舵机模块

舵机采用的模式是1ms到2ms模式,对应的角度是180度,实际不到180度,可以根据180度和1ms对应关系,来确定脉冲值,不过这样不准确,因为舵机的线性度不是特别精准,最好还是实际测量为准,不同的脉冲值,测量下所对应的角度。

PID控制舵机

PID的作用按我的理解就是通过反馈来做一个闭环控制,比如我们设置了一个角度,如果不用PID,直接让舵机转到哪一个角度,会有两个大的缺点:1、快速的转动会使推车产生晃动,而且会因为惯性产生超调,车子的实际转的角度会增大。2、到达那个角度的实际值不一定是正确的,会因为有摩擦力达不到哪个角度。
下面根据1-6的公式来分析解决这两个问题:
我们做的是车子是智能跟随,在前方有UWB(相当于遥控)给车子发距离和角度,使用PID主要是为了控制舵机转向,让转向更稳定,车子走的更平稳,因为PID采用反馈的机制,这样可以做闭环控制,反馈回来的是车和UWB的角度差(相当于e(k)),因为我们做跟随,所以期望值一直是0,也就是角度差一直为0是我们想要的,所以一旦有角度差,就经过PID计算,让车子根据输出值调整,快速的消除角度差,以此达到跟随的效果。
针对第一个问题:使用PID的P值,比如P值是0.5,设置值是1,刚开始反馈值为0,那么我们第一次输出是0.5*e(K)=0.5,第二次输出0.75,第三次0.875,慢慢累加,这样舵机转动的角度不会突然增大,从而使车子行驶更平稳。
针对第二个问题,使用I值和D值,如果上一次的误差e(k-1)是大于0,那么说明,没有达到我们的设置值,那么就会加上e(k-1),从而增加角度的输出值,如果e(k-1)是负值,就会减,以此来达到克服摩擦带来的负面作用,D值代表的是一个趋势,斜率,就比如这一次的误差比上一次的误差大,那么D的一项就为正,就加上,来弥补误差。

**PID控制舵机的公式使用的是位置式的,位置式的公式如图所示:**
  • 1

**位置式PID
**

增量式PID可由u(k)-u(k-1)得到:
  • 1

**
增量式PID**

我们一般使用的是1-11的式子,比较接近原始公式,使用1-12也可以,不过效果没有1-11好。
  • 1

PID调试的坑

我们调试的时间浪费的挺久的,主要原因是PID公式没掌握好,没能理解透,和我们特殊的应用场景也有关系,下面以此介绍几个坑:
1:公式理解有误,期望值和反馈值选择错误,我们当时的反馈值错了两次,
一次是把输出值作为反馈值,既然是反馈,那么一定会和输出的控制值不一样的,就像采集的轮速值和你PWM控制的轮速是不一样的,我们用PID把他控制成一样,这样才称之为反馈,才有价值。
第二次是采样和反馈值是前后两次UWB的角度值,本来以为这个是正确的,我们理解的是这一次的角度值是30度,下一次是20度,我们控制到30度,实际上反馈是20度,所以他们两个做差等于e(k),以此来控制输出,达到我们的角度,这个按道理来说也是可以行得通的,但是这种控制力度太小,必须要两次UWB的角度有角度差时才能起一点作用,比如上次30度,这次20度,那么做差也才10度,PID的值要给的很大才可以,而且当两次都是30度时,e(k)=0,就没起到控制的作用。实际上应该是30度时就和0度相差30,那么PID的调节范围就很大了,可以快速的响应。所以我们的期望值是固定的0度,反馈值就是UWB返回的角度,e(k)=30-0,这样方便调节PID参数。
2:做运动控制,控制的速度一定要快,我们调试那么久的终极原因就是控制速度太慢,我们的数据平滑太严重,用中值滤波导致UWB数据严重滞后,滞后将近2S,这样角度不能快速调节,那就会一直出错,一直滞后。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/655053
推荐阅读
相关标签
  

闽ICP备14008679号