欧拉角和四元数之间的python转换代码

1、欧拉角转换到四元数,转换顺序是ZYX

python 复制代码
def rpy2quaternion(roll, pitch, yaw):
    x=sin(roll/2)*cos(pitch/2)*cos(yaw/2)-cos(roll/2)*sin(pitch/2)*sin(yaw/2)
    y=cos(roll/2)*sin(pitch/2)*cos(yaw/2)+sin(roll/2)*cos(pitch/2)*sin(yaw/2)
    z=cos(roll/2)*cos(pitch/2)*sin(yaw/2)-sin(roll/2)*sin(pitch/2)*cos(yaw/2)
    w=cos(roll/2)*cos(pitch/2)*cos(yaw/2)+sin(roll/2)*sin(pitch/2)*sin(yaw/2)
    return np.array([w, x, y, z ])

2、四元数转换到欧拉角,转换顺序是ZYX

python 复制代码
def quart_to_rpy(w,x, y, z):
    roll = atan2(2 * (w * x + y * z), 1 - 2 * (x ** 2 + y ** 2))
    pitch = asin(2 * (w * y - z * x))
    yaw = atan2(2 * (w * z + x * y), 1 - 2 * (y ** 2 + z ** 2))

    return np.array([roll, pitch, yaw])

实验的时候发现,欧拉角转到四元数,再从四元数转回来,有些角度存在问题。

相关推荐
小诸葛的博客3 分钟前
client-go如何监听自定义资源
开发语言·后端·golang
入 梦皆星河4 分钟前
go原理刨析之channel
开发语言·后端·golang
Pandaconda8 分钟前
【新人系列】Golang 入门(十二):指针和结构体 - 上
开发语言·后端·golang·go·指针·结构体·后端开发
6<710 分钟前
【go】类型断言
开发语言·后端·golang
旷野本野34 分钟前
【Java】Maven
java·开发语言·maven
我自纵横202335 分钟前
事件处理程序
开发语言·前端·javascript·css·json·ecmascript
坊钰38 分钟前
【MySQL 数据库】数据类型
java·开发语言·前端·数据库·学习·mysql·html
u0103731061 小时前
Django异步执行任务django-background-tasks
后端·python·django
杰瑞学AI1 小时前
LeetCode详解之如何一步步优化到最佳解法:21. 合并两个有序链表
数据结构·python·算法·leetcode·链表·面试·职场和发展
攻城狮7号1 小时前
Python爬虫第5节-urllib的异常处理、链接解析及 Robots 协议分析
爬虫·python·python爬虫