一阶倒立摆简单模型

这篇具有很好参考价值的文章主要介绍了一阶倒立摆简单模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

因为毕业设计论文研究的课题跟LQR控制算法相关,博主这几天恶补了一下之前学过的东西,像自动控制,现代控制,建模等等,于是在这里用一个简单的一阶倒立摆模型来记录一下,将复习的内容简单应用一下。


一、系统建模

对于一个简单的小车+一个摆杆组合成的一阶倒立摆模型(假设地面光滑)如图:
一阶倒立摆的数学模型,线性代数,算法

对于小车来说:水平方向受到F(x)和 H x H_{x} Hx两个力,垂直方向上小车在这里不研究
对于摆杆来说:水平方向上受到 H x H_{x} Hx一个力,垂直方向上受到 H y H_{y} Hy和重力mg
参数说明:x是水平上的位移,L(图中小写)是长度,g是重力加速度,m是摆杆的质量,M是车子重量,下面进行系统的运动学建模。

二、运动方程

对小车:

F x − H x = M a = M x ′ ′ F_{x}-H_{x}= Ma=M{x}'' FxHx=Ma=Mx′′

对摆杆水平方向上:
H x = m a = m D x ′ ′ H_{x}=ma=m{D_{x}}'' Hx=ma=mDx′′

其中:
D x = x + L s i n θ D_{x}=x+Lsinθ Dx=x+Lsinθ

整理可以得到系统的第一个方程:
( M + m ) x ′ ′ + m L θ ′ ′ − m L θ ′ 2 c o s θ = F x (M+m){x}''+mL{\theta }''-mL{\theta }'^{2}cos\theta = F_{x} (M+m)x′′+mLθ′′mLθ2cosθ=Fx

对摆杆垂直方向上:
H y − m g = m a y = m D y ′ ′ H_y-mg = ma_{y}=m{D_{y}}'' Hymg=may=mDy′′

其中:
D y = L c o s θ D_{y}=Lcosθ Dy=Lcosθ

除去水平和垂直方向,摆杆还有一个绕着质心的旋转:
H y L s i n θ − H x L c o s θ = J θ ′ ′ H_{y}Lsin\theta-H_{x}Lcos\theta = J{\theta }'' HyLsinθHxLcosθ=Jθ′′

其中绕质心旋转的刚体的 转动惯量
J = 1 3 m L 2 J=\frac{1}{3}mL^{2} J=31mL2

由以上得到系统第二个运动方程:
m L x ′ ′ c o s θ + ( J + m L 2 ) θ ′ ′ − m g L s i n θ = 0 mL{x}''cos\theta + (J+mL^{2}){\theta }''-mgLsin\theta =0 mLx′′cosθ+(J+mL2)θ′′mgLsinθ=0

写成矩阵形式:
[ M + m m L c o s θ m L c o s θ J + m L 2 ] [ x ′ ′ θ ′ ′ ] + [ 0 − m L θ ′ s i n θ 0 0 ] [ x ′ θ ′ ] = [ F x m g L s i n θ ] \begin{bmatrix} M+m& mLcos\theta \\mLcos\theta & J+mL^{2} \end{bmatrix}\begin{bmatrix} {x}''\\ {\theta }'' \end{bmatrix}+\begin{bmatrix} 0 & -mL{\theta }'sin\theta \\ 0 &0 \end{bmatrix}\begin{bmatrix} {x}'\\ {\theta }' \end{bmatrix}=\begin{bmatrix} F_{x}\\ mgLsin\theta \end{bmatrix} [M+mmLcosθmLcosθJ+mL2][x′′θ′′]+[00mLθsinθ0][xθ]=[FxmgLsinθ]

三、LQR算法

1.LQR算法

这里相关介绍就不说了,可以看看DR_CAN现代控制课程

2.线性化处理

我们知道当系统处于稳定或者接近稳定时,θ->0,由极限的知识可以得到:

s i n θ → θ , c o s θ → 1 sin\theta \rightarrow \theta ,cos\theta \rightarrow 1 sinθθ,cosθ1

那么在平衡点附近,系统的运动方程就可以简化成:
[ M + m m L m L J + m L 2 ] [ x ′ ′ θ ′ ′ ] = [ F x m g L θ ] \begin{bmatrix} M+m& mL \\mL & J+mL^{2} \end{bmatrix}\begin{bmatrix} {x}''\\ {\theta }'' \end{bmatrix}=\begin{bmatrix} F_{x}\\ mgL\theta \end{bmatrix} [M+mmLmLJ+mL2][x′′θ′′]=[FxmgLθ]

定义系统的状态变量为 ( X 1 X 2 X 3 X 4 ) = ( x x ′ θ θ ′ ) \bigl(\begin{smallmatrix} X_{1} &X_{2} & X_{3} & X_{4} \end{smallmatrix}\bigr)=\begin{pmatrix} x & {x}' & \theta & {\theta }' \end{pmatrix} (X1X2X3X4)=(xxθθ),施加给小车的力为 F x F_{x} Fx,系统的输出为位移 x x x,可以得到系统的状态方程为:
( x ′ x ′ ′ θ ′ θ ′ ′ ) = ( 0 1 0 0 0 0 − m 2 L 2 g J ( M + m ) + M m L 2 ) 0 0 0 0 1 0 0 m g l ( M + m ) J ( M + m ) + M m L 2 0 ) [ x x ′ θ θ ′ ] + [ 0 J + m L 2 J ( M + m ) + M m L 2 0 − m L J ( M + m ) + M m L 2 ] F x \begin{pmatrix} {x}'\\ {x}'' \\ {\theta }' \\ {\theta }'' \end{pmatrix}=\begin{pmatrix} 0 & 1 & 0 &0 \\ 0 & 0 & \frac{-m^{2}L^{2}g}{J(M+m)+MmL^{2})} & 0\\ 0 & 0 &0 &1 \\ 0& 0 & \frac{mgl(M+m)}{J(M+m)+MmL_{2}} &0 \end{pmatrix}\begin{bmatrix} x\\ {x}'\\ \theta \\ {\theta }' \end{bmatrix}+\begin{bmatrix} 0\\ \frac{J+mL^{2}}{J(M+m)+MmL^{2}}\\ 0\\ \frac{-mL}{J(M+m)+MmL^{2}} \end{bmatrix}F_{x} xx′′θθ′′ = 000010000J(M+m)+MmL2)m2L2g0J(M+m)+MmL2mgl(M+m)0010 xxθθ + 0J(M+m)+MmL2J+mL20J(M+m)+MmL2mL Fx

输出:
y = [ x θ ] = [ 1 0 0 0 0 0 1 0 ] [ x x ′ θ θ ′ ] y = \begin{bmatrix} x\\ \theta \end{bmatrix}=\begin{bmatrix} 1 &0 & 0 &0 \\ 0 &0 &1 &0 \end{bmatrix}\begin{bmatrix} x\\ {x}'\\ \theta \\ {\theta }' \end{bmatrix} y=[xθ]=[10000100] xxθθ

在这里假设 g = 9.8 m / s 2 , M = 4 , m = 0.5 , L = 1 g = 9.8m/s^{2},M = 4,m = 0.5, L = 1 g=9.8m/s2,M=4,m=0.5,L=1,那么状态矩阵:
A = [ 0 1 0 0 0 0 − 0.8909 0 0 0 0 1 0 0 8.0182 0 ] A = \begin{bmatrix} 0 & 1 & 0 &0 \\ 0 & 0 & -0.8909 &0 \\ 0 &0 & 0 &1 \\ 0& 0 & 8.0182 &0 \end{bmatrix} A= 0000100000.890908.01820010

控制矩阵:
B = [ 0 0.2424 0 − 0.1818 ] B = \begin{bmatrix} 0\\ 0.2424\\ 0\\ -0.1818 \end{bmatrix} B= 00.242400.1818

3.能控性质分析

利用李雅普诺夫定理(可以参考DR_CAN现代控制课程):

> A=[0 1 0 0;0 0 -0.8909 0;0 0 0 1;0 0 8.0182 0]
> B=[0;0.2424;0;-0.1818]
> Co=ctrb(A,B)
> rank(Co)

最后算出来是 r a n k = 4 rank =4 rank=4满秩,故系统是可控的。
又因为A的特征值通过matlab算出来有正根,故此时的系统是发散的。因此要设置反馈矩阵K。

[v,d]=eig(A)
v =

    1.0000   -1.0000   -0.0368    0.0368
         0    0.0000   -0.1041   -0.1041
         0         0    0.3310   -0.3310
         0         0    0.9372    0.9372


d =

         0         0         0         0
         0         0         0         0
         0         0    2.8316         0
         0         0         0   -2.8316

4 .LQR控制器设计

增加反馈回路:

F x = − K x t F_{x}=-Kx_{t} Fx=Kxt

就是要求解一个矩阵 K K K,使得:
J = ∫ 0 ∞ [ x T Q x + u T R u ] d t J=\int_{0}^{\infty}[x^{T}Qx+u^{^{T}}Ru]dt J=0[xTQx+uTRu]dt

有最小值。其中 Q Q Q越大,说明状态 x x x收敛得快, R R R越大,说明需要的输入很小,也就是涉及到系统能量的问题。所以如何选择 Q Q Q R R R对于系统来说很重要。
这里我先选择 Q = E , R = E Q=E,R=E Q=E,R=E:利用MATLAB求解:
Q = eye(4);
R = eye(1);
K_lqr = lqr(A,B,Q,R);

求得 K = ( − 1 − 3.8734 − 112.7199 − 40.2095 ) K=\begin{pmatrix} -1 & -3.8734 & -112.7199 &-40.2095 \end{pmatrix} K=(13.8734112.719940.2095)

如果我想X或者一些状态变量收敛的更快一点,不考虑输入的情况下:

Q = ( 100 0 0 0 0 10 0 0 0 0 100 0 0 0 0 10 ) Q=\begin{pmatrix} 100 & 0 & 0 &0 \\ 0&10 &0 &0 \\ 0& 0 & 100 &0 \\ 0&0 &0 & 10 \end{pmatrix} Q= 1000000100000100000010

R = E R=E R=E依然,此时求得 K 1 = ( − 10.0000 − 17.2252 − 184.5921 − 66.6912 ) K_{1}=\begin{pmatrix} -10.0000 & -17.2252 & -184.5921 & -66.6912 \end{pmatrix} K1=(10.000017.2252184.592166.6912)

**如果我想输入不需要那么大,不关系系统状态的收敛情况:**令 R = 100 , Q = E R=100,Q=E R=100,Q=E,求得:

K 2 = ( − 0.1 − 1.0247 − 95.0691 − 33.6839 ) K_{2}=\begin{pmatrix} -0.1 & -1.0247 & -95.0691 & -33.6839 \end{pmatrix} K2=(0.11.024795.069133.6839)

下面通过Simulink仿真可得 :
一阶倒立摆的数学模型,线性代数,算法
黄色色 − K 2 / 蓝色 − K / 红色 − K 1 黄色色-K_{2} / 蓝色-K / 红色-K_{1} 黄色色K2/蓝色K/红色K1

符合预期结果。

5.Simulink建模

一阶倒立摆的数学模型,线性代数,算法

总结

通过这个例子唤醒之前学过的知识,毕设的内容跟双轮平衡车相关,到时候再更新吧。文章来源地址https://www.toymoban.com/news/detail-741056.html

到了这里,关于一阶倒立摆简单模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 高等数学:线性代数-第三章

    矩阵的初等变换 下面三种变换称为矩阵的初等变换 对换两行(列),记作 r i ↔ r j ( c i ↔ c j ) r_{i} leftrightarrow r_{j} (c_{i} leftrightarrow c_{j}) r i ​ ↔ r j ​ ( c i ​ ↔ c j ​ ) 以数 k ≠ 0 k ne 0 k  = 0 乘某一行(列)中的所有元,记作 r i × k ( c i × k ) r_{i} times k ( c_{i}

    2024年02月11日
    浏览(46)
  • 线性代数 | 机器学习数学基础

    前言 线性代数 (linear algebra)是关于向量空间和线性映射的一个数学分支。它包括对线、面和子空间的研究,同时也涉及到所有的向量空间的一般性质。 本文主要介绍 机器学习 中所用到的线性代数 核心基础概念 ,供读者学习阶段查漏补缺或是 快速学习参考 。 线性代数

    2024年01月21日
    浏览(68)
  • 【考研数学二】线性代数重点笔记

    目录 第一章 行列式 1.1 行列式的几何意义 1.2 什么是线性相关,线性无关 1.3 行列式几何意义 1.4 行列式求和 1.5 行列式其他性质 1.6 余子式 1.7 对角线行列式 1.8 分块行列式 1.9 范德蒙德行列式 1.10 爪形行列式的计算 第二章 矩阵 2.1 初识矩阵 2.1.1 矩阵的概念 1.1.2 矩阵的运算规

    2024年04月10日
    浏览(46)
  • 高等数学:线性代数-第二章

    n bm{n} n 元线性方程组 设有 n 个未知数 m 个方程的线性方程组 { a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n = b 1 a 21 x 1 + a 22 x 2 + ⋯ + a 2 n x n = b 2 ⋯ ⋯ ⋯ ⋯ a m 1 x 1 + a m 2 x 2 + ⋯ + a m n x n = b m begin{cases} a_{11}x_{1} + a_{12}x_{2} + cdots + a_{1n}x_{n} = b_{1} \\\\ a_{21}x_{1} + a_{22}x_{2} + cdots + a_{2n}x_{n} = b

    2024年02月11日
    浏览(42)
  • LQR的理解与运用 第二期——一阶倒立摆在matlab上的LQR实现

    理解 与 运用 LQR matlab动力学建模与simscape验证 https://www.bilibili.com/video/BV1h44y1m7ca/ 笔者是跟着B站上这个教程做的,收获颇丰。如果你和笔者一样,之前从未接触过simscape,那么up的讲解一定会让你对simscape的使用有了初步了解。 【强烈推荐观看】 见上一期LQR的理解与运用 第一

    2024年02月06日
    浏览(43)
  • 数学与计算机(2)- 线性代数

    原文:https://blog.iyatt.com/?p=13044 NumPy 中 array 和 matrix 都可以用于储存矩阵,后者是前者的子类,array 可以表示任意维度,matrix 只能是二维,相当于矩阵专用,在一些矩阵的运算操作上较为直观。 1.1.1 自定义矩阵 NumPy 通过元组货列表创建的矩阵类型都相同 1.1.2 随机元素矩阵

    2024年03月23日
    浏览(51)
  • 【考研数学】线性代数第四章 —— 线性方程组(2,线性方程组的通解 | 理论延伸)

    承接前文,继续学习线性方程组的内容,从方程组的通解开始。 (1)基础解系 —— 设 r ( A ) = r n r(A)=rn r ( A ) = r n ,则 A X = 0 pmb{AX=0} A X = 0 所有解构成的解向量组的极大线性无关组称为方程组 A X = 0 pmb{AX=0} A X = 0 的一个基础解系。基础解系中所含有的线性无关的解向量的个

    2024年02月11日
    浏览(57)
  • 深度学习-必备的数学知识-线性代数6

    线性代数 通过伪逆求解线性方程组 伪逆,又称为Moore-Penrose逆,它是一种广义的矩阵。我们可以找到任意一个矩阵的伪逆。矩阵 A mathbf{A} A 的伪逆定义为: A + = lim ⁡ x → 0 ( A T A + α I ) − 1 A T mathbf{A}^+=lim_{x to 0}(mathbf{A}^Tmathbf{A}+alphamathbf{I})^{-1}mathbf{A}^T A + = x → 0 lim ​

    2024年01月18日
    浏览(59)
  • 深度学习-必备的数学知识-线性代数(合集)

    为方便大家阅读,这里推出一个线性代数的合集。这与之前的内容是一致的。 我们在深度学习-简介和 深度学习-历史背景中已经初步了解的深度学习。在我们开始学习深度学习前还需要做些准备工作。就是学习应用数学和机器学习基础。 想要理解深度学习这些是必不可少的

    2024年02月03日
    浏览(58)
  • 深度学习-必备的数学知识-线性代数-1

    我们在深度学习-简介和 深度学习-历史背景中已经初步了解的深度学习。在我们真正开始学习深度学习前还需要做些准备工作。那就是学习应用数学和机器学习基础。想要理解深度学习这些是必不可少的。 我将在这篇文章中为大家介绍一部分与深度学习有关的线性代数。 我

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包