首先先重新总结一下抓取平台的核心硬件:
机械臂:我们的是kinova gen2 jaco2 七自由度机械臂
抓手:我们的是Robotiq 2F-85
相机:Intel realsense D435
抓取平台要想正常运转,则要会控制机械臂,控制抓手,控制相机。【前面的博客除了控制相机外,其它两个大致讲了原理。(realsense D435的资料太多,随便找找就能用)】
还需要标定手眼关系,上一个博客也做了介绍。
为什么要标定手眼关系呢?
我们粗略捋一下实际抓取的一个流程:
1. 相机在设置的采图点拍照--> 2. 代码根据图像确定当前场景的最佳抓取位置--> 3. 机械臂运动到这个最佳抓取位置--> 4. 抓手执行抓取动作。
步骤2中的最佳抓取位置和步骤3中的最佳抓取位置,是空间中的同一个位置,但在代码里并不是能够直接得到的,需要一些变换。
图像中确定的最佳抓取位置,是在相机坐标系下的;机械臂运动到的抓取位置,是在机器人基坐标系下的。这其间的转换,用到了手眼关系。
(表达能力确实不太行)
抓取中有哪些坐标系?
简单而言,有像素坐标系,相机坐标系,机器人末端坐标系,机器人基坐标系。
我们根据相机内参和深度图,能把像素坐标转换成相机坐标系下的三维坐标;
手眼关系(眼在手上),能把相机坐标系下的坐标转换到末端坐标系;
末端位姿,能把末端坐标系的坐标转换到基坐标系。
手眼关系中的眼一般是彩色相机。对于RGB-D相机而言,RGB相机和深度相机是两个不同的坐标系。如果坐标是在深度相机坐标系的坐标,还需根据外参关系,将这个坐标转换到RGB相机坐标系。
Realsense D435用起来真的方便:
可以直接获取对齐到彩色相机的深度图,这时候可以理解成深度相机坐标系和RGB相机坐标系已经重合,无需再进行转换。
也可以直接获取相机外参,不用我们辛辛苦苦标定。
相机内参的获取更是理所当然。