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 相关文章推荐
Windows下用py2exe将Python程序打包成exe程序的教程
Apr 08 Python
深入理解Python中变量赋值的问题
Jan 12 Python
利用 python 对目录下的文件进行过滤删除
Dec 27 Python
python 脚本生成随机 字母 + 数字密码功能
May 26 Python
在Pycharm中项目解释器与环境变量的设置方法
Oct 29 Python
Python爬取爱奇艺电影信息代码实例
Nov 26 Python
Python Pillow.Image 图像保存和参数选择方式
Jan 09 Python
浅谈pytorch torch.backends.cudnn设置作用
Feb 20 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
Nov 05 Python
Python如何识别银行卡卡号?
Jun 10 Python
python实现Nao机器人的单目测距
Sep 04 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/11/23 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
JavaScript 变量基础知识
2009/11/07 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
JS计算网页停留时间代码
2014/04/28 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
JavaScript DOM 对象深入了解
2016/07/20 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
node中IO以及定时器优先级详解
2019/05/10 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
JS继承实现方法及优缺点详解
2020/09/02 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
[02:27]刀塔重生降临
2015/10/14 DOTA
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
Python实现简单登录验证
2016/04/13 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
python+opencv实现车道线检测
2021/02/19 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
电子装配专业毕业生求职信
2014/04/23 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书