本示例展示了在 Gazebo 中使用 Universal Robots UR5e cobot 模拟智能垃圾桶拣选的详细工作流程。本示例提供的 MATLAB 项目包括初始化、数据生成、感知、运动规划和积分器模块(项目文件夹),可创建完整的垃圾桶拣选工作流程。
要开始使用,请单击文档中的 "打开实时脚本 "或使用 openExample 函数打开示例实时脚本并访问支持文件。
openExample('urseries/GazeboSimulationSemiStructuredIntelligentBinPickingUR5eExample');
然后,打开 Simulink™ 项目文件。
prj = openProject('BinPickingUR5eSimulation/BinPickingGazeboSimExampleProject.prj');
该图显示了模拟 cobot 仓储拣选应用的一个完整执行周期所涉及的操作。
在这个例子中,我们的目标是半结构化分仓,这是一种基于仓复杂性的分类。
从高层次来看,这项任务可分为两个主要模块:
这一工作流程可进一步分为两个方面:
下图显示了使用 YOLOv4 和基于 PCA 的算法进行物体姿态估计的步骤。
感知过程包括两个主要步骤、
该工作流程可分为两个部分:
规划器入口点函数是根据使用 manipulatorRRT 算法示例对 UR5e 进行运动规划和刚体树仿真(用于垃圾拣选)中使用的算法设计的。该算法使用 manipulatorRRT 规划方法,并在碰撞环境中拾取和放置轨迹。
使用 C/C++ 代码生成器生成 MEX 函数可帮助您减少计算时间,从而缩短取放周期时间。
有关为基于操纵器RRT 算法的规划器创建 MEX 函数的更多信息,请参阅在感知环境中生成操纵器运动规划代码示例。
此外,请参阅此示例,进一步了解如何生成 MEX 函数以加速 MATLAB 程序的执行。
本例需要
MATLAB
Robotics System Toolbox
Computer Vision Toolbox
Deep Learning Toolbox
Image Processing Toolbox
ROS Toolbox
Optimization Toolbox
Statistics and Machine Learning Toolbox
MATLAB Coder (Required if you want to use MEX function for motion planner)
Robotics System Toolbox Support Package for Universal Robots UR Series Manipulators
Computer Vision Toolbox Model for YOLO v4 Object Detection support package (Required if you want to train a detector model)
本示例需要下载虚拟机以使用预配置的 Gazebo 环境。有关详细信息,请参阅以下部分。
您可以下载已安装 ROS 和 Gazebo 的虚拟机镜像。该虚拟机基于 Ubuntu® Linux®,已进行预配置以支持 ROS Toolbox™ 中的示例。
Universal Robots UR 系列机械手机器人系统工具箱支持包的功能用于对模拟 Universal Robots UR5e 进行轨迹和关节控制。该支持包提供 universalrobot 类,可通过 ROS 接口进行控制。有关其他功能的更多信息,请参阅此文档页面。
为了模拟虚拟吸力机械手,我们使用了 ROS gazebo_plugin 的定制修改真空机械手插件。该插件的修改方式是在末端执行器本体和目标物体之间创建一个虚拟关节,并设定一定的偏移距离,以便吸附物体。在此过程中,它还会消除物体的碰撞,从而避免与垃圾箱或其他部件发生碰撞。
在激活和停用插件时,会使用 activateVacuum 和 deactivateVaccum 函数来调用相应的 ROS 服务。
为实现感知目的,本应用程序开发使用了英特尔® RealSense™ D415 摄像头深度模块。MATLAB 通过 ROS 使用 IntelRealSense ROS 驱动程序建立连接。除了这些 ROS 驱动程序,D415 传感器的 Gazebo 传感器还使用了 realsense_gazebo_plugin 插件。
用于训练 YOLOv4 深度学习网络的数据集就是使用该传感器创建的。
注:所有插件和修改都包含在下载的虚拟机中,并附有所需的许可证文件。
为演示使用 Universal Robots UR5e 的智能垃圾桶拣选工作流程,本示例使用了一个长方体物体和一个矩形垃圾桶。
长方体和垃圾箱的尺寸在 initializeParametersForBinPickingSimulation.m 脚本中提供。
在本示例中,我们将为运动规划创建一个刚体树(RigidBodyTree)环境。
本流程图将引导您了解感知、运动规划和积分器模块的可用脚本。
初始化脚本 initializeParametersForBinPickingSimulation.m 会在打开此 MATLAB 项目时自动运行。该脚本定义了感知、运动规划和积分器项目模块中使用的一些重要参数。您可以在 Initialize 文件夹中找到该脚本,也可以运行下面的命令打开该脚本。如果使用不同的设置,请相应更改参数。
open("initializeParametersForBinPickingSimulation.m");
运行此命令打开脚本,以便使用 Gazebo 仿真环境生成合成数据。
open("DatasetGenerationUsingGazeboExample.mlx");
运行此命令可打开感知工作流程脚本。该脚本涵盖从训练到物体姿态估计工作流的整个感知流程。
open("DetectionAndPoseEstimationforCuboidSim.mlx");
运行此命令可打开运动规划工作流程的脚本。该脚本包括运动规划模块的 RigidBodyTree 仿真工作流程和 MEX 函数生成步骤。
open("BinPickingMotionPlanningMEXGenerationSim.mlx");
运行此命令可打开积分器工作流程的主脚本。该脚本展示了如何使用感知和运动规划模块,利用仿真 Universal Robots UR5e 创建完整的垃圾拣选应用工作流程。
open("UR5eSimulationBinPickingApplicationIntegratedScript.mlx");