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 with用法实例
Apr 14 Python
从源码解析Python的Flask框架中request对象的用法
Jun 02 Python
python3.x上post发送json数据
Mar 04 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
Apr 02 Python
Python中logging实例讲解
Jan 17 Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 Python
详解Django定时任务模块设计与实践
Jul 24 Python
python3中numpy函数tile的用法详解
Dec 04 Python
详解Python3 中的字符串格式化语法
Jan 15 Python
python实现飞船大战
Apr 24 Python
Python os库常用操作代码汇总
Nov 03 Python
python-jwt用户认证食用教学的实现方法
Jan 19 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
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
PHP经典面试题集锦
2015/03/19 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
JavaScript DOM学习第六章 表单实例
2010/02/19 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
简单的Vue SSR的示例代码
2018/01/12 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
微信小程序实现星级评价效果
2018/12/28 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
批处理与python代码混合编程的方法
2016/05/19 Python
Python判断变量是否为Json格式的字符串示例
2017/05/03 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
pyqt5中动画的使用详解
2020/04/01 Python
python实现程序重启和系统重启方式
2020/04/16 Python
Python自动登录QQ的实现示例
2020/08/28 Python
世界上最具创新性的增强型知名运动品牌:Proviz
2018/04/03 全球购物
十八届三中全会学习方案
2014/02/16 职场文书
《二泉映月》教学反思
2014/04/15 职场文书
期中考试反思800字
2014/05/01 职场文书
商业企业管理专业求职信
2014/07/10 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL