浅析机器人学位姿之单位四元数,一文彻底了解四元数,干货
moboyou 2025-04-22 00:49 15 浏览
对于机器人姿态的转换前面一直介绍欧拉角的方式,其实对于三维坐标的转换四元数法和欧拉角用得都比较多,在内部算法里四元数法占比例更大,欧拉角多用于原理讲解!
四元数是一个复数,下面就一步一步讲解下复数怎么和坐标系旋转勾搭上的!
四元数顾名思义对于旋转的变换只需要四个参数,而欧拉角的旋转矩阵则是3*3的矩阵,有9个元素,所以四元数法用来优化程序,好处显而易见!
在网上查了一些资料,对于四元数的讲解基本上没有让我满意的,可能是我水平不够或者思路跟不上!所以我打算自己总结一篇浅显易懂有不漏知识点的四元数浅析文章!
四元数是一个标量加一个向量,标量一个数,向量三个数!
首先四元数是一个复数,什么是复数?应该初中还是高中的数学肯定是学过的,估计大部分人都还给老师了!
复数
1、概述一下复数
任意一个复数z都可以表示为z=a+bi 的形式.我们将a称之为这个复数的实部,b称之为这个复数的虚部。 其中i的平方等于-1!怪不怪!我理解的复数的发明就是为了让它的虚部也能参与运算,因为数学里有的地方会出现i平方等于-1的情况,如果没发明复数,那么就无法完成计算!
复数的模长|z|;
它的共(轭)是z1=a-bi;
z*z1=a*a+b*b也就是模长的平方;
加减乘除法则和正常运算一样,如z1=a+bi,z2=c+di;z1+z2=a+b+bi+di; z1*z2=ac+adi+bci+bdi^2;
复数参与运算主要靠上面这几个关系互相转换,算到最后可以把虚数算没了,就像个中间变量一样;兔死狗烹,鸟尽弓藏!
2、复数怎么和旋转矩阵勾搭上的?
推导
首先写z1=a+bi,z2=c+di两个复数;
z1*z2=ac+adi+bci+bdi^2
由于i平方等于-1;进而化简:
z1*z2=ac-bd+adi+bci;
再化简:
z1*z2=ac-bd+(ad+bc)*i;
写成矩阵形式
右侧的矩阵c d;就是用向量的形式表示z2;为啥呢?因为复数可以图像化表示,复数z=a+bi可以用如下图表示:
既然右侧的列矩阵c d 表示z2,那么复数z1就是左侧的二维矩阵表示的!进而可以推断出z2的二维矩阵形式;
最终得出,z1*z2就是两个二维矩阵相乘,如下图公式:
上面的式子里面i不见了,我们就是当i=1;或者让矩阵乘以一个二维矩阵,但是结果不变,那么这个矩阵就是如下形式,得出i的二维矩阵形式,后面会用到这个i矩阵:
以上这些公式就可以和旋转矩阵眉目传情有点关系了;下面继续推导,把复数z1的矩阵形式再变换一下,就彻底勾搭上了,如下:
配合下面这个图看一下,就知道为啥彻底勾搭上了:
这不就是三角函数吗!
那么上面的公式就可以写成三角函数的形式了,加上求模的公式,再加上上面得出的i二维矩阵,最终可以把公式写成如下形式:
右边的矩阵就是二维里面的旋转矩阵了;
左边的其实就是缩放矩阵;
验证
实验一下我们将一个点坐标 (1,0),旋转θ角度,带入上面这个公式,最终得到如下;
就是对点(1,0)逆时针旋转了θ角度,然后再缩放|z|倍;同理代入点(1,0)也是一样的原理,如下图显示两个点的旋转图;
如果复数的模为1,那么就只剩旋转矩阵了!
总结一下:
如果(模)等于1,复数z可以写成如下矩阵形式:
写成复数形式就是:
Z=cosθ+sinθ*i;
对比下 :
Z=a+b*i;
如此,复数和旋转矩阵的关系大家应该知晓了!
数学真好玩,把两个不相关的东西硬是紧密的勾搭到了一起,佩服!
单位四元数(模为1)
概述
四元数的定义和复数非常类似,唯一的区别就是四元数一共有三个虚部,而复数只有一个。
四元数q写成如下形式:
q=s+v1i+v2j+v3k;
根据复数的定义:i平方=j平方=k平方=ijk=-1;
使用的时候把虚部和实部分开,写成:
q=s+v;
标准里我们把四元数表示为:
q=s<v1,v2,v3>;
应用
单位四元数的复数形式怎么和3D旋转扯上关系,推理方法和上面复数推理2D旋转矩阵一样,就不详细讲了,下面我们直接使用它,用matlab写程序案例,直接到应用层次!
直接调用函数UnitQuaternion,下面的0.1、0.2、0.3表示绕x绕y绕z旋转;
>> q = UnitQuaternion( rpy2tr(0.1, 0.2, 0.3) )
q =
0.98335 < 0.034271, 0.10602, 0.14357 >
用q.R可以输出旋转矩阵:
>> q.R
ans =
0.7536 -0.4993 0.4275
0.5555 0.8315 -0.0081
-0.3514 0.2436 0.9040
输出图形如下:
>> q.plot()
以上就是四元数的简单介绍,第一部分主要让大家搞懂四元数怎么能表示旋转的,第二部分就是简单的应用了,可以看出应用非常简单,如果实际写应用程序,四元数法会简单明了,节省时间,也可以让程序更流畅!
各位朋友感觉有用的话多谢关注我!我会持续给大家输出工控领域的经验和容易理解的知识点!
- 上一篇:IIR数字滤波器原理及实现方法
- 下一篇:基于帧间高频能量和相关性的烟雾检测算法研究
相关推荐
- 电子EI会议!投稿进度查
-
今天为大家推荐一个高性价比的电子类EI会议——IEEE电子与通信工程国际会议(ICECE2024)会议号:IEEE#62199截稿时间:2024年3月25日召开时间与地点:2024年8月15...
- 最“稳重”的滤波算法-中位值滤波算法的思想原理及C代码实现
-
在信号处理和图像处理领域,滤波算法是一类用于去除噪声、平滑信号或提取特定特征的关键技术。中位值滤波算法是一种常用的非线性滤波方法,它通过取一组数据的中位值来有效减小噪声,保留信号的有用特征,所以是最稳...
- 实际工程项目中是怎么用卡尔曼滤波的?
-
就是直接使用呀!个人认为,卡尔曼滤波有三个个关键点,一个是测量,一个是预测,一个是加权测量:通过传感器,获取传感器数据即可!预测:基于模型来进行数据预测;那么问题来了,如何建模?有难有易。加权:主要就...
- 我拿导弹公式算桃花,结果把自己炸成了烟花
-
第一章:学术圈混成“顶流”,全靠学生们把我写成段子最近总有人问我:“老师,您研究导弹飞行轨迹二十年,咋还顺带研究起月老红绳的抛物线了?”我扶了扶眼镜,深沉答道:“同志,导弹和爱情的本质都是动力学问题—...
- 如何更好地理解神经网络的正向传播?我们需要从「矩阵乘法」入手
-
图:pixabay原文来源:medium作者:MattRoss「机器人圈」编译:嗯~阿童木呀、多啦A亮介绍我为什么要写这篇文章呢?主要是因为我在构建神经网络的过程中遇到了一个令人沮丧的bug,最终迫...
- 电力系统EI会议·权威期刊推荐!
-
高录用率EI会议推荐:ICPSG2025(会议号:CFP25J66-PWR)截稿时间:2025年3月15日召开时间与地点:2025年8月18-20日·新加坡论文集上线:会后3个月内提交至S...
- EI论文写作全流程指南
-
推荐期刊《AppliedEnergy》是新能源领域权威EI/SCI双检索期刊,专注能源创新技术应用。刊号:ISSN0306-2619|CN11-2107/TK影响因子:11.2(最新数...
- JMSE投稿遇坑 实验结果被推翻
-
期刊基础信息刊号:ISSN2077-1312全称:JournalofMarineScienceandEngineering影响因子:3.7(最新JCR数据)分区:中科院3区JCRQ2(...
- 斩获国际特等奖!兰理工数学建模团队为百年校庆献礼
-
近日,2019年美国大学生数学建模竞赛(MCM-ICM)成绩正式公布。兰州理工大学数学建模团队再创佳绩,分别获得国际特等奖(OutstandingWinner)1项、一等奖(Meritorious...
- 省气象台开展人员大培训岗位大练兵学习活动
-
5月9日,省气象台组织开展首次基于Matlab编程语言的数值模式解释应用培训,为促进研究性业务发展,积极开展“人员大培训、岗位大练兵”学习活动起到了积极作用。此次培训基于实际业务需求,着眼高原天气特色...
- 嵌入式软件培训
-
培训效果:通过系统性的培训学习,理论与实践相结合,可以胜任相关方向的开发工作。承诺:七大块专业培训,可以任意选择其中感兴趣的内容进行针对性地学习,每期培训2个月,当期没学会,可免费学习一期。本培训内容...
- 轧机支承辊用重载中低速圆柱滚子轴承滚子修形探讨
-
摘 要:探讨了轧机支承辊用重载中低速圆柱滚子轴承滚子修形的理论和方法,确定关键自变量。使用Romax软件在特定载荷工况条件下对轴承进行数值模拟分析,确定关键量的取值范围。关键词:轧机;圆柱滚子轴承;滚...
- 数学建模EI刊,如何避雷?
-
---权威EI会议推荐会议名称:国际应用数学与工程建模大会(ICAMEM)截稿时间:2025年4月20日召开时间/地点:2025年8月15日-17日·新加坡论文集上线:会后2个月内由Sp...
- 制造工艺误差,三维共轭齿面怎样影响,双圆弧驱动的性能?
-
文/扶苏秘史编辑/扶苏秘史在现代工程领域,高效、精确的传动系统对于机械装置的性能和可靠性至关重要,谐波传动作为一种创新的机械传动方式,以其独特的特性在精密机械领域引起了广泛关注。在谐波传动的进一步优化...
- 测绘EI会议——超详细解析
-
【推荐会议】会议名称:国际测绘与地理信息工程大会(ICGGE)会议编号:71035截稿时间:2025年3月20日召开时间/地点:2025年8月15-17日·德国慕尼黑论文集上线:会后2个...
- 一周热门
- 最近发表
- 标签列表
-
- curseforge官网网址 (16)
- 外键约束 oracle (36)
- oracle的row number (32)
- 唯一索引 oracle (34)
- oracle in 表变量 (28)
- oracle导出dmp导出 (28)
- oracle 数据导出导入 (16)
- oracle两个表 (20)
- oracle 数据库 使用 (12)
- 启动oracle的监听服务 (13)
- oracle 数据库 字符集 (20)
- powerdesigner oracle (13)
- oracle修改端口 (15)
- 左连接 oracle (15)
- oracle 标准版 (13)
- oracle 转义字符 (14)
- asp 连接 oracle (12)
- oracle安装补丁 (19)
- matlab三维图 (12)
- matlab归一化 (16)
- matlab求解方程 (13)
- matlab坐标轴刻度设置 (12)
- matlab脚本 (14)
- matlab多项式拟合 (13)
- matlab阶跃函数 (14)