百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

视觉信息辅助激光导航AGV的应用

bigegpt 2024-11-20 12:38 5 浏览

针对移动机器人激光导航定位取卸货过程,发生的货物位置偏差大而导致的取卸货不成功的情况,本文给出了一种解决方法,即视觉辅助运用模板匹配,提取感兴趣区域,边缘检测提取轮廓找中心点来检测货物托盘所在的位置,再通过数据通信转换,将视觉检测结果传输给移动机器人,从而可保证其能够连续稳定地进行取卸货。

目前AGV导航定位使用中较为普遍的技术是激光定位技术。激光传感器被固定在AGV顶部,扫描与其在一个固定平面上的反光板与移动机器人的距离,并依据反馈的距离数据构建成导航地图。在导航过程中,AGV规划的前往地图中上位机下发的已知的目标地点执行任务,同时AGV实时反馈位置信息和任务执行情况,如图1。

过程中由于货物的存放可能存在人为改变,或是AGV某一次存放位置偏差较大等,这会造成下一次AGV装配过程的失败,执行效率降低的同时存在一定不安全性,因此本文提出在实际应用中利用激光导航定位的同时,结合视觉传感器获取信息丰富的特点,对视觉信息进行基于灰度值的模版匹配算法与轮廓边缘检测算法找出待取货物下托盘的中心位置,来保证AGV能够进行正常的任务操作。

一、系统结构

系统主要包含三个模块:1.AGV系统调度;2.视觉辅助;3.数据通信。AGV系统硬件结构,如图2。

激光定位选择比较成熟的基于反光板的定位算法,物料管理系统下发任务,AGV管理监控计算机将任务具体下发分配给AGV,车到相应站台执行任务。视觉辅助运用模板匹配,提取感兴趣区域,边缘检测提取轮廓找中心点来检测货物托盘所在的位置,数据通信部分则主要进行通信转换,将视觉检测结果传输给AGV,AGV依据得到数据,对车位置进行相应调整,同时包含一些对HMI与相机实时通信交互。

1.激光雷达

测激光雷达采用倍加福与科尔摩根共同开发的LS2000,是脉冲测距技术的二维激光扫描仪,具有很高的重复精度和较短的响应时间,其扫描角度360°,测量距离可达30米,10~50Hz扫描频率,激光传感器安置在车体顶部,激光导航基于使用反光板的自由制导。使用反光板更新位置,根据跟踪车辆运动的里程表(编码器数据),车辆位置会不断更新。使用反射器的量值更新位置。导航始终处于活动状态。激光扫描的2D平面数据信息来进行激光导航定位与地图构建。

2.单目相机

用易福门O3D303的3D摄相机,能够提供352×264的RGB图像及深度图像,每次测量输出 23000 个距离和灰度值,可进行距离、液位或体积的视觉评估,我们这里主要用于距离视觉评估,孔径角为60×45,有效深度范围0.3~8.0m,通过以太网接口进行通信。其在车体上安装,如图3。

3.通信系统

AGV与相机的通信用贝加莱的触摸屏进行数据转换,HMI与车之间用CAN通信,触摸屏和相机之间用UDP通信,图4通信流程图给出了彼此之间具体的通信步骤和遇到问题的一些处理方式,数据传输采用实时通讯,以保证相机的正常工作和相机与屏之间通信的正常,从而保证整个系统成功运行。

4.OpenCV

OpenCV 是一个开源的代码部分用C/C++编写的计算机视觉库,能够运行在 Windows、Mac、Linux等操作系统上,其对 Python、Ruby、Java 等语言均具有良好兼容性,具有相应接口,OpenCV用一个简单的计算机视觉框架帮助程序开发人员高效地开发出相关的程序。

二、图像处理

1.模板匹配

模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配部分的技术,这种方法原理简单,具有较高匹配精度,遍历图像中的每一个位置,比较模板与各位置相似程度,当匹配度量值足够高时,就认为在搜索图中找到了目标。模板匹配的实现函数:matchTemplate(srcImage ,templateImage , result , MatchMethod );其实现流程图与模板和搜索结果如图5、图6、图7,MatchMethod采用标准相关性系数匹配,其采用相关系数(标准化的协方差)作为相似性度量。

2.边缘检测与定位中心点

基于模板匹配出的感兴趣区域,将其从搜索结果图中单独提取出来进行边缘检测,边缘检测系统由加载感兴趣区域、模糊化降噪、Canny算子边缘检测、寻找轮廓、绘制轮廓、定位轮廓中心点组成。对于寻找到的所有轮廓,通过设定阈值移除过大或过小轮廓,最终得到矩形轮廓,进而对矩形区域寻找中心点,提取绘制的轮廓,如图8。

三、实验结果与分析

在已有激光导航系统中加入视觉定位数据,并在室内环境进行测试,实验目的是测试在货物存放已有误差的条件下,视觉定位数据信息发送给激光导航的AGV,AGV依据它进行位置调整后进行取卸货。首先带有任务的AGV到达指定位置等待视觉系统拍照处理,对处理后的灰度图进行模板匹配、将匹配出的模板部分提取出来进行边缘检测轮廓提取,最后根据检测的矩形轮廓找寻到要定位的中心点,并经过坐标转换求得车相对中心点的偏移,最终得到的检测结果如图9,

实验结果如图10。

可见,视觉系统可以较为精准的得出偏移信息,实现了AGV更为有效精准的任务执行流程。

四、总结与展望

激光定位能够实现较高精度水平的定位,但在上位机已经下达所需要取卸货位置后,AGV会严格按照任务命令执行,到达位置是在误差范围内固定的,存在装载失败、取不到货物的情况,AGV 输送系统的主要特点把物流优化到最佳状况做到效率最优化,故加入视觉辅助信息,极大增强货物存卸位置的灵活性,极大提高了工作效率,减少了现场调试人员的任务工作量,视觉信息的补充使得最终移动机器人可以快速准确地完成工作,为任务快速高效完成提供助力。

相关推荐

悠悠万事,吃饭为大(悠悠万事吃饭为大,什么意思)

新媒体编辑:杜岷赵蕾初审:程秀娟审核:汤小俊审签:周星...

高铁扒门事件升级版!婚宴上‘冲喜’老人团:我们抢的是社会资源

凌晨两点改方案时,突然收到婚庆团队发来的视频——胶东某酒店宴会厅,三个穿大红棉袄的中年妇女跟敢死队似的往前冲,眼瞅着就要扑到新娘的高额钻石项链上。要不是门口小伙及时阻拦,这婚礼造型团队熬了三个月的方案...

微服务架构实战:商家管理后台与sso设计,SSO客户端设计

SSO客户端设计下面通过模块merchant-security对SSO客户端安全认证部分的实现进行封装,以便各个接入SSO的客户端应用进行引用。安全认证的项目管理配置SSO客户端安全认证的项目管理使...

还在为 Spring Boot 配置类加载机制困惑?一文为你彻底解惑

在当今微服务架构盛行、项目复杂度不断攀升的开发环境下,SpringBoot作为Java后端开发的主流框架,无疑是我们手中的得力武器。然而,当我们在享受其自动配置带来的便捷时,是否曾被配置类加载...

Seata源码—6.Seata AT模式的数据源代理二

大纲1.Seata的Resource资源接口源码2.Seata数据源连接池代理的实现源码3.Client向Server发起注册RM的源码4.Client向Server注册RM时的交互源码5.数据源连接...

30分钟了解K8S(30分钟了解微积分)

微服务演进方向o面向分布式设计(Distribution):容器、微服务、API驱动的开发;o面向配置设计(Configuration):一个镜像,多个环境配置;o面向韧性设计(Resista...

SpringBoot条件化配置(@Conditional)全面解析与实战指南

一、条件化配置基础概念1.1什么是条件化配置条件化配置是Spring框架提供的一种基于特定条件来决定是否注册Bean或加载配置的机制。在SpringBoot中,这一机制通过@Conditional...

一招解决所有依赖冲突(克服依赖)

背景介绍最近遇到了这样一个问题,我们有一个jar包common-tool,作为基础工具包,被各个项目在引用。突然某一天发现日志很多报错。一看是NoSuchMethodError,意思是Dis...

你读过Mybatis的源码?说说它用到了几种设计模式

学习设计模式时,很多人都有类似的困扰——明明概念背得滚瓜烂熟,一到写代码就完全想不起来怎么用。就像学了一堆游泳技巧,却从没下过水实践,很难真正掌握。其实理解一个知识点,就像看立体模型,单角度观察总...

golang对接阿里云私有Bucket上传图片、授权访问图片

1、为什么要设置私有bucket公共读写:互联网上任何用户都可以对该Bucket内的文件进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可...

spring中的资源的加载(spring加载原理)

最近在网上看到有人问@ContextConfiguration("classpath:/bean.xml")中除了classpath这种还有其他的写法么,看他的意思是想从本地文件...

Android资源使用(android资源文件)

Android资源管理机制在Android的开发中,需要使用到各式各样的资源,这些资源往往是一些静态资源,比如位图,颜色,布局定义,用户界面使用到的字符串,动画等。这些资源统统放在项目的res/独立子...

如何深度理解mybatis?(如何深度理解康乐服务质量管理的5个维度)

深度自定义mybatis回顾mybatis的操作的核心步骤编写核心类SqlSessionFacotryBuild进行解析配置文件深度分析解析SqlSessionFacotryBuild干的核心工作编写...

@Autowired与@Resource原理知识点详解

springIOCAOP的不多做赘述了,说下IOC:SpringIOC解决的是对象管理和对象依赖的问题,IOC容器可以理解为一个对象工厂,我们都把该对象交给工厂,工厂管理这些对象的创建以及依赖关系...

java的redis连接工具篇(java redis client)

在Java里,有不少用于连接Redis的工具,下面为你介绍一些主流的工具及其特点:JedisJedis是Redis官方推荐的Java连接工具,它提供了全面的Redis命令支持,且...