发布时间:2023-04-18 文章分类:电脑基础 投稿人:樱花 字号: 默认 | | 超大 打印

【十七届恩智浦智能车】有刷平衡单车——控制篇(串级)

  • 写在前面
  • 有刷平衡单车全控制
    • 单车平衡稳定
      • 陀螺仪姿态解算
      • 增量式PID和位置式PID
      • 电机串级调试
        • ==角速度环==
        • ==角度环==
        • ==速度环==
        • 调试方法
        • 舵机环——动态零点
    • 单车行走直立
      • 行走姿态受力分析
      • 向心力环处理方式
  • 部分代码
      • 补充
  • ==写得不好仅供参考,如有意见以你为准,希望大家取得好成绩(冲无刷)==

写在前面

大二第一次参加智能车竞赛,u1s1这比赛是真滴烧币,(不排除是我老弄炸东西的可能),花了少说4个月,学到的东西不多,心态倒是好了不少,总体还算是有收获,还是遗憾占大头,现在已经想找别的东西做了,就把所学分享给大家吧!;有不少人刚接触动轮,对有刷不是很熟悉,如果按照Lq官方开源代码调不成功十有八九是电机出事了,按照以下方向调串级,可以达到不抖且中度抗干扰。希望龙邱品控能更好一点(Lq的驱动做的还不错- =),希望逐飞的方案能更早一点(狗头保命)

有刷平衡单车全控制

单车平衡稳定

陀螺仪姿态解算

  1. 首先是关于陀螺仪的选取,我们选择的是龙邱的Mpu6050,配合Lq开源的DMP进行角度融合,实测角度实时性和准确性不错。但是由于DMP解算的问题,上电以后会飘几十秒,需要扶稳等待(坑1),缺点还是Lq质量堪忧,一共坏了三个最后使用祖传原子Mpu。
  2. 尝试过使用icm20602经过滤波处理通过四元素融合解算角度,实测角速度精度高且相较MPU受噪音影响小,对角速度环拟合帮助大,缺点是四元素融合在静态会由于噪音影响积分增大,但有细微振动则不会,因此实测对单车影响不大,推荐使用该方案!

增量式PID和位置式PID

详见https://blog.csdn.net/as480133937/article/details/89508034
侵删

简单来说,增量式和位置式本质相同,对位置式来说,PID分别进行比例、积分、微分对应现在、过去、未来,而增量式的I在形式上则恰好与位置式P等同,其他两个参数同理,并且有运算量少的优点。

电机串级调试

串级框架方面,由于角速度的响应快速以及动量轮平衡所根据的动量守恒原理,将角速度环作为内环输出,而中间是角度环,外面则是速度环,浅图示一下:【十七届恩智浦智能车】平衡单车——控制篇(串级)

角速度环

角速度环方面使用的是增量式PD,看到有人是使用位置式的,其实两种基本一样,只不过增量式计算量较小,对算力压力不大,另外在单车这种高速振动的系统中,实测增量式中加入积分环节效果一般,很容易因各种问题导致饱和,当然也有看到使用位置式PID调的很好的,这可能和陀螺仪的漂移有关,也就要大家自己来选取一款合适的陀螺仪了,这里就抛砖引玉一下。

角度环

在Lq所开源的Lqr算法当中是以角度环作为主输出,其中用一个D来处理角速度,实际上加速度才是真正要考虑的点,这也是不耐造的原因之一,(或许加一个角速度环会更好???)在调试过程中,角度环主要是用来补偿速度环带来的溢出或者延迟,因此角度环我只采用了简单的位置式P进行处理,并且调试过程中是粗调的。

速度环

速度环虽然作为最外环,我却认为是很重要的一环,因为他决定了你单车受到干扰后保持稳定的能力,采用的是位置式PID进行精调。很多人不理解速度环到底是怎么作为输入的???????很简单的例子,假设单车往左倒需要动轮逆时针转动(车屁股视角),通过编码器的极性你就可以判断出此时车身的姿态到底是往哪边倒的,此时为了让车往右的方向归,便需要不断加速来平衡,这中间就涉及到了溢出的问题,也就是车子会向右倒,这时候就需要粗调角度环来抑制这个影响。(当车身右倒,角度环大就抵消了)

调试方法

先精调角速度环,到往一个方向倒开始觉得困难了就可以调速度环,加上了速度环以后,车子能立2s左右倒下后开始调速度环,一开始建议大家三个环都只进行普通的P控制,实测效果也非常好,能立且抗干扰能力比Lqr好太多。调参过程中尽可能大的增加速度环,外界干扰姿态,观察归正情况,若有过冲则增大角度环,而角速度环更像是一个比例系数(如果是纯P),所有的修正均可通过修正速度环处理,调好以后加上D值精调。

舵机环——动态零点

调好了平衡以后就该引入舵机输入了,舵机打角以后车身姿态是显而易见的会变的,我们可以通过关闭电机后手扶单车测量中点的角度变化,通过一个简单的比例系数P,对舵机PWM输入进行处理并输出叠加到零点上。

4.27补充:有关于舵机对于姿态平衡的影响,其实是分两个方面的,首先是舵机打角后零点的改变,第二个比较容易忽视的地方是舵机打角过程中与地面的作用力,该点影响因素较多,因此直接上上位机进行满打角对角度进行观测,结果发现两个因素极性相反,但是后者很快会被抵消,但是处理不好也是调试过程中倒地的重要因素之一,以下是上位机测试
【十七届恩智浦智能车】平衡单车——控制篇(串级)

单车行走直立

行走姿态受力分析

暂时懒得写了,同样是动态零点,转哪边零点就往哪边,处理好了就可以压弯。

向心力环处理方式

暂时懒得写了,同样是简单P,别问为啥不用F=(m*v^2)/2,实测调好了能用,当然也可以尝试一下,算法总能找到更好的,调好了无差别压弯,至少1m的速度可以流畅控制转向。(前提是前面所有参数调试好蓝牙控制飞一般的感觉)

部分代码

完成以上的调试步骤,基本上完赛速度就能上0.7以上了,当然这肯定不是最完美的控制系统,只是给大家一个思路,也没必要无脑冲LQ的开源代码。(最近逐飞刚出无刷新方案,真的猛,建议大家可以尝试用该套路嵌入无刷中控制,无刷存的力比有刷大得多,主要是不容易烧,但是他的稳态转速没那么好控制叭)

【十七届恩智浦智能车】平衡单车——控制篇(串级)
【十七届恩智浦智能车】平衡单车——控制篇(串级)
【十七届恩智浦智能车】平衡单车——控制篇(串级)
【十七届恩智浦智能车】平衡单车——控制篇(串级)

补充

增量式PI中并不是不能用I,纯角速度PI效果甚至比角速度P与速度P耦合更加好,其中作出的对积分的限制决策大家可以自己决定,可以贴上几个思路供大家参考,其中思路3实测可行。
【十七届恩智浦智能车】平衡单车——控制篇(串级)
【十七届恩智浦智能车】平衡单车——控制篇(串级)

写得不好仅供参考,如有意见以你为准,希望大家取得好成绩(冲无刷)