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 subprocess模块学习总结
Mar 13 Python
python获取元素在数组中索引号的方法
Jul 15 Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
Python缩进和冒号详解
Jun 01 Python
Python实现网络端口转发和重定向的方法
Sep 19 Python
Python实现字符串匹配算法代码示例
Dec 05 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
Mar 06 Python
python实现简单坦克大战
Mar 27 Python
使用keras和tensorflow保存为可部署的pb格式
May 25 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
May 25 Python
Python实现删除某列中含有空值的行的示例代码
Jul 20 Python
Python批量获取并保存手机号归属地和运营商的示例
Oct 09 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入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
JavaScript中的undefined学习总结
2013/11/30 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
JS字符串截取函数实例
2013/12/27 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
字太多用...代替的方法(两种)
2017/03/15 Javascript
angularjs实现首页轮播图效果
2017/04/14 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
Python实现多行注释的另类方法
2014/08/22 Python
python处理大数字的方法
2015/05/27 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
matplotlib实现区域颜色填充
2019/03/18 Python
对Python中画图时候的线类型详解
2019/07/07 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
python实现UDP协议下的文件传输
2020/03/20 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
用CSS3的box-reflect设置文字倒影效果的方法讲解
2016/03/07 HTML / CSS
中国医药集团国药在线:国药网
2017/02/06 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
如果Session Bean得Remove方法一直都不被调用会怎么样
2012/07/14 面试题
运动会广播稿30字
2014/01/21 职场文书
质检员岗位职责
2015/02/03 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL