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函数形参用法实例分析
Aug 04 Python
对python中for、if、while的区别与比较方法
Jun 25 Python
Win8下python3.5.1安装教程
Jul 29 Python
python检测IP地址变化并触发事件
Dec 26 Python
Python图像处理之颜色的定义与使用分析
Jan 03 Python
Python3实现的判断环形链表算法示例
Mar 07 Python
Win 10下Anaconda虚拟环境的教程
May 18 Python
Python3 搭建Qt5 环境的方法示例
Jul 16 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
python判断元素是否存在的实例方法
Sep 24 Python
selenium自动化测试入门实战
Dec 21 Python
Python+Appium新手教程
Apr 17 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
fgetcvs在linux的问题
2012/01/15 PHP
探讨:如何编写PHP扩展
2013/06/13 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
Yii中表单用法实例详解
2016/01/05 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
Bootstrap3.0学习教程之JS折叠插件
2016/05/27 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
jQuery自动或手动图片切换效果
2017/10/11 jQuery
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
优化Vue中date format的性能详解
2020/01/13 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
python实现拓扑排序的基本教程
2018/03/11 Python
python读写csv文件实例代码
2019/07/05 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
python中复数的共轭复数知识点总结
2020/12/06 Python
泰国汽车、火车和轮渡票预订网站:Bus Online Ticket
2017/09/09 全球购物
电子商务专员岗位职责
2013/12/11 职场文书
新娘父亲婚礼致辞
2014/01/16 职场文书
学籍证明模板
2014/11/21 职场文书
2014年秘书工作总结
2014/11/25 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技