传送门
- 系列博客
- 前言
- 运动模型
- 控制方法
- 控制器设计
- 结论
系列博客
【控制实践——二轮平衡车】【一】运动分析及动力学建模
【控制实践——二轮平衡车】【二】实物设计和开源结构&代码
【控制实践——二轮平衡车】【三】基于PID的直立控制
【控制实践——二轮平衡车】【四】基于ADRC算法的直立控制
前言
前面的博客推导了直立的运动模型及控制方法,这一篇讨论下转动的运动模型和控制方法。
这一章比较简单,水一篇先。 \doge
运动模型
首先,转动运动是指绕机体
Z
Z
Z轴运动,如图所示。
其中,
L
2
\bold{L_{2}}
L2为左右轮子的距离后简称轮距
。
定义以下变量:
- 左轮的位移
x
l
e
f
t
\boldsymbol{x_{left}}
xleft,右轮的位移
x
r
i
g
h
t
\boldsymbol{x_{right}}
xright
面向前进方向——X轴正方向下的左右位置
- 二轮平衡车绕
Z
Z
Z轴转动的角速度为
ω
\boldsymbol{\omega}
ω,转动的角度为
β
\boldsymbol{\beta}
β
方向以右手法则为准
。
显然,从左右轮子的速度可以得到二轮平衡车的共模量
x
w
\boldsymbol{x_{w}}
xw和差模量
x
b
i
a
s
\boldsymbol{x_{bias}}
xbias,即:
x
w
=
x
r
i
g
h
t
+
x
l
e
f
t
2
(1)
\boldsymbol{x_{w}} = \frac{\boldsymbol{x_{right}} + \boldsymbol{x_{left}} }{2}\ \tag{1}
xw=2xright+xleft (1)
x
b
i
a
s
=
x
r
i
g
h
t
−
x
l
e
f
t
2
(2)
\boldsymbol{x_{bias}} = \frac{ \boldsymbol{x_{right}}-\boldsymbol{x_{left}}}{2}\ \tag{2}
xbias=2xright−xleft (2)
这里的共模量其实也就是直立控制中轮子的位移变量为
x
w
\boldsymbol{x_{w}}
xw,为了联系前面的博客,故用同一个变量表示。
转动角速度
ω
\boldsymbol{\omega}
ω与差速量
x
b
i
a
s
\boldsymbol{x_{bias}}
xbias的关系为:
ω
=
x
˙
b
i
a
s
⋅
L
2
(3)
\boldsymbol{\omega} = \boldsymbol{\dot{x}_{bias}} \cdot \bold{L_{2}} \tag{3}
ω=x˙bias⋅L2(3)
其实就是角速度与线速度的关系。
控制方法
由于二轮平衡车的转动运动和其直立运动相互独立,因此在控制的时候可以直接将二者的运动控制结果叠加。控制框架如图所示。
k
k
k时刻,直立控制器得到的是两个轮子的期望加速度共模量
x
¨
w
,
r
e
f
\boldsymbol{\ddot{x}_{w,ref}}
x¨w,ref。假设控制周期为
T
T
T,则可以得到
k
+
1
k+1
k+1时刻的期望速度共模量
x
˙
w
,
r
e
f
\boldsymbol{\dot{x}_{w,ref}}
x˙w,ref,满足以下关系:
x
˙
w
,
r
e
f
(
k
+
1
)
=
x
˙
w
(
k
)
+
x
¨
w
,
r
e
f
(
k
+
1
)
⋅
T
(4)
\boldsymbol{\dot{x}_{w,ref}}(k+1)=\boldsymbol{\dot{x}_{w}}(k)+ \boldsymbol{\ddot{x}_{w,ref}}(k+1)\cdot T\ \tag{4}
x˙w,ref(k+1)=x˙w(k)+x¨w,ref(k+1)⋅T (4)
其中,
x
˙
w
(
k
)
\boldsymbol{\dot{x}_{w}}(k)
x˙w(k)为
k
k
k时刻时的速度共模量。
同样,
k
k
k时刻,转动控制器得到了期望转动角速度
ω
r
e
f
\boldsymbol{\omega_{ref}}
ωref,假设控制周期为
T
T
T,则可以得到
k
+
1
k+1
k+1时刻的期望速度差模量
x
˙
b
i
a
s
,
r
e
f
\boldsymbol{\dot{x}_{bias,ref}}
x˙bias,ref,满足以下关系:
x
˙
b
i
a
s
,
r
e
f
(
k
+
1
)
=
ω
r
e
f
/
L
2
(5)
\boldsymbol{\dot{x}_{bias,ref}}(k+1)=\boldsymbol{\omega_{ref}}/\bold{L_{2}}\ \tag{5}
x˙bias,ref(k+1)=ωref/L2 (5)
于是,可以得到左右轮子的期望速度
x
r
i
g
h
t
,
r
e
f
,
x
l
e
f
t
,
r
e
f
\boldsymbol{x_{right,ref}},\boldsymbol{x_{left,ref}}
xright,ref,xleft,ref,满足以下关系:
x
r
i
g
h
t
,
r
e
f
=
x
˙
w
,
r
e
f
+
x
˙
b
i
a
s
,
r
e
f
x
l
e
f
t
,
r
e
f
=
x
˙
w
,
r
e
f
−
x
˙
b
i
a
s
,
r
e
f
(6)
\boldsymbol{x_{right,ref}}=\boldsymbol{\dot{x}_{w,ref}}+\boldsymbol{\dot{x}_{bias,ref}}\\ \boldsymbol{x_{left,ref}}=\boldsymbol{\dot{x}_{w,ref}}-\boldsymbol{\dot{x}_{bias,ref}}\ \tag{6}
xright,ref=x˙w,ref+x˙bias,refxleft,ref=x˙w,ref−x˙bias,ref (6)
控制器设计
这个转动的模型相对简单,以状态方程和传递函数两种模型来表示。
-
状态方程
定义状态变量, X ⃗ = [ β ] \bold{\vec{X}}=\begin{bmatrix}\boldsymbol{\beta}\end{bmatrix} X=[β], U ⃗ = [ x ˙ b i a s ] \bold{\vec{U}}=\begin{bmatrix}\boldsymbol{\dot{x}_{bias}}\end{bmatrix} U=[x˙bias]状态空间方程为:
X ⃗ ′ = A X ⃗ + B U ⃗ → β ˙ = L 2 x ˙ b i a s (7) \bold{\vec{X}}'=\bold{A}\bold{\vec{X}}+\bold{B}\bold{\vec{U}}\rightarrow \boldsymbol{\dot{\beta}}=\bold{L_{2}} \boldsymbol{\dot{x}_{bias}}\ \tag{7} X′=AX+BU→β˙=L2x˙bias (7)
其中, A \bold{A} A为0, B = [ L 2 ] \bold{B} =\begin{bmatrix} \bold{L}_{2} \end{bmatrix} B=[L2]。 -
传递函数
令输入 r ( t ) = x ˙ b i a s ( t ) r(t)=\boldsymbol{\dot{x}_{bias}}(t) r(t)=x˙bias(t),输出 y ( t ) = β ( t ) y(t)=\boldsymbol{\beta}(t) y(t)=β(t),则对应的微分方程
y ′ ( t ) = L 2 r ( t ) (8) y'(t)=\bold{L}_{2}r(t)\ \tag{8} y′(t)=L2r(t) (8)
对应的传递函数为:
Y ( s ) R ( s ) = G ( s ) = L 2 s (9) \frac{\bold{Y}(s)}{\bold{R}(s)}=\bold{G}(s)=\frac{\bold{L}_{2}}{s}\ \tag{9} R(s)Y(s)=G(s)=sL2 (9)
说了很简单吧,是个比例积分环节\doge
。
结论
因为这部分实在是太简单了,就不单独进行仿真了,后续会跟轨迹控制一起仿真。
没错!下一篇博客将进行二轮平衡车轨迹跟踪的控制讨论了
感谢阅读~