当您获得本文档时,可至 RVS 开发者社区下载 binpick_runtime.zip 深框抓取教程配套数据。解压后其内容应包括:

box 包含了本案例中演示所用的料框点云。
group 包含了常用的Group。
pipe_binpick 包含了本案例所使用的离线数据以及 AI 训练的权重及配置文件。
robot_data 包含了本案例中所使用的机器人模型以及工具模型,如果您需要其他模型请前往机器人模型库中下载。
说明
若无机器人模型,请联系图漾RVS开发人员进行添加。
scene_files 包含了本案中所使用的障碍物模型以及目标物体的点云及其相应的抓取策略。
collision_binpick_demo.rvs 用于深框抓取演示,内部包含 AI 识别、模板匹配、机器人避撞等功能模块。
说明
如不想调整 binPickDemo 中的文件路径。可以将 binpick_runtime 重命名为 runtime 。
备注
本文档所使用 RVS 软件版本为 1.8.268 ,若在使用中出现问题或版本不兼容问题,请及时与我们反馈,发送邮件 rvs-support@percipio.xyz !
运动规划功能介绍
基础定义介绍
抓取
机器人对检测目标进行抓取或者吸取(或其他方式),这里统一用抓取表示。
说明
下述运动规划功能模块的有关说明均以深框抓取应用场景为例,并且默认使用避撞功能。
料框和标准料框
料框即为盛放检测目标的容器。对于简单的凹槽形式的料框,外形是立方体形状,内凹进去的部分也是立方体形状,RVS 将其定义为标准料框,并为其提供了标准的模型创建方法和定位方法。
抓取目标
被机器人末端工具抓取的对象。每一个抓取目标都有自己的物理模型和体坐标系,在RVS的深框抓取应用中,默认目标在料框中的放置面是其体坐标系的 Oxy 平面,下述提到的目标长度、宽度、厚度,也默认是目标体坐标系下的x轴、y轴、z轴长度。
抓取目标模型点云
本案例中提供抓取模板模型点云。RVS 支持 polydata 数据格式进行模型点云制作,详细操作步骤请查阅制作模板点云工具。
RVS 使用的抓取目标模型文件,既可以是目标的完整模型文件,也可以是目标的上表面模型文件。当目标厚度较厚时,如果只用目标上表面模型参与避撞运算,可能导致实际抓取时机器人撞到了目标的侧面或者从模型内部穿进去,此时客户必须提供目标的完整数模文件给RVS进行避撞运算;当目标厚度较薄时,RVS 只需要将目标的上表面模型参与避撞运算即可,此时客户无需提供完整模型文件,RVS 可以直接基于目标实物拍摄上表面点云,进行点云处理后即可作为目标的上表面模型。
备注
RVS 也可以通过拍摄点云的方式生成完整数模文件,但是精度较低并且步骤繁琐,如有需要可以联系图漾 RVS 开发人员。
坐标系
RVS 运动规划应用中涉及到的坐标系,包含机器人坐标系、相机坐标系、抓取目标的体坐标系、料框的体坐标系、其余障碍物的体坐标系等等。我们在运动规划运算时,需要统一转换成机器人坐标系,所以我们在下文的操作流程中会提到手眼标定,目的就是坐标系转换。
备注
机器人坐标系下,机器人自身的姿态表示方法又包含法兰盘坐标表示法、末端工具坐标系等。
另外,上述抓取目标的体坐标系,在使用上表面点云模型或完整点云模型时,模型在 z 轴方向上的中心存在偏移。
抓取策略
一个抓取策略对应了一组基于该目标模型坐标下的抓取姿态模式,包含预抓位姿态、抓取位姿态。
实际操作中,机器人法兰盘(或工具末端)先移动到预抓位姿态,然后顺着目标的 z 轴方向移动到抓取位,然后进行吸气或者夹爪等操作,继而进行后续的自定义操作。如下图所示。

深框抓取流程
机器人建模
当 RVS 机器人模型库中没有所需机器人时,请提供机器人数模文件,并联系图漾开发人员对机器人进行建模。对于负载工具,如吸嘴、吸盘、夹爪等,需要客户自行提供相应的 3D 模型。如果相机需要安装在机器人末端,客户需要自行设计相机支架并提供支架的模型。我们将为您提供图漾相机的数模文件,并提供技术支持和解决方案。
手眼标定
依据相机的安装方式进行手眼标定,详情请见手眼标定工具文档。
本案例采用眼在手外(eyetohand)模式,标定结果已保存至 pipe_binpick/eyetohand_handeye_calib.txt
。
深框抓取主流程
本章节将详细介绍深框抓取的操作流程和搭建工程过程的主要模块。
操作流程
加载 collision_binpick_demo.xml 。
交互面板如下图所示:
自动抓取
:勾选后,在单张图片中自动抓取所有可抓取物体。单次触发
:点击后,遍历下一张图片。手动抓取
:如没有勾选自动抓取
,则手动点击此按钮时,可在单张图片中按顺序逐个抓取物品。工具索引
:输入 0/1/2 切换不同的工具。可抓物
:勾选后在 3D 视图中显示所有可抓取物点云。障碍物
:勾选后在 3D 视图中显示所有障碍物。碰撞点位
:勾选后在 3D 视图中显示碰撞点位。抓取面板
:显示可抓物类型、名称、坐标与抓取状态。
点击 RVS 运行按钮,此时资源算子和部分算子会进行初始化。如下图所示:
打开 RVS_AI_Center 软件启动 AI 推理服务。
点击交互面板中
单次触发
按钮。触发后,在抓取面板中显示第一张图片中可抓取的物品姿态,此时抓取状态为“-”。默认手动抓取模式。此时点击
手动抓取
,以最优抓取策略抓取第一个目标物体,RVS自动引导机器人执行抓取动作并在 3D 视图中显示。同时,抓取面板
实时显示抓取状态。抓取完成后,状态显示为“√”。若勾选
自动抓取
,则自动抓取所有可抓取物品。当日志中提示“在场景资源 scene_files/graspObjects 中,没找到任何有效抓取目标。”,则点击交互面板中的
单次触发
按钮。将切换下一组离线数据进行抓取,循环此操作。当日志中提示“无法为抓取类型 objectA 找到抓取解,碰撞信息请查看场景资源算子面板->运动规划页面。”,同时机器人停止抓取,说明机器人无可抓策略。可右击
场景资源
算子打开算子面板,查看碰撞信息。打开
场景资源面板
进入运动规划
界面,点击结果说明
即可在3D视图中查看碰撞细节。上述即为本案例的操作流程。点击交互面板中的
单次触发
按钮,可循环遍历pipe_binpick/data文件夹中的数据。
流程介绍
collision_binpick_demo.rvs ,即主流程工程文件,如下图所示。
资源类算子管理
添加避撞物
设置手眼标定转换参数
图漾相机采集器
算子输出离线数据的点云、彩色图、彩色图标定参数。添加
Load
算子加载手眼标定结果:算子名称 →
加载手眼标定结果
类型 → pipe_binpick/eyetohand_handeye_calib.txt
创建一个的新的 Group 用于将图漾相机拍摄的点云转换至机器人坐标系下:Group名称 →点云转换至机器人坐标系。
在
点云转换至机器人坐标系
Group中 导入group/眼在手外坐标转换 Group。在
点云转换至机器人坐标系
Group中添加元素空间变化
算子,将点云利用手眼标定结果转换至机器人坐标系下。算子名称→CloudToRobot
类型 → 点云
点云 → 可视
算子连接如下图所示:
运行 RVS,触发 Trigger 算子查看点云转换结果。
添加场景点云
添加
立方体切割
算子框选出场景点云。右击算子,打开
立方体裁剪面板
。点击加载点云,拖动立方体进行裁剪。具体使用方法请参考 CropboxSegment 立方体切割在线文档。切割完成后,使用障碍物操控算子中
添加场景点云
类型将切割后点云添加至障碍物中。算子连接如下图所示:运行 RVS 后,触发 Trigger 算子。在
场景资源面板
中查看场景点云是否已添加至障碍物中。如果没有显示,可以点击更新
。
AI 识别
说明
根据目标是否堆叠和粘连,判断是否需要AI识别,如需要则还需进行数据采集、标注、训练。请参考自动拆垛案例。
导入 group 文件夹中
AI推理分割点云(GPU版本)
Group 。该 Group 用于进行 AI 推理后将点云进行排序并截取点云列表输出。算子连接如下图所示:
点云预处理
寻找物品并添加
添加
可抓物操控
算子,用于对抓取物进行模板匹配,找到抓取点。算子名称 → 可抓物操控
类型 → 寻找物品
初始位
位置距离筛选阈值 → 0.1
初始位
最大相关点距离 → 15
初始位
运行RVS,触发Trigger算子。点击
场景资源面板
查看可抓物坐标。
是否自动抓取
添加
或
、两个触发器
算子至算子图。机器人设定位置
规划抓取策略
机器人抓取运动
添加
机器人运动控制
算子,根据上述输出的抓取策略,通过移动关节列表
引导机器人运动。算子名称 →机器人关节运动、
类型 → 移动关节列表
运行RVS,在3D 视图中查看效果。
单次采图抓取所有可抓物
当前功能是采集一张图像并抓取排序后的第一个可抓取物体。通过连接镜像端口,可以实现单次采集图像并抓取图中所有可抓取的物体。
将
机器人关节运动
结束端口连接至MirrorOutput
,将MirrorInput
连接至或
算子。算子连接如下图所示:
运行 RVS ,在3D 视图中查看机器人抓取运动规划。
抓取工具切换
添加
机器人操作工具
,使用更换末端工具
类型,根据切换索引,可直接切换抓取工具。具体功能实现请参考机器人操作工具在线文档。至此完整的Binpick流程已完成,完整的 RVS 已提供在binpick_runtime/ collision_binpick_demo.rvs 路径下。
交互面板创建
交互面板中的工具可以与算子图中算子属性的曝光和输出进行绑定,输入工具可以快速修改算子属性参数,输出工具可以快速查看算子的输出结果。
编辑交互面板
右击交互面板,选择
解锁
,此时交互面板进入编辑状态
添加输入工具的 复选框
、按钮
等至交互面板中
自动抓取→复选框
在算子图中找到
是否自动抓取
,在属性面板中将激活
曝光打开
右击
复选
,选择显示控件面板
在曝光参数中选择
MainGroup/深框抓取demo/是否自动抓取
参数框,点击绑定按钮
点击
确定
,该算子参数与该控件绑定成功
单次触发→按钮
在算子图中找到
Trigger
,在属性面板中将触发器
曝光打开
右击
按钮
,选择显示控件面板
在曝光参数中选择
MainGroup/深框抓取demo/Trigger
参数框,点击绑定按钮
点击
确定
,该算子参数与该控件绑定成功。
手动抓取→按钮
在算子图中找到
手动抓取
,在属性面板中将触发器
曝光打开
右击
按钮
,选择显示控件面板
在曝光参数中选择
MainGroup/深框抓取demo/手动抓取
参数框,点击绑定按钮
点击
确定
,该算子参数与该控件绑定成功。
工具索引 → 标签 + 数码管
双击”label”,修改名称为“工具索引:”
在算子图中找到
ChangeRobotTool
,在属性面板中将激活
曝光打开
右击
数码管
,选择显示控件面板
在曝光参数中选择
MainGroup/深框抓取demo/ChangeRobotTool
参数框,点击绑定按钮
点击
确定
,该算子参数与该控件绑定成功。
抓取机器人:标签+复选框
双击”label”,修改名称为“抓取机器人”
在算子图中找到
SceneResource
算子,在属性面板中将抓取机器人曝光打开
右击
复选框
,选择显示控件面板
在曝光参数中选择 MainGroup/Resource/SceneResource 参数框,点击绑定
按钮
点击
确定
,该算子参数与该控件绑定成功
可抓物、障碍物、碰撞点位与抓取机器人配置一致。
抓取面板:直接添加即可。
交互面板配置如下图所示: