这是一个相当通用的基于机器人的线性代数问题,我正在寻找一种基于算法的数学方法来解决我的问题并获得理解,而不是严格地基于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,但是正如我所提到的,我正在尝试以分析的方式进行研究。