首页 > 解决方案 > 使用四元数对3D空间中的对象进行坐标校正

问题描述

我有一个在 3D 空间中的对象。标记附加到对象。标记给出了对象相对于原点的 (X,Y,Z)。标记还给出了该点的四元数(A、B、C、D)。对象上的标记未放置在对象的中心。

我想更正标记坐标,以便标记位置沿原点的 X 轴平移到对象的中心。给定标记位置和对象中心之间的距离是数字“K”。

如何使用四元数来校正标记坐标?我真的坚持了一段时间,任何解决方案都会对我有很大帮助。在此先感谢。

使用 scipy.spatial.transform import Rotation 我可以获得标记的给定 (X,Y,Z) 的旋转矩阵、欧拉角或旋转矢量。下图显示了从动作捕捉传感器获取的一组点。

我的代码:

from scipy.spatial.transform import Rotation as R
quat=[-0.018853,0.801030,0.022920,0.597888]  #A,B,C,D quaterion of a point (x,Y,Z)
r = R.from_quat([quat])
rot_matix=r.as_dcm() #rotation matrix 
rot_vector=r.as_rotvec()

这是我从四元值中获得的信息。 https://i.stack.imgur.com/G9VsR.png

标签: pythontranslationquaternions

解决方案


推荐阅读