叽叽歪 发表于 2023-4-26 15:50:41

基于LQR 线性二次型调节器的自平衡自行车

https://github.com/pxmkv/Balance-Tech/raw/main/pics/bike1.png
项目文件:

**** Hidden Message *****


本项目使用的3D模型基于“纤豪电子科技”的模型修改,加固了一些关键部位以获得更强的稳定性
https://github.com/pxmkv/Balance-Tech/raw/main/pics/logo.png平衡技术这个项目的基本目标是创造一个两轮自平衡物体,让人联想到具有移动和转向能力的摩托车https://github.com/pxmkv/Balance-Tech/raw/main/pics/cad.pnghttps://github.com/pxmkv/Balance-Tech/raw/main/pics/bike1.pnghttps://github.com/pxmkv/Balance-Tech/raw/main/pics/bike2.pnghttps://github.com/pxmkv/Balance-Tech/raw/main/pics/bike3.png带有标记的执行器和传感器的集成设备:https://github.com/pxmkv/Balance-Tech/raw/main/pics/bike.png大部分电路设计位于三“层”结构中。三块电路板,每块电路板之间的间隙约为一英寸,其中包含所有电路和关键部件。电池电源的接线位置会降低质心并有助于实现更平稳的平衡。降压转换器支持可调电源,AMS1117 用作稳压器。电路中存在其他较小的部件,但此处提供了关键部件https://github.com/pxmkv/Balance-Tech/raw/main/pics/circuit.pnghttps://github.com/pxmkv/Balance-Tech/raw/main/pics/diagram.png**工程分析** A. 外力矩要求https://github.com/pxmkv/Balance-Tech/raw/main/pics/diagram2.png系统的质心位于其枢轴点之上,这使其具有内在的不稳定性;任何倾斜都会导致重力扭矩。欧拉角量化了系统绕旋转轴的角位移。如果欧拉角达到 22° 的阈值,电机将按程序停止。以此为最大工作角度,则最大重力扭矩为:https://github.com/pxmkv/Balance-Tech/raw/main/pics/equation1.png以下计算验证了反作用轮施加同等大小或更高大小的中和扭矩的能力https://github.com/pxmkv/Balance-Tech/raw/main/pics/equation2.png此外,无刷直流电机的性能曲线表明它能够为反作用轮提供足够的扭矩。https://github.com/pxmkv/Balance-Tech/raw/main/pics/curve.pngB. K 增益矩阵的优化有四个参数可提供有关系统状态的信息并帮助确定适当的控制动作以保持平衡:欧拉角、系统角速度、电机速度和电机位置。欧拉角和角速度描述了重力扭矩的影响;所需状态分别为 0° 和 0 rad/s。电机速度和电机位置描述了动量轮施加的扭矩的影响;这些参数的理想状态取决于系统的动态。为了保持系统的平衡,使用反馈控制方法使实际状态更接近期望状态。K 增益矩阵是一组反馈增益,用于根据系统的期望状态和实际状态之间的差异来调整动量轮的速度和方向。LQR 算法用于找到最佳的 K 增益矩阵,它可以最大限度地减少控制工作(即电机速度/扭矩),同时还能最大限度地减少系统与所需状态的偏差。最佳 K 增益矩阵的计算是使用 MATLAB 中的 lqr() 函数完成的。该函数需要四个输入:两个线性化状态空间矩阵 A 和 B、状态成本加权矩阵 Q 和控制加权矩阵 R。K 反馈增益乘以实际状态与期望状态之间的差异以生成最小化二次成本函数 J(u) 的控制信号 (u),这仅限于线性系统动力学 。最佳 K 增益矩阵是使用 MATLAB 中的 lqr() 函数找到的,它使用矩阵 A、B、Q 和 R 通过 Ricatti 方程 找到 P 并求解 K 。https://github.com/pxmkv/Balance-Tech/raw/main/pics/equation3.png通过使用拉格朗日方程 对系统的运动进行建模,然后将结果线性化为状态空间方程 ,可以找到矩阵 A 和 B。https://github.com/pxmkv/Balance-Tech/raw/main/pics/equation4.pnghttps://github.com/pxmkv/Balance-Tech/raw/main/pics/equation5.png状态成本加权矩阵 Q 中的值决定了对最小化成本函数中状态偏差的重视程度。该系统的 Q 矩阵对欧拉角、角速度和电机速度状态赋予相同的权重,对电机位置赋予更小的权重 (0.001)。这意味着与欧拉角、角速度和电机速度状态相比,电机位置匹配所需状态的重要性要小得多。控制加权矩阵 R 等于 1,这意味着最小化状态偏差与最小化控制工作同等重要。https://github.com/pxmkv/Balance-Tech/raw/main/pics/equation6.png将四个矩阵代入 lqr() 函数 ,即可确定理论上的 K 矩阵。通过进行一系列实验来微调 K 值,直到得到最终的 K 矩阵 提供稳定的性能。这个过程使我们能够确定一组更有效的反馈增益,最终提高系统的稳定性和控制精度。关于使用MATLAB计算LQRhttps://github.com/pxmkv/Balance-Tech/raw/main/pics/equation7.pnghttps://camo.githubusercontent.com/d543a0f8deef92932e913da1ae0417163ae58692e8e7eebe2667f5cadce424f7/68747470733a2f2f69312e77702e636f6d2f7777772e65737033326c6561726e696e672e636f6d2f77702d636f6e74656e742f75706c6f6164732f323031382f31322f4d482d45545f4c4956455f44315f6d696e695f45535033325f70696e6f75742e706e67使用的引脚M_编码器 GPIO 19, 23脉宽调制:GPIO 26PWS:GPIO 18目录:GPIO 5驱动马达GPIO 4, 33 伺服电机 GPIO 17基本结构:CPU1:卡尔曼滤波器准确的角度和角速度估计。来自 MPU6050 传感器的加速度计和陀螺仪数据的精确传感器融合。动态系统稳定性实施具有可调增益的线性二次稳压器 (LQR),以在各种条件下实现稳定平衡。LQR控制器取4个参数:欧拉角、角速度、反作用轮实际速度和反作用轮位置,然后计算出PWM输出。CPU0:使用Bluepad32库读取游戏控制器输入 并将操纵杆读取值映射到传动系统电机和伺服电机
参考 Olfati-Saber, Reza. “Global Stabilization of a Flat Underactuated System: The Inertia Wheel Pendulum.” Conference of Decision and Control, 3 Dec. 2001. authors.library.caltech.edu/5154/1/OLFcdc01b.pdfÇakan, Abdullah, and Ümit Önen. “Multibody Modeling and Balance Control of AReaction Wheel Inverted Pendulum Using LQRController.” ResearchGate, International Journal of Robotics and Control, 3 Apr. 2021. www.researchgate.net/publication/351314795_Multibody_Modeling_and_Balance_Control_of_a_Reaction_Wheel_Inverted_Pendulum_Using_LQR_Controller.Lacey, Tony . Tutorial: The Kalman Filter. http://web.mit.edu/kirtley/kirtley/binlustuff/literature/control/Kalman%20filter.pdf Hau Nguyen, Binh, and Minh Phuoc Cu. “LQR AND FUZZY CONTROL FOR REACTION WHEEL INVERTED PENDULUM MODEL.” Index Copernicus, 24 1 2019, https://journals.indexcopernicus.com/api/file/viewByFileId/746635.pdf. Leroy, Etienne. “Guide to Gyro and Accelerometer With Arduino Including Kalman Filtering.” Instructables, 2011, https://www.instructables.com/Guide-to-gyro-and-accelerometer-with-Arduino-inclu/ Polotski, Vladimir. “Kalman filter, how do I choose initial P_0?” ResearchGate, 2017, https://www.researchgate.net/post/Kalman_filter_how_do_I_choose_initial_P_0. Vathsangam, Harsh. “Complementary filter - My IMU estimation experience.” Google Sites, 29 May 2010, https://sites.google.com/site/myimuestimationexperience/filters/complementary-filter. Abbeel, Pieter. “Optimal Control for Linear Dynamical Systems and Quadratic Cost.” EECS at UC Berkeley, https://people.eecs.berkeley.edu/~pabbeel/cs287-fa12/slides/LQR.pdf. Sears-Collins, Addison. “Combine the Extended Kalman Filter With LQR – Automatic Addison.” Automatic Addison, 13 December 2020, https://automaticaddison.com/combine-the-extended-kalman-filter-with-lqr/. Quesada, Ricardo. “bluepad32/plat_arduino.md at main · ricardoquesada/bluepad32.” GitHub, https://github.com/ricardoquesada/bluepad32/blob/main/docs/plat_arduino.md. “1-Axis Attitude Control Module with ATOM - M5Stack Projects.” M5Stack Projects, 13 August 2020, https://m5stack.hackster.io/homemadegarbage/1-axis-attitude-control-module-with-atom-d56138

项目开源:https://github.com/pxmkv/Balance-Tech




zycxjl 发表于 2023-4-30 12:53:48

不错的,哈哈。:lol

Gypsophila 发表于 2023-5-12 19:07:59

学习学习
页: [1]
查看完整版本: 基于LQR 线性二次型调节器的自平衡自行车