【控制】四旋翼无人机姿态角分析
搞起来,从建模到控制,再到仿真文章目录1. 坐标系2. 角度介绍3. 控制原理1. 坐标系2. 角度介绍绕三个轴的旋转值 pitch,yaw,roll 来自航空界的叫法,翻译为俯仰角,偏航角,翻滚角,非常形象。它们不一定如上所述,但一定分别代表绕x,y,z的旋转值。Ref: 四旋翼飞行器13——欧拉中的俯仰、横滚、偏航角3. 控制原理Ref: 如何对四旋翼飞行器进行精确的数学建模?Ref: 四旋翼
搞起来,从建模到控制,再到仿真
Link: 【控制】《多无人机协同控制技术》周伟老师-第3章-面向协同控制的无人机单机控制
文章目录
1. 坐标系
2. 角度介绍
绕三个轴的旋转值 pitch,yaw,roll 来自航空界的叫法,翻译为俯仰角,偏航角,翻滚角,非常形象。它们不一定如上所述,但一定分别代表绕 y,z,x 的旋转值。
一般定义载体的右、前、上三个方向构成右手系:
-
绕向前(x轴)的轴旋转就是横滚角;
-
绕向右(y轴)的轴旋转就是俯仰角;
-
绕向上(z轴)的轴旋转就是航向角。
航向角 yaw angel
俯仰角 pitch angle
横滚角 roll angle
3. 控制原理
可以看到建模的其实就是为了得到输入的力与加速度的关系,通过牛顿方程可以得到平动的加速度,通过欧拉方程可以得到角加速度,所以这种建模方法也叫牛顿-欧拉方程:
坐标系
- Inertial frame:固定的全局坐标系,又叫惯性坐标系,世界坐标系
- Translating frame:固定在运动体上的坐标系,原点在质心,但轴平行于 Inertial frame
- Body frame:固定在运动体上的坐标系,原点在质心,轴随着质点运动会改变方向
3.1 基础知识
力矩
力矩,表示力对物体作用时所产生的转动效应的物理量。力矩能使物体获得角加速度。力
F
F
F 对矩心
O
O
O 点的矩简称力矩,用
M
(
F
)
M(F)
M(F) 表示,其大小等于力
F
F
F 的大小与力臂
r
r
r 的乘积。即:
M
(
F
)
=
F
×
r
=
d
L
d
t
M(F) = F \times r = \frac{dL}{dt}
M(F)=F×r=dtdL
其中, F F F 为矩心 O O O 点的力, r r r 是矩心相对 O O O 点的位置矢量, L L L为 角动量,根据角动量定理得到。
转矩
转矩,使机械元件转动的力矩称为转动力矩,简称转矩,又称扭矩,与转动惯量
I
I
I 具有如下关系:
M
(
F
)
=
I
d
w
d
t
M(F) = I \frac{dw}{dt}
M(F)=Idtdw
其中, I I I 为转动惯量, w w w 为角速度。
角动量
角动量
L
=
r
×
p
L = r \times p
L=r×p
其中, p p p 为质点 O O O 点的动量, r r r 是质点相对 O O O 点的位置矢量。
欧拉运动学方程
A
∈
R
3
A\in \mathbb{R}^3
A∈R3 代表一个刚体。
σ
(
r
)
\sigma(r)
σ(r) 代表
r
∈
A
r\in\mathbb{A}
r∈A 的一点的刚体密度,
m
(
A
)
m(A)
m(A) 的总质量为:
m
=
∫
A
σ
(
r
)
d
r
m = \int_A \sigma(r) dr
m=∫Aσ(r)dr
d
r
=
d
r
1
⋅
d
r
2
⋅
d
r
3
dr = dr_1\cdot dr_2\cdot dr_3
dr=dr1⋅dr2⋅dr3 表示一个柱状的提及,
p
∈
R
3
p\in\mathbb{R}^3
p∈R3 表示
A
A
A 的质心,
p
=
(
p
1
,
p
2
,
p
3
)
p=(p_1,p_2,p_3)
p=(p1,p2,p3):
p
i
=
1
m
∫
A
r
i
σ
(
r
)
d
r
p_i = \frac{1}{m} \int_A r_i \sigma(r) dr
pi=m1∫Ariσ(r)dr
由于刚体的内部力相互抵消,外部边界的力的集合可以合成一个力
F
F
F 和力矩
N
N
N 作用在质点
p
p
p:
F
=
∑
f
F=\sum f
F=∑f
N = ∑ r × f N = \sum r\times f N=∑r×f
移动
刚体不旋转只移动:动量 D = m p ˙ D = m\dot{p} D=mp˙
牛顿第二定理: F ( u ) = d D d t = m p ¨ F(u) = \frac{dD}{dt} = m \ddot{p} F(u)=dtdD=mp¨
可以得到六个状态转移方程:
p
˙
i
=
v
i
,
for
i
=
1
,
2
,
3
\dot{p}_i = v_i, ~~\text{for}~ i = 1,2,3
p˙i=vi, for i=1,2,3
v ˙ i = u i = F i ( u ) / m , for i = 1 , 2 , 3 \dot{v}_i = u_i=F_i(u)/m, ~~\text{for}~ i = 1,2,3 v˙i=ui=Fi(u)/m, for i=1,2,3
Expand:
{
p
˙
x
=
v
x
p
˙
y
=
v
y
p
˙
z
=
v
z
v
˙
x
=
u
x
=
F
x
(
u
)
/
m
v
˙
y
=
u
y
=
F
y
(
u
)
/
m
v
˙
z
=
u
z
=
F
z
(
u
)
/
m
(1)
\left\{\begin{aligned} &\dot{p}_x = v_x \\ &\dot{p}_y = v_y \\ &\dot{p}_z = v_z \\ &\dot{v}_x = u_x = F_x(u)/m \\ &\dot{v}_y = u_y = F_y(u)/m \\ &\dot{v}_z = u_z = F_z(u)/m \\ \end{aligned}\right.\tag{1}
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧p˙x=vxp˙y=vyp˙z=vzv˙x=ux=Fx(u)/mv˙y=uy=Fy(u)/mv˙z=uz=Fz(u)/m(1)
旋转
旋转可以同移动进行解耦,所以现在只在 translating frame 中考虑纯粹的旋转运动。
L
L
L 为角动量,则力矩为:
M
(
u
)
=
d
L
d
t
M(u) = \frac{dL}{dt}
M(u)=dtdL
参考上图,旋转角速度:
v
v
v 是单位向量,表示旋转方向,
θ
\theta
θ 表示旋转角度
w
=
v
d
θ
d
t
w = v \frac{d\theta}{dt}
w=vdtdθ
将此角速度,转化为 yaw-pitch-roll 形式表示的旋转角速度:
[
γ
˙
β
˙
α
˙
]
=
1
cos
β
[
cos
α
sin
α
0
−
sin
α
cos
β
cos
α
cos
β
0
cos
α
sin
β
sin
α
sin
β
−
cos
β
]
[
w
1
w
2
w
3
]
\left[\begin{matrix} \dot{\gamma} \\ \dot{\beta} \\ \dot{\alpha} \\ \end{matrix}\right]= \frac{1}{\cos\beta} \left[\begin{matrix} \cos\alpha & \sin\alpha & 0 \\ -\sin\alpha \cos\beta & \cos\alpha \cos\beta & 0 \\ \cos\alpha \sin\beta & \sin\alpha \sin\beta & -\cos\beta \\ \end{matrix}\right] \left[\begin{matrix} w_1 \\ w_2 \\ w_3 \\ \end{matrix}\right]
⎣⎡γ˙β˙α˙⎦⎤=cosβ1⎣⎡cosα−sinαcosβcosαsinβsinαcosαcosβsinαsinβ00−cosβ⎦⎤⎣⎡w1w2w3⎦⎤
惯性矩
通常平面刚片且是均质的,则也称为转动惯量
E
E
E 是整个刚体的角动量。
经过以下一系列操作,主要是点乘和叉乘之间的转换:
E
=
∫
A
(
q
)
(
(
r
⋅
r
)
w
−
(
r
⋅
w
)
r
)
σ
(
r
)
d
r
E = \int_{A(q)} ((r\cdot r)w - (r\cdot w)r) \sigma(r) dr
E=∫A(q)((r⋅r)w−(r⋅w)r)σ(r)dr
E = ( ∫ A ( q ) ( ( r ⋅ r ) I 3 − r r T ) σ ( r ) d r ) w E = (\int_{A(q)} ((r\cdot r)I_3 - rr^T) \sigma(r) dr)w E=(∫A(q)((r⋅r)I3−rrT)σ(r)dr)w
惯性矩阵
3
×
3
3\times3
3×3 对称矩阵:
I
(
q
)
=
(
∫
A
(
q
)
(
(
r
⋅
r
)
I
3
−
r
r
T
)
σ
(
r
)
d
r
)
I(q) = (\int_{A(q)} ((r\cdot r)I_3 - rr^T) \sigma(r) dr)
I(q)=(∫A(q)((r⋅r)I3−rrT)σ(r)dr)
则刚体的角动量:
E
=
I
w
E = I w
E=Iw
From:
M
=
I
d
w
d
t
=
d
E
d
t
M = I \frac{dw}{dt} = \frac{dE}{dt}
M=Idtdw=dtdE
刚体所受到的力矩:
N
(
u
)
=
d
E
d
t
=
d
(
I
w
)
d
t
=
I
d
w
d
t
+
d
I
d
t
w
N(u) = \frac{dE}{dt} = \frac{d(Iw)}{dt} = I\frac{dw}{dt} + \frac{dI}{dt}w
N(u)=dtdE=dtd(Iw)=Idtdw+dtdIw
注意上面求得的惯性矩阵
I
I
I 是在 translating frame 中考虑的,它会随着旋转
q
q
q 的变化而变化:
I
(
q
)
=
[
I
11
(
q
)
I
12
(
q
)
I
13
(
q
)
I
21
(
q
)
I
22
(
q
)
I
23
(
q
)
I
31
(
q
)
I
32
(
q
)
I
33
(
q
)
]
I(q) = \left[\begin{matrix} I_{11}(q) & I_{12}(q) & I_{13}(q) \\ I_{21}(q) & I_{22}(q) & I_{23}(q) \\ I_{31}(q) & I_{32}(q) & I_{33}(q) \\ \end{matrix}\right]
I(q)=⎣⎡I11(q)I21(q)I31(q)I12(q)I22(q)I32(q)I13(q)I23(q)I33(q)⎦⎤
这里我们将惯性矩阵定义在 body frame 中,表示成
I
I
I,则
I
I
I 与
I
(
q
)
I(q)
I(q) 的关系(其中
R
R
R 是 body frame 到 translating frame 的旋转矩阵):
I
(
q
)
=
R
I
I(q) = R I
I(q)=RI
则刚体所受到的力矩简化为:
N
(
u
)
=
I
d
w
d
t
+
w
⋅
(
I
w
)
N(u) = I \frac{dw}{dt} + w\cdot(Iw)
N(u)=Idtdw+w⋅(Iw)
如果选择的 body frame 等于惯性主轴,那么惯性矩阵就简化为:
I
=
[
I
11
(
q
)
0
0
0
I
22
(
q
)
0
0
0
I
33
(
q
)
]
I = \left[\begin{matrix} I_{11}(q) & 0 & 0 \\ 0 & I_{22}(q) & 0 \\ 0 & 0 & I_{33}(q) \\ \end{matrix}\right]
I=⎣⎡I11(q)000I22(q)000I33(q)⎦⎤
列写动力学方程
这里假设选择的 body frame 等于惯性主轴,求得角加速度
w
˙
\dot{w}
w˙ 方程:
[
N
1
(
u
)
N
2
(
u
)
N
3
(
u
)
]
=
[
I
11
0
0
0
I
22
0
0
0
I
33
]
[
w
˙
1
w
˙
2
w
˙
3
]
+
[
0
−
w
3
w
2
w
3
0
−
w
1
−
w
2
w
1
0
]
[
I
11
0
0
0
I
22
0
0
0
I
33
]
[
w
1
w
2
w
3
]
\left[\begin{matrix} N_1(u) \\ N_2(u) \\ N_3(u) \\ \end{matrix}\right] = \left[\begin{matrix} I_{11} & 0 & 0 \\ 0 & I_{22} & 0 \\ 0 & 0 & I_{33} \\ \end{matrix}\right] \left[\begin{matrix} \dot{w}_1 \\ \dot{w}_2 \\ \dot{w}_3 \\ \end{matrix}\right] + \left[\begin{matrix} 0 & -w_3 & w_2 \\ w_3 & 0 & -w_1 \\ -w_2 & w_1 & 0 \\ \end{matrix}\right] \left[\begin{matrix} I_{11} & 0 & 0 \\ 0 & I_{22} & 0 \\ 0 & 0 & I_{33} \\ \end{matrix}\right] \left[\begin{matrix} w_1 \\ w_2 \\ w_3 \\ \end{matrix}\right]
⎣⎡N1(u)N2(u)N3(u)⎦⎤=⎣⎡I11000I22000I33⎦⎤⎣⎡w˙1w˙2w˙3⎦⎤+⎣⎡0w3−w2−w30w1w2−w10⎦⎤⎣⎡I11000I22000I33⎦⎤⎣⎡w1w2w3⎦⎤
Ref: 机器人动力学(Basic Newton-Euler Mechanics)
Ref: 机器人运动学(a simple car)
Ref: 机器人系统动力学——惯性参数
Ref: 四旋翼姿态解算原理
Ref: 如何对四旋翼飞行器进行精确的数学建模?
Ref: 四旋翼建模、控制与仿真(理论部分)
Ref: 横滚角,俯仰角,航向角
Ref: 四旋翼无人机飞行控制入门(一)
Ref: 四旋翼飞行控制入门(二)
Ref: (三)专家PID控制理论基础
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)