机器人操纵的坐标轴变换

Coordinate axis transformation for robot manipulation

这是一个相当通用的基于机器人的线性代数问题,我正在寻找一种基于算法的数学方法来解决我的问题并获得理解,而不是严格基于 ROS 的答案。

我正在尝试使用机械臂自定义拾取对象。我有一个单独的感知模块,可以检测物体并估计抓取的姿势。然而,它在相机框架中并遵循坐标框架的图像处理约定,即右:

+x-axis, forward: +z-axis, down: +y-axis

从这个感知模块中,我得到了两个值——3x3 旋转矩阵和 1x3 平移向量。 例如,说 T1

Tra: [0.09014122 0.16243269 0.6211668 ]
Rot: [[ 0.          0.03210089 -0.99948463]
[ 0.          0.99948463  0.03210089]
[ 1.         -0.          0.        ]]

(即我必须抓住那个位置和那个方向) 我的机器人底座到摄像机的变换是在右手坐标系中可以理解的。这是相同的示例,例如 T2

translation: 
  x: 0.0564581200121
  y: 0.318823912978
  z: 0.452250135698
rotation: 
  x: -0.6954818376
  y: 0.693982204231
  z: -0.13156524004
  w: 0.13184954074

我正在使用 scipy.spatial.transform 将我的姿势从一种格式转换为另一种格式,因此实际实现可以处理任何格式的姿势。

现在,要从机器人那里得到物体的姿态,就是一个简单的变换T2乘以T1。但是,T1 遵循与 T2 不同的约定。

我该怎么做?使用此示例的详细说明将不胜感激!我试图从头开始理解,因此我更愿意自己得出一个变换矩阵来应用于上述矩阵以获得最终姿势。

这个问题可能也属于 Mathematics Stack Exchange 和 ROS,但正如我提到的,我正在尝试分析它。

如果要通过乘以T2*T1得到物体的位姿,T1、T2必须在齐次坐标系中,其中T1、T2包含旋转矩阵和平移。 T1, T2 的大小应该是 4x4 3D。

在您的例子中,T2 的方向用四元数表示。将其转换为旋转矩阵并使用旋转矩阵、平移创建齐次矩阵。