机器人运动学林沛群——旋转矩阵

旋转矩阵

基本概念

三个主轴,可以看作是三个向量,为b在a的表达,以a为基准
旋转矩阵

image.png

B相对于A的姿态:
B A R = [ A X B ^ A Y B ^ A Z B ^ ] = [ X ^ B ⋅ X ^ A Y ^ B ⋅ X ^ A Z ^ B ⋅ X ^ A X ^ B ⋅ Y ^ A Y ^ B ⋅ Y ^ A Z ^ B ⋅ Y ^ A X ^ B ⋅ Z ^ A Y ^ B ⋅ Z ^ A Z ^ B ⋅ Z ^ A ] ^A_BR=\begin{bmatrix} ^A\hat{X_B} & ^A\hat{Y_B} & ^A\hat{Z_B}\\ \end{bmatrix} =\begin{bmatrix}\hat{X}_B\cdot\hat{X}_A&\hat{Y}_B\cdot\hat{X}_A&\hat{Z}_B\cdot\hat{X}_A\\\hat{X}_B\cdot\hat{Y}_A&\hat{Y}_B\cdot\hat{Y}_A&\hat{Z}_B\cdot\hat{Y}_A\\\hat{X}_B\cdot\hat{Z}_A&\hat{Y}_B\cdot\hat{Z}_A&\hat{Z}_B\cdot\hat{Z}_A\end{bmatrix} BAR=[AXB^AYB^AZB^]= X^BX^AX^BY^AX^BZ^AY^BX^AY^BY^AY^BZ^AZ^BX^AZ^BY^AZ^BZ^A

用三个列向量分别来表示B坐标系每一个转轴的方向,每一个列向量的组成:即每一个轴的向量在A坐标系的投影,即通过点乘得到投影

以下面的图为例子,蓝色为A坐标系,红色为B坐标系。

image.png

如果要求 B A R = ? ^A_BR=? BAR=? ,需要分析B的三轴与A的三轴的关系。B的X轴与A的Z轴反向,则 A X B ^ = [ 0 0 − 1 ] ^A\hat{X_B}=\begin{bmatrix}0\\0\\-1\end{bmatrix} AXB^= 001 ,如果去分析投影计算方法,则可知是向量 X B ^ = [ 0 0 − 1 ] \hat{X_B}=\begin{bmatrix}0\\0\\-1\end{bmatrix} XB^= 001 分别与 X A ^ = [ 1 0 0 ] \hat{X_A}=\begin{bmatrix}1\\0\\0\end{bmatrix} XA^= 100 Y A ^ = [ 0 1 0 ] \hat{Y_A}=\begin{bmatrix}0\\1\\0\end{bmatrix} YA^= 010 Z A ^ = [ 0 0 1 ] \hat{Z_A}=\begin{bmatrix}0\\0\\1\end{bmatrix} ZA^= 001 ,就可以得到 A X B ^ = [ 0 0 − 1 ] ^A\hat{X_B}=\begin{bmatrix}0\\0\\-1\end{bmatrix} AXB^= 001 了。

B的Y轴与A的Y轴重叠,即 A Y B ^ = [ 0 1 0 ] ^A\hat{Y_B}=\begin{bmatrix}0\\1\\0\end{bmatrix} AYB^= 010
B的Z轴与A的X轴重叠,即 A Z B ^ = [ 1 0 0 ] ^A\hat{Z_B}=\begin{bmatrix}1\\0\\0\end{bmatrix} AZB^= 100
可以得到
B A R = [ 0 0 1 0 1 0 − 1 0 0 ] ^A_BR=\begin{bmatrix}0 &0 &1\\ 0&1&0\\ -1&0&0 \end{bmatrix} BAR= 001010100

image.png

特性

特性1

由于点乘得到的是一个数,左右交换顺序并不改变得到的结果

B A R = [ X ^ B ⋅ X ^ A Y ^ B ⋅ X ^ A Z ^ B ⋅ X ^ A X ^ B ⋅ Y ^ A Y ^ B ⋅ Y ^ A Z ^ B ⋅ Y ^ A X ^ B ⋅ Z ^ A Y ^ B ⋅ Z ^ A Z ^ B ⋅ Z ^ A ] = [ X ^ A ⋅ X ^ B X ^ A ⋅ Y ^ B X ^ A ⋅ Z ^ B Y ^ A ⋅ X ^ B Y ^ A ⋅ Y ^ B Y ^ A ⋅ Z ^ B Z ^ A ⋅ X ^ B Z ^ A ⋅ Y ^ B Z ^ A ⋅ Z ^ B ] ^A_BR =\begin{bmatrix}\hat{X}_B\cdot\hat{X}_A&\hat{Y}_B\cdot\hat{X}_A&\hat{Z}_B\cdot\hat{X}_A\\\hat{X}_B\cdot\hat{Y}_A&\hat{Y}_B\cdot\hat{Y}_A&\hat{Z}_B\cdot\hat{Y}_A\\\hat{X}_B\cdot\hat{Z}_A&\hat{Y}_B\cdot\hat{Z}_A&\hat{Z}_B\cdot\hat{Z}_A\end{bmatrix}=\begin{bmatrix}\hat{X}_A\cdot\hat{X}_B&\hat{X}_A\cdot\hat{Y}_B&\hat{X}_A\cdot\hat{Z}_B\\\hat{Y}_A\cdot\hat{X}_B&\hat{Y}_A\cdot\hat{Y}_B&\hat{Y}_A\cdot\hat{Z}_B\\\hat{Z}_A\cdot\hat{X}_B&\hat{Z}_A\cdot\hat{Y}_B&\hat{Z}_A\cdot\hat{Z}_B\end{bmatrix} BAR= X^BX^AX^BY^AX^BZ^AY^BX^AY^BY^AY^BZ^AZ^BX^AZ^BY^AZ^BZ^A = X^AX^BY^AX^BZ^AX^BX^AY^BY^AY^BZ^AY^BX^AZ^BY^AZ^BZ^AZ^B
B A R = [ B X A ^ T B Y A ^ T B Z A ^ T ] = [ B X A ^ B Y A ^ B Z A ^ ] T = A B R T ^A_BR=\begin{bmatrix}^B\hat{X_A}^T\\^B\hat{Y_A}^T\\^B\hat{Z_A}^T\end{bmatrix} =\begin{bmatrix}^B\hat{X_A}&^B\hat{Y_A}&^B\hat{Z_A}\end{bmatrix}^T =^B_AR^T BAR= BXA^TBYA^TBZA^T =[BXA^BYA^BZA^]T=ABRT

特性2

B A R T ⋅ B A R = [ A X B ^ T A Y B ^ T A Z B ^ T ] [ A X B ^ A Y B ^ A Z B ^ ] = [ 1 0 1 0 1 0 0 0 1 ] = I 3 = B A R − 1 ⋅ B A R ^A_BR^T \cdot^A_BR=\begin{bmatrix}^A\hat{X_B}^T\\^A\hat{Y_B}^T\\^A\hat{Z_B}^T\end{bmatrix}\begin{bmatrix} ^A\hat{X_B} & ^A\hat{Y_B} & ^A\hat{Z_B}\\ \end{bmatrix} =\begin{bmatrix} 1 & 0 & 1\\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} =I_3=^A_BR^{-1} \cdot^A_BR BARTBAR= AXB^TAYB^TAZB^T [AXB^AYB^AZB^]= 100010101 =I3=BAR1BAR
即:
B A R T ⋅ B A R = = B A R − 1 ⋅ B A R ^A_BR^T \cdot^A_BR==^A_BR^{-1} \cdot^A_BR BARTBAR==BAR1BAR
称之为单位正交矩阵。

该矩阵有九个数字,但是有六个限制条件(单位正交、每一行或者列的长度为1,共有三行六列),因此只有三个自由度,与转动只有三个自由度相符。

特性3

坐标点的转换,在B坐标系的P点通过与旋转矩阵相乘,得到A坐标系的P点

A P = B A R B P ^AP=^A_BR^BP AP=BARBP
对于将旋转拆解成三次旋转的连乘

  • 需要明确多次旋转的前后顺序
  • 旋转转轴也需要明确定义,是对固定不动的转轴旋转(Fixed angles),还是对转动之后坐标系下的转轴旋转(Euler angles)

旋转矩阵可以描述物体旋转的状态(以逆时针为正),

image.png

Z A ^ \hat{Z_A} ZA^为旋转轴,旋转角度为 θ \theta θ

R Z A ^ ( θ ) = [ c o s θ − s i n θ 0 s i n θ c o s θ 0 0 0 1 ] R_{\hat{Z_A}}(\theta)=\begin{bmatrix}cos\theta&-sin\theta&0\\sin\theta&cos\theta&0\\0&0&1\end{bmatrix} RZA^(θ)= cosθsinθ0sinθcosθ0001

image.png

通过旋转,得到下面的坐标 A P ′ = R ( θ ) A P {}^AP^{\prime}=R(\theta)^AP AP=R(θ)AP

Fix Angles

image.png

依次按照XYZ轴旋转,可得:
B A R X Y Z ( γ , β , α ) = R Z ( α ) R Y ( β ) R X ( γ ) _B^AR_{XYZ}(\gamma,\beta,\alpha)=R_Z(\alpha)R_Y(\beta)R_X(\gamma) BARXYZ(γ,β,α)=RZ(α)RY(β)RX(γ)
先转的在后面,即先与矩阵相乘(需要乘的矩阵在最右侧),先进行变换,后转在前面。

在fix angles下,先对X轴旋转60°、后对Y轴旋转30°与先对Y轴旋转30°,在对X轴旋转60°的旋转矩阵。
先对X轴旋转60°、后对Y轴旋转30°:
B A R X Y Z ( γ , β , α ) = R Z ( 0 ) R Y ( 30 ) R X ( 60 ) = [ 0.866 0.433 0.25 0 0.5 − 0.866 − 0.5 0.75 0.433 ] ^A_BR_{XYZ}(\gamma,\beta,\alpha)=R_Z(0)R_Y(30)R_X(60)=\begin{bmatrix}0.866&0.433&0.25\\0&0.5&-0.866\\-0.5&0.75&0.433\end{bmatrix} BARXYZ(γ,β,α)=RZ(0)RY(30)RX(60)= 0.86600.50.4330.50.750.250.8660.433
先对Y轴旋转30°,在对X轴旋转60°的旋转矩阵:
B A R X Y Z ( γ , β , α ) = R Z ( 0 ) R X ( 60 ) R Y ( 30 ) = [ 0.866 0 0.5 0.433 0.5 − 0.75 − 0.25 0.866 0.433 ] _B^AR_{XYZ}(\gamma,\beta,\alpha)=R_Z(0)R_X(60)R_Y(30)=\begin{bmatrix}0.866&0&0.5\\0.433&0.5&-0.75\\-0.25&0.866&0.433\end{bmatrix} BARXYZ(γ,β,α)=RZ(0)RX(60)RY(30)= 0.8660.4330.2500.50.8660.50.750.433

可以通过旋转矩阵倒推角度:
B A R X Y Z ( γ , β , α ) = [ 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 γ ] = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] ^A_BR_{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}=\begin{bmatrix}r_{11}&r_{12}&r_{13}\\r_{21}&r_{22}&r_{23}\\r_{31}&r_{32}&r_{33}\end{bmatrix} BARXYZ(γ,β,α)= 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γ = r11r21r31r12r22r32r13r23r33
β ≠ 90 \beta \neq 90 β=90 :
β = A t a n 2 ( − r 31 , r 11 2 + r 21 2 ) α = A t a n 2 ( r 21 / c β , r 11 / c β ) γ = A t a n 2 ( r 32 / c β , r 33 / c β ) \begin{aligned} &\beta=Atan2(-r_{31},\sqrt{{r_{11}}^{2}+{r_{21}}^{2}}) \\ &\alpha=Atan2(r_{21}/c\beta,r_{11}/c\beta) \\ &\gamma=Atan2(r_{32}/c\beta,r_{33}/c\beta) \end{aligned} β=Atan2(r31,r112+r212 )α=Atan2(r21/cβ,r11/cβ)γ=Atan2(r32/cβ,r33/cβ)
I f β = 9 0 ∘ α = 0 ∘ γ = A t a n 2 ( r 12 , r 22 ) \begin{aligned}\mathsf{If}\beta&=90^\circ\\\alpha&=0^\circ\\\gamma&=Atan2(r_{12},r_{22})\end{aligned} Ifβαγ=90=0=Atan2(r12,r22)
I f β = − 9 0 ∘ α = 0 ∘ γ = − A t a n 2 ( r 12 , r 22 ) \begin{aligned}\mathsf{If}\beta&=-90^\circ\\\alpha&=0^\circ\\\gamma&=-Atan2(r_{12},r_{22})\end{aligned} Ifβαγ=90=0=Atan2(r12,r22)

Euler Angles

image.png

B A R Z ′ Y ′ X ′ ( α , β , γ ) = B ′ A R B ′ ′ B ′ R B ′ ′ B R = R Z ′ ( α ) R Y ′ ( β ) R X ′ ( γ ) {}_{B}^{A}R_{Z^{\prime}Y^{\prime}X^{\prime}}(\alpha,\beta,\gamma)={}^A_{B^{\prime}}R_{B^{\prime\prime}}^{B^{\prime}}R^{B^{\prime\prime}}{}_{B}R=R_{Z^{\prime}}(\alpha)R_{Y^{\prime}}(\beta)R_{X^{\prime}}(\gamma) BARZYX(α,β,γ)=BARB′′BRB′′BR=RZ(α)RY(β)RX(γ)

先对哪个轴转,哪个轴的旋转矩阵在最前面。大概理解为,如果要从旋转后的坐标系恢复至原来的坐标系,需要从最后一个旋转的轴,依次往前复原

如果三个角度相同,那么最终结果与FixAngles相同

image.png

可以通过多种旋转方法得到相同的旋转矩阵,即旋转到相同的姿态

image.png

Euler和Fix各有十二种方法,第一个旋转的轴有三种选择,第二个有两种(排除掉第一个旋转的轴),第三个有两种(排除掉第二个旋转的轴)

还存在四元数法,之后会去介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/458885.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年2月8日 十二生肖 今日运势

小运播报:2024年2月8日,星期四,农历腊月廿九 (甲辰年丙寅月壬寅日),法定工作日。 红榜生肖:马、猪、狗 需要注意:龙、蛇、猴 喜神方位:正南方 财神方位:正…

外汇天眼:香港监管机构禁止Nerico Brothers前持牌代表五年

香港证券及期货事务监察委员会(SFC)已经禁止Nerico Brothers Limited的前持牌代表林清超先生和黄肇峰先生重新进入行业,为期五年。禁令将从2024年2月6日持续至2029年2月5日,此举是因为林和黄分别因行贿罪被判有罪。 林和黄于2022年…

3.2-媒资管理之MinIo分布式文件系统+上传图片

媒资管理 3 分布式文件系统 3.1 什么是分布式文件系统 要理解分布式文件系统首先了解什么是文件系统。 查阅百度百科: 文件系统是负责管理和存储文件的系统软件,操作系统通过文件系统提供的接口去存取文件,用户通过操作系统访问磁盘上的文…

机器学习系列——(七)简单分类算法

机器学习是目前人工智能领域最热门的分支之一,其中朴素贝叶斯分类算法是一种常用的分类算法。本文将详细介绍朴素贝叶斯分类算法的原理、应用以及优缺点。 一、原理 朴素贝叶斯分类算法是一种基于贝叶斯定理的分类算法。在分类问题中,我们需要根据给定的…

【JavaEE Spring】Spring 原理

Spring 原理 1. Bean的作⽤域1.1 概念1.2 Bean的作⽤域 2. Bean的⽣命周期 1. Bean的作⽤域 1.1 概念 在Spring IoC&DI阶段, 我们学习了Spring是如何帮助我们管理对象的. 通过 Controller , Service , Repository , Component , Configuration ,Bean 来声明Bean对象。通…

【Linux开发工具】gcc/g++的使用

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1.前言2.gcc/g使用方…

手把手教你激活FL Studio 21.2.2.3914中文破解版2024年图文激活教程以及如何设置中文language

FL Studio 21.2.2.3914软件简介 fl studio 21.2.2.3914中文破解版作为一款极具创意性的音乐软件工作站软件,FL Studio已经成为了许多音乐制作人和音乐爱好者的首选。最新的FL Studio 21.2.2.3914中文破解版的发布,无疑将会引起更多人的关注。 ​ FL St…

《Java程序设计》实验报告(一)之Java语言基础

实验内容及步骤: 编写”hello world”应用程序。(1)代码: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } } (2)运行…

【Langchain+Streamlit】旅游聊天机器人

【LangchainStreamlit】打造一个旅游问答AI-CSDN博客 项目线上地址,无需openai秘钥可直接体验:http://101.33.225.241:8502/ github地址:GitHub - jerry1900/langchain_chatbot: langchainstreamlit打造的一个有memory的旅游聊天机器人&…

Mybatis- plus 基本使用

目录 一. 引入依赖 二.定义Mapper 三.常见注解 3.1TableName 3.2.TableId 3.3TableField 3.4常见配置 一. 引入依赖 由于这个starter包含对mybatis的自动装配&#xff0c;因此完全可以替换掉Mybatis的starter。 <dependency><groupId>com.baomidou</gr…

pytorch训练指标记录之tensoboard,wandb

科研工具-01 使用Wandb实现高效实验管理 - 知乎Wandb简介Wandb都能做什么呢&#xff1f;可视化多实验对比云端存储实验报告如何使用Wandb呢&#xff1f;注册账户安装Wandb开始使用PytorchWandbargparse实现高效实验管理 Wandb简介 Wandb是一个高效的、功能丰富的人工智能实验管…

momentJs推导日历组件

实现效果: 代码&#xff1a; 引入momentjs然后封装两个函数构建出基本数据结构 import moment from moment;// 某月有多少天 export const getEndDay (m) > m.daysInMonth();/*** description 获取本月空值数据* param { Date } year { } 年度* param { Number } month …