这是一个相当通用的基于机器人学的线性代数问题,我正在寻找一种基于算法的数学方法来解决我的问题并获得理解,而不是一个严格基于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不同的约定
我该怎么办?使用此示例进行详细解释将不胜感激!我试图从零开始理解,因此我更愿意自己得出一个变换矩阵,应用于上面的矩阵,以获得最终姿势
这个问题可能也属于数学堆栈交换和ROS,但正如我所提到的,我试图从分析的角度来处理它
如果要通过乘以T2*T1获得对象的姿势,则T1、T2必须在齐次坐标中,其中T1、T2包含旋转矩阵和平移。T1,T2的大小应该是4x4,用于3D
在您的例子中,T2的方向用四元数表示。将其转换为旋转矩阵,并使用旋转矩阵、平移创建齐次矩阵
相关问题 更多 >
编程相关推荐