【自动驾驶】26.【很清晰】旋转矩阵,欧拉角,四元数,旋转向量和齐次变换矩阵

本文主要是介绍【自动驾驶】26.【很清晰】旋转矩阵,欧拉角,四元数,旋转向量和齐次变换矩阵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文链接:https://blog.csdn.net/varyshare/article/details/91899049
前言
这几个名词都是用来描述一个物体的位置和姿态的。它们之间可以相互转化,而且各有各的优点与缺点。我先把这几个名词之间的联系理清楚,然后再解释他们各自适合的领域以及为何需要他们。

1.旋转矩阵

旋转矩阵的初衷就是人们希望给定一个向量x,然后我对它旋转,能直接通过矩阵乘法的形式得到旋转后的向量坐标。也就是说y=Ax。这个方便计算机计算,因此旋转矩阵常用于编程。旋转矩阵是一个正交矩阵:
在这里插入图片描述
而且行列式是1。

2.欧拉角

既然有了旋转矩阵,那么为何还要欧拉角呢?
这是因为我给你一个旋转矩阵,人看不懂它到底转了多少角度啊。计算机很容易算出来,但是对人来说非常困难。比如飞机驾驶员你让他以旋转矩阵的形式给飞机下指令,那人家不得疯了。而欧拉角那就非常直观,欧拉角就是我飞机头抬头多少(俯仰角pitch),向左拐还是向右拐(偏航角yaw),以及滚筒动作的角度(滚转角roll)。因此欧拉角一般是方便用户操作,或者程序员检查运算结果是否正确。

3.四元数

然后有了欧拉角为何还要四元数呢?
因为欧拉角有问题,即万向锁问题可以看这个解释万向锁视频。
欧拉角的意思是说旋转可以分解为绕机身,机翼,垂直机身三个轴旋转。注意了是依次旋转,每次旋转后的旋转轴姿态已经变化。看下图,比如你先绕机翼那个轴转90度,然后你会发现原先(第一幅图)的滚转角(即绕原先的机身转)与现在的偏航角(绕垂直机身的那个轴)重合了。也就是说滚转这个方向等与偏航了,两个自由度合并成一个了。这样一个麻烦就是如果一个给定旋转矩阵可能会计算出多个欧拉角。于是乎,数学家就用四元数来代替欧拉角。
在这里插入图片描述 在这里插入图片描述

4.旋转向量

旋转向量其实和欧拉角类似也会存在万向锁的,任何只用三个变量来描述姿态的方法都会产生万向锁。旋转向量就是【方向与旋转轴相同,模为旋转角度】的一个向量。之所以会用旋转向量是因为旋转矩阵用9个元素来描述三维的旋转,太浪费了。所以想用三个元素的向量来描述三维运动,这个向量就是旋转向量。

5.齐次变换矩阵

齐次变换矩阵就是既包含旋转又包含平移的变换矩阵(它是4x4),旋转矩阵R只包含旋转(它是3x3),齐次变换矩阵的左上角是旋转矩阵R,右侧那列是平移量T
在这里插入图片描述
在这里插入图片描述


这几个名词是可以相互转换的。我就不讲公式,我只讲转换的方法。

旋转矩阵变换到欧拉角、旋转向量
旋转矩阵它本质是把极坐标写成矩阵的形式,它可以计算出旋转的角度然后将角度分解得到欧拉角。旋转矩阵也可以转换到旋转向量,旋转向量的方向 是 旋转矩阵特征值为1的那个特征向量

为什么呢?因为旋转向量的方向是旋转轴重合也就是说这个向量绕旋转轴怎么旋转都不变,即R*n=n,而这刚好是特征值为1时候的表达式。前面提到了旋转的角度是旋转向量的模。然后旋转的角度是根据rodrigues公式两边求trace(对角线元素求和)可以算出旋转的角度。

旋转向量变换到旋转矩阵、四元数
旋转向量变换到旋转矩阵是利用rodrigues公式.而变换到四元数是直接可以等价变换。接下来讲讲旋转向量怎么变换到四元数。
假设旋转向量的方向向量是 [ n x , n y , n z ] \color{red}[ n_x , n_y , n_z ] [nx,ny,nz],它的模是θ,那么变换到的四元数为

在这里插入图片描述
同样四元数也很容易可以变换到旋转向量。

这篇关于【自动驾驶】26.【很清晰】旋转矩阵,欧拉角,四元数,旋转向量和齐次变换矩阵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067572

相关文章

计算绕原点旋转某角度后的点的坐标

问题: A点(x, y)按顺时针旋转 theta 角度后点的坐标为A1点(x1,y1)  ,求x1 y1坐标用(x,y)和 theta 来表示 方法一: 设 OA 向量和x轴的角度为 alpha , 那么顺时针转过 theta后 ,OA1 向量和x轴的角度为 (alpha - theta) 。 使用圆的参数方程来表示点坐标。A的坐标可以表示为: \[\left\{ {\begin{ar

笔记本电脑屏幕模糊?6招恢复屏幕清晰!

在数字化时代的浪潮中,笔记本电脑已成为我们生活、学习和工作中不可或缺的一部分。然而,当那曾经清晰明亮的屏幕逐渐变得模糊不清时,无疑给我们的使用体验蒙上了一层阴影。屏幕模糊不仅影响视觉舒适度,更可能对我们的工作效率和眼睛健康构成威胁。 遇到笔记本电脑屏幕模糊的情况时我们应该如何解决?本文将与大家分享6个简单易懂的解决方法。 方法一:调整Windows分辨率 电脑屏幕模糊显示不清晰怎

KLayout ------ 旋转物体90度并做平移

KLayout ------ 旋转创建的物体 正文 正文 前段时间,有个小伙伴留言问我,KLayout 中如何旋转自己创建的物体,这里特来说明一下。 import pyapoly = pya.DPolygon([pya.DPoint(0, 0), pya.DPoint(0, 5), pya

WordPress网创自动采集并发布插件

网创教程:WordPress插件网创自动采集并发布 阅读更新:随机添加文章的阅读数量,购买数量,喜欢数量。 使用插件注意事项 如果遇到404错误,请先检查并调整网站的伪静态设置,这是最常见的问题。需要定制化服务,请随时联系我。 本次更新内容 我们进行了多项更新和优化,主要包括: 界面设置:用户现在可以更便捷地设置文章分类和发布金额。代码优化:改进了采集和发布代码,提高了插件的稳定

剑指offer(C++)--左旋转字符串

题目 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! class Solution {public:string LeftRotateStri

【青龙面板辅助】JD商品自动给好评获取京豆脚本

1.打开链接 开下面的链接进入待评价商品页面 https://club.jd.com/myJdcomments/myJdcomments.action?sort=0 2.登陆后执行脚本 登陆后,按F12键,选择console,复制粘贴以下代码,先运行脚本1,再运行脚本2 脚本1代码 可以自行修改评价内容。 var content = '材质很好,质量也不错,到货也很快物流满分,包装快递满

AI炒股:自动画出A股股票的K线图并添加技术指标

在deepseek中输入提示词: 你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下: 用AKShare库获取股票贵州茅台(股票代码:600519)在2024年3月7日到2024年6月5日期间的历史行情数据-前复权。 然后绘制K线图,并在K线图上添加布林线、MACD 注意: 每一步都要输出信息到屏幕上; 日期格式是YYYYMMDD; 设置中文字体,以解决

XMG 自动提示宏 #define keyPath(objc,keyPath) @(((void)objc.keyPath,#keyPath));

1. int a=((void)5,4)  C语言逗号表达式默认会取右边的内容 如果不写void的话 a会被报警告,写上void标明请忽略左边的内容 插曲刚才弄得,已经上线的苹果产品如果需要下架的话,点击 价格与销售范围,然后点击下架。这个产品就会在AppStore 中移除。如果想再让改产品重新在Apple store中显示,那么再次让他上线就可以了。但是会有一定的时间延迟 /

OSG数学基础:坐标系变换

三维实体对象需要经过一系列的坐标变换才能正确、真实地显示在屏幕上。在一个场景中,当读者对场景中的物体进行各种变换及相关操作时,坐标系变换是非常频繁的。坐标系变换通常包括:世界坐标系-物体坐标系变换、物体坐标系-世界坐标系变换和世界坐标系-屏幕坐标系变换(一个二维平面坐标系,即显示器平面,是非常标准的笛卡尔坐标系的第一象限区域)。 世界坐标系-物体坐标系变换 它描述的问题主要是关于物体本身的

自动驾驶---Perception之Lidar点云3D检测

1 背景         Lidar点云技术的出现是基于摄影测量技术的发展、计算机及高新技术的推动以及全球定位系统和惯性导航系统的发展,使得通过激光束获取高精度的三维数据成为可能。随着技术的不断进步和应用领域的拓展,Lidar点云技术将在测绘、遥感、环境监测、机器人等领域发挥越来越重要的作用。         目前全球范围内纯视觉方案的车企主要包括特斯拉和集越,在达到同等性能的前提下,纯视觉方