【控制实践——二轮平衡车】【一】运动分析及动力学建模



系列博客

【控制实践——二轮平衡车】【一】运动分析及动力学建模
【控制实践——二轮平衡车】【二】实物设计和开源结构&代码
【控制实践——二轮平衡车】【三】基于PID的直立控制
【控制实践——二轮平衡车】【四】基于ADRC算法的直立控制
【控制实践——二轮平衡车】【五】转动运动模型及控制方法

前言

之前本科期间也做过二轮平衡车(后简称平衡车)的实践,但当时是抄了别人的开源代码来实现的,用的是最常见的 P I D PID PID控制器,参数调试也是玄学调参法,一天一套参数。对于平衡车的理解处于一个非常肤浅的状态(实现出来只能说明具有一定复制粘贴的实践能力而已),更没有系统地对平衡车的运动过程进行详细分析,更别说是控制器相关的设计(博主不是自动化专业的)。
因此!
出于对过去马虎瞒混的弥补,以及对于每年依然有很多的新人会入门平衡车类型的控制实践项目, 想好好地系统地不应付地做一个平衡车控制实践的系列,包括理论、仿真、造实物的调试,会以一个低门槛的,尽可能通俗易懂的形式呈现。
有疑问或发现错误的地方,欢迎提出!

平衡车的物理结构

平衡车的物理模型可以简化为质量杆部分和轮子部分,质量杆和轮子的连接可以简化为理想轴承连接的方式。轮子支撑着质量杆,质量杆受到轮子的力并且可以绕着轮子中心转动,
理想轴承连接等于:1.忽略二者之间的转动摩擦 2.二者刚性连接
忽略地面对轮子的阻力
在这里插入图片描述
在这里插入图片描述
这是一个重要的理想简化前提,与后面的受力分析有关,如果以不同的方式来简化模型会有不同的结果

平衡车的受力分析

平衡车有两个主要部分,轮子和质量杆,因此我们定义以下的一些物理量:
m p \boldsymbol{m_{p}} mp:质量杆的质量, p \boldsymbol{p} p是杆英文 p o l e \boldsymbol{pole} pole的首字母;
m w \boldsymbol{m_{w}} mw:轮子的质量, w \boldsymbol{w} w是杆英文 w h e e l \boldsymbol{wheel} wheel的首字母;
l \boldsymbol{l} l:轮子质心到质量杆质心的距离;
α \boldsymbol{\alpha} α:质量杆质心绕轮子转动的角度,以逆时针为正;
ω \boldsymbol{\omega} ω:质量杆质心绕轮子转动的角速度,以逆时针为正;
x p \boldsymbol{x_{p}} xp:质量杆质心的 X \boldsymbol{X} X轴位移量,以向右为正;
x w \boldsymbol{x_{w}} xw:轮子质心的 X \boldsymbol{X} X轴位移量,以向右为正;
y p \boldsymbol{y_{p}} yp:质量杆质心的 Y \boldsymbol{Y} Y轴位移量,以向上为正;
F N \boldsymbol{F_{N}} FN:轮子对质量杆竖直向上的支持力;
F N ′ \boldsymbol{F_{N}'} FN:质量杆对轮子竖直向下的反作用力;
F T \boldsymbol{F_{T}} FT:轮子对质量杆产生的水平方向的力;
F T ′ \boldsymbol{F_{T}'} FT:质量杆对轮子产生的水平方向的反作用力;

轮子

对于轮子而言,它受到的力如下:
在这里插入图片描述
其中, N \boldsymbol{N} N是地面对轮子的支持力。

质量杆

对于质量杆而言,它受到的力如下:
在这里插入图片描述

可以得到,
F N ′ = − F N \boldsymbol{F_{N}'}=\boldsymbol{-F_{N}} FN=FN
F T ′ = − F T   (1) \boldsymbol{F_{T}'}=\boldsymbol{-F_{T}} \ \tag{1} FT=FT (1)

思考时间:为什么轮子对于质量杆的力要分开成XY轴的力,以及二者的合力是否始终沿着质量杆和轮子的轴线?

  • 第一个问题是因为后续进行运动分析的时候,就是基于 X Y XY XY轴分解进行的,将作用力分解方便后续的分析。
  • 第二个问题,二者的合理不始终沿着质量杆和轮子的轴线。这就好比以轮子质心为原点建立一个相对坐标系。而轮子又是会运动的,因此对质量杆的力就包括了切向力和法向力。二者的合力就不一定在轴线上。
    这里涉及到一些惯性力的相关知识。有兴趣的话后期出一篇博客来补充。

平衡车的动力学方程

对于平衡车的轮子部分来说,他的运动范围只有 X \boldsymbol{X} X轴;对于质量杆质心,他的运动范围则有 X Y \boldsymbol{XY} XY两个轴。

轮子的动力学方程

m w x ⋅ ⋅ w = F T ′   (2) \boldsymbol{m_{w}}\boldsymbol{\overset{\cdot \cdot}x_{w}}=\boldsymbol{F_{T}'}\ \tag{2} mwx⋅⋅w=FT (2)

质量杆的动力学方程

  • X \boldsymbol{X} X轴方向
    在这里插入图片描述
    由于质量杆是固连在轮子上的,其位移既受到轮子位移 x w \boldsymbol{x_{w}} xw的影响,也受到 α \boldsymbol{\alpha} α,满足以下关系:
    x p = x w − l ⋅ s i n α \boldsymbol{x_{p}} = \boldsymbol{x_{w}}-\boldsymbol{l}\cdot \boldsymbol{sin\alpha} xp=xwlsinα
    这里的负号是因为角度的方向判定决定的,翻上去看看定义。
    因此其运动方程为
    m p x ⋅ ⋅ p = F T ⇒ m p ( x w − l ⋅ s i n α ) ′ ′ = F T ⇒ m p x ⋅ ⋅ w − m p l ( α ⋅ c o s α ) ′ = F T ⇒ m p x ⋅ ⋅ w − m p l ( α ⋅ ⋅ c o s α − α ⋅ 2 s i n α ) = F T ⇒ m p x ⋅ ⋅ w − m p l α ⋅ ⋅ c o s α + m p l α ⋅ 2 s i n α = F T   (3) \boldsymbol{m_{p}}\boldsymbol{\overset{\cdot \cdot}x_{p}}=\boldsymbol{F_{T}}\\ \Rightarrow \boldsymbol{m_{p}} ( \boldsymbol{x_{w}}-\boldsymbol{l}\cdot \boldsymbol{sin\alpha})''=\boldsymbol{F_{T}}\\ \Rightarrow\boldsymbol{m_{p}} \boldsymbol{\overset{\cdot \cdot}x_{w}}-\boldsymbol{m_{p}l}(\boldsymbol{\overset{\cdot }\alpha cos \alpha})'=\boldsymbol{F_{T}}\\ \Rightarrow\boldsymbol{m_{p}} \boldsymbol{\overset{\cdot \cdot}x_{w}}-\boldsymbol{m_{p}l}(\boldsymbol{\overset{\cdot \cdot}\alpha cos \alpha}-\boldsymbol{\overset{\cdot }\alpha^{2}sin\alpha} )=\boldsymbol{F_{T}}\\ \Rightarrow \boldsymbol{m_{p}} \boldsymbol{\overset{\cdot \cdot}x_{w}}-\boldsymbol{m_{p}l}\boldsymbol{\overset{\cdot \cdot}\alpha cos \alpha}+\boldsymbol{m_{p}l}\boldsymbol{\overset{\cdot }\alpha^{2}sin\alpha} =\boldsymbol{F_{T}}\ \tag{3} mpx⋅⋅p=FTmp(xwlsinα)′′=FTmpx⋅⋅wmpl(αcosα)=FTmpx⋅⋅wmpl(α⋅⋅cosαα2sinα)=FTmpx⋅⋅wmplα⋅⋅cosα+mplα2sinα=FT (3)
  • Y \boldsymbol{Y} Y轴方向
    质量杆的 Y \boldsymbol{Y} Y轴位移就与轮子无关了,满足以下关系
    y p = l ⋅ c o s α \boldsymbol{y_{p}} =\boldsymbol{l}\cdot \boldsymbol{cos\alpha} yp=lcosα
    则动力学方程为
    m p y ⋅ ⋅ p = F N − m p g → m p y ⋅ ⋅ p = F N − m p g → m p l ( − α ⋅ ⋅ s i n α − α ⋅ 2 c o s α ) = F N − m p g → m p g − m p l α ⋅ ⋅ s i n α − m p l α ⋅ 2 c o s α = F N   (4) \boldsymbol{m_{p}}\boldsymbol{\overset{\cdot \cdot}y_{p}}=\boldsymbol{F_{N}}-\boldsymbol{m_{p}g}\\ \rightarrow \boldsymbol{m_{p}}\boldsymbol{\overset{\cdot \cdot}y_{p}}=\boldsymbol{F_{N}}-\boldsymbol{m_{p}g}\\ \rightarrow \boldsymbol{m_{p}l}(-\boldsymbol{\overset{\cdot \cdot}\alpha sin\alpha}-\boldsymbol{\overset{\cdot }\alpha^{2}cos\alpha} )=\boldsymbol{F_{N}}-\boldsymbol{m_{p}g}\\ \rightarrow \boldsymbol{m_{p}g}-\boldsymbol{m_{p}l}\boldsymbol{\overset{\cdot \cdot}\alpha sin\alpha}-\boldsymbol{m_{p}l}\boldsymbol{\overset{\cdot }\alpha^{2}cos\alpha} =\boldsymbol{F_{N}}\ \tag{4} mpy⋅⋅p=FNmpgmpy⋅⋅p=FNmpgmpl(α⋅⋅sinαα2cosα)=FNmpgmpgmplα⋅⋅sinαmplα2cosα=FN (4)

平衡车整体位移运动过程

联立上述中公式 1 , 2 , 3 \boldsymbol{1,2,3} 1,2,3,可以得到
m p x ⋅ ⋅ w − m p l α ⋅ ⋅ c o s α + m p l α ⋅ 2 s i n α = − m w x ⋅ ⋅ w \boldsymbol{m_{p}} \boldsymbol{\overset{\cdot \cdot}x_{w}}-\boldsymbol{m_{p}l}\boldsymbol{\overset{\cdot \cdot}\alpha cos \alpha}+\boldsymbol{m_{p}l}\boldsymbol{\overset{\cdot }\alpha^{2}sin\alpha} =-\boldsymbol{m_{w}}\boldsymbol{\overset{\cdot \cdot}x_{w}} mpx⋅⋅wmplα⋅⋅cosα+mplα2sinα=mwx⋅⋅w
整理后得到
( m p + m w ) x ⋅ ⋅ w = m p l α ⋅ ⋅ c o s α − m p l α ⋅ 2 s i n α   (5) \boldsymbol{(m_{p}+m_{w})} \boldsymbol{\overset{\cdot \cdot}x_{w}}=\boldsymbol{m_{p}l}\boldsymbol{\overset{\cdot \cdot}\alpha cos \alpha}-\boldsymbol{m_{p}l}\boldsymbol{\overset{\cdot }\alpha^{2}sin\alpha}\ \tag{5} (mp+mw)x⋅⋅w=mplα⋅⋅cosαmplα2sinα (5)

平衡车整体转动运动过程

  • 在进行转动描述时,要引入的是相对坐标系和绝对坐标系的概念。以轮子中心为原点,竖直向上为 Y Y Y轴正方向,水平向右为 X X X轴正方向,建立平衡车的相对坐标系。绝对坐标系则是以地球平面建立。
  • 在相对坐标系中,质量杆的质心点只围绕轮子中心做转动运动;而在绝对坐标系中,质量杆的质心则是随着轮子的位移做转动和平动的复合运动。通常在描述质量杆质心转动时,是基于相对坐标系进行的,但相对坐标系并非与绝对坐标系相对静止,所以在相对坐标系中描述转动运动时,需要引入惯性力来补充。
    在这里插入图片描述
    其中
    F i n e r t i a = m p x ⋅ ⋅ w \boldsymbol{F_{inertia}} =\boldsymbol{m_{p} \overset{\cdot \cdot}x_{w}} Finertia=mpx⋅⋅w
    满足以下关系
    J α ⋅ ⋅ = m p g l s i n α + F i n e r t i a l c o s α → J α ⋅ ⋅ = m p g l s i n α + m p x ⋅ ⋅ w l c o s α (6) \boldsymbol{J \overset{\cdot\cdot}{\alpha}} = \boldsymbol{m_{p}gl sin\alpha}+\boldsymbol{F_{inertia}lcos\alpha}\\ \rightarrow \boldsymbol{J \overset{\cdot\cdot}{\alpha}} = \boldsymbol{m_{p}gl sin\alpha}+\boldsymbol{m_{p} \overset{\cdot \cdot}x_{w}lcos\alpha} \tag{6} Jα⋅⋅=mpglsinα+FinertialcosαJα⋅⋅=mpglsinα+mpx⋅⋅wlcosα(6)
    其中, J \boldsymbol{J} J是质量杆绕轮子中心转动的转动惯量。

平衡车运动模型

根据我们的理想简化模型,最终我们得到了两个公式

( m p + m w ) x ⋅ ⋅ w = m p l α ⋅ ⋅ c o s α − m p l α ⋅ 2 s i n α   (7) \boldsymbol{(m_{p}+m_{w})} \boldsymbol{\overset{\cdot \cdot}x_{w}}=\boldsymbol{m_{p}l}\boldsymbol{\overset{\cdot \cdot}\alpha cos \alpha}-\boldsymbol{m_{p}l}\boldsymbol{\overset{\cdot }\alpha^{2}sin\alpha}\ \tag{7} (mp+mw)x⋅⋅w=mplα⋅⋅cosαmplα2sinα (7)
J α ⋅ ⋅ = m p g l s i n α + m p x ⋅ ⋅ w l c o s α (8) \boldsymbol{J \overset{\cdot\cdot}{\alpha}} = \boldsymbol{m_{p}gl sin\alpha}+\boldsymbol{m_{p} \overset{\cdot \cdot}x_{w}lcos\alpha} \tag{8} Jα⋅⋅=mpglsinα+mpx⋅⋅wlcosα(8)
对于这两个公式而言,是基于不同坐标系下分析得到的。

  • 公式(7)描述了惯性系下(以地面为参考系),不同的初始角度 α 0 \boldsymbol{\alpha_{0}} α0 α ˙ 0 \boldsymbol{\dot{\alpha}_{0}} α˙0会如何使轮子运动 x ¨ w \boldsymbol{\ddot{x}_{w}} x¨w
  • 公式(8)描述了非惯性系下(以轮子中心为坐标原点,竖直向上为 Y Y Y轴,水平向右为 X X X轴),轮子的运动 x ¨ w \boldsymbol{\ddot{x}_{w}} x¨w以及重力的作用 m p g l s i n α \boldsymbol{m_{p}gl sin\alpha} mpglsinα如何影响角度变化(即平衡车的转动)。

可以看出,在不考虑阻力和无外力作用(轮子不会主动运动)的情况下,角度的运动 α ˙ \boldsymbol{\dot{\alpha}} α˙ α ¨ \boldsymbol{\ddot{\alpha}} α¨(转动运动)会带动轮子的运动 x ¨ w \boldsymbol{\ddot{x}_{w}} x¨w,而轮子的运动 x ¨ w \boldsymbol{\ddot{x}_{w}} x¨w进而会重新影响角度的运动 α ¨ \boldsymbol{\ddot{\alpha}} α¨(转动运动),形成正反馈的循环,使平衡车加速倒下。

将公式(7)和公式(8)合并后整理得到:
( J − m p 2 l 2 c o s 2 α m p + m w ) α ⋅ ⋅ =   m p g l s i n α −   m p 2 l 2 s i n α c o s α m p + m w α ⋅ 2 (9) \boldsymbol{(J-\frac{m_{p}^{2}l^{2}cos^{2}\alpha}{m_{p}+m_{w}}) \overset{\cdot\cdot}{\alpha}} =\ \boldsymbol{m_{p}gl sin\alpha}-\ \boldsymbol{\frac{m_{p}^{2}l^{2}sin\alpha cos\alpha}{m_{p}+m_{w}} \overset{\cdot}\alpha^{2}} \tag{9} (Jmp+mwmp2l2cos2α)α⋅⋅= mpglsinα mp+mwmp2l2sinαcosαα2(9)

平衡车运动仿真

对平衡车系统进行运动仿真,仿真参数如下:
m p = 0.4 k g \boldsymbol{m_{p}}=0.4kg mp=0.4kg
m w = 0.1 k g \boldsymbol{m_{w}}=0.1kg mw=0.1kg
l = 0.12 m \boldsymbol{l}=0.12m l=0.12m
J = m p l 2 k g ⋅ m 2 \boldsymbol{J}=m_{p}l^{2}kg\cdot m^{2} J=mpl2kgm2
g = 9.8 m 2 / s \boldsymbol{g}=9.8m^{2}/s g=9.8m2/s
初始状态分别为:
α 0 = 10 ° \boldsymbol{\alpha_{0}} = 10° α0=10°
α ⋅ 0 = 0 ° / s \boldsymbol{\overset{\cdot}\alpha_{0}} = 0°/s α0=0°/s
通过调节不同的系统初始状态 α 0 , α ⋅ 0 \boldsymbol{\alpha_{0}},\boldsymbol{\overset{\cdot}\alpha_{0}} α0α0观察平衡车系统的运动状态。

clear all;
mp = 0.4;
mw = 0.1;
%质量
l = 0.12;
%长度
g = 9.8;
%重力加速度
J = mp*l*l;
%转动惯量
a0 = 10 / 180 * pi;
da0 = 0 / 180 * pi;
x0 = 0;
dx0 = 0;
%初始状态
T = 0.01;
%仿真周期
n = 1000;
%仿真步数
a = zeros(n,1);
da = zeros(n,1);
dda = zeros(n,1);
x = zeros(n,1);
dx = zeros(n,1);
time = zeros(n,1);
coef = zeros(n,1);
a(1) = a0;
da(1) = da0;
k = 0;

for i = 1:1:n-1
    coef(i) = (J - (mp*mp * l*l * cos(a(i))*cos(a(i))) / (mp+mw) );
    
    dda(i+1) = (mp*g*l*sin(a(i)) - ((mp*mp * l*l *sin(a(i))*cos(a(i)))/(mp+mw))  * da(i)*da(i)) / coef(i);
    %角加速度
    da(i+1) = da(i) + dda(i)*T;
    %角速度
    a(i+1) = a(i) + da(i)*T;
    
    time(i+1) = i * T;
    
    if a(i+1) >= pi / 2
        k = i;
        break
    end
end

figure(1);
plot(time(1:k),a(1:k)/pi*180,'r');
legend('a');
xlabel('time/s');
ylabel('°/s')

  • 实验结果
    在这里插入图片描述
    可以看出,平衡车在无阻力和外力作用下,将会倒的越来越快,符合公式里正反馈的特性。
  • 24
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

争取35岁退休

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值