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 多轴旋转矩阵
  • 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
  • 右手系

1.3.1 单轴旋转矩阵

在这里插入图片描述
其中 ϕ θ ψ \phi \theta \psi ϕθψ满足右手定则,绕右手坐标系的正方向旋转时为正。
举例:
坐标系A中有一点p,坐标为 [ x a , y a , z a ] T [x_a,y_a,z_a]^T [xa,ya,za]T.
系A绕系A的正x轴旋转 θ \theta θ角度得到新坐标系B,那么点p在坐标系B中的坐标为: [ x b , y b , z b ] T = R A B ( θ ) [ x a , y a , z a ] T [x_b,y_b,z_b]^T=R_A^B(\theta)[x_a,y_a,z_a]^T [xb,yb,zb]T=RAB(θ)[xa,ya,za]T,其中 R A B ( θ ) = R x ( θ ) R_A^B(\theta)=R_x(\theta) RAB(θ)=Rx(θ)称为A到B的旋转矩阵!
A到B的旋转矩阵可以有多种符号表示方式,通常有:
R A B R_A^B RAB
R B A R_{BA} RBA
B R A ^BR_A BRA
都表示 A ~> B 的旋转关系矩阵!!
注意上下标的位置!

1.3.2 多轴旋转矩阵

待续…

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实践

待续…

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

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

相关文章

charls抓包工具 mumu模拟器抓包apk

1.先安装mumu 官网添加链接描述 2.配置 设置,点进互联网,点编辑,选择手动代理 主机名写自己电脑的ip地址,端口随便,只要不被占用,一般参考其他人都是8888 3.下载charls 参考这个添加链接描述 先官网…

项目验收测试有必要找第三方软件测试机构吗?

在当今信息技术飞速发展的时代,软件测试成为了确保软件质量的重要环节。而在项目的验收测试中,很多企业都面临一个问题,那就是是否有必要找第三方软件测试机构进行验收测试?今天,我们就来探讨一下这个问题。 第三方软件测试机构…

【别再用Excel了!】这款免费可视化工具能帮你轻松提升效率

现代数据分析和展示的需求已经远远超出了传统工具的能力,尤其是在需要快速、直观和高效地处理复杂数据的情况下。山海鲸可视化通过其强大的功能和易用性,成为了设计师以及各类新手用户的理想选择。下面我就以一个可视化设计师的角度,和大家简…

2024年6月计算机视觉论文推荐:扩散模型、视觉语言模型、视频生成等

6月还有一周就要结束了,我们今天来总结2024年6月上半月发表的最重要的论文,重点介绍了计算机视觉领域的最新研究和进展。 Diffusion Models 1、Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation LlamaGen,是一个…

合合信息智能文档抽取:赋能不良资产管理行业的数字化转型

官.网地址:合合TextIn - 合合信息旗下OCR云服务产品 随着数字化浪潮的汹涌澎湃,全球各行各业正经历着前所未有的变革。人工智能技术的快速发展,以其独特的创新能力和应用潜力,正在深刻地改变着业务模式,推动产业效率的…

把动漫幻想变为现实:一键生成真实图像,让你的动漫梦想成为现实!

大家好我是安琪!你能想到一个动漫图片可以转换成真实图像吗?其实,这就是所谓的漫改真人。有很多非常出名的动漫画或者动漫剧,改成由真人去饰演,就叫做漫改影视。 对于很多的动漫爱好者来说,如果一部漫改影…

尝试在FreeBSD 的jail、bhyve里安装TrinityCore

先上结论,直接编译安装TrinityCore失败,bhyve方式成功,jail方式没成功。 直接在FreeBSD下编译失败 按部就班的安装 编译的时候报错 所以安装: pkg install boost-libs-1.84.0 把其它依赖库也全部安装: pkg insta…

java-冒泡排序 1

## Java中的冒泡排序 ### 1. 冒泡排序的基本概念 冒泡排序(Bubble Sort)是一种简单且直观的排序算法。它通过重复地遍历待排序的列表,比较相邻的元素并交换它们的位置,使较大的元素逐步从列表的一端移动到另一端,就像…

css控制整个div下的所有元素中的文字放大缩小

css控制文字放大缩小 话不多说,直接上代码,我用了最简单粗暴的方法,找个下面所有的元素,然后遍历放大所有文字 add() {var div this.$refs[myDiv];var elements div.querySelectorAll("*");for (var i 0; i < elements.length; i) {var fontSize parseInt(win…

正则表达式与Pyhton

一、正则表达式的规则 1、支持普通字符匹配 2、元字符&#xff0c;一个符号匹配一堆字符 \d 匹配数字 \w 匹配数字、字母、下划线 \D \d的取反&#xff0c;除了数字全部匹配 \W \w的取反 [abc] 匹配字母a、b、c [^abc] [abc]的取反&#xf…

还不到6个月,GPTs黄了

相比起来&#xff0c;人们还不如使用一个足够强大、灵活且通用的AI助手来满足各类复杂需求。更严重的是一些独立GPTs显露出的安全隐患。除此之外&#xff0c;最大的问题在于OpenAI模糊不清的货币化政策。 文章正文 上周&#xff0c;不少人发现微软官网忽然更新了一条“GPT Bu…

深度解析拆分盘到底是怎样的运行逻辑!

一、引言 在数字经济的蓬勃发展中&#xff0c;拆分盘投资方式逐渐崭露头角&#xff0c;引起了广大投资者的关注。不同于传统的投资模式&#xff0c;拆分盘以其独特的拆分策略&#xff0c;为投资者提供了一种看似能够持续增值的新途径。本文将深入探讨拆分盘的基本原理、运作实…

BW:CP里添加信息对象小问题记录

之前做视图直接添加进CP里&#xff0c;以为不能直接往CP里加信息对象&#xff0c;还专门建了一个带信息对象的模型&#xff0c;把信息对象拖到CP里&#xff0c;然后再链接视图的字段 今天发现原来不用这样&#xff0c;直接加就可以&#xff0c;小记一下 如图直接诶创建&#x…

Linux驱动开发-02字符设备驱动开发初步

一、驱动开发的前期准备 在进入驱动开发之前&#xff0c;需要烧写UBoot、内核、设备树&#xff0c;做一些前期的准备工作&#xff0c;确保我们开发板上的内核版本和Ubuntu上是一致的才能进行正式开发 1.U-Boot 2.内核版本 3.使用TFTP挂载的内核和设备树 二、Linux驱动开发与裸机…

go的reflect实战

架构设计&#xff0c;有处设计&#xff0c;需要将string类型转为instance的实际类型&#xff0c;不更改业务代码的前提下&#xff0c;修改接口数据 因为涉及到unmarshal&#xff0c;因此要先判断instance中的存储的值是否已经是一个指针 如果不是&#xff0c;则需要包装为一个指…

记一次elementui时间线的实现

实现效果 点击展开&#xff0c;每次累加五条数据进行展示 实现思路 起始本质上就是一个分页查询&#xff0c;只不过按新的形式展示&#xff0c;然后也不统计总数&#xff0c;每次只展示固定的5条数据点击加载更多&#xff0c;就展示下一页&#xff0c;页的页数进行1&#xff…

ONLYOFFICE 文档 8.1 发布:重塑文档处理

官网链接&#xff1a;ONLYOFFICE官网 一、PDF编辑器功能强大&#xff1a;创造跟随想象 在追求无界办公与高效创作的今天&#xff0c;ONLYOFFICE再次引领风潮&#xff0c;正式发布了其桌面编辑器的最新版本——ONLYOFFICE桌面编辑器8.1。这一版本不仅巩固了其作为顶级办公套件…

python3使用ast.parse详解

使用ast库分析python3脚本, 并对脚本进行一些处理, 比如注释pirnt语句 一.基础知识 官方网址连接 ast — Abstract Syntax Trees ast库可以方便的分析python代码结构, 并做一些处理, 很适合对大量脚本文件做批量处理, 比如把print语句全部注释等. 直观的打印出代码结构 impo…

Python中令人困惑的模块导入

Python中令人困惑的模块导入 一句话总结: 绝对路径保平安 相关文件见此 问题描述 我在过去很长一段使用Python的时间里, 都仅限于一些简单模块, 文件结构也都很简单, 文件嵌套不会超过2层, 所以即便在模块导入上碰到些Module Not Found的问题, 也都是出问题那会儿去网上搜下方…

itextpdf-PdfStamper写入文件流到ByteArrayOutputStream注意事项

itextpdf-PdfStamper写入文件流到ByteArrayOutputStream注意事项 1、前情提要 最近做项目时有个需求&#xff0c;把图片合成pdf并且加水印&#xff0c;然后通过base64返回到前端。本来想的很简单&#xff0c;使用PdfStamper&#xff0c;把参数FileOutputSteam换成ByteArrayOutp…