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

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

被折叠的 条评论
为什么被折叠?



