今天完成了阶段 5:学习抓取姿态生成(Grasp Planning)和阶段 6:ROS2 + MoveIt2的学习

首先这里区分两个概念

Object Pose:物体位姿,(x,y,z)

Grasp Pose:抓取位姿,这里不仅涉及到(x,y,z)还有抓取的姿态roll,yaw,pitch 

另外这里特别说明一下Grasp Pose里的(x,y,z)是物体相对于机械人base_link下的坐标

这些在阶段四感知和TF坐标变换下完成

因此,将阶段五综合以上总结:

RGB-D视觉阶段通过点云和TF完成物体从相机坐标系到机器人base_link坐标系的转换,得到物体在机器人坐标系中的位姿;随后进入Grasp Planning阶段,根据物体几何信息生成相对于物体的抓取姿态(Grasp Pose),再通过坐标变换得到机器人末端执行器在base_link下的目标位姿,最后由IK和运动规划完成执行。

这里的抓取规划主要负责:朝什么方向抓,以什么姿态,手接触物体哪个位置,手掌张开多大角度,以多大力气去抓

但是这里有一个问题是灵巧手抓住物体是在什么阶段开始的,经过学习后,才知道,它几乎跨越了抓取规划和运动规划,最终在执行阶段真正开始

这里需要补充一个知识
六维力传感器:x,y,z,方向的力以及x,y,z方向的力矩

怎么判断是否抓起来了,看z轴方向的力是否增大,怎么判断物体是否有倾斜,看x,y方向的力矩

另外是谁负责生成抓取位姿呢,主要是由GraspNet负责,它并不是负责生成一个,而是生成多个,经过评分选择最高的那个抓取规划位姿

GraspNet输入的是3D点云,输出的是多个抓取位姿候选

好的,进入阶段六,由于阶段六提前学过了,这里我主要学习了配置

大致分为一下配置:

机器人模型: URDF  机械人的结构

机器人结构: SRDF  MoveIt理解机器人

计算关节角:kinematics.yaml

寻找路径:ompl_planning.yaml

限制运动:joint_limits.yaml

执行:ros2_controllers.yaml

另外,说一下Movelt 2, Movelt 2 负责:运动规划,碰撞检测,轨迹生成

这里Movelt 2 的核心节点是 Move_group ,它就是MoveIt2运动规划服务器

最后讲解一下  实际中抓取一个物体 阶段难度

因为我曾经实际中帮过别人一起做过抓取物体,(手臂为7个关节灵巧手),首先最难的是内参和外参以及坐标变换的问题,这个直接导致抓不准

其次就是抓取规划和运动规划了,很多时候发现运动到一半不动了,并且有时候出现轨迹很不寻常的现象,这也是需要解决的

最后在复习一下:

相机内参标定:
相机不动,人移动棋盘格。

手眼标定:
相机固定在头部,标定板固定在手腕,机器人移动手臂。(这里可能需要3D打印机和刚性转接板)

上面步骤真的很重要

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐