python中将四元数转换为旋转矩阵

2023-05-16

在制作bundlefusion时,想测试TUM数据集,并且将groundtruth写入到数据集中,TUM中给定的groundtruth中的旋转是使用四元数表示的,而bundlefusion中需要SE3的形式,所以我需要首先将四元数转换为旋转矩阵,然后再将其与平移向量合并在一起,因为我之前关于生成bundlefusion数据集写了一些python脚本,所以这次仍然想在原来的脚本上完成这项任务,所以我就在网上搜索,实现方法,最终我成功解决这个问题的方法如下:

最近买了个vpn,所以我可以潇洒的在google中搜索 quaternion to rotation matrix python, 然后 就找到了这个

https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.transform.Rotation.html

我安装了conda,所以首先我使用下面这条指令安装scipy

conda install scipy

安装之后,我在pycharm上编辑代码,运行一下,提示说找不到scipy这个模块,我很纳闷,这是咋回事,我命名安装了呀,

我下意识的感觉到了什么, 我的pycharm链接到的是本地的python3.7,而我是在conda的base的环境下安装的scipy,所以我在python 的setting中更改了,连接的python版本

from scipy.spatial.transform import Rotation as R

 就是这个地方,改了之后,pycharm就可以识别scipy了.

下面是我的测试代码,里面还包括了,numpy中的矩阵的合并,设置数据类型等知识点,这些知识正好是今天早晨看morvan python学到的.

https://morvanzhou.github.io/tutorials/data-manipulation/np-pd/2-6-np-concat/ 

 

from scipy.spatial.transform import Rotation as R
import numpy as np
print('test')
# use [:, np.newaxis] to transform from row vector to col vector
position = np.array([0.6453529828252734, -0.26022684372145516, 1.179122068068349])[:, np.newaxis]
share_vector = np.array([0,0,0,1], dtype=float)[np.newaxis, :]
print('share_vector:\n', share_vector)
print('position:\n',position)
r = R.from_quat([-0.716556549511624,-0.6971278819736084, -0.010016582945017661,  0.02142651612120239])
r.as_matrix()
print('rotation:\n',r.as_matrix())
rotation_matrix = r.as_matrix()
print(rotation_matrix)

#combine three matrix or vector together
m34 = np.concatenate((rotation_matrix, position), axis = 1)
print(m34)
m44 = np.concatenate((m34, share_vector), axis=0)
# m44 = np.hstack((m34, share_vector))

print(m44)

rot_vec = r.as_rotvec()
print('rot_vec:\n', rot_vec)
rot_euler = r.as_euler('zyx', degrees = False)
print('rot_euler:\n',rot_euler)

r = R.from_matrix(rotation_matrix)
print('as_quat():\n',r.as_quat())
print('as_rotvec():\n', r.as_rotvec())
print('as_euler():\n', r.as_euler('zyx', degrees=True))

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中将四元数转换为旋转矩阵 的相关文章

随机推荐

  • 一款支持聚合支付,拿来就能用的支付系统,开源了!

    项目介绍 Jeepay是一套适合互联网企业使用的开源支付系统 xff0c 支持多渠道服务商和普通商户模式 已对接微信支付 xff0c 支付宝 xff0c 云闪付官方接口 xff0c 支持聚合码支付 Jeepay使用Spring Boot和A
  • 星标1.4k,一款国产开源数据同步中间件,支持多种数据源和预警功能!

    DBSyncer是一款开源的数据同步中间件 xff0c 提供MySQL Oracle SqlServer PostgreSQL Elasticsearch ES Kafka File SQL等同步场景 支持上传插件自定义同步转换业务 xff
  • 快速构建,一款轻量级的企业知识分享与团队协同软件开源了!

    今天给大家分享一款开源的轻量级的企业知识软件 xff0c 主打一个实用 xff01 介绍 MM Wiki 是一个轻量级的企业知识分享与团队协同软件 xff0c 可用于快速构建企业 Wiki 和团队知识分享平台 部署方便 xff0c 使用简单
  • “sudo: aptitude: command not found”问题解决办法

    caoxuepeng 64 caoxuepeng G3 3579 sudo aptitude install libhdf5 serial dev sudo aptitude command not found 问题描述 xff1a 命令不
  • apm软件仿真+QGC地面站 环境搭建

    本教程使用场景 xff1a apm软件仿真运行于虚拟机 ubuntu环境 qgc地面站位于windows 系统 两个环境在同一台电脑上 一 apm仿真环境搭建 1 安装vm虚拟机及ubuntu 18 2 ubuntu下 下载Ardupilo
  • GPS基础知识(四)、GPS信号结构

    GPS信号结构 xff08 三层 xff09 载波伪码数据码 一 xff0c 载波 载波是三层的基础 xff0c 伪码和数据码都是调制在载波上才能发送 GPS有两个载波频率 xff0c L1和L2 xff0c L1为1575 42MHz x
  • 简述四种干扰观测器(三)————基于扩张状态观测器的干扰观测器

    本节以最广泛应用的二阶系统为例介绍通用的线性观测器 非线性的扩张状态观测器将在将在自抗扰控制中介绍 观测器设计问题 xff0c 就是重新构造一个系统 xff0c 利用原系统中可以直接测量到的输出向量和输入向量作为它的输入信号 xff0c 并
  • Typora+PicGo+阿里云oss

    阿里云Oss图床 43 PicGo 43 Typora 之前用的gitee网上说可能会不稳定 xff0c 我就改成了阿里云OSS对象存储 参考 xff1a PicGo配置阿里云OSS 栗筝i的博客 CSDN博客 picgo 阿里云 1 注册
  • centos安装软件失败

    错误 xff1a 为仓库 appstream 下载元数据失败 Cannot prepare internal mirrorlist No URLs in mirrorlist 问题参考 CentOS Linux 8 AppStream 错误
  • Docker容器安装ssh

    Docker 容器里安装ssh和连接ssh 在服务器创建容器中安装了anaconda xff0c 为了方便敲代码 xff0c 用pycharm连接容器中的anaconda xff0c 我们需要安装ssh服务 前提 创建好docker容器 x
  • 阿里云创始人王坚正式回归阿里云

    5 月 11 日消息 xff0c 阿里云创始人王坚正式回归阿里云 据多名知情人士透露 xff0c 早在 2022 年底 xff0c 王坚其实就已经应张勇等人邀请 xff0c 以幕后顾问的角色进行考察和指导阿里云的工作 经过几个月的磨合和协商
  • random.seed()的用法

    random random 可以用来生成一个随机数 xff0c 如果在生成随机数之前 xff0c 先调用random seed x xff0c x可以是一个随机整数 xff0c 这时候在调用random random xff0c 则种子x和
  • PRGC: Potential Relation and Global Correspondence Based Joint Relational Triple Extraction

    标题 xff1a PRGC xff1a 基于潜在关系和全局对应的联合关系三元组抽取 摘要 联合抽取实体和关系的局限性 xff1a 关系预测的冗余性 xff0c 基于span抽取泛化能力差和效率低 本文从新角度将此任务分解为三个子任务 xff
  • 查看显存使用情况:nvidia-smi

    在装有nvidia驱动的机器终端输入nvidia smi xff0c 可以查看显卡的状况 xff0c 其输出界面如下 xff1a NVIDIA 系统管理接口 xff08 nvidia smi xff09 是一个命令行实用程序 xff0c 基
  • Docker更换Docker Root Dir目录

    原因 xff1a 我在加载自己的镜像时 xff0c 发现root空间不足 xff0c 无法加载 xff0c 所以需要更改Docker Root Dir目录 xff0c 才能放下我的镜像文件 具体方法 一 查看默认目录 执行docker in
  • PHP关于时间的整理

    year 61 date 34 Y 34 month 61 date 34 m 34 day 61 date 34 d 34 dayBegin 61 mktime 0 0 0 month day year 当天开始时间戳 dayEnd 61
  • 制作.sens数据集跑通bundlefusion

    1 主要参考这篇博客实现 https blog csdn net Wuzebiao2016 article details 94426905 2 首先就是将自己采集的RGBD图像的保存格式向Bundlefusion需要的格式对齐 xff0c
  • python之moviepy库的安装与使用

    目的 xff1a 因为需要保存一个大大的 mp4视频 xff0c 以防过程中设备出现异常导致整个长长的视频无法正常保存 xff0c 所以采用分段保存视频的方式 xff0c 每500帧保存一段 xff0c 然后再将视频合到一起 xff0e 最
  • 使用iai_kinect2标定kinectV2相机

    实验背景 xff1a 因为需要制作bundlefusion需要的数据集 xff0c 所以需要使用kinectV2相机获取rgbd图像 xff0c 年前的时候在我的笔记本上安装了libfreenect2库和iai kinect2 xff0c
  • python中将四元数转换为旋转矩阵

    在制作bundlefusion时 想测试TUM数据集 并且将groundtruth写入到数据集中 TUM中给定的groundtruth中的旋转是使用四元数表示的 而bundlefusion中需要SE3的形式 所以我需要首先将四元数转换为旋转