MATLAB - 使用 YOLO 和基于 PCA 的目标检测,对 UR5e 的半结构化智能垃圾箱拣选进行 Gazebo 仿真

系列文章目录


前言

本示例展示了在 Gazebo 中使用 Universal Robots UR5e cobot 模拟智能垃圾桶拣选的详细工作流程。本示例提供的 MATLAB 项目包括初始化、数据生成、感知、运动规划和积分器模块(项目文件夹),可创建完整的垃圾桶拣选工作流程。


一、打开项目


要开始使用,请单击文档中的 "打开实时脚本 "或使用 openExample 函数打开示例实时脚本并访问支持文件。

openExample('urseries/GazeboSimulationSemiStructuredIntelligentBinPickingUR5eExample');

 然后,打开 Simulink™ 项目文件。

prj = openProject('BinPickingUR5eSimulation/BinPickingGazeboSimExampleProject.prj');

二、拣选工作流程


该图显示了模拟 cobot 仓储拣选应用的一个完整执行周期所涉及的操作。

 在这个例子中,我们的目标是半结构化分仓,这是一种基于仓复杂性的分类。

从高层次来看,这项任务可分为两个主要模块:

  1. 视觉处理/感知模块
  2. 运动/轨迹规划模块

2.1 视觉处理或感知模块

这一工作流程可进一步分为两个方面:

  • 使用 RGB 数据进行物体检测,即使用深度学习基于 RGB 和深度(RGBD)数据进行物体分割
  • 使用三维点云数据进行物体姿态估算,可用于估算已识别物体的姿态,以便进行运动规划

下图显示了使用 YOLOv4 和基于 PCA 的算法进行物体姿态估计的步骤。

感知过程包括两个主要步骤、

  1. 训练和验证: 训练基于 RGB 的物体检测网络 (YOLOv4),并根据测试数据集进行验证。
  2. 在线物体检测: 使用预训练的 YOLOv4 网络和主成分分析 (PCA) 对实时原始 RGBD 数据进行姿态估计。

 

2.2 运动规划模块


该工作流程可分为两个部分:

  1. 智能运动规划,从检测到的部件中挑选运动规划逻辑
  2. 目标执行,使用 UR5e cobot 执行取放操作的轨迹规划

规划器入口点函数是根据使用 manipulatorRRT 算法示例对 UR5e 进行运动规划和刚体树仿真(用于垃圾拣选)中使用的算法设计的。该算法使用 manipulatorRRT 规划方法,并在碰撞环境中拾取和放置轨迹。

使用 C/C++ 代码生成器生成 MEX 函数可帮助您减少计算时间,从而缩短取放周期时间。

有关为基于操纵器RRT 算法的规划器创建 MEX 函数的更多信息,请参阅在感知环境中生成操纵器运动规划代码示例。

此外,请参阅此示例,进一步了解如何生成 MEX 函数以加速 MATLAB 程序的执行。

三、所需软件


本例需要

  1. MATLAB

  2. Robotics System Toolbox

  3. Computer Vision Toolbox

  4. Deep Learning Toolbox

  5. Image Processing Toolbox

  6. ROS Toolbox

  7. Optimization Toolbox

  8. Statistics and Machine Learning Toolbox

  9. MATLAB Coder (Required if you want to use MEX function for motion planner)

  10. Robotics System Toolbox Support Package for Universal Robots UR Series Manipulators

  11. Computer Vision Toolbox Model for YOLO v4 Object Detection support package (Required if you want to train a detector model)

本示例需要下载虚拟机以使用预配置的 Gazebo 环境。有关详细信息,请参阅以下部分。

 

四、下载预装 Gazebo 环境的 ROS 虚拟机


您可以下载已安装 ROS 和 Gazebo 的虚拟机镜像。该虚拟机基于 Ubuntu® Linux®,已进行预配置以支持 ROS Toolbox™ 中的示例。

  • 从本页 "下载虚拟机 "部分提供的链接下载并安装 ROS 虚拟机。
  • 启动虚拟机。

4.1 本模拟示例中使用的插件和 ROS 驱动程序

  1. 模拟 Universal 机器人 UR5e
  2. 模拟 Robotiq Epick 抽吸式机械手
  3. 模拟英特尔® RealSense™ 深度摄像头 D415

4.2 Universal 机器人 UR5e 使用的接口


Universal Robots UR 系列机械手机器人系统工具箱支持包的功能用于对模拟 Universal Robots UR5e 进行轨迹和关节控制。该支持包提供 universalrobot 类,可通过 ROS 接口进行控制。有关其他功能的更多信息,请参阅此文档页面。

4.3 用于 Robotiq Epick 吸爪的接口


为了模拟虚拟吸力机械手,我们使用了 ROS gazebo_plugin 的定制修改真空机械手插件。该插件的修改方式是在末端执行器本体和目标物体之间创建一个虚拟关节,并设定一定的偏移距离,以便吸附物体。在此过程中,它还会消除物体的碰撞,从而避免与垃圾箱或其他部件发生碰撞。

在激活和停用插件时,会使用 activateVacuum 和 deactivateVaccum 函数来调用相应的 ROS 服务。

4.4 用于英特尔® RealSense™ D415 的接口


为实现感知目的,本应用程序开发使用了英特尔® RealSense™ D415 摄像头深度模块。MATLAB 通过 ROS 使用 IntelRealSense ROS 驱动程序建立连接。除了这些 ROS 驱动程序,D415 传感器的 Gazebo 传感器还使用了 realsense_gazebo_plugin 插件。

用于训练 YOLOv4 深度学习网络的数据集就是使用该传感器创建的。

注:所有插件和修改都包含在下载的虚拟机中,并附有所需的许可证文件。

 4.5 本示例中使用的模拟物理设置


为演示使用 Universal Robots UR5e 的智能垃圾桶拣选工作流程,本示例使用了一个长方体物体和一个矩形垃圾桶。

长方体和垃圾箱的尺寸在 initializeParametersForBinPickingSimulation.m 脚本中提供。

4.6 刚体树和实际环境设置


在本示例中,我们将为运动规划创建一个刚体树(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");

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/240426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

幺模矩阵-线性规划的整数解特性

百度百科:幺模矩阵 在线性规划问题中,如果A为幺模矩阵,那么该问题具有最优整数解特性。也就是说使用单纯形法进行求解,得到的解即为整数解。无需再特定使用整数规划方法。 m i n c T x s . t . { A x ≥ b x ≥ 0 \begin{align*} min \quad…

通过使用Gromacs和MM-PBSA计算结合能

关键词:Gromacs、MM-PBSA、结合能、受体、配体 当前,Gromacs已经被广泛应用在生物,材料等领域的模拟计算,其便捷、灵活等特点受到广泛研究人员的青睐。在模拟领域,至关重要的一类问题是计算体系内的自由能。例如两个蛋…

word导入导出-Apache POI 和 Poi-tl

word 文件读取 使用Apache POI Word 进行读取文件 使用poi 时如果报ClassNotFoundException 等错误,请注意请求以下maven 文件的版本 Apache POI Word 说明文档:Apache POI Word 说明文档 maven 解决依赖冲突教程:https://www.cnblogs.com/…

rqt_graph使用说明

其中右边的:/rosout是一个topic 也就是一个话题 /rosout是一个topic 也是一个话题 可以看到凡是在rqt_graph里面用长方形标识的全都是话题 通过观察可以发现:凡是用椭圆标识的全都是节点 如果切换为Nodes only视图会发现: 所说的no…

frp配置多端口内网穿透?frp多端口怎么配置?

使用frp作为内网穿透的时候,有时候,我们需要多个端口穿透,怎么配置呢? 更有frp相关👉:凯哥个人博客,搜索frp 思考: 我们知道frp要想内网穿透,需要配置服务端和客户端。…

前端页面资源放入oss 对象存储问题

1.需求 当我们做的是微信公众号的时候 需要微信重定向登录 在此时 我们需要在微信后台配置重定向域名 但是微信后台只能配置三个 如果有很多H5 公众号重定向登录的需求 我们该怎么做呢 2.解决 肯定我们需要配置 首页的 一般前端打包项目 都是由index.html 当然 我们实现 都是…

【MVT_1703230471】基于Python NLTK分词、词云、LDA主题分类及GPT情感分类

【Talk is cheap】 1 数据探索 case idcase outcome case title case text 0 Case1 cited Alpine Hardwood (Aust) Pty Ltd v Hardys Pty Lt... Ordinarily that discretion will be exercised s... 1 Case2 cited Black v Lipovac [1998] FCA 699 ; (1998) 217 AL... The gen…

【WPF.NET开发】创建模板

本文内容 何时创建 ControlTemplate先决条件创建 ControlTemplate使用模板添加触发器使用 VisualState 使用 Windows Presentation Foundation (WPF),可以使用自己的可重用模板自定义现有控件的可视结构和行为。 可以对应用程序、窗口和页面全局应用模板&#xff…

[Android]CheckBox复选框

在Android开发中,复选框(CheckBox)是一种常用的控件,用于让用户在多个选项中进行选择。它通常用于表单中,让用户选择多个选项或者进行多项操作。在本篇博客中,我们将介绍如何在Android应用中使用CheckBox控…

《Python》面试常问:深拷贝、浅拷贝、赋值之间的关系(附可变与不可变)【用图文讲清楚!】

背景 想必大家面试或者平时学习经常遇到问python的深拷贝、浅拷贝和赋值之间的区别了吧?看网上的文章很多写的比较抽象,小白接收的难度有点大,于是乎也想自己整个文章出来供参考 可变与不可变 讲深拷贝和浅拷贝之前想讲讲什么是可变数据类型…

Win10 使用 Nmap 扫描 Andorid 设备开放端口

Nmap Nmap 是 网络探测工具和安全/端口扫描器。 官网链接 Nmap参考指南(Man Page) 官网下载地址 Downloading Nmap Nmap 下载安装 到官网下载对应操作系统的安装包, 默认配置,一直下一步安装即可。安装过程中备份下安装路径,后续用到。…

九州未来大模型一体机,加速AI应用落地

2023年已接近尾声,对于中国人工智能产业而言,这一年注定成为一个重要的转折点。在不同行业中,人工智能的应用不断涌现,众多大模型如雨后春笋般涌现。然而,在这一发展过程中也不可避免地出现了一系列问题,包…

vcruntime140_1.dll文件下载安装方法分享,如何安全修复vcruntime140_1.dll

遇到vcruntime140_1.dll文件遗失是用户在使用Windows操作系统时较为普遍遭遇到的一个问题,它归类于动态链接库(DLL)文件缺失的常见情形。在今天的内容里,我们将深入探讨如何正确地下载和安装vcruntime140_1.dll文件,以…

Google推出Gemini AI开发——10年工作经验的Android开发要被2年工作经验的淘汰了?

应用程序中利用 Gemini 前言(可略过)、使用 Gemini Pro 开发应用程序正文、Android Studio 中构建Gemini API Starter 应用第 1 步:在 AI 的新项目模板的基础上进行构建第 2 步:生成 API 密钥第 3 步:开始原型设计 正文…

Mybatis之增删改查

目录 一、引言 二、Mybatis——增 举例:添加用户 三、Mybatis——删 举例:删除用户 四、Mybatis——改 举例:修改用户 五、Mybatis——查 六、注意 END: 一、引言 书接上回,我们在了解完mybatis之后,肯…

STM32F4 HAL流水灯Proteus仿真

源码下载:https://download.csdn.net/download/zlkk00/88654405

CSS基础小练习

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>圣诞节快乐</title><style>/*设置背景色*/body{background-image:linear-gradient(green 50%,red 50%);background-size:100% 30px;}/*让div在页面居中*/#text{…

20231223使用Rockchip原厂的Android11调通Firefly的AIO-3399J开发板上的AP6356S

20231223使用Rockchip原厂的Android11调通Firefly的AIO-3399J开发板上的AP6356S 2023/12/23 14:14 开发板&#xff1a;Firefly的AIO-3399J【RK3399】 SDK&#xff1a;rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBrick】 Android11.0.tar.bz2…

C# Onnx yolov8n csgo player detection

目录 效果 模型信息 项目 代码 下载 C# Onnx yolov8n csgo player detection 效果 模型信息 Model Properties ------------------------- date&#xff1a;2023-12-22T15:01:08.014205 author&#xff1a;Ultralytics task&#xff1a;detect license&#xff1a;AGPL-…

学会这套Pytest接口自动化测试框架,击败99%的人

Pytest 的下载安装 1、Python3 使用 pip install -U pytest 安装 2、查看 pytest 版本信息 pytest --version 3、pytest 用例的执行规则&#xff1a; ①测试文件以 test_xx.py 命名需要以 test_开头&#xff08;或_test 结尾&#xff09; ②测试类以 Test_开头&#xff0…