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绘制人人网好友关系图示例
Apr 01 Python
python使用正则搜索字符串或文件中的浮点数代码实例
Jul 11 Python
Python实现给qq邮箱发送邮件的方法
May 28 Python
Python编写电话薄实现增删改查功能
May 07 Python
Python网络爬虫项目:内容提取器的定义
Oct 25 Python
python3使用SMTP发送简单文本邮件
Jun 19 Python
padas 生成excel 增加sheet表的实例
Dec 11 Python
python+pyqt5编写md5生成器
Mar 18 Python
python下载卫星云图合成gif的方法示例
Feb 18 Python
Python如何在单元测试中给对象打补丁
Aug 03 Python
Lombok插件安装(IDEA)及配置jar包使用详解
Nov 04 Python
python基于exchange函数发送邮件过程详解
Nov 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
PHP中PDO基础教程 入门级
2011/09/04 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
浅析为什么a=&quot;abc&quot; 不等于 a=new String(&quot;abc&quot;)
2017/10/25 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
会计专业毕业生推荐信
2013/11/05 职场文书
创新型城市实施方案
2014/03/06 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL
javascript数组includes、reduce的基本使用
2021/07/02 Javascript
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS