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

系列文章目录

 


前言

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


 

一、打开项目


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

openExample('urseries/GazeboSimulationSemiStructuredIntelligentBinPickingUR5eExample');

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

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

二、拣选工作流程


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

3b08c1b60b6f43e5b941e84261a4813b.png

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

ea39841ee8f9441d8d4103a0a6f2de8f.png

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

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

2.1 视觉处理或感知模块

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

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

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

278907ee9aeb430382fe73e81833f57b.png

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

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

 4bfcba6b5fb44a0abda58ec94e316936.png

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 的智能垃圾桶拣选工作流程,本示例使用了一个长方体物体和一个矩形垃圾桶。

8f39869f09a544b09a77f86865f5ba9e.png

626fa9ec4b4143768d925a0685ea15b1.png

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

4.6 刚体树和实际环境设置


在本示例中,我们将为运动规划创建一个刚体树(RigidBodyTree)环境。

 02ebac2d428e44f686345d11d89d1d31.png

 本流程图将引导您了解感知、运动规划和积分器模块的可用脚本。

fe89c1874c074c68b0ffa0b7aafbfea5.png

五、参数初始化


初始化脚本 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.rhkb.cn/news/226142.html

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

相关文章

[Angular] 笔记 11:可观察对象(Observable)

chatgpt: 在 Angular 中,Observables 是用于处理异步数据流的重要工具。它们被广泛用于处理从异步操作中获取的数据,比如通过 HTTP 请求获取数据、定时器、用户输入等。Observables 提供了一种机制来订阅这些数据流,并可以在数据到达时执行相…

启明智显开源项目分享|基于Model 3c芯片的86中控面板ZX3D95CM20S-V11项目软硬件全开源

前言: 本文为4寸 480*480 RGB接口IPS全面触屏的86中控面板(RT-ThreadLVGL)软硬件开源干货内容,该项目是综合性非常强的RTOS系列项目!项目主控芯片使用 Model 3c,整体实现了简化版本的86中控面板的功能需求…

git 如何将某个分支的某个提交复制到另外一个分支

请直接去看原文: 原文链接:git 如何将某个分支的某个提交复制到另外一个分支_gitlab里面的markdown文件可以复用其他分支的吗-CSDN博客 --------------------------------------------------------------------------------------------------------------------------------…

深入浅出:分布式、CAP 和 BASE 理论(荣耀典藏版)

大家好,我是月夜枫,一个漂泊江湖多年的 985 非科班程序员,曾混迹于国企、互联网大厂和创业公司的后台开发攻城狮。 在计算机科学领域,分布式系统是一门极具挑战性的研究方向,也是互联网应用中必不可少的优化实践&…

百度每天20%新增代码由AI生成,Comate SaaS服务8000家客户 采纳率超40%

12月28日,由深度学习技术及应用国家工程研究中心主办的WAVE SUMMIT深度学习开发者大会2023在北京召开。百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰现场公布了飞桨文心五载十届最新生态成果,文心一言最新用户规模破1亿,截…

【数据库系统概论】第6章-关系数据库理论

真别看吧,抄ppt而已啊 文章目录 6.1 引言6.2 规范化6.2.1 函数依赖6.2.2 码6.2.3 范式(Normal Form)6.2.4 BC范式6.2.5 规范化小结 6.1 引言 我们有这样一张表: but 为啥这样设计呢?由此引出怎样设计一个关系数据库…

三维可视化智慧工地源码,数字孪生可视化大屏,微服务架构+Java+Spring Cloud +UniApp +MySql

源码技术说明 微服务架构JavaSpring Cloud UniApp MySql;支持多端展示(PC端、手机端、平板端);数字孪生可视化大屏,一张图掌握项目整体情况;使用轻量化模型,部署三维可视化管理,与一线生产过程相融合&#…

设计模式----解释器模式

一、简介 解释器模式使用频率并不高,通常用来构建一个简单语言的语法解释器,它只在一些非常特定的领域被用到,比如编译器、规则引擎、正则表达式、sql解析等。 解释器模式是行为型设计模式之一,它的原始定义为:用于定义…

自动生成数控加工的轨迹刀具轨迹阿基米德螺旋线(3D)

文章目录 1. 阿基米德螺旋线2. 生成步骤目标: 基于点云自动生成阿基米德螺旋线轨迹点 针对的是半球形模型效果 1. 阿基米德螺旋线 阿基米德螺旋线(Archimedean spiral)是一种数学曲线,由古希腊数学家阿基米德(Archimedes)在公元前225年左右首次研究和描述。这条曲线的方…

GIT如何重新生成ssh密钥过程

GIT如何重新生成ssh密钥过程 一、生成密钥前需要把之前的密钥删除吆 第一步:重新配置用户名和邮箱( Git Bash 或命令窗口) 1、配置用户命令:git config --global user.name “xxxxx” 2、配置邮箱命令:git config …

windows进行udp端口转发,解决项目中服务器收不到组播数据的问题

说明 windows7的netsh interface portproxy命令只支持tcp端口转发 如果要进行udp端口转发可以使用sokit 运行sokit 端口转发(以为tcp作为讲解,udp类似) 选择转发器 输入监听地址(SRC地址)和端口 输入转发地址&am…

springboot整合minio做文件存储

一,minio介绍 MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小&…

微信邀请函怎么做_重塑品牌形象,点燃营销之火

在数字化时代,微信已成为人们生活中不可或缺的一部分。微信邀请函,作为一种新型的邀请方式,不仅具有时尚感,更承载着邀请者的诚意与创意。今天,让我们一起探讨如何为主题撰写一篇关于微信邀请函的1000字营销软文&#…

ES6的一些高级技巧

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

智能优化算法应用:基于人工蜂鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于人工蜂鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于人工蜂鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工蜂鸟算法4.实验参数设定5.算法结果6.…

使用VScode通过内网穿透在公网环境下远程连接进行开发

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…

ZETA落地合肥、宜城南方水泥,纵行科技携手中才邦业助力水泥企业数智化管理

近日,合肥南方水泥、宜城南方水泥落地ZETA预测性维护方案,通过在水泥厂内搭建ZETA网络,并在B类及C类主辅机设备上安装ZETA系列端智能传感器,进行数据采集和监测设备运行状态、以及早期故障警报和诊断,实现水泥生产设备…

阿里云 ARMS 应用监控重磅支持 Java 21

作者:牧思 & 山猎 前言 今年的 9 月 19 日,作为最新的 LTS (Long Term Support) Java 版本,Java 21 正式 GA,带来了不少重量级的更新,详情请参考 The Arrival of Java 21 [ 1] 。虽然目前 Java 11 和 Java 17 都…

主编夜话,2023 技术圈儿大事件盘点丨 RTE 开发者日报 Vol.115

开发者朋友们大家好: 这里是「 RTE 开发者日报 」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

【Fastadmin】通用排序weigh不执行model模型的事件

在model模型类支持的before_delete、after_delete、before_write、after_write、before_update、after_update、before_insert、after_insert事件行为中,我们可以快捷的做很多操作,如删除缓存、逻辑判断等 但是在fastadmin的通用排序weigh拖动中无法触发…