ROS2中如何从欧拉角转换成四元素

本文详细介绍了在ROS1和ROS2中使用`quaternion_from_euler`函数进行欧拉角到四元数转换的方法,包括使用`tf_transformations`包、Python第三方库如`quaternions`和`trimesh`,以及ROS内置的处理方式。同时提到了不同版本和包之间的区别及如何处理不同坐标轴顺序(axes)。

ROS1中使用from tf.transformations import quaternion_from_euler导入quaternion_from_euler()即可调用。而ROS2中默认没有安装,需要单独安装一下ros-galactic-tf-transformations(我使用的ROS2是galactic,根据版本名不同做相应修改即可):

sudo apt-get update
sudo apt-get install ros-galactic-tf-transformations

然后导入包,不过包名改成了tf_transformations

import tf_transformations

# 将欧拉角转换为四元数(roll, pitch, yaw)
q = tf_transformations.quaternion_from_euler(roll, pitch, yaw)

# 将四元素转换成欧拉角 
euler = tf_transformations.euler_from_quaternion([x, y, z, w])

不安装tf_transformations的话,还可以安装其它工具包来替代,例如python的第三方quaternions包:

pip install quaternions  -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
from quaternions import Quaternion as Quaternion 
euler = [0.98012,0.5232,0.2105] # ROLL PITCH HEADING
q = Quaternion.from_euler(euler, axes = ['y', 'y', 'x']) # a= (w, x, y, z)
e = Quaternion.get_euler(q) # e = (Heading, Pitch, Roll)

需要注意的是ROS在gemetry_msgs包里已定义有Quaternion类,另外ROS1里tf2里也定义有Quaternion,同时使用时注意用别名或包名区分。

另外,也可以安装trimesh工具包后使用里面的quaternion_from_euler

pip3.8 install trimesh -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
from trimesh.transformations import quaternion_from_euler
from geometry_msgs.msg import Quaternion as GeoQuaternion

def createQuaternionFromY
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arnold-FY-Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值