一、模型建立

根据单摆模型,建立以下模型,如下图:

忽略空气阻力的情况下,当物体离开平衡位置后,物体会受到竖直向下的重力和沿着悬挂线向上方向的拉力的合力作用,使得物体在平衡位置做往返运动。该合力又称为恢复力,如下:

其中,悬线与竖直方向夹角为θ,与物体运动方向夹角为 π- θ,F方向与物体运动方向相切,指向平衡位置。

又由极限,可知,当θ较小时,有

实际中,物体除了受到回复力F的作用外,还受到空气阻力F阻的作用,从而最终会静止在平衡位置。而运动中空气阻力的大小与物体运动速度大小成正比,该比例由阻尼系数k表示,而阻力方向与运动速度方向相反。此时物体在运动方向上所受合力如下:

因此,对于单摆模型,其保持平衡需耀具备以下条件:

  • 受到与偏移方向相反的回复力的作用
  • 受到与物体运动方向相反的阻尼力的作用

对于两轮平衡车,可以简化为倒立摆模型,如下:

而对于倒立摆模型,其受力如下:

如单摆模型,可知物体受到回复力为:

但由于此时回复力方向与物体平衡位置方向相反,因此物体反而会加速离开平衡位置。

为了让物体回到平衡位置,即保持与竖直方向平行,可以让倒立摆向与物体偏离方向相反的方向做加速运动,加速度为a。此时倒立摆受力如图:

倒立摆将受到惯性力:

不计空气阻力时,倒立摆运动方向上所受合力为:

当偏移角较小时,有

其中,取近似 

当k1>g时,物体在运动方向上受到与回复力方向相反的力。此时,在空气阻力作用下,物体将在平衡位置往返,最终回到平衡位置。而为了让物体尽快回到平衡位置,可以通过外加阻尼力,其大小与物体偏离平衡位置的速度成正比,比例系数为k2,方向相反,则有:

因此,可以通过外力,来使小车保持平衡。而外力的来源即是通过控制小车车轮的加速度,使得小车获得相应的惯性力。其中k1会使得小车向物体倾倒的相反方向做加速运动,k1过大过小将导致小车直接偏离品平衡位置的方向而倾倒;k2使得小车能够尽快回到平衡位置,k2过大过小时,都会影响小车回到平衡位置的调节时间。

二、系统分析

第一部分从建立物理模型的角度出发,通过物理定律推导得到物理等式。
但光有理论,没有结合实际也会觉得难以下手,因此第二部分结合实践,从系统的角度出发,结合物理等式对系统的控制做进一步分析。
首先,还是从物理定律出发,得到物理等式。如图,考虑一个可移动小车上的倒立摆模型,其中杆的长度为L,不计杆的质量,杆的末端有一个质量为m的小球,θ(t)该摆偏离垂直位置的角度,g是重力加速度,s(t)是小车相对于某个参考点的位置,a(t)是小车的加速度,x(t)代表由任何扰引起的角加速度。
                                                                                        
对杆上小球受力分析,有 
                                                               
此时,Fθ(t)方向为垂直于杆,沿着倾倒方向。
根据运动学知识,有
           (12)
注意,角速度要转为线速度
反馈就是利用一个系统的输出去控制或改变系统的输入。反馈除了能提供一个误差校正的机理而减小系统对扰动以及系统数学模型误差的灵敏度以外,反馈的另一个重要特性在于使一个固有的不稳定系统稳定的能力上。考虑以上倒立摆模型,如果小车保持静止不动的话,倒立摆一定会倒下来。但通过移动小车,让小车根据倒立摆偏离竖直方向的角度来回移动,最终可也让倒立摆达到动态平衡,即与竖直方向角度为0。显然,稳定倒立摆问题也就是设计一个反馈系统。该反馈系统使小车移动以保持倒立摆成垂直状态。
对于连续时间LTI反馈系统的一般结构可以通过上图表示,此时系统函数为
                                                      (13)
而通过对式(12),假定θ(t)很小,即对于该模型,考虑该模型是在接近垂直位置的时候的动态特性,此时可以做如下近似
                                        sin⁡[ θ(t)  ]≈θ(t)  ,cos⁡[ θ(t)  ]≈1            (14)
当小车静止时,即a(t)=0。结合式(12)和(14),求拉普拉斯变换,可得系统函数为
(14)
由上式可知,有极点s=g/l 或s=-g/l ,即系统在右半平面有一个极点,意味着该系统是不稳定的。(稳定:系统的单位冲激相应绝对可和。)因此,在不进行反馈控制时,该系统为一个LTI因果不稳定系统。也就是说,在小车静止不动时,任何由x(t)所造成的微小角扰动都将导致偏离垂直方向的角度进一步增大。
为了让小车以适当的方式移动,以摆在垂直位置,设想采用比例反馈,即    a(t) = Kθ(t)   (15)
同样假定θ(t)很小,使得该系统可以近似满足LTI的特性。
(16)
观察发现,此时对于系统函数H(s),其在s平面的右半平面至少存在一个极点,因此系统依旧不稳定。考虑加入比例加微分反馈,此时该系统函数变为二阶函数,如下
                                                            (17)
可得系统的两个极点。根据奈奎斯特稳定判断依据,要使得系统稳定,则两个极点都必须位于s平面的左半平面,此时有k1>g,k2>0。
综上所述,平衡车控制核心是一个角度PD控制器,有
                                                               (18)

三、改进

实际上,由于结构设计或组装上的不合理,小车物理重心总与竖直方向总存在一个夹角(或者说与地面不是保持垂直关系),小车在这一倾角作用下,在水平方向上受到一重力分量而会进行加速运动,最终倾倒而无法保持平衡。因此,需要在原先角度PD控制的基础上,加入速度PI控制,控制小车的速度。至于为什么是速度PI控制?阅读资料,仍然无法完全理解,其中讲到速度计算中存在着噪声影响,如果对该速度信号做微分计算时,会放大噪声的影响。(或者讲到小车为非最小相位系统,速度调节的时间常数要选取比较大??不是很理解,如果有更好的见解,也请多多指教哈)
速度PI控制如下:
                                                                        (19)    
总而言之,小车的控制可以归结为两个PID控制,一个为角度PD控制,一个为速度PI控制,为了保证系统的实时显示,两个PID控制必须放在中断程序中执行,而角度PD控制的频率要比速度PI控制的频率高。(具体还不是很清楚??)
注:以上部分参考论文和部分网上博客,同时参考《信号系统》第二版(作者:奥本海姆),如有雷同或不当之处,还请指出!!

arduino两轮平衡车(二)-- 原理讲解相关推荐

  1. arduino两轮平衡车(一)-- 材料准备

    (1)主控板 -- Arduino UNO R3 技术规格 工作电压:5V 输入电压:接上USB时无须外部供电或外部7V~12V DC输入 输出电压:5V DC输出和3.3V DC输出 和外部电源输入 ...

  2. 基于STC单片机的两轮平衡车设计

    给大家传福利了..后续继续共享基于Arduino/安卓Android/树莓派raspberry等平台的两轮车设计 这是我前年暑假做的一个小项目,今年拿出来整理了下当毕设了(当然毕设里添加了许多其他元素 ...

  3. 浅谈两轮平衡车的控制原理

    前言:在IT行业摸爬滚打了好几年,好不容易从学生熬成了社会人士,通过自己的不断努力又从社会人士熬成了学生.这几年的修行,同道博友给了我很多的帮助,很早之前就有写博客的想法,想借自己绵薄之力来回馈一下默 ...

  4. 玩转OpenHarmony PID:教你打造两轮平衡车

    目录 简介 硬件配置资源 原理概括 PID算法介绍 两步搭建样例工程 关键算法讲解 直立环控制算法: 速度环控制算法: 转向环控制算法: 总结 相关链接 简介 此次为大家带来的是OpenAtom Op ...

  5. 中科深谷开源智能两轮平衡车

    中科深谷开源智能两轮平衡车 中科深谷开源智能平衡车,集多学科交叉融合为一,具备自平衡,行走控制,无线通讯和4G远程控制,视觉识别跟随等功能,接口丰富,扩展性强,可支持多台调度控制. 提示:以下是本篇文 ...

  6. K60平台下的两轮平衡车

    基于飞思卡尔K60的两轮平衡车 一.总体设计 二.电路设计篇 三.软件设计 四.实物测试 五.改进和展望 六.附录 一.总体设计 此系统用到的功能模块都是集成好的,这里只设计了一个底板来连接各个硬件模 ...

  7. stm32两轮平衡车资料

    [MCU实战经验]+基于stm32两轮平衡车制作:http://www.stmcu.org/module/forum/thread-582883-1-1.html 转载于:https://www.cn ...

  8. 直立两轮平衡车核心代码

    两轮平衡车相关算法 卡尔曼滤波函数 /************************************************************** 函数名称:float KalmanF ...

  9. stm32两轮平衡车项目资料 两轮平衡车原理图

    stm32两轮平衡车项目资料 两轮平衡车原理图+PCB+程序 现有:693651816272834lin昵称好难设置

  10. stm32两轮平衡车项目资料 两轮平衡车原理图+PCB+程序

    stm32两轮平衡车项目资料 两轮平衡车原理图+PCB+程序 YID:943651816272834lin昵称好难设置

最新文章

  1. html鼠标点击之后隐藏,html中如何用js设置鼠标两秒不动,隐藏鼠标
  2. 开发日记-20190417 关键词 WheelView(视图绘制)
  3. SAP MM Consignment 寄售库存
  4. 推荐美加版S3好用的两个ROM
  5. 7-20 表达式转换 (25 分)(代码详解+题目分析)
  6. android aidl工具,【Android】AIDL介绍和实例讲解
  7. 关于浮点数和字符串转换的函数示例
  8. bios刷写工具_不仅仅带来新功能!以戴尔游戏本为例的更新BIOS详细教程
  9. Nginx - 原理机制
  10. cmd 返回目录操作
  11. C语言程序员未来发展前景如何
  12. Unity出IOS包报错记 -1
  13. Hbuilder安装及使用教程
  14. C#实现QQ扫码登录
  15. 盘点cg设计师遇到的远程办公难题以及解决办法
  16. 【GMS认证】关于XTS命令总结
  17. html图片自适应上下左右居中显示,图片大小自适应垂直居中的方法
  18. java中的push方法_Java ArrayDeque push()方法与示例
  19. Unity接入微信SDK——iOS(接入微信SDK)
  20. 计算机专业去电视台,计算机网络与多媒体技术在电视台中的发展前景

热门文章

  1. 服务器安装找不到lsi驱动,IBM 服务器 SAS Raid LSI Windows2008 硬盘 驱动
  2. Python爬虫之七:爬虫实战-爬取豆瓣电影 top 250
  3. php数字转成字符串的函数,php怎么将数字转成字符串?
  4. Java面试--观察者模式
  5. python django 商品进销存管理系统(毕设、课设、学习)
  6. AD画PCB时,如何自动删除之前的连线
  7. DllMain函数参数简介
  8. 多测师拱墅校区肖sir___性能测试之单个接口性能和多个接口性能测试(3)
  9. 计算机操作员中级操作技能,计算机操作员中级操作技能试卷.doc
  10. python批量实现百度网盘链接有效性检测