用于机器人操作的坐标轴变换

问题描述 投票:1回答:1

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

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

+ x轴,向前:+ z轴,向下:+ y轴

从这个感知模块中,我得到两个值-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遵循不同的约定。

我将如何处理?高度赞赏使用此示例的详细说明!我想从头开始理解,因此,我希望自己得出一个变换矩阵,将其应用于上述变换矩阵以获得最终姿势。

这个问题可能也属于数学堆栈交换和ROS,但是正如我所提到的,我正在尝试以分析的方式进行研究。

python linear-algebra ros robotics coordinate-transformation
1个回答
0
投票
如果要通过乘以T2 * T1来获得对象的姿势,则T1,T2都必须在齐次坐标中,其中T1,T2包含旋转矩阵和平移。对于3D,T1,T2的大小应为4x4。

enter image description here

在您的情况下,T2的方向以四元数表示。将其转换为旋转矩阵,并使用旋转矩阵(转换)创建齐次矩阵。

© www.soinside.com 2019 - 2024. All rights reserved.