网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月30日漏签0天
自动化吧 关注:138,761贴子:393,670
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 7回复贴,共1页
<<返回自动化吧
>0< 加载中...

【分享】关于自平衡车控制的一些知识

  • 取消只看楼主
  • 收藏

  • 回复
  • 东东bh
  • 虚心学习
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
由于之前做过平衡车发过帖子,有好多朋友都对这个比较感兴趣,也提出过许多问题,可能并不能一一解答,对于部分常见问题在这里做一些说明,希望对感兴趣的朋友有帮助,同时希望大家都能做出高稳定性的自平衡车,爪机发帖,请勿插楼,谢谢



  • 东东bh
  • 虚心学习
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
接下来说明控制模型,平衡车可以看做倒立摆模型,普通单摆在运动过程中受到回复力使它在平衡位置附近来回摆动,如果没有空气阻尼,摆动不会停止,并且空气的阻尼力和速度成正比。而我们的模型相当于倒立的单摆,原来由重力的分力提供恢复力,现在我们通过给电机的电压控制电机加速度来提供恢复力,同时还要通过来控制阻尼,所以我们把这两个力融合到一个公式里,在一定条件下我们认为给电机的力和电压有线性关系,有f=k1*angle+k2*w,angle是角度,w是角速度,正好与我们的模型匹配,这个公式就是我们的控制方程,这里选择angle而不是sin是因为小角度下做了近似,当然这个公式的作用是控制让角度为0,如果控制目的是让它为某一角度时可以在angle上加或者减你的设定值。


2026-05-30 05:04:19
广告
不感兴趣
开通SVIP免广告
  • 东东bh
  • 虚心学习
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
由上面的控制方程知道我们需要根据车体当前的角度和角速度来做控制,所以我们需要传感器采集角度和角速度,首先加速度计可以采集到它本身轴上的加速度,根据重力加速度在加速度计轴方向上的分量呈三角函数关系可以得出角度,但是加速度计存在干扰问题,包括微弱振动会使它出现许多高频震荡的干扰,同时小车在移动过程中本身的加速度对它加速度测量的影响,所以仅靠加速度计测量角度精度较差,难以运用到我们的控制中;而陀螺仪是用来测量角速度的传感器,我们知道,角速度的积分就是角度,通过积分我们可以得到较为平滑的角度曲线,并且不存在太多干扰因素,但仅仅用角速度积分来测量角度存在一个问题就是积分漂移问题,随着积分时间加长,积分速度很快,积分的时候会把微小的误差进行积累,久而久之误差会不断的增大,以至于难以用于控制,克服积分漂移首先要把陀螺仪零点矫正的特别精确,但由于陀螺仪本身就存在零点漂移问题,所以误差不可避免,我们只能把它矫正在零点附近。
由上述只加速度计测角度存在干扰,曲线不平滑,但测量存在绝对基准(重力方向),陀螺仪积分曲线平滑,但不存在绝对基准,存在积分漂移,所以我们可以在陀螺仪测量角速度积分的基础上利用加速度计测量的角度对其进行实时校准,我们知道在运算速率很高时即使很小的误差也会被最终校准回去,这样通过加速度计和陀螺仪来实现角度的测量可以满足我们的控制要求。
具体加速度计角度和陀螺仪角度的融合测量软件滤波方法常用的有卡尔曼滤波和互补滤波,卡尔曼滤波相对复杂,但效果很不错,互补滤波参数调整好了也有相当不错的效果在此给出互补滤波公式angle=k1*(angle+(w-zw)*dt)+k2*(acc-zacc)式中k1,k2为参数,通常开始调试时选k1=0.98,k2=0.02,调试中保持k1+k2=1,其中w为角速度,dt为积分时间,acc为加速度计算的角度,zw为角速度零偏,zacc为加速度角度零偏,如果角度波形震荡严重可适当增大k1,如果有角度漂移可适当减小k1,角度滤波的精确性直接影响控制效果。


  • 东东bh
  • 虚心学习
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
再说一下控制方程的参数调节,我们可以看到模型给出的控制方程其实是PD调节,f=p*angle+d*w,熟悉PID控制的童鞋应该都有相关的PID参数调节经验的,首先我们是不加D的,也就是说D=0,然后调节P使得车体能够较稳定的在平衡位置附近震荡或者说摇摆,但不会倒下,当我们把P调到是个的值是车已经可以立起来了,这时候我们通常略微增大P后开始加入D进行调节,让小车更加稳定,快速性更好,这样反复调节最终可以让车体看起来站着纹丝不动,受到轻微干扰后能快速回稳,到这里我们的直立控制就完成了。
至于让车前进后退转弯什么的就比较简单了,直接在直立控制上叠加就行。


  • 东东bh
  • 虚心学习
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
之前我们说的是直立控制,我们用到的是角度(倾角)环,如果我们想控制小车运动速度我们可以用编码器或者码盘检测来实现速度环,速度环同样是速度PID控制,之后与角度环叠加即可。


  • 东东bh
  • 虚心学习
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
再说一点高级点的,前一阵子看到有个同学调车时车的零点总是飘,然后看到他的车在零点飘了之后车只有在在不断向前走的时候才能直立,不能停了,分析存在稳态误差,无法稳定到预定角度,根据控制理论知识知道增大K可以减小稳态误差,但由于电机速度极限限制(太大后就出了线性区)难以实现,所以可以增加系统积分环节来让系统型次大于一消除稳态误差,或者可以利用滑动参数PID消除稳态误差,同时可采用自适应算法来消除陀螺仪零点漂移。


  • 东东bh
  • 虚心学习
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个是我之前发的我当时做的平衡车的帖子http://tieba.baidu.com/p/2450728365?lp=5028&is_bakan=0&mo_device=1


  • 东东bh
  • 虚心学习
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
关于算法方面大家有什么更好的想法也可以在此帖交流学习,本人才疏学浅,以上分析有任何问题都欢迎大家提出来交流。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 7回复贴,共1页
<<返回自动化吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示