当前位置: 首页 > >

四轴飞行器基础知识学*笔记(一)? 旋转矩阵与欧拉角的关系

发布时间:

四轴飞行器基础知识学*笔记(一)? 旋转矩阵与欧拉角的关系

需要的数学知识有:


向量代数解析几何线性代数

参考书籍及文档:


<<惯性器件与惯性导航系统>>Development of a quaternion-based quadrotor control system
1.方向余弦矩阵的几何意义



在研究三维立体的方向余弦矩阵之前先了解二维*面的方向余弦矩阵,设一矢量




R



m{R}


R在二维*面O




x


y



{xy}


xy坐标系中有分量





R


x



i



{R}_xm{i}


Rx?i和





R


y



j



{R}_ym{j}


Ry?j,二维*面O





x


1




y


1




{x_1 y_1}


x1?y1?坐标系为O




x


y



{xy}


xy坐标系逆时针旋转




θ



heta


θ得到,矢量




R



m{R}


R在O





x


1




y


1




{x_1y_1}


x1?y1?坐标系分量为





R



x


1





i


1




{R}_{x_1}m{i_1}


Rx1??i1?和





R



y


1





j


1




{R}_{y_1}m{j_1}


Ry1??j1?,所以可以得到如下公式:








R








=



R


x



i


+



R


y



j









R








=



R



x


1





i


1



+



R



y


1





j


1








egin{aligned} m{R} &= {R}_{x}m{i} + {R}_{y}m{j} \ m{R} &= {R}_{x_1}m{i_1} + {R}_{y_1}m{j_1} end{aligned}


RR?=Rx?i+Ry?j=Rx1??i1?+Ry1??j1??


由上式可以得到:






R


x



i


+



R


y



j


=



R



x


1





i


1



+



R



y


1





j


1




{R}_{x}m{i} + R_{y}m{j} = {R}_{x_1}m{i_1} + {R}_{y_1}m{j_1}


Rx?i+Ry?j=Rx1??i1?+Ry1??j1?


在等式两端同时乘以





i


1




m{i_1}


i1?或者





j


1




m{j_1}


j1?,得到如下等式:










i


1



?


(



R


x



i


+



R


y



j


)









=



i


1



?


(



R



x


1





i


1



+



R



y


1





j


1



)











j


1



?


(



R


x



i


+



R


y



j


)









=



j


1



?


(



R



x


1





i


1



+



R



y


1





j


1



)







egin{aligned} m{i_1} cdot ({R}_{x}m{i} + R_{y}m{j}) &= m{i_1} cdot ({R}_{x_1}m{i_1} + {R}_{y_1}m{j_1}) \ m{j_1} cdot ({R}_{x}m{i} + R_{y}m{j}) &= m{j_1} cdot ({R}_{x_1}m{i_1} + {R}_{y_1}m{j_1}) end{aligned}


i1??(Rx?i+Ry?j)j1??(Rx?i+Ry?j)?=i1??(Rx1??i1?+Ry1??j1?)=j1??(Rx1??i1?+Ry1??j1?)?


根据向量点乘公式




a


?


b


=


?


a


?


?


b


?


cos


?






(


a


,


b


)




m{a} cdot m{b} = |a||b|cos angle{(m{a},m{b})}


a?b=?a??b?cos∠(a,b),因为




i



m{i}


i和




j



m{j}


j是单位向量,所以




?


i


?


=


1


,


?


j


?


=


1



|i| = 1, |j| = 1


?i?=1,?j?=1,化简得到:









R



x


1










=



R


x



i


?



i


1



+



R


y



j


?



i


1











R



y


1










=



R


x



i


?



j


1



+



R


y



j


?



j


1








egin{aligned} {R}_{x_1} &= {R}_{x}m{i} cdot m{i_1} + R_{y}m{j} cdot m{i_1} \ {R}_{y_1} &= {R}_{x}m{i} cdot m{j_1} + R_{y}m{j} cdot m{j_1} end{aligned}


Rx1??Ry1???=Rx?i?i1?+Ry?j?i1?=Rx?i?j1?+Ry?j?j1??


根据图中




i



m{i}


i与





i


1




m{i_1}


i1?及




j



m{j}


j与





j


1




m{j_1}


j1?夹角为




θ



heta


θ,




i



m{i}


i与





i


1




m{i_1}


i1?及




j



m{j}


j与





j


1




m{j_1}


j1?夹角为




90


°


?


θ



90degree- heta


90°?θ,继续将上式化简得到:









R



x


1










=



R


x



cos


?


(


θ


)


+



R


y



cos


?


(


90


°


?


θ


)


=



R


x



cos


?


(


θ


)


+



R


y



sin


?


(


θ


)










R



y


1










=



R


x



cos


?


(


90


°


+


θ


)


+



R


y



cos


?


(


θ


)


=


?



R


x



sin


?


(


θ


)


+



R


y



cos


?


(


θ


)







egin{aligned} {R}_{x_1} &= {R}_{x}cos( heta) + R_{y}cos(90degree- heta) = {R}_{x}cos( heta) + R_{y}sin( heta)\ {R}_{y_1} &= R_{x}cos(90degree+ heta) + {R}_{y}cos( heta) = -{R}_{x}sin( heta) + R_{y}cos( heta) end{aligned}


Rx1??Ry1???=Rx?cos(θ)+Ry?cos(90°?θ)=Rx?cos(θ)+Ry?sin(θ)=Rx?cos(90°+θ)+Ry?cos(θ)=?Rx?sin(θ)+Ry?cos(θ)?


使用矩阵形式表示,则有:






[







R



x


1











R



y


1








]



=



[







cos


?


(


θ


)








sin


?


(


θ


)










?


sin


?


(


θ


)








cos


?


(


θ


)







]




[







R


x










R


y







]




egin{bmatrix} {R}_{x_1} \ {R}_{y_1} end{bmatrix} = egin{bmatrix} cos( heta) & sin( heta) \ -sin( heta) & cos( heta) end{bmatrix} egin{bmatrix} {R}_{x} \ {R}_{y} end{bmatrix}


[Rx1??Ry1???]=[cos(θ)?sin(θ)?sin(θ)cos(θ)?][Rx?Ry??]







C


=



[







cos


?


(


θ


)








sin


?


(


θ


)










?


sin


?


(


θ


)








cos


?


(


θ


)







]




m{C} = egin{bmatrix} cos( heta) & sin( heta) \ -sin( heta) & cos( heta) end{bmatrix}


C=[cos(θ)?sin(θ)?sin(θ)cos(θ)?],所以得到




[







R



x


1











R



y


1








]



egin{bmatrix}{R}_{x_1} \{R}_{y_1} end{bmatrix}


[Rx1??Ry1???] =




C



m{C}


C




[







R


x










R


y







]



egin{bmatrix}{R}_{x} \{R}_{y} end{bmatrix}


[Rx?Ry??],这里矩阵




C



m{C}


C被称为方向余弦矩阵(Diretion Consine Matrix)。


2. 欧拉角与旋转矩阵的关系


通过上面的二维*面坐标系旋转了解了方向余弦矩阵,放到三维坐标系中从一个坐标系旋转到另一个坐标系,欧拉角就是表示坐标系的旋转。假设从 惯性坐标系 旋转到 机体坐标系(模型坐标系),三维坐标系的旋转可以拆分成三个旋转的组合:惯性坐标系




I


(



O




x


0




y


0




z


0





)



I(O_{x_0 y_0 z_0})


I(Ox0?y0?z0??)分别绕




O



z


0




O{z_0}


Oz0?轴旋转,旋转角为




Y


a


w


(


ψ


)



Yaw(psi)


Yaw(ψ);再绕




O



y


1




O{y_1}


Oy1?轴旋转,旋转角为




P


i


t


c


h


(


θ


)



Pitch( heta)


Pitch(θ);最后绕




O



x


2




O{x_2}


Ox2?轴旋转,旋转角为




R


o


l


l


(


?


)



Roll(phi)


Roll(?)得到机体坐标系




B


(



O




x


3




y


3




z


3





)



B(O_{x_3 y_3 z_3})


B(Ox3?y3?z3??)。





旋转的顺序为




I


(



O




x


0




y


0




z


0





)






ψ






O



z


0












O




x


1




y


1




z


1









θ






O



y


1












O




x


2




y


2




z


2









?






O



x


2











B


(



O




x


3




y


3




z


3





)



I(O_{x_0 y_0 z_0}) xrightarrow[psi]{绕O{z_0}旋转}O_{x_1 y_1 z_1} xrightarrow[ heta]{绕O{y_1}旋转}O_{x_2 y_2 z_2} xrightarrow[phi]{绕O{x_2}旋转} B(O_{x_3 y_3 z_3})


I(Ox0?y0?z0??)绕Oz0?旋转
ψ?Ox1?y1?z1??绕Oy1?旋转
θ?Ox2?y2?z2??绕Ox2?旋转
??B(Ox3?y3?z3??)
通过之前的二维旋转得到的方向余弦矩阵方法,可以按照旋转顺序写依次写出三维旋转的方向余弦矩阵。其实可以通过第一节可以看出一个坐标系旋转到另一个坐标,得到的方向余弦矩阵可以看成是后者坐标系在原来坐标系上的 投影 ,如果投影在坐标轴的正半轴的话得到的余弦角则是正值,反之负半轴则是负值,这样就可以很快写出对应的方向余弦矩阵。


    第一次,




    I


    (



    O




    x


    0




    y


    0




    z


    0





    )



    I(O_{x_0 y_0 z_0})


    I(Ox0?y0?z0??)绕




    O



    z


    0




    O{z_0}


    Oz0?旋转




    ψ



    psi


    ψ角,得到坐标系





    O




    x


    1




    y


    1




    z


    1






    O_{x_1 y_1 z_1}


    Ox1?y1?z1??,对应的方向余弦矩阵如下






    [







    x


    1










    y


    1










    z


    1







    ]



    =



    [







    cos


    ?


    (


    ψ


    )








    sin


    ?


    (


    ψ


    )







    0









    ?


    sin


    ?


    (


    ψ


    )








    cos


    ?


    (


    ψ


    )







    0








    0






    0






    1






    ]




    [







    x


    0










    y


    0










    z


    0







    ]




    egin{bmatrix} x_1 \ y_1 \ z_1 end{bmatrix} = egin{bmatrix} cos(psi) & sin(psi) & 0\ -sin(psi) & cos(psi) & 0 \ 0 & 0 & 1 end{bmatrix} egin{bmatrix} x_0 \ y_0 \ z_0 end{bmatrix}


    ???x1?y1?z1?????=???cos(ψ)?sin(ψ)0?sin(ψ)cos(ψ)0?001???????x0?y0?z0?????

    第二次,





    O




    x


    1




    y


    1




    z


    1






    O_{x_1 y_1 z_1}


    Ox1?y1?z1??绕




    O



    y


    1




    O{y_1}


    Oy1?旋转




    θ



    heta


    θ角,得到坐标系





    O




    x


    2




    y


    2




    z


    2






    O_{x_2 y_2 z_2}


    Ox2?y2?z2??,对应的方向余弦矩阵如下






    [







    x


    2










    y


    2










    z


    2







    ]



    =



    [







    cos


    ?


    (


    θ


    )







    0







    ?


    sin


    ?


    (


    θ


    )









    0






    1






    0









    sin


    ?


    (


    θ


    )







    0







    cos


    ?


    (


    θ


    )







    ]




    [







    x


    1










    y


    1










    z


    1







    ]




    egin{bmatrix} x_2 \ y_2 \ z_2 end{bmatrix} = egin{bmatrix} cos( heta) & 0 & -sin( heta) \ 0 & 1 & 0 \ sin( heta) & 0 & cos( heta) end{bmatrix} egin{bmatrix} x_1 \ y_1 \ z_1 end{bmatrix}


    ???x2?y2?z2?????=???cos(θ)0sin(θ)?010??sin(θ)0cos(θ)???????x1?y1?z1?????

    第三次,





    O




    x


    2




    y


    2




    z


    2






    O_{x_2 y_2 z_2}


    Ox2?y2?z2??绕




    O



    x


    2




    O{x_2}


    Ox2?旋转




    ?



    phi


    ?角,得到坐标系




    B


    (



    O




    x


    3




    y


    3




    z


    3





    )



    B(O_{x_3 y_3 z_3})


    B(Ox3?y3?z3??),对应的方向余弦矩阵如下






    [







    x


    3










    y


    3










    z


    3







    ]



    =



    [






    1






    0






    0








    0







    cos


    ?


    (


    ?


    )








    sin


    ?


    (


    ?


    )









    0







    ?


    sin


    ?


    (


    ?


    )








    cos


    ?


    (


    ?


    )







    ]




    [







    x


    2










    y


    2










    z


    2







    ]




    egin{bmatrix} x_3 \ y_3 \ z_3 end{bmatrix} = egin{bmatrix} 1 & 0 & 0 \ 0 & cos(phi) & sin(phi) \ 0 & -sin(phi) & cos(phi) end{bmatrix} egin{bmatrix} x_2 \ y_2 \ z_2 end{bmatrix}


    ???x3?y3?z3?????=???100?0cos(?)?sin(?)?0sin(?)cos(?)???????x2?y2?z2?????


将上面三个旋转进行合并,将上面式子依次代入可得到






[







x


3










y


3










z


3







]



=



C


2


3




C


1


2




C


0


1




[







x


0










y


0










z


0







]




egin{bmatrix} x_3 \ y_3 \ z_3 end{bmatrix} = m{C}_2^3 m{C}_1^2 m{C}_0^1 egin{bmatrix} x_0 \ y_0 \z _0end{bmatrix}


???x3?y3?z3?????=C23?C12?C01????x0?y0?z0?????


其中






C


0


1



=



[






1






0






0








0







cos


?


(


?


)








sin


?


(


?


)









0







?


sin


?


(


?


)








cos


?


(


?


)







]




m{C}_0^1 = egin{bmatrix} 1 & 0 & 0 \ 0 & cos(phi) & sin(phi) \ 0 & -sin(phi) & cos(phi) end{bmatrix}


C01?=???100?0cos(?)?sin(?)?0sin(?)cos(?)????








C


1


2



=



[







cos


?


(


θ


)







0







?


sin


?


(


θ


)









0






1






0









sin


?


(


θ


)







0







cos


?


(


θ


)







]




m{C}_1^2 = egin{bmatrix} cos( heta) & 0 & -sin( heta) \ 0 & 1 & 0 \ sin( heta) & 0 & cos( heta) end{bmatrix}


C12?=???cos(θ)0sin(θ)?010??sin(θ)0cos(θ)????








C


2


3



=



[







cos


?


(


ψ


)








sin


?


(


ψ


)







0









?


sin


?


(


ψ


)








cos


?


(


ψ


)







0








0






0






1






]




m{C}_2^3 = egin{bmatrix} cos(psi) & sin(psi) & 0\ -sin(psi) & cos(psi) & 0 \ 0 & 0 & 1 end{bmatrix}


C23?=???cos(ψ)?sin(ψ)0?sin(ψ)cos(ψ)0?001????


所以






[







x


3










y


3










z


3







]



=



C


I


B




[







x


0










y


0










z


0







]



=



C


0


3




[







x


0










y


0










z


0







]




egin{bmatrix} x_3 \ y_3 \ z_3 end{bmatrix} = m{C}_I^B egin{bmatrix} x_0 \ y_0 \ z_0 end{bmatrix} = m{C}_0^3 egin{bmatrix} x_0 \ y_0 \ z_0 end{bmatrix}


???x3?y3?z3?????=CIB????x0?y0?z0?????=C03????x0?y0?z0?????












C


I


B



=



C


0


3










=



C


2


3




C


1


2




C


0


1

















=



[






1






0






0








0







cos


?


(


?


)








sin


?


(


?


)









0







?


sin


?


(


?


)








cos


?


(


?


)







]




[







cos


?


(


θ


)







0







?


sin


?


(


θ


)









0






1






0











友情链接: