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中的greenlet包实现并发编程的入门教程
Apr 16 Python
Python中字符串对齐方法介绍
May 21 Python
python 获取网页编码方式实现代码
Mar 11 Python
Django项目开发中cookies和session的常用操作分析
Jul 03 Python
python try 异常处理(史上最全)
Mar 07 Python
Python数据类型之String字符串实例详解
May 08 Python
python3.4+pycharm 环境安装及使用方法
Jun 13 Python
pyqt5与matplotlib的完美结合实例
Jun 21 Python
python-tornado的接口用swagger进行包装的实例
Aug 29 Python
jupyter 使用Pillow包显示图像时inline显示方式
Apr 24 Python
python本地文件服务器实例教程
May 02 Python
Python中super().__init__()测试以及理解
Dec 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中echo()和print()、require()和include()等易混淆函数的区别
2012/02/22 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
PHP中feof()函数实例测试
2014/08/23 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
JavaScript去除空格的几种方法
2006/10/03 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
2013/09/10 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
2014/09/04 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
Flask之请求钩子的实现
2018/12/23 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
Python中Yield的基本用法
2020/10/18 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
应届毕业生个人求职自荐信
2014/01/06 职场文书
活动总结书
2014/05/08 职场文书
民族团结演讲稿范文
2014/08/27 职场文书
打架检讨书范文
2015/01/27 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
如何利用JavaScript实现二叉搜索树
2021/04/02 Javascript
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS