python将四元数变换为旋转矩阵的实例


Posted in Python onDecember 04, 2019

如下所示:

import numpy as np
from autolab_core import RigidTransform

# 写上用四元数表示的orientation和xyz表示的position
orientation = {'y': -0.6971278819736084, 'x': -0.716556549511624, 'z': -0.010016582945017661, 'w': 0.02142651612120239}
position = {'y': -0.26022684372145516, 'x': 0.6453529828252734, 'z': 1.179122068068349}

rotation_quaternion = np.asarray([orientation['w'], orientation['x'], orientation['y'], orientation['z']])
translation = np.asarray([position['x'], position['y'], position['z']])
# 这里用的是UC Berkeley的autolab_core,比较方便吧,当然可以自己写一个fuction来计算,计算公式在https://www.cnblogs.com/flyinggod/p/8144100.html
T_qua2rota = RigidTransform(rotation_quaternion, translation)

print(T_qua2rota)
 
# 以下是打印的结果
Tra: [ 0.64535298 -0.26022684 1.17912207]
   Rot: [[ 0.02782477 0.99949234 -0.01551915]
   [ 0.99863386 -0.02710724 0.0446723 ]
   [ 0.04422894 -0.01674094 -0.99888114]]
   Qtn: [-0.02142652 0.71655655 0.69712788 0.01001658]
   from unassigned to world

自己写的话

def quaternion_to_rotation_matrix(quat):
  q = quat.copy()
  n = np.dot(q, q)
  if n < np.finfo(q.dtype).eps:
    return np.identity(4)
  q = q * np.sqrt(2.0 / n)
  q = np.outer(q, q)
  rot_matrix = np.array(
    [[1.0 - q[2, 2] - q[3, 3], q[1, 2] + q[3, 0], q[1, 3] - q[2, 0], 0.0],
     [q[1, 2] - q[3, 0], 1.0 - q[1, 1] - q[3, 3], q[2, 3] + q[1, 0], 0.0],
     [q[1, 3] + q[2, 0], q[2, 3] - q[1, 0], 1.0 - q[1, 1] - q[2, 2], 0.0],
     [0.0, 0.0, 0.0, 1.0]],
    dtype=q.dtype)
  return rot_matrix

描述有两种方式,即XYZABC和XYZ+quaternion:

https://doc.rc-visard.com/latest/de/pose_formats.html?highlight=format

以上这篇python将四元数变换为旋转矩阵的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中urllib2模块的8个使用细节分享
Jan 01 Python
python实现在windows服务中新建进程的方法
Jun 30 Python
python+selenium+autoit实现文件上传功能
Aug 23 Python
机器学习python实战之决策树
Nov 01 Python
Python入门之三角函数atan2()函数详解
Nov 08 Python
python实现遍历文件夹修改文件后缀
Aug 28 Python
python+splinter自动刷新抢票功能
Sep 25 Python
Python3.5实现的罗马数字转换成整数功能示例
Feb 25 Python
python 列表推导式使用详解
Aug 29 Python
Pycharm小白级简单使用教程
Jan 08 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 Python
python中numpy数组与list相互转换实例方法
Jan 29 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 #Python
python实现一个点绕另一个点旋转后的坐标
Dec 04 #Python
Django配置文件代码说明
Dec 04 #Python
python实现回旋矩阵方式(旋转矩阵)
Dec 04 #Python
在Django下创建项目以及设置settings.py教程
Dec 03 #Python
Django自带的加密算法及加密模块详解
Dec 03 #Python
python Opencv计算图像相似度过程解析
Dec 03 #Python
You might like
PHP中改变图片的尺寸大小的代码
2011/07/17 PHP
PHP中extract()函数的定义和用法
2012/08/17 PHP
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
JavaScript生成GUID的多种算法小结
2013/08/18 Javascript
JavaScript动态修改背景颜色的方法
2015/04/16 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
使用socket.io实现简单聊天室案例
2018/01/02 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
Python高斯消除矩阵
2019/01/02 Python
Python微信操控itchat的方法
2019/05/31 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
使用python turtle画高达
2020/01/19 Python
python实现同一局域网下传输图片
2020/03/20 Python
python redis存入字典序列化存储教程
2020/07/16 Python
Python如何给函数库增加日志功能
2020/08/04 Python
恒华伟业笔试面试题
2015/02/26 面试题
AJAX的优缺点都有什么
2015/08/18 面试题
教师四风自我剖析材料
2014/09/30 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
2015秋季田径运动会广播稿
2015/08/19 职场文书
JavaScript实现队列结构过程
2021/12/06 Javascript