姿势围绕原点的 3D 旋转

3D Rotation of a pose around origin

我想围绕原点变换姿势。我的姿势包含一个位置 [x,y,z] 和一个表示为四元数的方向 [x,y,z,w]。我有一个 4x4 变换矩阵,用于围绕原点平移和旋转姿势的位置。

np.dot(transforma_mat, np.transpose(np.append(pose.position, 1)))

因此,随着原点的移动和旋转,姿势的起点也随之移动和旋转。但是,我不确定如何旋转姿势的方向。

我可以使用 this library 将四元数转换为欧拉角和旋转矩阵(反之亦然)。

故事: 有一个物体在移动和旋转。机器人末端执行器在物体移动和旋转之前有一个姿势。我想更新末端执行器的姿势,使其随物体移动和旋转。

我不确定如何用四元数做到这一点,但是,您可以将方向定义为两个正交向量(遵守右手或左手规则)。

然后您可以简单地将坐标系中的这些向量乘以变换矩阵以获得变换后的方向。

可以找到相对于另一个对象的运动平移一个对象的一般方法 here

尝试将旋转转换为矩阵。欧拉角对我不起作用。

据我所知,您可以通过旋转矩阵获得欧拉角和四元数。因此,对旋转矩阵进行移动,然后获取方向(通常,转换矩阵可以为您提供有关方向的所有信息)

有了四元数就很容易了。首先,将旋转矩阵转换为四元数 q 和平移向量 t。

点的平移和旋转很简单。先把翻译加到点上。然后,只需将四元数 q 应用于平移点 x。这里将点x扩展为一个权重w=0的四元数。乘法是哈密顿积(四元数乘法)。

x' = q * x * q'

为了旋转与每个姿势相关联的四元数 q2,将你的四元数 q 从左边乘以 q2:

q2' = q2 * q