视觉SLAM14精讲——三维空间刚体运动1.2

三维空间刚体运动


欧拉角

欧拉角可以说是零理解成本的表示形式,由于有万向锁的问题被绝大部分项目所抛弃。欧拉角的每个轴旋转都有固定好的名称,这些名称十分直观:

  • Z轴旋转,相当于左右旋转,叫航角,或偏航角。
  • Y轴旋转,相当于俯仰旋转,叫仰角,或俯仰角。
  • X轴旋转,相当于一个人躺在地上翻滚,叫滚角,或滚转角。

然而在某些情况下,我们获得到欧拉角,还是需要将其转换为旋转矩阵。14讲中提到了Rodrigues公式,在opencv里有直接实现好的接口。尽量使用这些现成的接口,可以避免很多不必要的麻烦:

R = cv2.Rodrigues(rpy)
rpy = cv2.Rodrigues(R)
cv::Rodrigues(rpy, R);
cv::Rodrigues(R, rpy);

使用欧拉角还需要注意的一个问题是弧度单位制和角度单位制的区别。如果发现单位制需要转换,就需要/180*Pi或者*Pi/180来进行转换。

四元数

四元数在所以到的旋转表示中是最麻烦的,它既不直观,计算也不简便,但是在数学上有着十分优美的表达形式。由于四元数仅使用四个分量就可以无奇异的表示旋转,因此这种表示方式会在传输过程中使用到。一个典型的例子就是ROS消息geometry_msgs/Pose:

orientation.x	
orientation.y	
orientation.z	
orientation.w	
position.x	
position.y	
position.z	

采用四元数就可以实现7个数传输一次位姿,用Rt矩阵一共是12个数,T占用16个。但其实这样的数据传输量对总体的系统来说压力并不高,相比图像实时传输的数据量来说是九牛一毛。因此一般不会以传输压力作为选择四元数作为旋转表达的主要原因。在一些工作中,比如VINS,和一些ceres进行优化的标定项目,会主要采用四元数进行最小二乘法的计算。

为了直观的让读者了解四元数,我们模仿前一章的做法,再次把轴旋转的四元数形式列在这里,方便大家理解:

RPY Quaternion
0, 0, 0 [ 0, 0, 0, 1 ]
90,0,0 [ 2 2 \frac{\sqrt{2}}{2} 22 , 0, 0, 2 2 \frac{\sqrt{2}}{2} 22 ]
0,90,0 [ 0, 2 2 \frac{\sqrt{2}}{2} 22 , 0, 2 2 \frac{\sqrt{2}}{2} 22 ]
0,0,90 [ 0, 0, 2 2 \frac{\sqrt{2}}{2} 22 , 2 2 \frac{\sqrt{2}}{2} 22 ]

旋转x轴90度,如果进行手算的话,可能会得到类似[1 0 0 1]的结果,这个结果的膜长是大于1的,需要进行规范化之后才会变成标准表达形式。因此最终是[ 2 2 \frac{\sqrt{2}}{2} 22 , 0, 0, 2 2 \frac{\sqrt{2}}{2} 22 ]。

小工具

最后推荐一个网站,3D Rotation Converter作为一个在线旋转形式转化的小工具,可以帮助我们将任一旋转转化成14讲中提到的人以一种形式。
请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Latex问题1

问题 添加bib文件的引用后 \bibliographystyle{IEEEtran} \bibliography{IEEEabrv}之后,出现莫名其妙的错误,如下 IEEEabrv.bib是我的参考文献的bib文件,CCS_1.tex是我的tex文件,bib文件中的内容为 ARTICLE{1,author{Capponi,…

ElastiCache Serverless for Redis应用场景和性能成本分析

一. 前言 传统基于实例节点的 Redis 缓存架构中,扩展性是一个重要影响因素。在很多场景中,例如广告投放、电商交易、游戏对战,流量是经常变化的。无论是主从还是集群模式,当大流量进入时,Redis 处理能力达到上限&…

2024红帽全球峰会:CEO行业洞察分享

作为全球IT领域一年一度的行业盛宴,2024红帽全球峰会于近日盛大召开。生成式AI与大模型是当前IT行业最受关注的热点话题,而红帽在生成式AI与大模型领域的最新动作,也理所当然地成为了本届峰会观众目光聚集的焦点。 作为世界领先的开源解决方案…

MT3035 逆波兰式

思路: 两个栈str1和sr2,分别存放运算符和结果。 如果是数字,直接放入str2中。 如果是运算符: 1. ( :直接放入 str1 2. /-/*// 看栈顶元素,若当前字符优先级比栈顶大,则压到str1中&#x…

大模型学习笔记九:模型微调

文章目录 一、什么时候需要Fine-Tuning二、用Hugging Face根据电影评论输出来对电影进行情感分类1)安装依赖2)操作流程3)名字解释4)代码导入库和加载模型、加载数据库、加载tokenlizer5)其他相关公共变量赋值(随机种子、标签集评价、标签转token_Id)6)处理数据集:转成…

乡村振兴与农村基础设施建设:加大投入力度,提升建设水平,完善农村基础设施网络,打造宜居宜业的美丽乡村

一、引言 乡村振兴战略是我国在新时代推进农业农村现代化的重大战略部署,其核心目标是实现乡村的全面振兴,促进农业强、农村美、农民富。农村基础设施建设作为乡村振兴的基石,其建设水平直接关系到乡村经济的持续健康发展、乡村环境的改善以…

每天Get一个小技巧:用DolphinScheduler实现隔几天调度

转载自tuoluzhe8521 这篇小短文将教会你如何使用Apache DolphinScheduler实现隔几天调度,有此需求的小伙伴学起来! 1 场景分析 DolphinScheduler定时器模块-定时调度时每3秒|每3分钟|每3天这种定时,不能够跨分钟,跨小时&#x…

信创基础硬件之整机

整机是成套或整体单机、单台形式的机电产品,由硬件系统(hardware system)和软件系统(software system)两部分组成的,包括主板、内存条、硬盘、CPU、光驱、机箱、显示器、键盘、鼠标、音响等部件。 服务器作为在网络环境下为客户机提供各种服务、特殊专用…

【JavaEE】Servlet

文章目录 一、Servlet 是什么二、如何创建Servlet程序1、创建项目2、引入依赖3、创建目录4、编写代码5、打包程序6、部署程序7、验证程序 一、Servlet 是什么 二、如何创建Servlet程序 1、创建项目 2、引入依赖 Maven 项目创建完后,会自动生成一个 pom.xml 的文…

AI 写 SQL 真的靠谱吗?腾讯游戏在 AI+ 湖仓一体的实践

作者:腾讯游戏数据技术负责人 刘岩 导读 腾讯游戏是全球领先的游戏开发和运营商,其数据团队拥有十余年、700 款大型游戏的数据工作沉淀。复杂的业务环境下,腾讯游戏数据团队每年需要处理超过 3 万个数据提取需求,SQL 编写需要耗费…

C++笔试强训day23

目录 1.打怪 2.字符串分类 3.城市群数量 1.打怪 链接 模拟题目&#xff0c;按题意进行模拟就行。 #include <iostream> using namespace std; // 简单模拟 int solve() {int h, a, H, A;cin >> h >> a >> H >> A;if (a > H)return -1;int…

Web浏览器的兼容性测试需要考虑哪些测试点?

测试web网站兼容性时&#xff0c;可以使用各种测试用例来确保网站在不同浏览器中的良好兼容性。以下是一些常见的兼容性测试用例示例&#xff1a; 1. 页面加载测试&#xff1a; - 确保网站在不同浏览器中正常加载&#xff0c;没有加载错误。 - 检查页面加载时间&#xff0c;…

第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组 AB路线

//bfs 1000100010不会超时 #include<bits/stdc.h> using namespace std; #define int long long const int n1e311; int a,b,c,h[n][n][12],k[4][2]{0,1,0,-1,1,0,-1,0}; char t[n][n]; struct s {int x,y,z,w; }; signed main() {ios::sync_with_stdio(false);cin.t…

Day29

回溯算法part03 LC39组合总和(未掌握) 未掌握分析&#xff1a;被数组中的元素可以被重复选取误导&#xff0c;同时没有想到暴力解法来理解回溯 暴力解法肯定是for循环遍历candidates中的每个元素&#xff0c;下一层子循环不像之前的组合题目那样从i1开始&#xff0c;该题目元…

PCIE协议-2-事务层规范-Transaction Ordering

2.4.1 事务排序规则 表2-40定义了PCI Express事务的排序要求。此表中定义的规则适用于PCI Express上的所有事务类型&#xff0c;包括内存、I/O、配置和消息事务。在单个流量类别&#xff08;Traffic Class&#xff0c;TC&#xff09;内&#xff0c;这些排序规则适用。不同TC标…

双向RNN和双向LSTM

双向RNN和双向LSTM 一、双向循环神经网络BiRNN 1、为什么要用BiRNN 双向RNN&#xff0c;即可以从过去的时间点获取记忆&#xff0c;又可以从未来的时间点获取信息,也就是说具有以下两个特点&#xff1a; 捕捉前后文信息&#xff1a;传统的单向 RNN 只能利用先前的上下文信息…

张驰咨询:六西格玛黑带项目的成功关键

六西格玛黑带项目通常被认为是比较难的&#xff0c;因为它们涉及的问题通常比较复杂&#xff0c;可能需要较长时间的分析、实验和协调。然而&#xff0c;通过遵循一定的步骤和方法&#xff0c;可以有效地实施六西格玛黑带项目。 以下是实施六西格玛黑带项目的基本步骤&#x…

搭建Prometheus+grafana监控系统

1. 项目目标 &#xff08;1&#xff09;熟练部署安装node_exporter &#xff08;2&#xff09;熟练部署安装prometheus &#xff08;3&#xff09;熟练部署安装grafana 2. 项目准备 2.1. 规划节点 主机名 主机IP 节点规划 prometheus-server 10.0.1.10 server prome…

【MySQL数据库开发设计规范】之SQL使用规范

欢迎点开这篇文章&#xff0c;自我介绍一下哈&#xff0c;本人姑苏老陈 &#xff0c;是一名JAVA开发老兵。 本文收录于 《MySQL数据库开发设计规范》专栏中&#xff0c;该专栏主要分享一些关于MySQL数据库开发设计相关的技术规范文章&#xff0c;定期更新&#xff0c;欢迎关注&…

3-3 基于RYU的流量风暴事件原理与响应策略

在传统网络中&#xff0c;存在着一定的广播流量&#xff0c;占据了一部分的网络带宽。同时&#xff0c;在有环的拓扑中&#xff0c;如果不运行某些协议&#xff0c;广播数据还会引起网络风暴&#xff0c;使网络瘫痪。 如有以下的一个网络拓扑结构&#xff08;3_2_topoplus.py) …