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 相关文章推荐
详解MySQL数据类型int(M)中M的含义
Nov 20 Python
一张图带我们入门Python基础教程
Feb 05 Python
Python常用内置模块之xml模块(详解)
May 23 Python
python中文件变化监控示例(watchdog)
Oct 16 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
python for 循环获取index索引的方法
Feb 01 Python
Python Pandas数据结构简单介绍
Jul 03 Python
pandas factorize实现将字符串特征转化为数字特征
Dec 19 Python
关于Pytorch MaxUnpool2d中size操作方式
Jan 03 Python
Python 数据的累加与统计的示例代码
Aug 03 Python
OpenCV全景图像拼接的实现示例
Jun 05 Python
python如何查找列表中元素的位置
May 30 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
生成sessionid和随机密码的例子
2006/10/09 PHP
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
关于JavaScript中string 的replace
2013/04/12 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
python zip文件 压缩
2008/12/24 Python
Python运行的17个时新手常见错误小结
2012/08/07 Python
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
从Python的源码来解析Python下的freeblock
2015/05/11 Python
python实现简易数码时钟
2021/02/19 Python
python实现祝福弹窗效果
2019/04/07 Python
python conda操作方法
2019/09/11 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
聚网科技C++面试笔试题
2015/09/01 面试题
结构工程个人自荐信范文
2013/11/30 职场文书
通用求职信范文模板分享
2013/12/27 职场文书
员工拓展培训方案
2014/02/15 职场文书
质检部经理岗位职责
2014/02/19 职场文书
销售队伍口号
2014/06/11 职场文书
镇副书记专题民主生活会对照检查材料思想汇报
2014/10/02 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
2015年春节标语口号
2014/12/09 职场文书
2015年安置帮教工作总结
2015/05/22 职场文书
“5.12”护士节主持词
2015/07/04 职场文书
python Polars库的使用简介
2021/04/21 Python
关于 Python json中load和loads区别
2021/11/07 Python