日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

旋转矩阵、欧拉角、四元数、轴/角之间的转换

發布時間:2025/6/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 旋转矩阵、欧拉角、四元数、轴/角之间的转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在機器人學中,表示旋轉的有四種方式。不同的人可能習慣于用不同的方法,現將四種方式之間的轉換整理出來如下。

  • 旋轉矩陣
旋轉矩陣R表示坐標系`O-x'y'z'`中的向量坐標變換為同一向量在坐標系`O-xyz`中的坐標的變換矩陣(transformation matrix)。 p=Rp' p'=R'p旋轉矩陣屬于特殊正交群(special orthonormal group);正交矩陣,每一列為單位矩陣,行列式為1。- 描述了兩個坐標系之間的相對指向。- 表示了同一點在不同坐標系下(原點相同,即只有轉動,沒用平動)的坐標之間的坐標變換。- 是將向量在同一坐標系下進行旋轉的算子。
  • 歐拉角(RPY)

    繞Z軸旋轉稱為回轉(Roll),繞Y軸旋轉稱為俯仰(Pitch),繞X軸旋轉稱為偏轉(Yaw)。

    {A}為參考坐標系,將{A}分別按順序沿xA,yA,zAx_A,y_A,z_AxA?,yA?,zA?旋轉γ,β,α\gamma, \beta, \alphaγ,β,α后,和{B}重合,{A}和{B}之間的旋轉方程:
    BARxyz=(γ,β,α)=R(zA,α)R(yA,β)R(xA,α)_B^A R_{xyz} = (\gamma, \beta, \alpha) = R(z_A, \alpha)R(y_A, \beta)R(x_A,\alpha )BA?Rxyz?=(γ,β,α)=R(zA?,α)R(yA?,β)R(xA?,α)

  • 四元數

    是角/軸的擴展。
  • 軸/角

    描述一個坐標系沿某一條直線旋轉一定的角度,即與另一個坐標系重合。

經常要用到他們之間的相互轉換。

##一、旋轉矩陣

###1、旋轉矩陣轉換為歐拉角

BARxyz(γ,β,α)=[r11r12r13r21r22r23r31r32r33]_B^A R_{xyz} (\gamma, \beta, \alpha)= \begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix}BA?Rxyz?(γ,β,α)=???r11?r21?r31??r12?r22?r32??r13?r23?r33?????

{β=atan2(?r31,r112+r212)α=atan2(r21,r11),ifβ∈[?π/2,π/2]γ=atan2(r32,r33),ifβ∈[?π/2,π/2]\begin{cases} \beta = atan2(-r_{31}, \sqrt{r_{11}^2 + r_{21}^2}) \\ \alpha = atan2(r_{21}, r_{11}), if \beta \in [-\pi/2,\pi/2]\\ \gamma = atan2(r_{32},r_{33}), if \beta \in [-\pi/2,\pi/2] \end{cases}??????β=atan2(?r31?,r112?+r212??)α=atan2(r21?,r11?),ifβ[?π/2,π/2]γ=atan2(r32?,r33?),ifβ[?π/2,π/2]?
或者:
{β=atan2(?r31,r112+r212)α=atan2(?r21,?r11),ifβ∈[π/2,3π/2]γ=atan2(?r32,?r33),ifβ∈[π/2,3π/2]\begin{cases} \beta = atan2(-r_{31}, \sqrt{r_{11}^2 + r_{21}^2}) \\ \alpha = atan2(-r_{21}, -r_{11}), if \beta \in [\pi/2,3\pi/2]\\ \gamma = atan2(-r_{32},-r_{33}), if \beta \in [\pi/2,3\pi/2] \end{cases}??????β=atan2(?r31?,r112?+r212??)α=atan2(?r21?,?r11?),ifβ[π/2,3π/2]γ=atan2(?r32?,?r33?),ifβ[π/2,3π/2]?

###2、旋轉矩陣轉化為 角/軸

R=[r11r12r13r21r22r23r31r32r33]R= \begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix}R=???r11?r21?r31??r12?r22?r32??r13?r23?r33?????

θ=acos(r11+r22+r33?12)\theta =acos(\frac{ r_{11} + r_{22} + r_{33} -1}{2})θ=acos(2r11?+r22?+r33??1?)
r→=12sinθ[r32?r23r13?r31r21?r12]\overrightarrow r = \frac{1}{2sin \theta}\begin{bmatrix} r_{32}-r_{23} \\ r_{13}-r_{31} \\ r_{21} - r_{12} \end{bmatrix}r=2sinθ1????r32??r23?r13??r31?r21??r12?????

###3、旋轉矩陣轉化為四元數

R=[r11r12r13r21r22r23r31r32r33]R= \begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix}R=???r11?r21?r31??r12?r22?r32??r13?r23?r33?????

w=r11+r22+r33+12w = \frac {\sqrt { r_{11} + r_{22} + r_{33} +1}}{2}w=2r11?+r22?+r33?+1??

v→=12[sgn(r32?r23)r11?r22?r33+1sgn(r13?r31)r22?r11?r33+1sgn(r21?r12)r33?r22?r11+1]\overrightarrow v = \frac{1}{2}\begin{bmatrix} sgn (r_{32}-r_{23}) \sqrt {r_{11} - r_{22} - r_{33} +1} \\ sgn(r_{13}-r_{31}) \sqrt {r_{22} - r_{11} - r_{33} +1}\\ sgn(r_{21}-r_{12}) \sqrt {r_{33} - r_{22} - r_{11} +1} \end{bmatrix}v=21????sgn(r32??r23?)r11??r22??r33?+1?sgn(r13??r31?)r22??r11??r33?+1?sgn(r21??r12?)r33??r22??r11?+1?????

##二、歐拉角(RPY)

1、歐拉角轉換為旋轉矩陣

BARxyz(γ,β,α)=[cαcβcαsβsγ?sαcγcαsβcγ?sαsγsαcβsαsβsγ?cαcγsαsβcγ?cαsγ?sβcβsγcβcγ]_B^A R_{xyz} (\gamma, \beta, \alpha) = \begin{bmatrix} c_\alpha c_ \beta & c_\alpha s_ \beta s_ \gamma - s_ \alpha c_ \gamma & c_\alpha s_ \beta c_\gamma - s_ \alpha s_ \gamma \\ s_\alpha c_ \beta & s_\alpha s_ \beta s_ \gamma - c_ \alpha c_ \gamma & s_\alpha s_ \beta c_\gamma - c _\alpha s_ \gamma \\ -s_ \beta & c_\beta s_\gamma & c_\beta c_\gamma \end{bmatrix}BA?Rxyz?(γ,β,α)=???cα?cβ?sα?cβ??sβ??cα?sβ?sγ??sα?cγ?sα?sβ?sγ??cα?cγ?cβ?sγ??cα?sβ?cγ??sα?sγ?sα?sβ?cγ??cα?sγ?cβ?cγ?????

##三、四元數

1、四元數轉化為旋轉矩陣

R=[2(w2+vx2)?12(vxvy?wvz)2(vxvz+wvx)2(vxvy+wvz)2(w2+vy2)?12(vyvz?wvx)2(vxvz?wvx)2(vyvz+wvx)2(w2+vz2)?1]R= \begin{bmatrix} 2(w^2+v_x^2)-1 & 2(v_xv_y-wv_z) & 2(v_xv_z+wv_x) \\ 2(v_xv_y+wv_z) & 2(w^2+v_y^2)-1 & 2(v_yv_z-wv_x) \\ 2(v_xv_z-wv_x) & 2(v_yv_z+wv_x) & 2(w^2+v_z^2)-1 \end{bmatrix}R=???2(w2+vx2?)?12(vx?vy?+wvz?)2(vx?vz??wvx?)?2(vx?vy??wvz?)2(w2+vy2?)?12(vy?vz?+wvx?)?2(vx?vz?+wvx?)2(vy?vz??wvx?)2(w2+vz2?)?1????

##四、軸/角

1、軸/角 轉化為旋轉矩陣

R=[rx2(1?cθ)+cθrxry(1?cθ)?rzsθrxrz(1?cθ)+rysθrxry(1?cθ)+rzsθry2(1?cθ)+cθryrz(1?cθ)?rxsθrxrz(1?cθ)?rysθryrz(1?cθ)+rxsθrz2(1?cθ)+cθ]R= \begin{bmatrix} r_x^2(1-c\theta) + c\theta & r_xr_y(1-c\theta) -r_zs\theta & r_xr_z(1-c\theta) +r_ys\theta \\ r_xr_y(1-c\theta) +r_zs\theta & r_y^2(1-c\theta) + c\theta & r_yr_z(1-c\theta) -r_xs\theta \\ r_xr_z(1-c\theta) -r_ys\theta & r_yr_z(1-c\theta) +r_xs\theta & r_z^2(1-c\theta) + c\theta \end{bmatrix}R=???rx2?(1?cθ)+cθrx?ry?(1?cθ)+rz?sθrx?rz?(1?cθ)?ry?sθ?rx?ry?(1?cθ)?rz?sθry2?(1?cθ)+cθry?rz?(1?cθ)+rx?sθ?rx?rz?(1?cθ)+ry?sθry?rz?(1?cθ)?rx?sθrz2?(1?cθ)+cθ????

總結

以上是生活随笔為你收集整理的旋转矩阵、欧拉角、四元数、轴/角之间的转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。