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 相关文章推荐
pyqt和pyside开发图形化界面
Jan 22 Python
Python中os和shutil模块实用方法集锦
May 13 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
Jan 18 Python
Python学习小技巧之利用字典的默认行为
May 20 Python
Python基础教程之浅拷贝和深拷贝实例详解
Jul 15 Python
python中的迭代和可迭代对象代码示例
Dec 27 Python
详解python中的index函数用法
Aug 06 Python
python实现IOU计算案例
Apr 12 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
python 线程的五个状态
Sep 22 Python
基于Python爬取搜狐证券股票过程解析
Nov 18 Python
Python实现粒子群算法的示例
Feb 14 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 高效率写法 推荐
2010/02/21 PHP
PHP中的reflection反射机制测试例子
2014/08/05 PHP
ucenter通信原理分析
2015/01/09 PHP
Zend Framework教程之视图组件Zend_View用法详解
2016/03/05 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
php微信开发之关注事件
2018/06/14 PHP
Laravel 模型关联基础教程详解
2019/09/17 PHP
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
微信小程序实现动态获取元素宽高的方法分析
2018/12/10 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
MyBag中文网:英国著名的时尚包袋电商零售网站
2020/07/31 全球购物
伦敦奥运会口号
2014/06/13 职场文书
本科应届生自荐信
2014/06/29 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
法人代表证明书
2014/09/18 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
python四种出行路线规划的实现
2021/06/23 Python
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript
python scrapy简单模拟登录的代码分析
2021/07/21 Python
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android
Python语言内置数据类型
2022/02/24 Python
MySQL中B树索引和B+树索引的区别详解
2022/03/03 MySQL