热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

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

【十七届恩智浦智能车】有刷平衡单车——控制篇(串级)写在前面有刷平衡单车全控制单车平衡稳定陀螺仪姿态解算电机串级调试框架角速度环角度环速度环调试方法舵机


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

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


写在前面

大二第一次参加智能车竞赛,u1s1这比赛是真滴烧币,(不排除是我老弄炸东西的可能),花了少说4个月,学到的东西不多,心态倒是好了不少,总体还算是有收获,还是遗憾占大头;有不少人刚接触动轮,对有刷不是很熟悉,如果按照Lq官方开源代码调不成功十有八九是电机出事了。希望龙邱品控能更好一点(Lq的驱动做的还不错- =),希望逐飞的方案能更早一点(狗头保命)


有刷平衡单车全控制


单车平衡稳定


陀螺仪姿态解算


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

电机串级调试


框架

串级框架方面,由于角速度的响应快速以及动量轮平衡所根据的动量守恒原理,将角速度环作为内环输出,而中间是角度环,外面则是速度环,浅图示一下:


角速度环

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


角度环

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


速度环

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


调试方法

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


舵机环——动态零点

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


单车行走直立


行走姿态受力分析

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


向心力环处理方式

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


部分代码

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

动态零点
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


补充

增量式PI中并不是不能用I,纯角速度PI效果甚至比角速度P与速度P耦合更加好,其中作出的对积分的限制决策大家可以自己决定,可以贴上几个思路供大家参考,其中思路3实测可行。
在这里插入图片描述
在这里插入图片描述


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


推荐阅读
  • 分布式计算助力链力实现毫秒级安全响应,确保100%数据准确性
    随着分布式计算技术的发展,其在数据存储、文件传输、在线视频、社交平台及去中心化金融等多个领域的应用日益广泛。国际知名企业如Firefox、Google、Opera、Netflix、OpenBazaar等均已采用该技术,推动了技术创新和服务升级。 ... [详细]
  • 垂直泊车路径设计
    本文探讨了垂直泊车路径的设计原理与实现方法。垂直泊车是指汽车从特定位置出发,经过一系列横向和纵向移动,最终达到与车位垂直停放的状态。路径设计旨在确保泊车过程既高效又安全。 ... [详细]
  • SPFA算法详解与应用
    当图中包含负权边时,传统的最短路径算法如Dijkstra不再适用,而Bellman-Ford算法虽然能解决问题,但其时间复杂度过高。SPFA算法作为一种改进的Bellman-Ford算法,能够在多数情况下提供更高效的解决方案。本文将详细介绍SPFA算法的原理、实现步骤及其应用场景。 ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • 我整理了HMOV四大5G旗舰的参数,可依然没能拯救我的选择困难症
    伊瓢茕茕发自凹非寺量子位报道|公众号QbitAI报道了那么多发布会,依然无法选出要换的第一部5G手机。这不,随着华为P40系列发布,目前国 ... [详细]
  • 最优化算法与matlab应用3:最速下降法
    最优化算法与matlab应用3:最速下降法最速下降法是一种沿着N维目标函数的负梯度方向搜索最小值的方法。(1)算法原理函数的负梯度表示如下:搜索步长可调整ak,通常记为(第k次迭代 ... [详细]
  • Java高级工程师学习路径及面试准备指南
    本文基于一位朋友的PDF面试经验整理,涵盖了Java高级工程师所需掌握的核心知识点,包括数据结构与算法、计算机网络、数据库、操作系统等多个方面,并提供了详细的参考资料和学习建议。 ... [详细]
  • 本文探讨了在 Python 2.7 环境下,如何有效地对大量数据(如几百 KB 的字符串)进行加密和压缩,并确保能够准确无误地解密回原始数据。 ... [详细]
  • ACM经典书籍推荐
    本文介绍了几本在算法和计算机科学领域具有重要影响力的书籍,包括由Donald E. Knuth编著的《计算机程序设计艺术》第一卷,以及潘氏兄弟的数论经典教材等。这些书籍不仅是学习相关领域的宝贵资源,也是专业人士不可或缺的参考书。 ... [详细]
  • Linux内核中的内存反碎片技术解析
    本文深入探讨了Linux内核中实现的内存反碎片技术,包括其历史发展、关键概念如虚拟可移动区域以及具体的内存碎片整理策略。旨在为开发者提供全面的技术理解。 ... [详细]
  • 通过两幅详细的思维导图,全面解析Spring框架中应用的设计模式及其核心编程理念。 ... [详细]
  • 本文详细探讨了 Android Service 组件中 onStartCommand 方法的四种不同返回值及其应用场景。Service 可以在后台执行长时间的操作,无需提供用户界面,支持通过启动和绑定两种方式创建。 ... [详细]
  • 苹果官方在线商店(中国)提供了关于MacBook Pro的详细信息。通过先进的工厂校准技术,新MacBook Pro能够精确地适应多种色彩空间标准,如sRGB、BT.601、BT.709及P3-ST.2084(HDR),确保用户获得最佳视觉效果。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
author-avatar
苏格拉没有底YI_670
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有