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的*args和**kwargs用法
Nov 01 Python
用smtplib和email封装python发送邮件模块类分享
Feb 17 Python
python使用PyFetion来发送短信的例子
Apr 22 Python
kNN算法python实现和简单数字识别的方法
Nov 18 Python
在Python中操作字典之clear()方法的使用
May 21 Python
利用Python批量生成任意尺寸的图片
Aug 29 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
Apr 01 Python
学python爬虫能做什么
Jul 29 Python
Python爬取微信小程序Charles实现过程图解
Sep 29 Python
pytorch 带batch的tensor类型图像显示操作
May 20 Python
pytorch锁死在dataloader(训练时卡死)
May 28 Python
Python tensorflow卷积神经Inception V3网络结构
May 06 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
利用static实现表格的颜色隔行显示
2006/10/09 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
jQuery中animate用法实例分析
2015/03/09 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
python使用多线程不断刷新网页的方法
2015/03/31 Python
python学习教程之使用py2exe打包
2017/09/24 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
Python阶乘求和的代码详解
2020/02/14 Python
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2012/04/17 面试题
舞蹈教师自荐信
2014/01/27 职场文书
绘画专业自荐信
2014/07/04 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
场地使用证明模板
2014/10/25 职场文书
班级联欢会主持词
2015/07/03 职场文书
六五普法学习心得体会
2016/01/21 职场文书
面试必问:圣杯布局和双飞翼布局的区别
2021/05/13 HTML / CSS
python必学知识之文件操作(建议收藏)
2021/05/30 Python
基于redis+lua进行限流的方法
2022/07/23 Redis