这篇论文是无人机路径规划和控制领域的经典文章,这里给出中文译文,翻译是逐渐进行的,不保证正确率,如有错误请指出。
摘要:我们解决了四旋翼在一个三维空间内的室内紧密约束环境下的控制设计和轨迹生成问题。在这样的设置中,很有必要允许显著的探索从悬停状态和小角度假设对横滚和俯仰角的控制是不够的。我们开发了一种算法,允许通过一组x、y、z、yaw序列实时生成三维最优路径,并且满足速度加速度和输入约束。一个非线性控制器确保了轨迹的跟踪。试验结果证明了这一方法在快速动态轨迹的应用(5-10 机体长度/秒)。
略
坐标系统包括世界坐标系W和机体坐标系$\Beta $,和旋翼编号规定在图一中显示。因为我们想要控制意味着原理平衡态,为了避免奇异,我们使用旋转矩阵来表示坐标朝向(现在一般用四元数来表示姿态,这一块的思想可以借鉴)。我们也使用Z-X-Y欧拉角定义横滚角、俯仰角、偏航角(r,p,y)作为本地坐标系统。从B至W的旋转矩阵通过 w R B = w R C ⋅ C R B ^{w}R_{\Beta }=^{w}R_{C}\cdot^{C}R_{\Beta } wRB=wRC⋅CRB 来表示, W R C ^{W}R_{C} WRC代表偏航角旋转至中间坐标系 C R B ^{C}R_{\Beta } CRB代表roll和pitch的效果。机器人角速度记做 w b W w_{bW} wbW,记B在W中的角速度和p、q、r分量在机载坐标系中的分量为:
w b W = p X B + q Y B + r z B w_{bW}=pX_{\Beta }+qY_{\Beta }+rz_{\Beta } wbW=pXB+qYB+rzB
每个电机有角速度 w i w_{i} wi,产生一个力 F i F_{i} Fi和 M i M_{i} Mi,关系为:
F i = k F w i 2 F_{i}=k_{F}w_{i}^{2} Fi=kFwi2
M i = k M w i 2 (1) M_{i}=k_{M}w_{i}^{2}\tag1 Mi=kMwi2(1)
实际上,本文认为电机动力学与刚体动力学和气动学相比是相当快的,在本文的工作中认为其目前可以即刻生效的(电机可以立刻到达指定转速)。因此控制输入记做 u, u 1 u_{1} u1是净升力, u 2 u_{2} u2、 u 3 u_{3} u3、 u 4 u_{4} u4是机体力矩可以通过电机转速表示为
u = [ k F k F k F k F 0 k F L 0 − k F L − k F L 0 k F 0 k M − k M k M − k M ] [ w 1 2 w 2 2 w 3 2 w 4 2 ] (2) u=\left [\begin{matrix}k_{F}& k_{F}&k_{F}&k_{F}\\ 0& k_{F}L&0&-k_{F}L\\-k_{F}L&0&k_{F}&0\\k_{M}&-k_{M}&k_{M}&-k_{M}\end{matrix} \right ]\left[\begin{matrix} w_{1}^{2}\\w_{2}^{2}\\w_{3}^{2}\\w_{4}^{2}\end{matrix}\right] \tag2 u=⎣⎢⎢⎡kF0−kFLkMkFkFL0−kMkF0kFkMkF−kFL0−kM⎦⎥⎥⎤⎣⎢⎢⎡w12w22w32w42⎦⎥⎥⎤(2)
其中L是电机旋转中心到电机中心的距离。
世界坐标系下的质量中心的位置向量记做 r r r。系统受力为 − z w -z_{w} −zw方向上的重力,和每个电机的合力在 z B z_{\Beta } zB方向上的 u 1 u_{1} u1。牛顿方程为:
m r ¨ = − m g z W + u 1 z B m\ddot{r}=-mgz_{W}+u_{1}z_{\Beta } mr¨=−mgzW+u1zB
角加速度由欧拉等式确定:
w ˙ B W = I − 1 [ − w B W ∗ I w B W [ u 2 u 3 u 4 ] ] (3) \dot{w}_{\Beta W}=I^{-1}\left[-w_{\Beta W}*Iw_{\Beta W} \left[\begin{matrix}u_{2}\\u_{3}\\u_{4}\end{matrix}\right]\right] \tag3 w˙BW=I−1⎣⎡−wBW∗IwBW⎣⎡u2u3u4⎦⎤⎦⎤(3)
I是关于xyz轴质心的惯性矩阵矩。系统状态通过质心位置和速度给定,朝向【欧拉角本地参数化】和角速度为:
x = [ x , y , z , ϕ , θ , ψ , x ˙ , y ˙ , z ˙ , p , q , r ] T (4) x=\left[x,y,z,\phi,\theta,\psi,\dot{x},\dot{y},\dot{z},p,q,r\right]^{T}\tag4 x=[x,y,z,ϕ,θ,ψ,x˙,y˙,z˙,p,q,r]T(4)
或者是无参数化的表达方式,通过质心的位置和速度向量进行表示和旋转矩阵 W R B ^{W}R_{\Beta } WRB和角速度 w B W w_{\Beta W} wBW
这一节中我们将说明四旋翼动力学和四个微分平坦输出。换句话说,状态和输入可以通过四个微分平坦输出与其导数的代数方程决定。这解决了自动生成轨迹的问题,因此任何光滑轨迹(合理有界导数)平坦输出空间中可以被欠驱动的四旋翼跟踪。本文平坦输出的选择是
σ = [ x , y , z , ψ ] T \sigma = \left[x,y,z,\psi \right]^{T} σ=[x,y,z,ψ]T
其中 r = [ x , y , z ] T r=\left[ x,y,z\right]^T r=[x,y,z]T是在世界坐标系下的质心坐标, ψ \psi ψ是偏航角。本文定义轨迹 σ ( t ) \sigma(t) σ(t)为在平坦输出空间中的一条光滑曲线
σ ( t ) : [ t 0 , t m ] , − > R 3 x S O 3 (5) \sigma(t):\left[t_{0},t_{m}\right],->R^{3}xSO_{3} \tag{5} σ(t):[t0,tm],−>R3xSO3(5)
本文现在说明系统状态和控制输入可以被写为 σ \sigma σ与其的n阶导数。
质心位置、速度、加速度可以简单的由 σ \sigma σ, σ ˙ \dot{\sigma} σ˙, σ ¨ \ddot{\sigma} σ¨分别表示。为了说明 W R B ^{W}R_{\Beta} WRB是平坦输出与其导数的函数,考虑运动方程(3),从(3)可以得到
z B = t ∣ ∣ t ∣ ∣ , t = [ σ 1 ¨ , σ 2 ¨ , σ 3 ¨ + y ] (6) z_{B}=\frac{t}{\left||t\right||} ,t=\left[\ddot{\sigma_{1}},\ddot{\sigma_{2}},\ddot{\sigma_{3}}+y\right] \tag6 zB=∣∣t∣∣t,t=[σ1¨,σ2¨,σ3¨+y](6)
这里定义了机体坐标系下四旋翼的 z z z轴。给出偏航角, σ 4 = ψ \sigma_{4}=\psi σ4=ψ,可以写出单位向量
X C = [ c o s σ 4 , s i n σ 4 , 0 ] T X_{C}=[cos\sigma_{4},sin\sigma_{4},0]^{T} XC=[cosσ4,sinσ4,0]T正如在图1中显示的,可以确定 x B x_{\Beta} xB和y_{\Beta}如下形式:
y B = Z B ∗ X C ∣ ∣ z B ∗ X C ∣ ∣ , x B = y B ∗ z B y_{\Beta}=\frac{Z_{\Beta}*X_{C}}{||z_{\Beta}*X_{C}||},x_{\Beta}=y_{\Beta}*z_{\Beta} yB=∣∣zB∗XC∣∣ZB∗XC,xB=yB∗zB
X C ∗ z B ! = 0 X_{C}*z_{B}!=0 XC∗zB!=0。换句话说,我们可以特别的定义
W R B = [ x B y B z B ] (6) ^{W}R_{B}=[\begin{matrix}x_{B} & y_{B} &z_{B}\end{matrix}] \tag6 WRB=[xByBzB](6)确保我们绝不会碰上 z B z_{B} zB和 x C x_{C} xC平行的奇异点情况。
为了展示角速度是平坦输出和他们导数,取(3)的导数
m a ˙ = u 1 ˙ z b + W b W × u 1 z B m\dot{a}=\dot{u_{1}}z_{b}+^{W}b_{W}\times u_{1}z_{B} ma˙=u1˙zb+WbW×u1zB
将表达式沿着 z B z_{B} zB投影,使用事实 u ˙ 1 = z B ⋅ m a ˙ \dot{u}_{1}=z_{B}\cdot m\dot{a} u˙1=zB⋅ma˙,我们可以从(7)中替代 u ˙ 1 \dot{u}_{1} u˙1,定义向量 h ω h_{\omega} hω为
h ω = w B W × z B = m u 1 ( a ˙ − ( z B ⋅ a ˙ ) z B ) h_{\omega }=^{w}\Beta_{W} \times z_{\Beta} = \frac{m}{u_{1}}(\dot{a}-(z_{\Beta} \cdot \dot{a})z_{\Beta}) hω=wBW×zB=u1m(a˙−(zB⋅a˙)zB)
h ω h_{\omega} hω就是 m u 1 a ˙ \frac{m}{u_{1}}\dot{a} u1ma˙在 x B − y B x_{\Beta}-y_{\Beta} xB−yB平面上的投影。如果我们将机体坐标系的角速度分量(1)式中的那样,可以得到分量 p p p和 q q q:
p = − h w ⋅ y B , q = h w ⋅ x B p=-h_{w}\cdot y_{B},q=h_{w}\cdot x_{B} p=−hw⋅yB,q=hw⋅xB
第三个分量 r r r可以简单地写作 w B W = w B C + w C W w_{\Beta W}=w_{BC}+w_{CW} wBW=wBC+wCW,发现 w B C w_{BC} wBC没有 z B z_{\Beta} zB分量。
r = w C W ⋅ z B = ψ ˙ z W ⋅ z B r=w_{CW}\cdot z_{\Beta}=\dot{\psi}z_{W} \cdot z_{\Beta} r=wCW⋅zB=ψ˙zW⋅zB
发现角加速度分量 α B W \alpha _{\Beta W} αBW沿着 x B x_{\Beta} xB和 y B y_{\Beta} yB是(3)的二阶导数,接下来的过程和上面的一样。为了找到 α B W \alpha _{\Beta W} αBW的 z B z{\Beta} zB分量,使用已知的事实:
α B W = α B C + w C W × w B C + α C W \alpha _{\Beta W} = \alpha _{\Beta C} +w _{C W}\times w_{BC}+\alpha_{CW} αBW=αBC+wCW×wBC+αCW
注意到, α B C ⋅ z B = 0 \alpha _{\Beta C} \cdot z_{\Beta}=0 αBC⋅zB=0且 z B ⋅ w C W × B C = 0 z_{\Beta} \cdot w_{CW}\times _{BC} =0 zB⋅wCW×BC=0。 α B W \alpha _{\Beta W} αBW的 z B z_{B} zB分量为
α B W ⋅ z B = α C W z ˙ B = ψ ¨ z W ⋅ z B \alpha _{\Beta W} \cdot z_{\Beta}=\alpha _{CW}\dot z_{\Beta}=\ddot{\psi}z_{W}\cdot z_{\Beta} αBW⋅zB=αCWz˙B=ψ¨zW⋅zB
从四转子旋翼上来的净升力可以视为平坦输出和他们导数的直接函数(从3,6式)中可以看出, u 1 = m ∣ ∣ t ∣ ∣ u_{1}=m||t|| u1=m∣∣t∣∣。给定角速度和角加速度是平坦输出和其导数的函数,我们可以使用欧拉公式(4)来计算, u 2 u_{2} u2, u 3 u_{3} u3, u 4 u_{4} u4。
现在我们给出一个控制器用于跟随特殊的轨迹, α T ( t ) = [ r T ( t ) T , ψ T ( t ) ] T \alpha_{T}(t)=\left[ \mathbf{r}_{T}(t)^{T},\psi_{T}(t)\right] ^{T} αT(t)=[rT(t)T,ψT(t)]T。这个控制器和我们之前的工作[15]类似,不一样的地方之后会指出。首先定义位置和速度误差为
e p = r − r T , e v = r ˙ − r ˙ T \mathbf{e}_{p}=\mathbf{r}-\mathbf{r}_{T} ,\mathbf{e}_{v}=\dot{\mathbf{r}}-\dot{\mathbf{r}}_{T} ep=r−rT,ev=r˙−r˙T
接下来,计算理想推力向量和理想机体坐标系z轴:
F d e s = − K p e p − K v e v + m g z W + m r ¨ T \mathbf{F}_{des}=-K_{p}\mathbf{e}_{p}-K_{v}\mathbf{e}_{v}+mgz_{W}+m\mathbf{\ddot{r}}_{T} Fdes=−Kpep−Kvev+mgzW+mr¨T
其中 K p K_{p} Kp, K v K_{v} Kv是正定增益矩阵。注意,这里假定 ∣ ∣ F d e s ≠ 0 ∣ ∣ ||\mathbf{F}_{des}\not= 0|| ∣∣Fdes=0∣∣。接下来定义理想力向量到实际的坐标系z轴上,为了计算四旋翼的理想升力和第一个输入:
u 1 = F d e s ⋅ z B u_{1}=\mathbf{F}_{des}\cdot \mathbf{z}_{\Beta} u1=Fdes⋅zB
为了确定其他的三个输入,必须考虑旋转误差。首先注意到 z B z_{\Beta} zB和升力向量是相同方向的:
z B , d e s = F d e s ∣ ∣ F d e s ∣ ∣ \mathbf{z}_{B,des}=\frac{\mathbf{F}_{des}}{|| \mathbf{F}_{des}||} zB,des=∣∣Fdes∣∣Fdes
因此,如果 e 3 = [ 0 , 0 , 1 ] T e_{3}=\left[ 0,0,1\right]^{T} e3=[0,0,1]T,那么将理想旋转 W R B ^{W}R_{\Beta} WRB记作 R d e s R_{des} Rdes,由下式给出:
R d e s e 3 = z B , d e s R_{des}\mathbf{e}_{3}=\mathbf{z}_{B},des Rdese3=zB,des。
已知沿着轨迹的特定偏航角, ψ T ( t ) \psi_{T}(t) ψT(t),我们可以按照之前的方法计算 x B , d e s \mathbf{x}_{B,des} xB,des和 y B , d e s \mathbf{y}_{B,des} yB,des得到
x C , d e s = [ c o s ψ T , s i n ψ T , 0 ] T \mathbf{x}_{C,des}=\left[ cos\psi_{T},sin\psi_{T},0 \right]^{T} xC,des=[cosψT,sinψT,0]T
和
y C , d e s = [ c o s ψ T , s i n ψ T , 0 ] T \mathbf{y}_{C,des}=\left[ cos\psi_{T},sin\psi_{T},0 \right]^{T} yC,des=[cosψT,sinψT,0]T, x B , d e s = y B , d e s × z B , d e s \mathbf{x}_{B,des}=\mathbf{y}_{B,des}\times \mathbf{z}_{B,des} xB,des=yB,des×zB,des,得到 x C , d e s × z B , d e s ≠ 0 \mathbf{x}_{C,des}\times \mathbf{z}_{B,des} \not= 0 xC,des×zB,des=0。这定义了理想旋转矩阵 R d e s R_{des} Rdes。数学上来讲这个奇异点在 S O 3 SO_{3} SO3上是个单点,计算结果导致单位向量在奇异点领域内的大幅度变化。为了修正这个问题,注意到 − x B , d e s -\mathbf{x}_{B,des} −xB,des和 − y B , d e s -\mathbf{y}_{B,des} −yB,des仍然与偏航角和坐标系z轴共存。实际上,我们为了计算四旋翼朝向 R d e s R_{des} Rdes只要简单的检查哪一种解更接近实际的四旋翼朝向就行了。
接下来定义朝向误差:
e R = 1 2 ( R d e s T , W R B − W R B T R d e s ) V \mathbf{e}_{R}=\frac{1}{2}\left( R_{des}^{T},^{W}R_{B}-^{W}R_{B}^{T}R_{des}\right) ^{V} eR=21(RdesT,WRB−WRBTRdes)V,其中 V ^{V} V代表 s o ( 3 ) so(3) so(3)到 R 3 R_{3} R3的vee map。这是和文献【15】的主要差异,文献【15】中角度误差的计算基于小角度偏差。
角速度误差简单的通过实际和理想角速度在机体坐标系下的误差:
e w = B [ w B W ] − B [ w B W , T ] \mathbf{e}_{w}=^{\Beta}\left[w_{\Beta W}\right]-^{\Beta}\left[ w_{\Beta W,T}\right] ew=B[wBW]−B[wBW,T]
现在理想转矩和三个剩余输入可以通过以下公式计算:
[ u 2 , u 3 , u 4 ] T = − K R e R − K w e w \left[u_{2},u_{3},u_{4}\right]^{T}=-K_{R}\mathbf{e}_{R}-K_{w}\mathbf{e}_{w} [u2,u3,u4]T=−KReR−Kwew
其中 K R K_{R} KR和K_{w}是对角增益矩阵。允许为r,p,y三个角度的跟踪设置单独的增益。最后,我们计算理想电机转速来实现理想 u \mathbf{u} u。实际上,这一工作通过反转(2)中关于 w i = u 1 4 k F w_{i}=\sqrt{\frac{u_{1}}{4k_{F}}} wi=4kFu1的线性化来实现。
注意到和文献【15】中的工作一样,这个控制器在平衡点附近也有线性化假设。这个非线性控制器添加了两个重要的特性。第一,姿态误差不通过有奇异点的欧拉角进行计算。第二,理想力被投影到实际的机体z轴上。文献【16】中的一个相似的控制器给出稳定性和收敛性的证明,除了(a)控制器添加了前向的加速度前馈(b)反馈项的加入抵消了式(8) 中的 w × I w w\times Iw w×Iw(c)假设所有的增益矩阵都是通过一个标量乘以一个单位矩阵得到(例如 K R = k R I K_{R}=k_{R}I KR=kRI)(d)假设电机动态特性不显著,对 m m m和 I I I的充分辨识。在这些条件下,且满足以下三个条件的,动力学以指数稳定:
(1)
t r [ I − R d e s T ( 0 ) W R B ( 0 ) < 2 ] tr\left[ I-R_{des}^{T}(0)^{W}R_{B}(0)<2\right] tr[I−RdesT(0)WRB(0)<2]
(2)
∣ ∣ e w ( 0 ) ∣ ∣ 2 < 2 λ m i n ( I ) k R ( 1 − 1 2 t r [ I − R d e s T ( 0 ) W R B ( 0 ) ] ) ||\mathbf{e}_{w}(0)||^{2}<\frac{2}{\lambda _{min}(I)}k_{R}(1-\frac{1}{2}tr[I-R_{des}^{T}(0)^{W}R_{B}(0)]) ∣∣ew(0)∣∣2<λmin(I)2kR(1−21tr[I−RdesT(0)WRB(0)])
(3)在较少约束条件下的完整动力学的近全局指数吸引性。本文提出的控制器的实现是不一样的,并不符合所有上述的假设。但是,从第六节中可以看出,这个控制器保持了对极大横滚角和俯仰角的良好追踪。
这里有些公式打不出来,剩下的点这里查看