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中用datetime包进行对时间的一些操作
Jun 23 Python
python利用Guetzli批量压缩图片
Mar 23 Python
python使用邻接矩阵构造图代码示例
Nov 10 Python
python集合是否可变总结
Jun 20 Python
使用Python函数进行模块化的实现
Nov 15 Python
pandas中read_csv的缺失值处理方式
Dec 19 Python
python cv2在验证码识别中应用实例解析
Dec 25 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
Mar 23 Python
Spring @Enable模块驱动原理及使用实例
Jun 23 Python
python Autopep8实现按PEP8风格自动排版Python代码
Mar 02 Python
pytorch 实现L2和L1正则化regularization的操作
Mar 03 Python
python绘图subplots函数使用模板的示例代码
Apr 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
一棵php的类树(支持无限分类)
2006/10/09 PHP
第七章 php自定义函数实现代码
2011/12/30 PHP
调整PHP的性能
2013/10/30 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
jQuery 方法大全方便学习参考
2010/02/25 Javascript
Js 随机数产生6位数字
2010/05/13 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
详解JavaScript函数对象
2015/11/15 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
vue中用动态组件实现选项卡切换效果
2017/03/25 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
Python常见数据结构详解
2014/07/24 Python
Python的装饰器使用详解
2017/06/26 Python
基于Python __dict__与dir()的区别详解
2017/10/30 Python
python爬虫使用cookie登录详解
2017/12/27 Python
matplotlib.pyplot绘图显示控制方法
2019/01/15 Python
Python中Numpy mat的使用详解
2019/05/24 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
2019/09/05 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
2020/08/19 Python
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
土地转让协议书
2014/04/15 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
PyTorch的Debug指南
2021/05/07 Python
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL