Ros2 实时编程实践第四章 -- 倒立摆数学原理分析

倒立摆数学原理分析

1 前言和资料

本文是 Ros2 实时编程实践系列第四章,我们将对一级倒立摆: Ros2 实时编程实践第一章 – 倒立摆引入与 ros2 pendulum 仿真 进行数学原理分析,为自己实现倒立摆样例做理论准备。本文将用到牛顿力学定律和微积分知识,初看起来,会显得比较高深,但如果读者随着文章一起动手推导,相信大家都能理解。
本文参考资料如下:
(1)wiki Inverted_pendulum
(2)Inverted-Pendulum-Control-Theory-and-Dynamics/
(3)一阶倒立摆的PID控制和LQR控制
(4)倒立摆模型分析
(5)线性系统大作业——1.一阶倒立摆建模与控制系统设计
(6)由拉普拉斯变换到传递函数 (本文用不到拉普拉斯变换和传递函数,但这个文章讲的很好,所以也列在了这里)

2 正文

(1)倒立摆示意图
M :小车质量(kg)
m :摆杆质量(kg)
2 * L :摆杆长度(m)
I :摆杆转动惯量(kg * m ^ 2)
x:小车水平位移(m)
F:作用在小车水平方向上的力(N)
φ:摆杆转动角度(rad)
h:摆杆重心在垂直方向上的移动距离(m)
s:摆杆重心在水平方向上的移动距离(m)
在这里插入图片描述
针对 h 和 s ,有如下表达式成立:
h = L ∗ c o s ( φ ) s = x + L ∗ s i n ( φ ) h = L * cos(φ)\\ s = x + L * sin(φ) h=Lcos(φ)s=x+Lsin(φ)
(2)对摆杆进行受力分析
P:小车转轴对摆杆垂直方向上的分力(N)
N:小车转轴对摆杆水平方向上的分力(N)
mg:摆杆重力
φ:摆杆转动角度(rad)
在这里插入图片描述
摆杆垂直方向和水平方向上的受力方程:
P = m g + m ∗ h ¨ N = m ∗ s ¨ P = mg + m*\ddot{h}\\ N = m*\ddot{s} P=mg+mh¨N=ms¨
摆杆转动方程:
I ∗ φ ¨ = L ∗ ( P ∗ s i n ( φ ) − N ∗ c o s ( φ ) ) I * \ddot{φ} = L * (P * sin(φ) - N * cos(φ)) Iφ¨=L(Psin(φ)Ncos(φ))
(3)小车受力示意图
在这里插入图片描述
对小车进行水平方向上的受力分析(垂直方向没有意义)
M ∗ x ¨ = F − N M * \ddot{x} = F - N Mx¨=FN
(4)推导 F(小车水平方向上的力) 与 φ(摆杆转动角度) 和 x( 小车水平位移)之间的关系:
特别提示:针对下面的表达式,其中 h,s,x,φ 都随时间 t 变化,因此他们都是时间 t 的函数。
h = L ∗ c o s ( φ ) s = x + L ∗ s i n ( φ ) h = L * cos(φ)\\ s = x + L * sin(φ) h=Lcos(φ)s=x+Lsin(φ)
明确的写法如下。但是,为了推导简便,我们仍采用上面的写法。
h ( t ) = L ∗ c o s ( φ ( t ) ) s ( t ) = x ( t ) + L ∗ s i n ( φ ( t ) ) h(t) = L * cos(φ(t))\\ s(t) = x(t) + L * sin(φ(t)) h(t)=Lcos(φ(t))s(t)=x(t)+Lsin(φ(t))
第一步,让 h 对时间求二阶导 ,根据微积分复合函数求导的链式法则和乘积函数求导的乘积法则,有如下结果:
h = L ∗ c o s ( φ ) h ˙ = L ∗ ( − s i n ( φ ) ∗ φ ˙ ) h ¨ = L ∗ ( − c o s ( φ ) ∗ φ ˙ 2 − s i n ( φ ) ∗ φ ¨ ) = − L ∗ c o s ( φ ) ∗ φ ˙ 2 − L ∗ s i n ( φ ) ∗ φ ¨ h = L * cos(φ) \\ \dot{h} = L * (-sin(φ) * \dot{φ}) \\ \ddot{h} = L * (-cos(φ) * \dot{φ}^2 -sin(φ) * \ddot{φ}) = - L * cos(φ) * \dot{φ}^2 - L * sin(φ) * \ddot{φ} h=Lcos(φ)h˙=L(sin(φ)φ˙)h¨=L(cos(φ)φ˙2sin(φ)φ¨)=Lcos(φ)φ˙2Lsin(φ)φ¨
第二步,让 s 对时间求二阶导,根据链式法则和乘积法则,有如下结果:
s = x + L ∗ s i n ( φ ) s ˙ = x ˙ + L ∗ c o s ( φ ) ∗ φ ˙ s ¨ = x ¨ + L ∗ ( − s i n ( φ ) ∗ φ ˙ 2 + c o s ( φ ) ∗ φ ¨ ) = x ¨ − L ∗ s i n ( φ ) ∗ φ ˙ 2 + L ∗ c o s ( φ ) ∗ φ ¨ ) s = x + L * sin(φ) \\ \dot{s} = \dot{x} + L * cos(φ) * \dot{φ} \\ \ddot{s} = \ddot{x} + L * (-sin(φ) * \dot{φ}^2 + cos(φ) * \ddot{φ}) = \ddot{x} - L * sin(φ) * \dot{φ}^2 + L * cos(φ) * \ddot{φ}) s=x+Lsin(φ)s˙=x˙+Lcos(φ)φ˙s¨=x¨+L(sin(φ)φ˙2+cos(φ)φ¨)=x¨Lsin(φ)φ˙2+Lcos(φ)φ¨)
第三步,将 h 和 s 的二阶导结果,带入到 P 和 N 的方程中:
P = m g + m ∗ h ¨ = m g − m L c o s ( φ ) ∗ φ ˙ 2 − m L s i n ( φ ) ∗ φ ¨ N = m ∗ s ¨ = m ∗ x ¨ − m L ∗ s i n ( φ ) ∗ φ ˙ 2 + m L ∗ c o s ( φ ) ∗ φ ¨ P = mg + m*\ddot{h} = mg - mLcos(φ)*\dot{φ}^2 - mLsin(φ)*\ddot{φ}\\ N = m*\ddot{s} = m*\ddot{x} - mL * sin(φ) * \dot{φ}^2 + mL * cos(φ) * \ddot{φ} P=mg+mh¨=mgmLcos(φ)φ˙2mLsin(φ)φ¨N=ms¨=mx¨mLsin(φ)φ˙2+mLcos(φ)φ¨
第四步,将 P 和 N 的结果,带入摆杆的转动方程中:
I ∗ φ ¨ = L ∗ ( P ∗ s i n ( φ ) − N ∗ c o s ( φ ) ) = L ∗ s i n ( φ ) ∗ P − L ∗ c o s ( φ ) ∗ N = L ∗ s i n ( φ ) ∗ ( m g − m L c o s ( φ ) ∗ φ ˙ 2 − m L s i n ( φ ) ∗ φ ¨ ) − L ∗ c o s ( φ ) ∗ ( m ∗ x ¨ − m L ∗ s i n ( φ ) ∗ φ ˙ 2 + m L ∗ c o s ( φ ) ∗ φ ¨ ) = m g ∗ L ∗ s i n ( φ ) − m ∗ L 2 ∗ s i n ( φ ) ∗ c o s ( φ ) ∗ φ ˙ 2 − m ∗ L 2 ∗ s i n ( φ ) 2 ∗ φ ¨ − m ∗ L ∗ c o s ( φ ) ∗ x ¨ + m ∗ L 2 ∗ s i n ( φ ) ∗ c o s ( φ ) ∗ φ ˙ 2 − m ∗ L 2 ∗ c o s ( φ ) 2 ∗ φ ¨ = m g ∗ L ∗ s i n ( φ ) − m ∗ L 2 ∗ φ ¨ − m ∗ L ∗ c o s ( φ ) ∗ x ¨ I * \ddot{φ} = L * (P * sin(φ) - N * cos(φ)) \\ = L* sin(φ) * P - L * cos(φ) * N \\ = L* sin(φ) * (mg - mLcos(φ)*\dot{φ}^2 - mLsin(φ)*\ddot{φ}) \\ - L * cos(φ) * (m*\ddot{x} - mL * sin(φ) * \dot{φ}^2 + mL * cos(φ) * \ddot{φ}) \\ = mg*L*sin(φ) - m*L^2*sin(φ)*cos(φ)*\dot{φ}^2 - m*L^2*sin(φ)^2*\ddot{φ} \\- m*L*cos(φ)*\ddot{x} + m*L^2*sin(φ)*cos(φ)*\dot{φ}^2 - m*L^2*cos(φ)^2*\ddot{φ} \\= mg*L*sin(φ) - m*L^2*\ddot{φ} - m*L*cos(φ)*\ddot{x} Iφ¨=L(Psin(φ)Ncos(φ))=Lsin(φ)PLcos(φ)N=Lsin(φ)(mgmLcos(φ)φ˙2mLsin(φ)φ¨)Lcos(φ)(mx¨mLsin(φ)φ˙2+mLcos(φ)φ¨)=mgLsin(φ)mL2sin(φ)cos(φ)φ˙2mL2sin(φ)2φ¨mLcos(φ)x¨+mL2sin(φ)cos(φ)φ˙2mL2cos(φ)2φ¨=mgLsin(φ)mL2φ¨mLcos(φ)x¨
最后可得:
( I + m ∗ L 2 ) ∗ φ ¨ = m g ∗ L ∗ s i n ( φ ) − m ∗ L ∗ c o s ( φ ) ∗ x ¨ (I + m*L^2) * \ddot{φ} = mg*L*sin(φ) - m*L*cos(φ)*\ddot{x} (I+mL2)φ¨=mgLsin(φ)mLcos(φ)x¨
第五步,将 N 的结果,带入小车的水平受力方程中:
M ∗ x ¨ = F − N = = > F = M ∗ x ¨ + N = M ∗ x ¨ + m ∗ x ¨ − m L ∗ s i n ( φ ) ∗ φ ˙ 2 + m L ∗ c o s ( φ ) ∗ φ ¨ = ( M + m ) ∗ x ¨ − m L ∗ s i n ( φ ) ∗ φ ˙ 2 + m L ∗ c o s ( φ ) ∗ φ ¨ M * \ddot{x} = F - N \\ ==> \\ F = M * \ddot{x} + N \\ = M * \ddot{x} + m*\ddot{x} - mL * sin(φ) * \dot{φ}^2 + mL * cos(φ) * \ddot{φ} \\= (M+m)*\ddot{x} - mL * sin(φ) * \dot{φ}^2 + mL * cos(φ) * \ddot{φ} Mx¨=FN==>F=Mx¨+N=Mx¨+mx¨mLsin(φ)φ˙2+mLcos(φ)φ¨=(M+m)x¨mLsin(φ)φ˙2+mLcos(φ)φ¨
第七步,当摆杆偏转比较小的时候,可利用如下近似简化方程
s i n ( φ ) = φ c o s ( φ ) = 1 φ ˙ = 0 sin(φ) = φ\\ cos(φ) = 1\\ \dot{φ} = 0 sin(φ)=φcos(φ)=1φ˙=0
最终可得:
( I + m ∗ L 2 ) ∗ φ ¨ = m g ∗ L ∗ φ − m ∗ L ∗ x ¨ F = ( M + m ) ∗ x ¨ + m L ∗ φ ¨ (I + m*L^2) * \ddot{φ} = mg*L*φ - m*L*\ddot{x} \\ F = (M+m)*\ddot{x} + mL * \ddot{φ} (I+mL2)φ¨=mgLφmLx¨F=(M+m)x¨+mLφ¨

3 总结

数学表达式只看不动手是很难懂的。另外,PPT 画图很强大。写这篇博客,考研的记忆碎片不时闪现。算了,不说了。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

界首大学

创作不易,随缘打赏是最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值