这是一个相当通用的基于机器人的线性代数问题,我正在寻找一种基于算法的数学方法来解决我的问题并得到一个理解,而不是一个严格基于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,但正如我所提到的,我试图从分析的角度来处理它。
发布于 2020-05-18 08:17:57
如果你想通过乘以T2*T1得到物体的姿态,T1,T2都必须在齐次坐标中,其中T1,T2包含旋转矩阵和平移。而T1的大小,T2的3D应该是4x4。

在您的示例中,T2的方向以四元数表示。将此转换为旋转矩阵,并使用旋转矩阵创建齐次矩阵,进行平移。
https://stackoverflow.com/questions/61838032
复制相似问题