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中 logging的使用详解
Oct 25 Python
浅谈Python实现2种文件复制的方法
Jan 19 Python
快速解决安装python没有scripts文件夹的问题
Apr 03 Python
Python绘制KS曲线的实现方法
Aug 13 Python
python中协程实现TCP连接的实例分析
Oct 14 Python
Django中的静态文件管理过程解析
Aug 01 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
详解Python3迁移接口变化采坑记
Oct 11 Python
如何通过Django使用本地css/js文件
Jan 20 Python
Python OpenCV实现测量图片物体宽度
May 27 Python
Python使用Turtle模块绘制国旗的方法示例
Feb 28 Python
pytorch 中autograd.grad()函数的用法说明
May 12 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 处理上百万条的数据库如何提高处理查询速度
2010/02/08 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
2019/11/05 Javascript
分析经典Python开发工程师面试题
2019/04/08 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
python中pyplot基础图标函数整理
2020/11/10 Python
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
俄语专业毕业生推荐信
2013/10/28 职场文书
营销与策划应届生求职信
2013/11/04 职场文书
大学生个人自我鉴定
2013/12/03 职场文书
《小小雨点》教学反思
2014/02/18 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
大学生见习报告总结
2014/11/04 职场文书
见习报告格式要求
2014/11/04 职场文书
个人工作总结范文2014
2014/11/07 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书
python爬虫selenium模块详解
2021/03/30 Python
使用pandas模块实现数据的标准化操作
2021/05/14 Python
关于EntityWrapper的in用法
2022/03/22 Java/Android