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 13 Python
浅谈五大Python Web框架
Mar 20 Python
浅谈python socket函数中,send与sendall的区别与使用方法
May 09 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
Dec 12 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 Python
Python实现微信翻译机器人的方法
Aug 13 Python
Python shutil模块用法实例分析
Oct 02 Python
详解Python修复遥感影像条带的两种方式
Feb 23 Python
python等差数列求和公式前 100 项的和实例
Feb 25 Python
python如何建立全零数组
Jul 19 Python
python中Pexpect的工作流程实例讲解
Mar 02 Python
教你如何使用Python实现二叉树结构及三种遍历
Jun 18 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
详细介绍:Apache+PHP+MySQL配置攻略
2006/09/05 PHP
PHP语法速查表
2007/01/02 PHP
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
php中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
PHP的运行机制与原理(底层)
2015/11/16 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
用jquery来定位
2007/02/20 Javascript
jquery 实现的全选和反选
2009/04/15 Javascript
javascript EXCEL 操作类代码
2009/07/30 Javascript
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
JavaScript实现基于Cookie的存储类实例
2015/04/10 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
2017/07/10 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
python Socket之客户端和服务端握手详解
2017/09/18 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
毕业自我鉴定
2013/11/05 职场文书
思想汇报格式
2014/01/05 职场文书
慈善晚会策划方案
2014/05/14 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
满月酒邀请函
2015/01/30 职场文书
2016元旦晚会主持人开场白和结束语
2015/12/03 职场文书
教育教学工作反思
2016/02/24 职场文书
竞选稿之小学班干部
2019/10/31 职场文书