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 15 Python
基于python的多进程共享变量正确打开方式
Apr 28 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
Oct 26 Python
django使用LDAP验证的方法示例
Dec 10 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 Python
python协程之动态添加任务的方法
Feb 19 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
django 中的聚合函数,分组函数,F 查询,Q查询
Jul 25 Python
Python使用pdb调试代码的技巧
May 03 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
python中有帮助函数吗
Jun 19 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
Aug 05 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 批量添加多行文本框textarea一行一个
2014/06/03 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
使用js获取地址栏中传递的值
2013/07/02 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
Vue.extend实现挂载到实例上的方法
2019/05/01 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
在vue项目中封装echarts的步骤
2020/12/25 Vue.js
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python脚本实现查找webshell的方法
2014/07/31 Python
实例详解Python模块decimal
2019/06/26 Python
Python pandas库中的isnull()详解
2019/12/26 Python
Python3 集合set入门基础
2020/02/10 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
质检部职责
2013/12/28 职场文书
教师师德反思材料
2014/02/15 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
工业设计专业自荐书
2014/06/05 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
实现GO语言对数组切片去重
2022/04/20 Golang