一种关于四元数旋转的方法

本文探讨如何在四元数上直接进行旋转变换,适用于处理ros中使用四元数表示的姿态。通过学习四元数与旋转轴、旋转角度的对应关系,以及四元数的乘法规则,可以在原有姿态基础上进行姿态变换。以apriltags项目为例,解释了在实际工程中如何利用四元数实现绕指定轴的旋转操作。
摘要由CSDN通过智能技术生成

在做apriltags项目的过程中,发现ros中常常以四元数来表示一个位姿(包含位置和姿态)的姿态,但有时候我们会遇到想要的姿态与预定的姿态出现偏差,想通过旋转来实现姿态的变换,这时直接在四元数进行变换时,常常会遇到看不懂四元数表示的实际姿态,更不要谈去在四元数上进行操作,我们一般会想到把四元数转化成欧拉角或者旋转矩阵进行旋转操作,其实这是可行的,而且依附于ros中TF树的强大,常常我们只需要调用相关的语句就可以实现三者的变换。

但其实我们可以直接在四元数上进行旋转变换,下面我就分析一下我的思路。
首先要学习下面几个四元数的理论:
一,下面是如何把具体的四元数与旋转轴和旋转角度对应起来。
1.指出旋转轴和旋转角度,如何转化为四元素。参考网址
假定旋转轴是:RAxis = Y轴,换算成三维空间单位向量就是RAxis = [0 1 0],旋转180度(顺时针为负,逆时针为正)注意:这里的旋转是在在前一次旋转前坐标上进行旋转变换
那么转化成四元数就是(第一个180是旋转角度)
q.w=cos((180/2)pi/180) = 0
q.x=RAix.x
sin((180/2)pi/180) = 00.5=0
q.y=RAix.ysin((180/2)pi/180) = 00.5=1
q.z=RAix.z
sin((180/2)pi/180) = 10.5=0
例子验证:我们知道,绕y轴旋转180的欧拉角是rpy=(0,180,0)借助在线软件,我们输入后发现四元数便是wxyz=(0,0,1,0)。如下:
在这里插入图片描述
2.指出四元数,怎么知道旋转轴和旋转角度呢。
假定q=[0,0,1,0] (其实这个是上面的反例子而已)
q.w&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值