欧拉角和四元数之间的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 分钟前
零依赖的代价与自由:我用 C# 自研了一套 Office 读写库
开发语言·c#
cc_瀚海知行19 分钟前
工具调用 6|助手什么时候该停下来?
java·服务器·前端·人工智能·python·ai
想做小南娘,发现自己是女生喵23 分钟前
QT项目实战第一周(嵌入式)
开发语言·qt
学逆向的30 分钟前
C 可变量参数
c语言·开发语言·网络安全
andyweike30 分钟前
kotlin dsl library工程怎么配置
android·开发语言·kotlin
溪语流沙34 分钟前
【Web全栈进阶】Nginx反向代理 + HTTPS:正式上线
前端·vue.js·python·nginx·https·fastapi
huaweichenai37 分钟前
php搭建mcp服务
开发语言·php·ai编程
全栈弄潮儿41 分钟前
Python实战第11期:面向对象编程基础
后端·python·编程语言
估值探索者1 小时前
【Python量化技术指标实战 02】MACD金叉也分强弱?手工算一次 DIF/DEA 就懂了
java·开发语言·python·股票数据·股票数据api接口
讳疾忌医丶1 小时前
编译器眼中的 C++ 循环:从指针别名、IEEE 754 结合律到 SIMD 语义证明
开发语言·c++