对偶四元数的逆的求解——buff叠加带来的疑惑

对偶四元数的逆的求解——buff叠加带来的疑惑

写在前面

正在学习姿轨一体化建模,姿态运动使用四元数可以很好的描述,加入轨道和姿态耦合影响之后,四元数显得不够用了,结合对偶数的对偶四元数可以很好的解决这个问题。在利用对偶四元数建立动力学的过程中,不可避免地需要用到对偶四元数的逆,在学习过程中我遇到了一些问题,写在这里供自己和同好查看。

https://zhuanlan.zhihu.com/p/381127772

知乎大佬在这篇文档里介绍了对偶四元数的基本性质,可以前往查看,这里不赘述,并且符号沿用该文档,建议观看到其中的公式(7),如遇到问题再来。
在求解对偶四元数的逆时,用到的公式为:

(1)在这里插入图片描述

上式中,u为一个对偶四元数,写在程序中就是一个八维向量,前四维为一个四元数,后四维为一个四元数。u是u的共轭,需要注意的是,u是将u中2-4,6-8维数据取负,具体意义是将两个四元数取共轭。事情到这里本来岁月静好,但是令人纠结的是||u||^2,这个东西是u的2范数,可以按照

求解。uu*本该是个8维的对偶四元数,但是由于两个四元数的虚部都成了0,退化为一个二维的对偶数。可以写为:

(2)a+

这种形式,a1,b1是两个常数。于是对偶四元数的逆的变为了,一个八维的对偶四元数u*比上一个二维的对偶数,事情变得奇怪了起来。

经过数值验证,使用对偶数乘法与对偶数的逆公式来解决这个问题,毕竟对偶四元数也可以看为对偶数。

使用到的公式如下:

在这里插入图片描述

则,式(1)可以写为u*(a1-b1E) / a1^2
根据对偶数乘法计算公式

最终对偶四元数逆的公式就可以得到了:

u − 1 = [ q r a 1 , − b 1 q r + a 1 q d ] / a 1 2 u^{-1} = [q_ra_1,-b_1q_r+a_1q_d]/a_1^2 u1=[qra1,b1qr+a1qd]/a12

其中, q r 是 u ∗ 的 实 部 四 元 数 , q d 是 u ∗ 的 虚 部 四 元 数 , a 1 , b 1 通 过 u u ∗ q_r是u^*的实部四元数,q_d是u^*的虚部四元数,a_1,b_1通过uu^* qruqdua1,b1uu获得。
上面是一个8维对偶四元数,下面是一个常数,可以直接运算,经过验证,该逆与原对偶四元数相乘为1.

参考网页:
https://zhuanlan.zhihu.com/p/380140763 对偶数
https://zhuanlan.zhihu.com/p/368676086 四元数

写在后面

由于网上没有这样的详细说明,大佬们都不屑于解释太多,就只能由我这样的菜鸟谈谈想法,有什么理解不到位的地方欢迎和我多交流,共同进步。
水平有限,请有幸看到的您多多指正。在工作之余,祝您早安,午安,晚安。Have a nice day。
(可能的话点个赞再走吧)
P.S.博主还会不定时更新的,喜欢的话就收藏吧。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对偶四元数是一种扩展了传统四元数的数学概念,它在机器人学和刚体运动学中有广泛的应用。对偶四元数可以用来表示刚体的位姿和运动,同时还可以进行刚体的运动组合和变换计算。 在Matlab中,可以使用Quaternion库来进行对偶四元数的计算和操作。Quaternion库提供了一系列函数来创建、操作和转换对偶四元数。 以下是对偶四元数的一些基本操作和函数: 1. 创建对偶四元数:可以使用quaternion函数来创建对偶四元数,例如: dq = quaternion(w, x, y, z) % 创建一个对偶四元数,其中w、x、y、z分别表示实部和虚部的四个分量 2. 对偶四元数的运算:可以使用+、-、*、/等运算符进行对偶四元数的加减乘除运算,例如: dq1 + dq2 % 对偶四元数的加法 dq1 * dq2 % 对偶四元数的乘法 3. 对偶四元数的共轭:可以使用conj函数来计算对偶四元数的共轭,例如: dq_conj = conj(dq) % 计算对偶四元数的共轭 4. 对偶四元数单位化:可以使用normalize函数将对偶四元数单位化,例如: dq_normalized = normalize(dq) % 对偶四元数单位化 5. 对偶四元数的旋转:可以使用rotate函数将一个向量绕某个轴旋转,例如: rotated_vector = rotate(dq, vector) % 将向量vector绕对偶四元数dq表示的轴旋转 6. 对偶四元数的插值:可以使用slerp函数进行对偶四元数的插值,例如: interpolated_dq = slerp(dq1, dq2, t) % 对偶四元数dq1和dq2之间按照参数t进行插值

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值