UR5机器人的旋转向量转换到四元数,再从四元数转换到旋转向量python代码

能够通过接口获得UR5机器人末端在基坐标系下的位姿,姿态表示方法是用旋转向量表示的,一般会涉及到四元数和旋转向量之间的转换。

1、方法一

python 复制代码
import numpy as np
from pytransform3d import rotations as pr
import copy
# 输入旋转向量
quaternion2 = np.array([-2.8382432375984954, 1.2909992654084241, -0.012174449591830415])
# 转换为四元数
ro_angle = np.linalg.norm(quaternion2) #向量模长为转角
ro_vector = quaternion2 / ro_angle   #转轴
axis_angle = np.append(ro_vector,ro_angle)
Y = pr.quaternion_from_axis_angle(axis_angle)  #结果是w,x,y,z
# 四元数转换回旋转向量
learn_axis_angle = pr.axis_angle_from_quaternion(Y)
dmp_pose = learn_axis_angle[0:3]*learn_axis_angle[3]

print("初始向量:", quaternion2)
print("最终向量:", dmp_pose)

2、方法二

python 复制代码
from scipy.spatial.transform import Rotation
import numpy as np
import copy
# 输入旋转向量
quaternion2 = np.array([-2.8382432375984954, 1.2909992654084241, -0.012174449591830415])
# 转换为四元数
qua = Rotation.from_rotvec(quaternion2).as_quat() #结果是x,y,z,w
# 四元数转换回旋转向量
dmp_pose = Rotation.from_quat(qua).as_rotvec() #转换为旋转向量

print("初始向量:", quaternion2)
print("最终向量:", dmp_pose)
相关推荐
青梅味猪大肠3 分钟前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
starzy19901 小时前
深入理解Scala可变Map:动态构建场景下的性能与设计权衡
开发语言·scala
小小张说故事2 小时前
Python 的 a[1:5:2] 到底切出了什么?拆开 slice 对象、__getitem__ 与负步长那次反向
python
wuyk5552 小时前
PyQt6-第15讲-数据可视化QChart
python·ui·信息可视化·pyqt
好悬给我拽开线2 小时前
RoboJEPA:扩展机器人潜在世界模型
机器人
天天被压力2 小时前
【A股分钟级高频数据完全手册 #04】指数分钟级行情数据接口:沪深指数Pro版最新分时取数
java·人工智能·python
日日大王学编程2 小时前
2026主流AI Agent产品分类、核心差异与技术特性全解析
人工智能·后端·python
天天被压力2 小时前
【A股分钟级高频数据完全手册 #03】股票历史1分钟K线数据接口怎么用:Pro版批量拉取与本地缓存
java·人工智能·python
zhanghaha13142 小时前
C# 系列教程_7 判断语句(分支)保姆级精讲
开发语言·c#
apcipot_rain3 小时前
C++转Java日记(02)
java·开发语言·c++