刚体姿态运动学(二)姿态的微分形式——角速度、欧拉角导数、四元数导数、旋转矩阵导数

上一篇我们讲了姿态的表达方式及其转换,可以说还是比较简单的。接下来面临的问题是,我们不仅想知道刚体的姿态,还想知道姿态是怎么变化的,也就是刚体的角速度。接下来我们研究一下姿态的各种表达的微分形式该如何转化为角速度。角速度是描述刚体姿态变化的速度,由三个方向的分量wxw_{x}wx​,wyw_{y}wy​,wz,w_{z},wz​组成。

旋转矩阵导数转角速度

r(t)=R(t)r0\mathbf{r}(t)=\mathbf{R}(t) \mathbf{r}_{0} r(t)=R(t)r0​

关于t求导:
r˙=R˙r0\dot{\mathbf{r}}=\dot{\mathbf{R}} \mathbf{r}_{0} r˙=R˙r0​
又因:
r˙=ω×r\dot{\mathbf{r}}=\boldsymbol{\omega} \times \mathbf{r} r˙=ω×r
把叉乘转化为矩阵乘法,得到:
R˙=ΩRΩ=(0−ωzωyωz0−ωx−ωyωx0)\begin{array}{c} \dot{\mathbf{R}}=\mathbf{\Omega R} \\ \boldsymbol{\Omega}=\left(\begin{array}{ccc} 0 & -\omega_{z} & \omega_{y} \\ \omega_{z} & 0 & -\omega_{x} \\ -\omega_{y} & \omega_{x} & 0 \end{array}\right) \end{array} R˙=ΩRΩ=⎝⎛​0ωz​−ωy​​−ωz​0ωx​​ωy​−ωx​0​⎠⎞​​

欧拉角速度转角速度

假设选定RPY欧拉角,当完成了RPY三组旋转后,最后的yaw角速度,其实就等于绕z轴的角速度,因为此时的z轴就是求角速度时的z轴,即:
ωz=[00dψdt]\omega_{z}=\left[\begin{array}{c} 0 \\ 0 \\ \frac{d \psi}{dt} \end{array}\right] ωz​=⎣⎡​00dtdψ​​⎦⎤​
假设只完成了两组旋转,在求出pitch的角速度后,需要再进行一次yaw角的旋转,猜得到最后的绕y轴的角速度,即:
ωy=Ryaw⋅[0dθdt0]\omega_{y}=R_{yaw} \cdot\left[\begin{array}{c} 0 \\ \frac{d \theta}{d t} \\ 0 \end{array}\right] ωy​=Ryaw​⋅⎣⎡​0dtdθ​0​⎦⎤​
同理可得:
ωx=Rpitch⋅Ryaw⋅[dϕdt00]\omega_{x}=R_{pitch} \cdot R_{yaw} \cdot\left[\begin{array}{c} \frac{d \phi}{d t} \\ 0\\ 0 \end{array}\right] ωx​=Rpitch​⋅Ryaw​⋅⎣⎡​dtdϕ​00​⎦⎤​

三个量相加就得到最后的结果
(wxwywz)=(cos⁡θ∗cos⁡φ−sin⁡φ0cos⁡θ∗sin⁡φcos⁡φ0−sin⁡θ01)(dδ/dtdθ/dtdφ/dt)\left(\begin{array}{l} w x \\ w y \\ w z \end{array}\right)=\left(\begin{array}{ccc} \cos \theta * \cos \varphi & -\sin \varphi & 0 \\ \cos \theta * \sin \varphi & \cos \varphi & 0 \\ -\sin \theta & 0 & 1 \end{array}\right)\left(\begin{array}{c} d \delta / d t \\ d \theta / d t \\ d \varphi / d t \end{array}\right) ⎝⎛​wxwywz​⎠⎞​=⎝⎛​cosθ∗cosφcosθ∗sinφ−sinθ​−sinφcosφ0​001​⎠⎞​⎝⎛​dδ/dtdθ/dtdφ/dt​⎠⎞​
这里的角速度是相对于固定参考系的,相对于旋转参考系如下:
wb=[cr0−sr⋅cp01spsr0cr⋅cp]⋅[dpdtdrdtdydt]w^{b}= \left[\begin{array}{ccc} c r & 0 & -s r \cdot c p \\ 0 & 1 & s p \\ s r & 0 & c r \cdot c p \end{array}\right] \cdot\left[\begin{array}{c} \frac{d p}{d t} \\ \frac{d r}{d t} \\ \frac{d y}{d t} \end{array}\right] wb=⎣⎡​cr0sr​010​−sr⋅cpspcr⋅cp​⎦⎤​⋅⎣⎡​dtdp​dtdr​dtdy​​⎦⎤​

四元数转角速度

四元数方程为
Q=cos⁡θ2+μRsin⁡θ2\mathrm{Q}=\cos \frac{\theta}{2}+\mu^{R} \sin \frac{\theta}{2} Q=cos2θ​+μRsin2θ​
μR\mu^{R}μR为旋转轴。求导,得:
dQdt=−θ˙2sin⁡θ2+μRθ˙2cos⁡θ2+sin⁡θ2dμRdt\frac{d Q}{d t}=-\frac{\dot{\theta}}{2} \sin \frac{\theta}{2}+\mu^{R} \frac{\dot{\theta}}{2} \cos \frac{\theta}{2}+\sin \frac{\theta}{2} \frac{d \mu^{R}}{d t} dtdQ​=−2θ˙​sin2θ​+μR2θ˙​cos2θ​+sin2θ​dtdμR​
其中,旋转轴对时间的导数为0.两边同时左乘μR\mu^{R}μR:
θ˙2μR⊗Q=θ˙2μR⊗(cos⁡θ2+μRsin⁡θ2)=θ˙2cos⁡θ2μR+μR⊗μRθ˙2sin⁡θ2\frac{\dot{\theta}}{2} \mu^{R} \otimes Q=\frac{\dot{\theta}}{2} \mu^{R} \otimes\left(\cos \frac{\theta}{2}+\mu^{R} \sin \frac{\theta}{2}\right)=\frac{\dot{\theta}}{2} \cos \frac{\theta}{2} \mu^{R}+\mu^{R} \otimes \mu^{R} \frac{\dot{\theta}}{2} \sin \frac{\theta}{2} 2θ˙​μR⊗Q=2θ˙​μR⊗(cos2θ​+μRsin2θ​)=2θ˙​cos2θ​μR+μR⊗μR2θ˙​sin2θ​
由四元数乘法,得:
μR⊗μR=−1\mu^{R} \otimes \mu^{R}=-1 μR⊗μR=−1
因此,
dQdt=θ˙2μR⊗Q=12ωRbR⊗Q\frac{d Q}{d t}=\frac{\dot{\theta}}{2} \mu^{R} \otimes Q=\frac{1}{2} \omega_{R b}^{R} \otimes Q dtdQ​=2θ˙​μR⊗Q=21​ωRbR​⊗Q
其中,ωRbR\omega_{R b}^{R}ωRbR​为在全局坐标系下的角速度。如果要求得刚体在刚体坐标系下的角速度,需要进行转换,
ωRbR=Q⊗ωRbb⊗Q∗\omega_{R b}^{R}=Q \otimes \omega_{R b}^{b} \otimes Q^{*} ωRbR​=Q⊗ωRbb​⊗Q∗
dQdt=12ωRbR⊗Q=12Q⊗ωRbb⊗Q∗⊗Q\frac{d Q}{d t}=\frac{1}{2} \omega_{R b}^{R} \otimes Q=\frac{1}{2} Q \otimes \omega_{R b}^{b} \otimes Q^{*} \otimes Q dtdQ​=21​ωRbR​⊗Q=21​Q⊗ωRbb​⊗Q∗⊗Q
dQdt=12Q⊗ωRbb\frac{d Q}{d t}=\frac{1}{2} Q \otimes \omega_{R b}^{b} dtdQ​=21​Q⊗ωRbb​
转换为矩阵形式,为:
[q˙0q˙1q˙2q˙3]=12[0−ωx−ωy−ωzωx0ωz−ωyωy−ωz0ωxωzωy−ωx0][q0q1q2q3]\left[\begin{array}{c} \dot{q}_{0} \\ \dot{q}_{1} \\ \dot{q}_{2} \\ \dot{q}_{3} \end{array}\right]=\frac{1}{2}\left[\begin{array}{cccc} 0 & -\omega_{x} & -\omega_{y} & -\omega_{z} \\ \omega_{x} & 0 & \omega_{z} & -\omega_{y} \\ \omega_{y} & -\omega_{z} & 0 & \omega_{x} \\ \omega_{z} & \omega_{y} & -\omega_{x} & 0 \end{array}\right]\left[\begin{array}{l} q_{0} \\ q_{1} \\ q_{2} \\ q_{3} \end{array}\right] ⎣⎢⎢⎡​q˙​0​q˙​1​q˙​2​q˙​3​​⎦⎥⎥⎤​=21​⎣⎢⎢⎡​0ωx​ωy​ωz​​−ωx​0−ωz​ωy​​−ωy​ωz​0−ωx​​−ωz​−ωy​ωx​0​⎦⎥⎥⎤​⎣⎢⎢⎡​q0​q1​q2​q3​​⎦⎥⎥⎤​
或为:
[q˙0q˙1q˙2q˙3]=12[q0−q1−q2−q3q1q0−q3q2q2q3q0−q1q3−q2q1q0][0ωxωyωz]\left[\begin{array}{c} \dot{q}_{0} \\ \dot{q}_{1} \\ \dot{q}_{2} \\ \dot{q}_{3} \end{array}\right]=\frac{1}{2}\left[\begin{array}{cccc} q_{0} & -q_{1} & -q_{2} & -q_{3} \\ q_{1} & q_{0} & -q_{3} & q_{2} \\ q_{2} & q_{3} & q_{0} & -q_{1} \\ q_{3} & -q_{2} & q_{1} & q_{0} \end{array}\right]\left[\begin{array}{c} 0 \\ \omega_{x} \\ \omega_{y} \\ \omega_{z} \end{array}\right] ⎣⎢⎢⎡​q˙​0​q˙​1​q˙​2​q˙​3​​⎦⎥⎥⎤​=21​⎣⎢⎢⎡​q0​q1​q2​q3​​−q1​q0​q3​−q2​​−q2​−q3​q0​q1​​−q3​q2​−q1​q0​​⎦⎥⎥⎤​⎣⎢⎢⎡​0ωx​ωy​ωz​​⎦⎥⎥⎤​

刚体姿态运动学(二)旋转的微分形式——角速度、欧拉角速度、四元数导数、旋转矩阵导数相关推荐

  1. matlab和eigen在旋转向量,欧拉角,四元数,旋转矩阵转换的对比(一 旋转矩阵转其他)

    1. 参考: eigen安装:clion使用Eigen_gxt_kt的博客-CSDN博客_clion eigen matlab 角度转四元数_四元数的两种写法与转换_女王丁丁的博客-CSDN博客 机械 ...

  2. creator中关于旋转所使用的欧拉角和四元数

    概念 四元数,欧拉角,变换矩阵,这三者是可以相互转化的,但并不是说变换矩阵等于欧拉角或者变换矩阵等于四元数,欧拉角或者说四元数他们只是旋转数据,而一个矩阵是一个空间坐标系,旋转的数据只是构造的它的一部 ...

  3. 刚体运动中的坐标变换-旋转矩阵、旋转向量、欧拉角及四元数

    坐标变换及其方法 1.转化关系图 2 换算关系 3.1 旋转矩阵换算至其他 3.2 四元数换算至其他 3.3 旋转向量转换至旋转矩阵与四元数 3.3 欧拉角转换到旋转矩阵和四元数 3 坐标变换 4 坐 ...

  4. 刚体姿态及旋转的表示方法

    坐标系中,一个刚体的状态可用位置和姿态来描述,位置即为该刚体在坐标系中的空间位置,用一个坐标向量即可表达.而要描述刚体的姿态,有很多种表示方法,以下列出常用的: 1 旋转矩阵(Rotation mat ...

  5. 【Nokov】关于动捕系统获取刚体姿态的说明

    动作捕捉系统Nokov获取刚体的姿态信息 前言:对于动捕系统软件Seeker的基本使用以及获取单个Marker的位置操作已经比较熟悉了,对于机械臂而言,接下来就是获取它的姿态信息,经过昨天下午的操作后 ...

  6. 三维空间刚体运动2:旋转向量与罗德里格斯公式(最详细推导)

    三维空间刚体运动2:旋转向量与罗德里格斯公式(最详推导) 1.旋转向量定义 2.罗德里格斯公式-向量转换为矩阵 2.1 定义 2.2 推导 2.2.1 推导一 2.2.2 推导二 2.2.3 推导向量 ...

  7. solvepnp与solvePnPRansac求头部姿态之二:取点策略

    solvepnp与solvePnPRansac求头部姿态之二:取点策略 采用68点 采用6点 耗时 结论 采用68点 采用solvepnp,将脸模project到原图上,不是特别的准(下图中绿色为标注 ...

  8. 方向向量转欧拉角_【姿态表示】旋转向量、旋转矩阵、欧拉角、四元数

    1. 旋转矩阵与旋转向量旋转矩阵(Rotation Matrix)用 9 个量描述旋转的3个自由度,有冗余: 9 个量是有约束的:必须是正交矩阵,且行列式为 1 旋转向量(Rotation Vecto ...

  9. 深入浅出无人机姿态,欧拉角,四元数,指数表示及数据转换与程序实现

    很多朋友留言或私信问到书名和出版日期.先感谢这么多朋友的支持和信任,MR.城堡会努力为大家带来更多干货.另外,交稿日期是今年12月,出版要看机械工业出版社的安排,书名和出版情况确定后,会在专栏告知大家 ...

最新文章

  1. ELK菜鸟手记 (三) - X-Pack权限控制之给Kibana加上登录控制以及index_not_found_exception问题解决
  2. 优秀项目解析:区块链上的房地产交易
  3. 发送不同类型的ActivityFeed
  4. Android之导入项目提示Android requires compiler compliance level 5.0 or 6.0. Found ‘1.8‘ instead解决办法
  5. 1 jquery对checkbox的简单操作
  6. 2021年中国电子药片胶囊计数机市场趋势报告、技术动态创新及2027年市场预测
  7. 统计计算函数练pandas
  8. java实现微信与支付宝支付使用同一二维码
  9. php李炎恢代码,李炎恢老师thinkphp5.1视频教程含课程讲义代码SQL文件php视频
  10. [词根词缀]cre/cred/crit/cult字根由来及词源C的故事
  11. hourglass论文_论文笔记 Stacked Hourglass Networks for Human Pose Estimation
  12. 计算机网络笔记(王道考研) 第二章:物理层
  13. 在线培训机构需公示教师资格证 一对一业务将最受影响
  14. Neptune CHT-C助力零束打造智舱界王者
  15. Android 获取摄像头像素,个数
  16. 团队中技术同质化的反思
  17. 贵金属实时行情看盘软件排行榜(top 10)
  18. vue中使用vuex-persistedstate插件实现数据持久化
  19. 动易 用户控件 采集
  20. 超市会员管理系统(maven,mybais,idea,课工场)

热门文章

  1. [转载]《狼》-bressanon布列瑟农 一次触动每个人心灵的感受
  2. Spring Cloud Streams Messaging消息驱动微服务实践
  3. Excel数据分析入门-函数和公式
  4. Web应急:网站首页被篡改
  5. 【功能开发篇】游戏中的时间系统修改Unity自带组件运行速度
  6. 超神,chatgpt帮你制作任意油猴脚本
  7. 专转本大忌,老实说这样备考真的考不上
  8. raiserror的用法
  9. 在如今的就业形势下,想要跳槽?你该把握的一个原则和两个技巧!
  10. qq好友列表获取数据并导出 - 用curl类 模拟QQ好友列表获取