【仪酷LabVIEW AI工具包案例】使用LabVIEW AI工具包+YOLOv5结合Dobot机械臂实现智能垃圾分类

‍‍🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主
🎄所属专栏:『仪酷LabVIEW AI工具包案例』
📑上期文章:『【YOLOv9】实战二:手把手教你使用TensorRT实现YOLOv9实时目标检测(含源码)』
🍻本文由virobotics(仪酷智能)原创

🥳欢迎大家关注✌点赞👍收藏⭐留言📝订阅专栏

文章目录

  • 🧩前言
  • 🧭一、垃圾分类系统介绍
  • ⚒️二、LabVIEW工具包的介绍和使用
    • 2.1 机械臂控制工具包
    • 2.2 仪酷AI工具包
  • 💻️三、环境搭建
  • 🎨四、项目实践
    • 4.1 相机的调用
    • 4.2 AI算法模块
    • 4.3 机械臂控制模块
    • 4.4 垃圾分类系统
  • 💻项目源码
  • 🎯总结

🧩前言

Hello,大家好,我是你们的virobotics(仪酷智能),一个深耕于LabVIEW和人工智能领域的开发工程师。

之前很多朋友私信博主,希望可以写一些LabVIEW AI的应用案例,所以博主创建了一个新专栏【仪酷LabVIEW AI工具包案例】,之后,将会不定期在该专栏中更新汇集最新的AI工具包实践案例包括但不限于:工业瑕疵检测、文字识别、物品抓取分拣等创新应用,各位也可订阅此专栏,以便及时接收更新~

机械臂与LabVIEW视觉工具包的结合是现代工业自动化和机器人技术领域的重要发展方向之一。LabVIEW作为一种图形化编程环境,提供了强大的数据采集、分析和控制功能,而机械臂则能够实现高精度的运动控制和操作。将这两者结合起来,可以实现更加智能化和灵活的生产线,提高生产效率和产品质量。这种结合可以用于各种应用,如装配、品质检测、物料处理等,为生产线带来更高的效率和精度。

在本文中,将为大家分享Dobot机械臂和LabVIEW工具包结合YOLOv5实现垃圾分类,并将各种垃圾区分放入对应垃圾桶的整个过程。

🧭一、垃圾分类系统介绍

实现机械臂与视觉结合的垃圾分类过程,首先要熟悉机械臂的控制以及视觉分类的原理。只有将两部分的原理了解后,我们将两部分结合在一起才会更容易理解一些,本文的垃圾分类应用是在LabVIEW软件的控制下实现的,包括通过机械臂控制工具包对机械臂的运动规划及末端抓取任务,通过视觉工具包对摄像头的调用采集图像信息,通过AI算法工具包导入YOLOv5目标检测模型来实现目标检测功能。将三个工具包模块结合在一起就可以实现我们垃圾分类的过程。下面我将详细介绍我们的模块及系统。
在这里插入图片描述

⚒️二、LabVIEW工具包的介绍和使用

2.1 机械臂控制工具包

Dobot Magician SDK for NI LabVIEW 是上海仪酷智能科技有限公司(VIRobotics)为 Dobot Magician 量身打造的一款基于 LabVIEW 的图形化开发工具。

该 SDK 分为 Dobot_VI 和 Dobot_Serial 两种版本,一共包含约 270 个函数。每一种版本都可以在 LabVIEW 环境下控制机械臂的运动、配置运动参数、设置IO 状态、指导末端执行器的动作等等。再配合 LabVIEW 自带的其他编程函数,就可以让机器臂完成更加复杂且灵活多变的任务。这也是本 SDK 的优势之一。

在LabVIEW上安装该工具包,可以实现PC与Dobot机械臂的通信交互,包括自动校正,运动规划,末端控制,吸取抓住等功能。
在这里插入图片描述

2.2 仪酷AI工具包

在labview上安装AI工具包,可以调用USB或者网络摄像头,并将采集的图像经过算法模块实现目标检测、语义分割、图像分类、文字识别、人脸识别等任务。本次项目中,我们使用的是AI视觉工具包以及ONNX工具包。
在这里插入图片描述
在这里插入图片描述

💻️三、环境搭建

  1. 部署本项目时所用环境
  • 操作系统:Windows 64
  • LabVIEW:2018及以上 64位版本
  • AI视觉工具包(techforce_lib_opencv_cpu):1.0.1.26及以上版本
  • ONNX工具包GPU版(virobotics_lib_onnx_cuda_tensorrt)1.0.0.16及以上版本
  • 仪酷Object Detection工具包(virobotics_lib_object_detection):1.0.0.5及以上版本
  • 机械臂工具包:virobotics_lib_dobot_magician_sdk_for_ni_labview-1.0.0.14.vip
  1. 软件下载及安装
  • AI视觉工具包下载与安装参考:
    https://blog.csdn.net/virobotics/article/details/123656523
  • ONNX工具包GPU版下载与安装参考:
    https://blog.csdn.net/virobotics/article/details/124998746
  • LabVIEW Object_Detection工具包下载与安装
    https://blog.csdn.net/virobotics/article/details/132529219

🎨四、项目实践

4.1 相机的调用

部署相机的调用模块可对物体进行实时图像采集,除了USB相机,也可以使用网络相机记以及其他常见相机(比如海康相机)。
在这里插入图片描述

4.2 AI算法模块

导入训练好的目标检测模型和标签文件,经过算法模块,可实现目标检测的功能,下图中为基于yolov5训练好的垃圾分类模型。
在这里插入图片描述

4.3 机械臂控制模块

对于机械臂的控制我们首先要分成三部分来完成,鱼头部分就是控制模块与机械臂的通信部署,鱼身部分则是进行运动规划,末端抓取的vi部署,鱼头,鱼身,鱼尾构成了我们机械臂进行自动化抓取的整个模块。
在这里插入图片描述

4.4 垃圾分类系统

当我们对三个模块进行了解部署后,将3个模块进行连接调用就生成了我们垃圾分类系统。
在这里插入图片描述
整个系统的运行效果可在B站搜索:**使用仪酷LabVIEW AI工具包+YOLOv5结合机械臂实现智能垃圾分类**进行观看学习。

💻项目源码

如需源码,请在一键三连并订阅本专栏后评论区留下邮箱

🎯总结

以上就是今天要给大家分享的内容,希望对大家有用。如有笔误,还请各位及时指正。后续我们将为大家更新更多关于AI模型在LabVIEW的部署案例,欢迎大家关注博主。我是virobotics(仪酷智能),我们下篇文章见~

如您想要探讨更多关于LabVIEW与人工智能技术,欢迎加入我们的技术交流群:705637299。进群请备注:CSDN

如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏、👍订阅专栏

推荐阅读

【YOLOv5】LabVIEW+TensorRT的yolov5部署实战(含源码))
【YOLOv5】手把手教你使用LabVIEW ONNX Runtime部署 TensorRT加速,实现YOLOv5实时物体识别(含源码)
【YOLOv8】实战一:手把手教你使用YOLOv8实现实时目标检测
【YOLOv8】实战二:YOLOv8 OpenVINO2022版 windows部署实战
【YOLOv8】实战三:基于LabVIEW TensorRT部署YOLOv8
【YOLOv9】实战一:在 Windows 上使用LabVIEW OpenVINO工具包部署YOLOv9实现实时目标检测(含源码)
【YOLOv9】实战二:手把手教你使用TensorRT实现YOLOv9实时目标检测(含源码)
👇技术交流 · 一起学习 · 咨询分享,请联系👇

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

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

相关文章

C++之STL-priority_queue和仿函数的讲解

目录 一、priority_queue的介绍和使用 1.1 priority_queue的介绍 1.2 priority_queue的基本接口 二、仿函数的介绍 2.1 基本概念 2.2 适用场景 三、模拟实现priority_queue 3.1 向上调整算法 3.2 向下调整算法 3.3 整体框架 一、priority_queue的介绍和使用 1.1 prio…

基于卷积神经网络的一维信号降噪(简单版,MATLAB)

简单演示一下基于卷积神经网络的一维信号降噪,有个大致印象即可。 %% Plot the previous training CNN. set_plot_defaults(on) load(denoiser_sparse.mat); h1{1} double(conv1); h1{2} double(conv2); h1{3} reshape(double(conv3),[8,1,17]); figure(1) [r,c…

Java_异常

介绍 编译时异常: 除RuntimeException和他的子类,其他都是编译时异常。编译阶段需要进行处理,作用在于提醒程序眼 运行时异常: RuntimeException本身和其所有子类,都是运行时异常。编译阶段不报错,是程序…

python之enumerate()函数使用总结

enumerate() 函数是一个内置函数,用于在迭代过程中同时获取元素的索引和值。它返回一个枚举对象,包含了索引和对应的元素。 1. enumerate() 函数的语法 如下: enumerate(iterable, start0) 参数说明: iterable:必需…

C++怎样产生随机数

C怎样产生随机数? 这里要用到的是 rand() 函数和 srand() 函数 rand() 会返回一随机数值, 范围在 0 至 RAND_MAX ,RAND_MAX 定义在 stdlib.h, 其值根据系统配置设定 例如&#xff1a; #include<stdio.h> #include<stdlib.h> int main() {for(int i0;i<10;i)…

Java17 --- SpringCloud之Nacos

目录 一、下载nacos并运行 1.1、创建9001微服务作为提供者 1.2、创建80微服务作为消费者 二、naocs配置中心规则与动态刷新 2.1、创建3377微服务 2.2、在nacos中创建配置文件 三、nacos数据模型之Namespace-Group-Datald 3.1、DatalD方案 3.2、Group方案 3.3、Name…

python软件开发遇到的坑-相对路径文件读写异常,不稳定

1. os.chdir()会影响那些使用相对路径读写文件的程序&#xff0c;使其变得不稳定&#xff0c;默认情况下&#xff0c;当前工作目录是主程序所在目录&#xff0c;使用os.chdir会将当前工作目录修改到其他路径。 资料&#xff1a; python相对路径写对了却报错是什么原因呢&#…

前端工程化之---git hooks

git hook 和 husky 1、git hook 让我们可以在 git 执行一些行为的前后时机&#xff0c;执行一些脚本。 2、比如 pre-commit &#xff0c;能够在我们真正提交 commit 之前先执行一段代码&#xff0c;如果这段代码报错&#xff08;exit 1&#xff09;&#xff0c;提交会被取消&…

蜜蜂收卡系统 加油卡充值卡礼品卡自定义回收系统源码 前后端开源uniapp可打包app

本文来自&#xff1a;蜜蜂收卡系统 加油卡充值卡礼品卡自定义回收系统源码 前后端开源uniapp可打包app - 源码1688 卡券绿色循环计划—— 一项旨在构建卡券价值再利用生态的社会责任感项目。在当前数字化消费日益普及的背景下&#xff0c;大量礼品卡、优惠券因各种原因未能有效…

mib browser读取mib文件的oid(飞塔防火墙为例)

在配置zabbix监控的时候,配置监控项最为麻烦,一般我们都会套用模板,这种方式比较简单,但是有些设备就是没有现成的zabbix模板,怎么办? 今天我们使用MIB Browser来获取设备SNMP的OID,然后加入zabbix 。 1.什么是MIB Browser SNMP客户端工具MIB Browser, 全名iReasonin…

ARP详解

2.4 ARP 如图2-10所示&#xff0c;当网络设备有数据要发送给另一台网络设备时&#xff0c;必须要知道对方的网络层地址&#xff08;即IP地址&#xff09;。IP地址由网络层来提供&#xff0c;但是仅有IP地址是不够的&#xff0c;IP数据报文必须封装成帧才能通过数据链路进行发送…

RuntimeError: Tensor must have a last dimension with stride 1

我在使用torch.view_as_complex将weight转化为复数时&#xff0c;遇到了这样一个错误&#xff1a;由于我在对weight使用view_as_complex之前使用了F.interpolate函数进行了分辨率调整&#xff0c;因此只需对张量weight添加.contiguous()即可。

安卓抓包总结

背景 接手公司项目安卓xhs项目&#xff0c;该项目为android数据采集接口&#xff0c;该接口目前只能调用一次&#xff0c;然后就被平台风控&#xff0c;导致无法使用&#xff0c;需要恢复该接口继续使用&#xff0c;所以需要抓包分析调用的接口&#xff0c;对比接口参数和请求都…

拿到B端系统设计需求该如何入手,这样做准没错!

在拿到B端系统设计需求后&#xff0c;以下是一些入手的步骤和方法&#xff1a; 理解需求 首先&#xff0c;仔细阅读和理解所提供的需求文档。了解系统的目标、功能需求、用户需求、非功能需求等方面的要求。如果有任何不清楚或模糊的地方&#xff0c;及时与需求提出方进行沟通…

vue+sortablejs来实现列表拖拽——sortablejs的使用

sortablejs官网:https://sortablejs.com/ 最近在看form-builder组件&#xff0c;发现里面有用到sortablejs插件&#xff0c;用于实现拖拽效果。 但是这个官网中的配置&#xff0c;实在是看不懂&#xff0c;太简单又太复杂&#xff0c;不实用。 下面记录一下我的使用&#xff…

Redis 实战之RDB文件结构

RDB文件结构 databases 部分key_value_pairs 部分value 的编码字符串对象列表对象集合对象哈希表对象有序集合对象INTSET 编码的集合ZIPLIST 编码的列表、哈希表或者有序集合 总结AOF持久化的实现命令追加 AOF 文件的写入与同步小结 在本章之前的内容中&#xff0c; 我们介绍了…

C++优先级队列priority_queue模拟实现

priority_queue模拟实现 1. priority_queue介绍2. priority_queue使用2.1 priority_queue显示定义2.2priority_queue接口使用 3. 仿函数4. priority_queue模拟实现4.1 向上调整算法4.2 向下调整算法4.3 实现priority_queue的接口4.4 使用[仿函数](https://legacy.cplusplus.com…

Springboot+Vue项目-基于Java+MySQL的流浪动物管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

MCP3008-I/SL 模数转换器ADC SPI接口 模拟信号采集

MCP3008-I/SL 模数转换器ADC 贴片SOIC16 MCP3008-I/SL 是一款模数转换器&#xff08;ADC&#xff09;&#xff0c;属于 SAR&#xff08;逐次逼近寄存器&#xff09;架构的 ADC。它具有以下特点&#xff1a; 8 通道单 ADC 最大采样率&#xff1a;200ksps&#xff08;千样点每秒…

为什么byte 的取值范围是 [-128,127]

在计算机中&#xff0c;byte&#xff08;字节&#xff09;是存储数据的基本单位&#xff0c;通常用8位二进制数字表示一个字节。在字节中&#xff0c;最高位的最左边一位是符号位&#xff0c;用来表示正负号&#xff0c;值为0表示正数&#xff0c;值为1表示负数。 如果将byte定…