ardupilot开发 --- 坐标变换 篇

在这里插入图片描述

Good Morning, and in case I don't see you, good afternoon, good evening, and good night!

  • 0. 一些概念
  • 1. 坐标系的旋转
    • 1.1 轴角法
    • 1.2 四元素
    • 1.3 基于欧拉角的旋转矩阵
      • 1.3.1 单轴旋转矩阵
      • 1.3.2 多轴旋转矩阵
      • 1.3.3 其他
  • 2. 齐次变换矩阵
  • 3. visp实践

0. 一些概念

  • 相关概念:旋转矩阵、平移矩阵、单应矩阵、齐次变换矩阵。
  • 坐标变换包括旋转变换和平移变换。
  • 为什么要坐标变换?引入坐标变换可以解决哪些问题?应用场景?
    • 已知一点p在坐标系A中的坐标,计算p在坐标系B中的坐标。
    • 已知一向量v在坐标系A中的值,计算v在坐标系B中的值。
    • 描述坐标系A和坐标系B之间的位姿关系(姿态和位置)。
    • 一向量v绕坐标系A的xyz轴旋转 θ ϕ ψ \theta \phi \psi θϕψ角度并进行一定平移后在坐标系A中的新坐标。
    • 在数学建模过程中,往往需要将不同的物量量表示在同一个坐标系内才能列出等式。
    • 刚体运动学。
    • 图像的投影。

1. 坐标系的旋转

描述坐标系的旋转常用的方法包括:

  • 轴角法
  • 旋转矩阵
  • 欧拉角
  • 四元数

这几种旋转表示方法有各自的优缺点和应用场景,这里不作赘叙。

1.1 轴角法

不常用,略…

1.2 四元素

待续…

1.3 基于欧拉角的旋转矩阵

轴角法和四元数,这两个可以归纳为用一次旋转来表示两个坐标系间的姿态。欧拉角则是用三次旋转来表示姿态。
在这里插入图片描述
欧拉角指:横滚角 ϕ \phi ϕ,俯仰角 θ \theta θ,偏航角 ψ \psi ψ
ϕ , θ , ψ \phi, \theta, \psi ϕ,θ,ψ在不同的领域有不同的定义规则:主要的区别是旋转顺序的不同,绕原始(固定)坐标轴轴旋转还是绕新(运动)坐标轴的不同(也称外旋或内旋)。
航天航空领域的欧拉角:

  • 内旋
    绕运动轴旋转得到新坐标系。
  • Z–>Y–>X
    原始坐标系经过Z–>Y–>X顺序旋转一定的角度得到新坐标系。
  • 右手系
    涉及的坐标系都遵循右手定则。

1.3.1 单轴旋转矩阵

前提:右手系
这里只给出结论,不作推导。
坐标系A分别单独绕 x , y , z x,y,z x,y,z轴旋转 ϕ , θ , ψ \phi, \theta, \psi ϕ,θ,ψ角度,欧拉旋转矩阵表达式如下:
T B A = R x ( ϕ ) = [ 1 0 0 0 c o s ϕ − s i n ϕ 0 s i n ϕ c o s ϕ ] (式 1 ) T B A = R y ( θ ) = [ c o s θ 0 s i n θ 0 1 0 − s i n θ 0 c o s θ ] (式 2 ) T B A = R z ( ψ ) = [ c o s ψ − s i n ψ 0 s i n ψ c o s ψ 0 0 0 1 ] (式 3 ) T_B^A=R_x(\phi)= \begin{bmatrix} 1&0&0\\ 0&cos{\phi}&-sin{\phi}\\ 0&sin{\phi}&cos{\phi} \end{bmatrix}(式1)\\[3mm] T_B^A=R_y(\theta)= \begin{bmatrix} cos{\theta}&0&sin{\theta}\\ 0&1&0\\ -sin{\theta}&0&cos{\theta} \end{bmatrix}(式2)\\[3mm] T_B^A=R_z(\psi)= \begin{bmatrix} cos{\psi}&-sin{\psi}&0\\ sin{\psi}&cos{\psi}&0\\ 0&0&1 \end{bmatrix}(式3) TBA=Rx(ϕ)= 1000cosϕsinϕ0sinϕcosϕ (式1TBA=Ry(θ)= cosθ0sinθ010sinθ0cosθ (式2TBA=Rz(ψ)= cosψsinψ0sinψcosψ0001 (式3
这些旋转矩阵的意义是:新坐标系到原始坐标系的变换矩阵,即:
[ x A y A z A ] = T B A [ x B y B z B ] \begin{bmatrix} x_A\\ y_A\\ z_A \end{bmatrix}=T_B^A \begin{bmatrix} x_B\\ y_B\\ z_B \end{bmatrix} xAyAzA =TBA xByBzB
注意:

  • ϕ , θ , ψ \phi, \theta, \psi ϕ,θ,ψ满足右手定则,绕右手坐标系的正方向旋转时为正。
  • ϕ , θ , ψ \phi, \theta, \psi ϕ,θ,ψ是系A旋转运动到系B的旋转量,但是得到的旋转矩阵 R x , R y , R z R_x,R_y,R_z Rx,Ry,Rz却是系B到系A的坐标变换矩阵!
    即:
    ϕ , θ , ψ \phi, \theta, \psi ϕ,θ,ψ:A ~> B
    R x , R y , R z R_x,R_y,R_z Rx,Ry,Rz:B ~> A
  • 系B到系A的变换矩阵可以有多种符号表示方式,通常有:
    T B A T_B^A TBA
    A T B ^AT_B ATB
    T A B T_{AB} TAB
    都表示 B ~> A 的变换关系矩阵!注意上下标的位置!!
  • 旋转矩阵是正交的,因此有:
    [ x B y B z B ] = T A B [ x A y A z A ] = ( T B A ) − 1 [ x A y A z A ] = ( T B A ) T [ x A y A z A ] \begin{bmatrix} x_B\\ y_B\\ z_B \end{bmatrix}=T_A^B \begin{bmatrix} x_A\\ y_A\\ z_A \end{bmatrix}=(T_B^A)^{-1} \begin{bmatrix} x_A\\ y_A\\ z_A \end{bmatrix}=(T_B^A)^{T} \begin{bmatrix} x_A\\ y_A\\ z_A \end{bmatrix} xByBzB =TAB xAyAzA =(TBA)1 xAyAzA =(TBA)T xAyAzA
    即: T A B = ( T B A ) − 1 = ( T B A ) T T_A^B=(T_B^A)^{-1}=(T_B^A)^{T} TAB=(TBA)1=(TBA)T.

1.3.2 多轴旋转矩阵

12种常用的内旋欧拉角又可分为两个类别:

  • 常规欧拉角
  • 泰特 - 布赖恩角

注意: 下表中如 X 1 Y 2 Z 3 X_1Y_2Z_3 X1Y2Z3表示的是矩阵相乘顺序,相当于本文的 R x R y R z R_xR_yR_z RxRyRz,表示旋转顺序是 Z ~>Y ~>X !其中的123表示绕该轴旋转的角度代称!
在这里插入图片描述
在航空航天领域,常用 Z ~>Y ~>X 旋转顺序的内旋欧拉角旋转矩阵
例如,系A分别先后绕 Z , Y , X Z,Y,X Z,Y,X轴旋转 ψ , θ , ϕ \psi,\theta,\phi ψ,θ,ϕ角度,得到新的坐标系B,则有以下等式成立:
[ x A y A z A ] = T B A [ x B y B z B ] T B A = R x ( ϕ ) R y ( θ ) R z ( ψ ) = [ c o s θ c o s ψ − c o s θ s i n ψ s i n θ c o s ϕ s i n ψ + c o s ψ s i n ϕ s i n θ c o s ϕ c o s ψ − s i n ϕ s i n θ s i n ψ − c o s θ s i n ϕ s i n ϕ s i n ψ − c o s ϕ c o s ψ s i n θ c o s ψ s i n ϕ + c o s ϕ s i n θ s i n ψ c o s ϕ c o s θ ] (式 4 ) 首旋:绕系 A 的 Z 轴旋转 ψ 角度 次旋:绕首旋得到的坐标系 A ′ 的 Y 轴旋转 θ 角度 终旋:绕次旋得到的坐标系 A ′ ′ 的 X 轴旋转 ϕ 角度 系 A → 首旋 → 系 A ′ → 次旋 → 系 A ′ ′ → 终旋 → 系 B \begin{bmatrix} x_A\\ y_A\\ z_A \end{bmatrix}=T_B^A \begin{bmatrix} x_B\\ y_B\\ z_B \end{bmatrix} \\[5mm] T_B^A=R_x(\phi)R_y(\theta)R_z(\psi)=\begin{bmatrix} cos{\theta}cos{\psi}&-cos{\theta}sin{\psi}&sin{\theta}\\ cos{\phi}sin{\psi}+cos{\psi}sin{\phi}sin{\theta}&cos{\phi}cos{\psi}-sin{\phi}sin{\theta}sin{\psi}&-cos{\theta}sin{\phi}\\ sin{\phi}sin{\psi}-cos{\phi}cos{\psi}sin{\theta}&cos{\psi}sin{\phi}+cos{\phi}sin{\theta}sin{\psi}&cos{\phi}cos{\theta} \end{bmatrix}(式4)\\[5mm] 首旋:绕系A的Z轴旋转\psi角度\\[5mm] 次旋:绕首旋得到的坐标系A'的Y轴旋转\theta角度\\[5mm] 终旋:绕次旋得到的坐标系A''的X轴旋转\phi角度\\[5mm] 系A\to 首旋 \to 系A' \to 次旋 \to 系A'' \to 终旋 \to 系B xAyAzA =TBA xByBzB TBA=Rx(ϕ)Ry(θ)Rz(ψ)= cosθcosψcosϕsinψ+cosψsinϕsinθsinϕsinψcosϕcosψsinθcosθsinψcosϕcosψsinϕsinθsinψcosψsinϕ+cosϕsinθsinψsinθcosθsinϕcosϕcosθ (式4首旋:绕系AZ轴旋转ψ角度次旋:绕首旋得到的坐标系AY轴旋转θ角度终旋:绕次旋得到的坐标系A′′X轴旋转ϕ角度A首旋A次旋A′′终旋B

旋转矩阵是正交的,因此有:
T A B = ( T B A ) − 1 = ( T B A ) T T_A^B=(T_B^A)^{-1}=(T_B^A)^{T} TAB=(TBA)1=(TBA)T
实质上,可以自行根据(式1)(式2)(式3)进行不同顺序的相乘,以得到特定的欧拉旋转矩阵,(式4)就是下面相乘顺序得到的结果:
T B A = R x ( ϕ ) R y ( θ ) R z ( ψ ) T_B^A=R_x(\phi)R_y(\theta)R_z(\psi) TBA=Rx(ϕ)Ry(θ)Rz(ψ)
注意,越靠右边旋转顺序越优先!!

1.3.3 其他

  • 优点:简洁直观。
  • 缺点:万向节死锁,意思是在某些姿态下,欧拉角的三自由度失去了一个自由度。
  • 扩展结论:
    • 欧拉角旋转矩阵是正交的,有 R T = R − 1 R^T=R^{-1} RT=R1
    • 三次绕固定轴旋转的最终姿态和以相反顺序三次绕运动轴旋转的最终姿态相同。
    • 欧拉角+旋转矩阵才能 VS 轴角法+四元数
    • 外旋欧拉旋转矩阵请自行查阅其他资料。

2. 齐次变换矩阵

将两个坐标系的旋转关系和平移关系整合成一个4x4的矩阵。
[ x b y b z b 1 ] = b T a [ x a y a z a 1 ] = [ b R a O a b 0 1 ] [ x a y a z a 1 ] \begin{bmatrix} x_b \\ y_b \\ z_b \\ 1 \end{bmatrix}={^bT_a} \begin{bmatrix} x_a \\ y_a \\ z_a \\ 1 \end{bmatrix}= \begin{bmatrix} ^bR_a&O_a^b \\ 0&1 \\ \end{bmatrix} \begin{bmatrix} x_a \\ y_a \\ z_a \\ 1 \end{bmatrix} xbybzb1 =bTa xayaza1 =[bRa0Oab1] xayaza1
b T a = [ b R a O a b 0 1 ] {^bT_a} = \begin{bmatrix} ^bR_a&O_a^b \\ 0&1 \\ \end{bmatrix} bTa=[bRa0Oab1]
其中:
b T a ^bT_a bTa称为坐标系 a 到坐标系 b 的齐次变换矩阵;
b R a ^bR_a bRa是系a到系b的旋转矩阵;
O a b O_a^b Oab是系a原点在系b中的坐标;
坐标系 a 到坐标系 b 的齐次变换矩阵为 b T a ^bT_a bTa,那么坐标系 b 到坐标系 a 的齐次变换矩阵为 a T b = ( b T a ) − 1 ^aT_b=(^bT_a)^{-1} aTb=(bTa)1,根据齐次矩阵的性质,可知:
a T b = ( b T a ) − 1 = [ a R b − a R b O a b 0 1 ] ^aT_b=(^bT_a)^{-1}= \begin{bmatrix} ^aR_b&-^aR_bO_a^b \\ 0&1 \\ \end{bmatrix} aTb=(bTa)1=[aRb0aRbOab1]

3. visp实践

//! [compute cMe]
vpRxyzVector c1TOc_xyz(vpMath::rad(-10.0), vpMath::rad(0), 0); // c1 ~> c 的xyz轴旋转量  !
vpRotationMatrix c1Rc(c1TOc_xyz); // 旋转矩阵:c -> c1 
vpRotationMatrix cRc1 = c1Rc.inverse(); // 旋转矩阵:c1 -> c, 旋转矩阵是正交的,因此 c1Rc^-1==c1Rc^T
vpHomogeneousMatrix cMc1(vpTranslationVector(), cRc1); // 齐次变换矩阵:c1 -> c
vpRotationMatrix c1Re { 1, 0, 0, 0, 0, 1, 0, -1, 0 }; // 旋转矩阵:e -> c1 !
vpTranslationVector e0_c1(0, -0.03, -0.07); // 平移关系:e系原点在c1系中的坐标  !
vpHomogeneousMatrix c1Me(e0_c1, c1Re); // 齐次变换矩阵:e -> c1
vpHomogeneousMatrix cMe = cMc1 * c1Me; // 齐次变换矩阵:e -> c
vpVelocityTwistMatrix cVe(cMe);  // 伺服系统控制量Vc=[vx,vy,vz,wx,wy,wz]的坐标变换矩阵:e -> c,从飞机机体系FRD到相机系RDF
//! [compute cMe]

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

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

相关文章

github仓库的基本使用-创建、上传文件、删除

1.第一步 先点击左侧菜单栏的远程仓库 2.点击NEW 3.创建仓库 然后点击右下角的 CREATE 4.点击code 点击SSH,然后我出现了You don’t have any public SSH keys in your GitHub account. You can add a new public key, or try cloning this repository via HTTPS. 1&#xff…

你喜欢波段交易吗?

波段交易的核心在于精准捕捉市场中的长期趋势波动,以实现更为稳健的收益。与剥头皮和日内交易不同,波段交易者更倾向于持有交易头寸数日乃至数周,以更宽广的视角把握市场动态。 这种交易方式的优势在于,它降低了对即时市场反应的…

JavaWeb系列三: JavaScript学习 下

文章目录 js数组定义方式数组遍历 js函数函数入门函数使用方式使用方式一使用方式二 函数注意事项函数练习题 定义对象使用object定义使用{}定义 事件onload事件onclick事件失去焦点事件内容发生改变事件表单提交事件静态注册动态注册表单作业 dom对象文档对象模型document对象…

Linux --账号和权限管理

目录 1、 管理用户账号和组账概述 1.1 用户账号分类 1.2 组账号 1.3 UID 和 GID 2、用户账号文件 2.1 passwd 2.2 shadow 3、管理目录和文件属性 3.1 chage 命令 3.2 useradd 命令 3.3 passwd 命令 ​编辑3.4 usermod 命令 3.5 userdel 命令 4、用户账户的初始配置…

爬数据是什么意思?

爬数据的意思是:通过网络爬虫程序来获取需要的网站上的内容信息,比如文字、视频、图片等数据。网络爬虫(网页蜘蛛)是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。 学习一些爬数据的知识有什么用呢&#x…

分解+降维+预测!多重创新!直接写核心!EMD-KPCA-Transformer多变量时间序列光伏功率预测

分解降维预测!多重创新!直接写核心!EMD-KPCA-Transformer多变量时间序列光伏功率预测 目录 分解降维预测!多重创新!直接写核心!EMD-KPCA-Transformer多变量时间序列光伏功率预测效果一览基本介绍程序设计参…

[数据集][目标检测]水面垃圾水面漂浮物检测数据集VOC+YOLO格式3749张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3749 标注数量(xml文件个数):3749 标注数量(txt文件个数):3749 标注…

聊聊etsy平台,一个年入百万的项目

聊聊etsy平台,一个年入百万的项目 什么是etsy,这是怎样一个平台,怎样盈利的?相信现在大家满脑子都是这些疑问。 这个平台也是无意间一个学员提到的,据说他朋友靠这个平台年赚好几百万。苦于门槛太高,他也做不了。今天…

web权限到系统权限 内网学习第一天 权限提升 使用手工还是cs???msf可以不??

现在开始学习内网的相关的知识了,我们在拿下web权限过后,我们要看自己拿下的是什么权限,可能是普通的用户权限,这个连添加用户都不可以,这个时候我们就要进行权限提升操作了。 权限提升这点与我们后门进行内网渗透是乘…

ATFX汇市:欧元区CPI与失业率数据同时发布,欧元或迎剧烈波动

ATFX汇市:CPI数据是中央银行决策货币政策的主要依据,失业率数据是中央银行判断劳动力市场健康状况的核心指标。欧元区的CPI和失业率数据将在今日17:00同时发布,在欧央行6月6日降息一次的背景下,两项数据将显著影响国际市场对欧央行…

问题-小技巧-Win11的常用快捷方式和有用快捷方式

文章目录 常用快捷方式1、CtrlA 全部选中2、Ctrl Z 撤销3、Ctrl X 剪切4、Ctrl C 粘贴5、Ctrl V 复制6、winshifts截图,Windows系统自带截图工具,功能太少7、ctrlshifts截图,edge自带截图工具,使用时需要打开edge8、 winv 可以查看…

C盘清理和管理

本篇是C盘一些常用的管理方法,以及定期清理C盘的方法,大部分情况下都能避免C盘爆红。 C盘清理和管理 C盘存储管理查看存储情况清理存储存储感知清理临时文件清理不需要的 迁移存储 磁盘清理桌面存储管理应用存储管理浏览器微信 工具清理 C盘存储管理 查…

C#的五大设计原则-solid原则

什么是C#的五大设计原则,我们用人话来解释一下,希望小伙伴们能学会: 好的,让我们以一种幽默的方式来解释C#的五大设计原则(SOLID): 单一职责原则(Single Responsibility Principle…

通过容器启动QAnything知识库问答系统

QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。目前已支持格式:PDF(pdf),Word(docx),PPT(pptx),XLS(xlsx),Markdown(md)&…

2024年教育政策与实践研讨会(ICEPP 2024)

随着全球化的不断深入,教育作为国家发展的基石,其政策与实践的探讨愈发显得重要。为此,备受瞩目的教育政策与实践研讨会(ICEPP 2024)将于2024年11月8日至10日在中国武汉隆重举行。此次会议汇聚了国内外众多专家学者&am…

浅谈k8s中cni0和docker0的关系和区别

最近在复习k8s网络方面的知识,查看之前学习时整理的笔记和文档还有过往自己总结的博客之后发现一个问题,就是在有关flannel和calico这两个k8s网络插件的文章和博客中,会涉及到cni0和docker0这两个网桥设备,但是都没有明确说明他们…

AI教育行业全景图(最新版);AI时代内容创作者的窘境;2年内AI教育赛道的切入机会;可汗学院创始人「AI教育革命」新书问世 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 1. 可汗学院 (Khan Academy) 创始人新书发布:AI将如何颠覆传统教育 可汗学院(Khan Academy)是 Salman Khan 创立的…

LabVIEW项目外协时选择公司与个人兼职的比较

​在选择LabVIEW项目外协合作伙伴时,外协公司和个人兼职各有优劣。个人兼职成本较低且灵活,但在可靠性、技术覆盖面、资源和风险管理上存在不足。而外协公司拥有专业团队、丰富资源、完善的项目管理和风险控制,尽管成本较高,但能提…

分享一款Type C接口USB转2路485模块【带完整原理图】

大家好,我是『芯知识学堂』的SingleYork,今天给大家分享一款很实用的工具–基于Type C接口的USB转2路485模块。 这款模块主芯片采用南京沁恒的CH342F这款芯片,芯片特性如下: 该系列芯片有QFN24和ESSOP10 这2种封装,…

leetcode-20-回溯-切割、子集

一、[131]分割回文串 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ] 分析&…