多旋翼無人機模組化
模組化之前我們先分析一下多旋翼無人機有哪些狀态量:用于表示線運動的三軸位置、速度和加速度;用于表示角運動的三軸姿态角和姿态角速度;這一共是15個狀态量。
首先來看線運動方程的建立過程:我們取地理坐标系為北東地(NED),機體系為前右下:
由牛頓第二定律有:
F = m a F=m a F=ma
即
F = m [ a x a y a z ] F=m \left[ \begin{array}{l}{a_{x}} \\ {a_{y}} \\ {a_{z}}\end{array}\right] F=m⎣⎡axayaz⎦⎤
注意此處的 F F F和加速度 a a a均是在地理系下的表示( F F F表示四個旋翼産生的總升力),進一步将上式展開可得
[ 0 0 m g ] − R b e [ 0 0 f 1 + f 2 + f 3 + f 4 ] = m [ a x a y a z ] \left[ \begin{array}{c}{0} \\ {0} \\ {m g}\end{array}\right] - \boldsymbol{R}_{b}^{e} \left[ \begin{array}{c}{0} \\ {0} \\ {f_{1}+f_{2}+f_{3}+f_{4}}\end{array}\right]=m \left[ \begin{array}{l}{a_{x}} \\ {a_{y}} \\ {a_{z}}\end{array}\right] ⎣⎡00mg⎦⎤−Rbe⎣⎡00f1+f2+f3+f4⎦⎤=m⎣⎡axayaz⎦⎤
其中 R b e \boldsymbol{R}_{b}^{e} Rbe表示由機體坐标系到地理坐标系的轉換矩陣,由于 f i , i = 1 … 4 f_i,i=1…4 fi,i=1…4分别表示四個旋翼沿機體 Z Z Z軸負方向産生的升力,故需要将其轉換到地理系中;
R b e = [ c θ c ψ s ϕ s θ c ψ − c ϕ s ψ c ϕ s θ c ψ + s ϕ s ψ c θ s ψ s ϕ s θ s ψ + c ϕ c ψ c ϕ s θ s ψ − s ϕ c ψ − s θ s ϕ c θ c ϕ c θ ] \boldsymbol{R}_{b}^{e}=\left[ \begin{array}{ccc}{c \theta c \psi} & {s \phi s \theta c \psi-c \phi s \psi} & {c \phi s \theta c \psi+s \phi s \psi} \\ {c \theta s \psi} & {s \phi s \theta s \psi+c \phi c \psi} & {c \phi s \theta s \psi-s \phi c \psi} \\ {-s \theta} & {s \phi c \theta} & {c \phi c \theta}\end{array}\right] Rbe=⎣⎡cθcψcθsψ−sθsϕsθcψ−cϕsψsϕsθsψ+cϕcψsϕcθcϕsθcψ+sϕsψcϕsθsψ−sϕcψcϕcθ⎦⎤
聯立上式進一步化簡即可得到線運動的模型表示:
{ x ¨ = ( c ϕ s θ c ψ + s ϕ s ψ ) − F m y ¨ = ( c ϕ s θ s ψ − s ϕ c ψ ) − F m z ¨ = g − ( c ϕ c θ ) F m \left\{\begin{array}{c}{\ddot{x}=(\mathrm{c} \phi \mathrm{s} \theta \mathrm{c} \psi+\mathrm{s} \phi \mathrm{s} \psi) \frac{-F}{m}} \\ {\ddot{y}=(\mathrm{c} \phi \mathrm{s} \theta \mathrm{s} \psi-\mathrm{s} \phi \mathrm{c} \psi) \frac{-F}{m}} \\ {\ddot{z}=g-(\mathrm{c} \phi \mathrm{c} \theta) \frac{F}{m}}\end{array}\right. ⎩⎨⎧x¨=(cϕsθcψ+sϕsψ)m−Fy¨=(cϕsθsψ−sϕcψ)m−Fz¨=g−(cϕcθ)mF
線運動的模組化過程很簡單,但是多旋翼不光能移動還能旋轉,這個旋轉過程就需要剛體的旋轉相關知識。
物體如何旋轉跟旋翼産生的力矩有關,力矩與力F和距離l有如下公式: M = F ∗ l M=F * l M=F∗l
而這裡的力矩又與多旋翼動力布局有關
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLxEjNzMzN0EjM5EDNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
如果是十字型的布局:
F = ∑ i = 1 4 T i = c T ( w 1 2 + w 2 2 + w 3 2 + w 4 2 ) F=\sum_{i=1}^{4} T_{i}=c_{\mathrm{T}}\left(w_{1}^{2}+w_{2}^{2}+w_{3}^{2}+w_{4}^{2}\right) F=i=1∑4Ti=cT(w12+w22+w32+w42)
{ τ x = d c T ( − w 2 2 + w 4 2 ) τ y = d c T ( w 1 2 − w 3 2 ) τ z = c M ( w 1 2 − w 2 2 + w 3 2 − w 4 2 ) \left\{\begin{array}{l}{\tau_{x}=d c_{\mathrm{T}}\left(-w_{2}^{2}+w_{4}^{2}\right)} \\ {\tau_{y}=d c_{\mathrm{T}}\left(w_{1}^{2}-w_{3}^{2}\right)} \\ {\tau_{z}=c_{\mathrm{M}}\left(w_{1}^{2}-w_{2}^{2}+w_{3}^{2}-w_{4}^{2}\right)}\end{array}\right. ⎩⎨⎧τx=dcT(−w22+w42)τy=dcT(w12−w32)τz=cM(w12−w22+w32−w42)
寫成矩陣形式如下:
[ F τ x τ y τ z ] = [ c T c T c T c T 0 − d c T 0 d c T d c T 0 − d c T 0 c M − c M c M − c M ] [ w 1 2 w 2 2 w 3 2 w 4 2 ] \left[ \begin{array}{l}{F} \\ {\tau_{x}} \\ {\tau_{y}} \\ {\tau_{z}}\end{array}\right]=\left[ \begin{array}{cccc}{c_{\mathrm{T}}} & {c_{\mathrm{T}}} & {c_{\mathrm{T}}} & {c_{\mathrm{T}}} \\ {0} & {-d c_{\mathrm{T}}} & {0} & {d c_{\mathrm{T}}} \\ {d c_{\mathrm{T}}} & {0} & {-d c_{\mathrm{T}}} & {0} \\ {c_{\mathrm{M}}} & {-c_{\mathrm{M}}} & {c_{\mathrm{M}}} & {-c_{\mathrm{M}}}\end{array}\right] \left[ \begin{array}{c}{w_{1}^{2}} \\ {w_{2}^{2}} \\ {w_{3}^{2}} \\ {w_{4}^{2}}\end{array}\right] ⎣⎢⎢⎡Fτxτyτz⎦⎥⎥⎤=⎣⎢⎢⎡cT0dcTcMcT−dcT0−cMcT0−dcTcMcTdcT0−cM⎦⎥⎥⎤⎣⎢⎢⎡w12w22w32w42⎦⎥⎥⎤
對X型動力布局:
F = ∑ i = 1 4 T i = c T ( w 1 2 + ϖ 2 2 + ϖ 3 2 + ϖ 4 2 ) F=\sum_{i=1}^{4} T_{i}=c_{\mathrm{T}}\left(w_{1}^{2}+\varpi_{2}^{2}+\varpi_{3}^{2}+\varpi_{4}^{2}\right) F=i=1∑4Ti=cT(w12+ϖ22+ϖ32+ϖ42)
{ τ x = d c T ( 2 ω 1 2 / 2 − 2 ω 2 2 / 2 − 2 ω 3 2 / 2 + 2 ω 4 2 / 2 ) τ y = d c T ( 2 ω 1 2 / 2 + 2 ω 2 2 / 2 − 2 ω 3 2 / 2 − 2 ω 4 2 / 2 ) τ z = c M ( ω 1 2 − ω 2 2 + ω 3 2 − ω 4 2 ) \left\{\begin{array}{c}{\tau_{x}=d c_{\mathrm{T}}\left(\sqrt{2} \omega_{1}^{2} / 2-\sqrt{2} \omega_{2}^{2} / 2-\sqrt{2} \omega_{3}^{2} / 2+\sqrt{2} \omega_{4}^{2} / 2\right)} \\ {\tau _{y}=d c_{\mathrm{T}}\left(\sqrt{2} \omega_{1}^{2} / 2+\sqrt{2} \omega_{2}^{2} / 2-\sqrt{2} \omega_{3}^{2} / 2-\sqrt{2} \omega_{4}^{2} / 2\right)} \\ {\tau _{z}=c_{\mathrm{M}}\left(\omega_{1}^{2}-\omega_{2}^{2}+\omega_{3}^{2}-\omega_{4}^{2}\right)}\end{array}\right. ⎩⎨⎧τx=dcT(2 ω12/2−2 ω22/2−2 ω32/2+2 ω42/2)τy=dcT(2 ω12/2+2 ω22/2−2 ω32/2−2 ω42/2)τz=cM(ω12−ω22+ω32−ω42)
上式中 F F F為四個旋翼産生的總升力, τ x , τ y , τ z \tau _x ,\tau _y ,\tau _z τx,τy,τz分别表示旋翼産生的作用在三個姿态通道的控制力矩。
根據歐拉方程 M = J ε + ω × J ω M=J \varepsilon+\omega \times J \omega M=Jε+ω×Jω
其中 ε \varepsilon ε表示角加速度, ω \omega ω表示角速度, M M M表示姿态通道控制力矩;
歐拉角速度
Θ ˙ = [ ϕ ˙ θ ˙ ψ ˙ ] \dot{\boldsymbol{\Theta}}=\left[ \begin{array}{c}{\dot{\phi}} \\ {\dot{\theta}} \\ {\dot{\psi}}\end{array}\right] Θ˙=⎣⎡ϕ˙θ˙ψ˙⎦⎤
與機體角速度
Ω = [ w x w y w z ] {\boldsymbol{\Omega}}=\left[ \begin{array}{c}{w_x} \\ {w_y} \\ {w_z}\end{array}\right] Ω=⎣⎡wxwywz⎦⎤
之間的關系為
Θ ˙ = W Ω \dot{\boldsymbol{\Theta}}=\boldsymbol{W} \boldsymbol{\Omega} Θ˙=WΩ
W = [ 1 tan θ sin ϕ tan θ cos ϕ 0 cos ϕ − sin ϕ 0 sin ϕ / cos θ cos ϕ / cos θ ] W=\left[ \begin{array}{ccc}{1} & {\tan \theta \sin \phi} & {\tan \theta \cos \phi} \\ {0} & {\cos \phi} & {-\sin \phi} \\ {0} & {\sin \phi / \cos \theta} & {\cos \phi / \cos \theta}\end{array}\right] W=⎣⎡100tanθsinϕcosϕsinϕ/cosθtanθcosϕ−sinϕcosϕ/cosθ⎦⎤假設多旋翼無人機姿态角在小角度内變化,則可認為 W = I W=I W=I,即 Θ ˙ = Ω \dot{\boldsymbol{\Theta}}= \boldsymbol{\Omega} Θ˙=Ω
角加速度為 [ ϕ ¨ θ ¨ ψ ¨ ] \left[ \begin{array}{c}{\ddot{\phi}} \\ {\ddot{\theta}} \\ {\ddot{\psi}}\end{array}\right] ⎣⎡ϕ¨θ¨ψ¨⎦⎤
轉動慣量矩陣為
J = [ J x x − J x y − J x z − J y x J y y − J y z − J z x − J z y J z z ] \mathbf{J}=\left[ \begin{array}{ccc}{J_{x x}} & {-J_{x y}} & {-J_{x z}} \\ {-J_{y x}} & {J_{y y}} & {-J_{y z}} \\ {-J_{z x}} & {-J_{z y}} & {J_{z z}}\end{array}\right] J=⎣⎡Jxx−Jyx−Jzx−JxyJyy−Jzy−Jxz−JyzJzz⎦⎤
其中 J x y = J y x , J x z = J z x , J y z = J z y J_{xy}=J_{yx},J_{xz}=J_{zx},J_{y z}=J_{z y} Jxy=Jyx,Jxz=Jzx,Jyz=Jzy,對于标準多旋翼這樣的中心對成物體,有 J x y = J x z = J y z = 0 J_{xy}=J_{xz}=J_{y z}=0 Jxy=Jxz=Jyz=0,則有
[ J x x 0 0 0 J y y 0 0 0 J z z ] \left[ \begin{array}{lll}{J_{x x}} & {0} & {0} \\ {0} & {J_{y y}} & {0} \\ {0} & {0} & {J_{z z}}\end{array}\right] ⎣⎡Jxx000Jyy000Jzz⎦⎤
整理可得
{ ϕ ¨ = θ ˙ ψ ˙ J y − J z J x + τ x J x θ ¨ = ϕ ˙ ψ ˙ J z − J x J y + τ y J y ψ ¨ = ϕ ˙ θ ˙ J x − J y J z + τ z J z \left\{\begin{array}{l}{\ddot{\phi}=\dot{\theta} \dot{\psi} \frac{J_{y}-J_{z}}{J_{x}}+\frac{\tau_{x}}{J_{x}}} \\ {\ddot{\theta}=\dot{\phi} \dot{\psi} \frac{J_{z}-J_{x}}{J_{y}}+\frac{\tau_{y}}{J_{y}}} \\ {\ddot{\psi}=\dot{\phi} \dot{\theta} \frac{J_{x}-J_{y}}{J_{z}}+\frac{\tau_{z}}{J_{z}}}\end{array}\right. ⎩⎪⎨⎪⎧ϕ¨=θ˙ψ˙JxJy−Jz+Jxτxθ¨=ϕ˙ψ˙JyJz−Jx+Jyτyψ¨=ϕ˙θ˙JzJx−Jy+Jzτz
至此,多旋翼的模型建立完畢。可以看到模組化的其實就是為了得到輸入的力與加速度的關系,通過牛頓方程可以得到線運動的加速度,通過歐拉方程可以得到角加速度,是以這種模組化方法也叫牛頓-歐拉方程。