1. 引言
中型组足球机器人在进行功能上的迭代更新时,往往需要应用新型的算法技术,如本文中机器人需要采用YOLOv8迭代机器人的视觉检测功能。
但是新型的算法技术所依赖的操作系统往往出现与机器人依赖的操作系统不匹配的情况,因此基于解决此类兼容问题并进行功能开发的性能测试的研究目标,本文进行了对套接字、命名管道、消息队列三种通信方式的对比分析,选择消息队列作为通信方式实现了一种跨系统进程间的通信,以此实现了一种对足球机器人基于YOLOv8模型的视觉处理功能测试方案。
研究的主要针对目前RoboCup中型组足球机器人视觉功能测试提出了一种简易的解决方案,创新点在于将消息队列技术应用于功能扩展,或可作为机器人迭代过程中进行功能测试的可行方案。
2. 研究目的
本研究的主要目的是解决足球机器人视觉检测程序开发中存在的版本兼容性问题。
足球机器人的控制程序通常需要在特定操作系统环境下运行,例如在旧版Windows XP系统上运行基于VC6.0的足球机器人控制程序。然而,在机器人的不断迭代中,为了适应不同比赛或工作环境的需求,需要快速开发新功能。通常,这种快速开发涉及使用现成的集成算法程序,例如视觉处理中的Python 包OpenCV。然而,许多功能强大的算法集成程序与相对陈旧的操作系统不兼容,使其难以集成到现有的机器人程序中。
在面对上述问题时,一个解决方案是全面替换机器人程序,使其适应更新的操作系统版本,并能够兼容新的集成式程序。然而,这种方法在某些情况下并不适用。特别是当机器人控制程序非常复杂,并包含大量依赖于当前操作系统环境的算法代码时,替换新的算法代码通常需要花费大量时间来解决新系统的兼容性问题。此外,这种方法虽然在长期内更加有效和正规,但不适合满足快速开发新功能的需求,且在某些情况下不切实际。而在特定类型的操作系统中适配的程序并不适合通过更新操作系统来解决集成化程序不兼容的问题。
因此,本研究旨在提出一种解决版本兼容性问题的解决方案,以便在短期内验证和实现新功能。具体来说,本研究关注足球机器人程序中的视觉处理功能,以探讨基于通信技术的解决方案,以解决版本兼容性问题。这将有助于提高机器人程序的灵活性,使其能够快速适应新的需求和环境,同时降低与操作系统更新相关的兼容性问题。
3. 机器人的基本介绍与通信需求分析
3.1. Water足球机器人系统介绍
3.1.1. Water足球机器人硬件系统
Water足球机器人是一种符合RoboCup中型组足球机器人标准的竞赛机器人,基本机型分为球员机和守门员机,具有不同的硬件结构。
视觉上采用了IC Capture的视觉采集器,使用单镜头获取视觉信息,采集显示见图1。
![](//html.hanspub.org/file/31-1543058x8_hanspub.png?20240103090822062)
图1. Water足球机器人的视觉成像
3.1.2. Water足球机器人代码结构
在王梁安子的《基于RoboCup中型组足球机器人的master选举算法改进》(2022年)中,详细介绍了该型号机器人的工作原理。Water足球机器人控制程序根据对场上视觉数据的处理分析实现自动控制,下位机安装在球员机器上,主要负责根据不同的状态机控制电机转动,从而实现对场地上机器人的实际操控,教练机则根据场上双方的攻守情况,控制多台下位机的状态,实现对整体的策略控制 [1] 。
3.2. 机器人的视觉处理系统介绍
为了实现有效的场地定位和物体识别,机器人程序采用了一套标准的场上物体的视觉数据来进行对照。这一过程包括两个主要步骤:阈值的标定和灰度值匹配。
3.2.1. 阈值的标定
机器人程序在进行场地定位时需要判断场地的大小、球的位置、球门位置等关键信息,因此需要一套标准的场上物体的视觉数据来进行对照。
阈值的标定是其中关键的预处理步骤,用于确定灰度或亮度阈值,以便在图像中分离感兴趣的对象。这些阈值的设定需要在特定场地运行标色程序,基于实时收集的视觉数据进行标定,以确保图像中的目标对象与背景区分开。
标色程序的界面如图2所示。
3.2.2. 通过简单的灰度值匹配实现的视觉处理
在足球机器人运行时,每当机器人视觉采集器获取到一定的图片数据后,控制程序便将其进行一定处理后与标准数据进行灰度值匹配,据此获得场上物体位置的大致判断。
灰度值匹配是一种用于检测特定灰度值或灰度范围的方法,用于检测场地上的特定对象或标志。Water机器人程序通过比较图像中的灰度值与预定义的阈值来识别物体,并确定其位置。这种方法可用于检测场地上的线条、标志或边界等不同元素,以此完成场地的定位。
3.3. 更新的视觉系统的功能需求
3.3.1. 更精准的视觉定位需求
在以上机器人视觉定位方式中,其对于颜色标记的要求尤为严格,这是确保定位稳定性的重要因素。然而,光照条件、场地磨损以及其他环境因素可能对物体的颜色产生一定的影响,这使得用户不得不频繁进行人工颜色标记,以适应环境变化。这种依赖于人工标记的方法不仅降低了效率,还容易受到标色不准确的问题困扰,进而导致机器人在进行定位时出现模糊或错误的情况,甚至可能引发多目标混淆,影响机器人策略的判断和执行。
3.3.2. 基于深度学习算法的视觉数据处理
借助基于深度学习算法的视觉数据处理,有望有效解决上述视觉定位中的问题,但是需要Win10以上的操作系统作为依赖。深度学习算法具有自动学习和理解不同场景下物体特征的能力,不再依赖于严格的颜色标记。这些算法可以分析图像的内容,识别物体的形状、纹理和其他特征,从而实现更为精确的物体识别和定位。深度学习方法具有适应性强、高效的优点,能够应对各种环境条件的变化,从而显著提高机器人的定位准确性和稳定性。
4. 通信方案的对比
4.1. 套接字方法
套接字是一种通用的网络通信方法,通过套接字可以在网络上进行数据传输,支持多种协议(如TCP和UDP)。套接字主要可以分为流式套接字、原始套接字和数据报套接字三种不同的类型 [2] 。
套接字通信方法具有一系列显著的优点。首先,它被广泛认可为一种通信方式,简单而通用。套接字可应用于各种类型的应用,从网络通信到文件传输,从实时聊天到数据采集。其通用性使其成为开发者首选的通信方式之一,适用于多种应用场景。其次,套接字通常具备跨平台性。在徐鹏的《基于Socket的无线数据传输的驱动程序设计与实现》文中对于套接字技术的跨平台性及其技术进行了描述,由于Socket可基于JAVA的技术开发,无论是在Windows、Linux还是其他操作系统上都可应用套接字通信,因此该技术具有较强的跨平台兼容性,其研究通过Socket的端口进行文件传输,以Eclipse为开发平台,在安卓平台上搭建Socket的通信服务验证了这一方法的可行性 [3] 。
然而,套接字通信方法在解决本实验的具体问题时也存在一些明显的缺点。首先,它需要自行管理连接和数据传输。这意味着需要编写代码来建立和维护连接的生命周期,同时负责处理数据的分包和组装,以确保数据传输的可靠性。这一过程可能会增加编程的复杂度,尤其是在复杂的足球机器人中,同时由于机器人程序的高频率的循环执行,这种方式会降低机器人的响应速度。其次,套接字通信方法在高负载情况下可能会导致性能瓶颈。由于它需要进行复杂的数据复制和操作系统级别的调度,因此在需要高吞吐量的足球机器人视觉处理中可能会对性能产生负面影响。
4.2. 命名管道方法
命名管道是一种本地通信方法,允许进程之间在同一台计算机上进行快速数据交换,适用于进程间通信。基本通信原理如图3。
![](//html.hanspub.org/file/31-1543058x10_hanspub.png?20240103090822062)
Figure 3. Schematic diagram of the named pipeline communication
图3. 命名管道通信原理图
本地通信在解决版本兼容性问题方面具有一些显著的优点。在《基于命名管道和异构通信机制的多应用场景下驱动升级策略》(2020)一文中针对电化学遗留系统驱动不兼容新的操作系统的问题,提出一种基于命名管道和异构通信机制的驱动升级策略。使用命名管道作为中间件,来完成上位机与下位机的通信,从而减少设备对驱动的依赖,提高通信的灵活性 [4] 。首先,本地通信,特别是使用命名管道,能够实现快速数据交换。这有助于不同版本的机器人程序之间快速传递数据,从而解决了版本兼容性问题。旧版本程序可以通过管道将数据传递给新版本程序,而不需要全面替换整个程序。
然而,本地通信在本项目实际应用中也有一些缺点,特别是在解决版本兼容性问题时。首先,本地通信局限于同一台计算机上的进程之间的通信。这对于需要远程协作或跨多台计算机的应用程序来说是不适用的。在这种情况下,需要考虑其他通信机制,如网络通信,以实现跨计算机的数据传递。
其次,本地通信的跨平台性有限。使用命名管道来解决版本兼容性问题可能会受到跨平台性问题的困扰。由于不同操作系统之间存在差异,特别是在管道的创建和管理方面,可能需要为不同平台开发特定的代码,以确保通信正常工作。这增加了维护和支持的工作量,尤其是在跨多个操作系统的环境中。
项目开始考虑采用本机双系统通信的方式来实现扩展功能,虽然在传输速率上具有优势,但是考虑到可适用性上,采用双系统的方式对于设备有一定的需求,同时在完成视觉处理功能扩展,因此双系统仅作为一种可行的方向考虑,主要选择通过网络通信的方式完成测试。
4.3. 消息队列方法
消息队列是一种高效的异步通信方法,通过消息队列,进程可以发送和接收消息,支持发布/订阅模式。基本通信原理如图4。
![](//html.hanspub.org/file/31-1543058x11_hanspub.png?20240103090822062)
Figure 4. Schematic diagram of the message queue communication
图4. 消息队列通信原理图
首先采用消息队列的可以实现有效的异步通信,消息队列允许发送者和接收者之间实现异步通信,从而消除了实时同步的需求。使用消息队列的异步处理机制,对突发流量以及访问高峰期进行削峰处理,增强系统消息处理能力,减少响应时间和服务器压力,提高系统的高并发处理能力.这种特性使得系统中的各个组件能够独立操作,提高了整体系统的响应性和灵活性,也可以满足跨系统视觉精准度分析功能的扩展功能的实现 [5] 。
其次,消息队列系统通常具有卓越的可扩展性,能够轻松处理大量消息的传输。这种高度可扩展的特性使得消息队列系统成为处理大规模分布式系统中的理想选择。系统的规模和负载的增加不会显著影响消息队列的性能,保证了系统的稳定性和可靠性。同时通信层具有应用无关性,能适应大多数具有多层结构和分布式计算能力的应用系统的底层通信需求 [6] 。
另一方面,消息队列方法通常包括消息队列服务器,这为系统提供了更高级的功能。消息队列服务器可以承担消息存储的责任,确保即使接收者不可用时,消息仍然能够得到保留。此外,发布/订阅模式的引入使得消息的发布者和订阅者能够以一种松散耦合的方式进行通信,从而提高了系统的可维护性和扩展性 [7] 。同时在《基于加权队列的跨平台进程间通信调度算法》(2021)一文中针对实现跨平台进程间的通信调度,需要关注队列长度和数据重传跳数,初步降低通信过程中的掉包率和平均时延 [7] 。
5. 消息队列技术的应用实现
5.1. 实验过程
实验主要通过在XP系统与Win11系统上通过ActiveMQ搭建P2P的消息队列通信,在water机器人程序上实现视觉数据的传输,并在Win10系统上完成对图片数据的处理,之后通过消息队列的方式返回处理后的视觉数据信息到XP系统。
实现的流程如图5。
![](//html.hanspub.org/file/31-1543058x12_hanspub.png?20240103090822062)
Figure 5. The program realizes the basic process
图5. 程序实现基本流程
在Windows XP系统中,即足球机器人下位机中,建立消息队列并将buffer指针指向的byte类型的视觉数据数组进行传输。该部分关键代码如图6示。
![](//html.hanspub.org/file/31-1543058x13_hanspub.png?20240103090822062)
Figure 6. Visual data sent by the server side
图6. 服务端发送视觉数据
在下位机系统获取water主程序的视觉数据并进行传输后,在Win10操作系统获取视觉数据并进行深度学习处理,数据接收部分关键代码如图7所示。
![](//html.hanspub.org/file/31-1543058x14_hanspub.png?20240103090822062)
Figure 7. The Client receives an array of visual data
图7. 客户端接收视觉数据数组
对于连续动态以及数据的覆盖问题进行处理后,完成数据传输与基于YOLOv8模型的视觉处理。
5.2. 测试结果精确度分析
测试的视觉数据成像以及视觉处理结果,测试中足球的抬升检测成像如图8所示。
![](//html.hanspub.org/file/31-1543058x15_hanspub.png?20240103090822062)
Figure 8. Football lifting and positioning
图8. 足球抬升定位
根据动态连续传输的一组视觉数据进行分析后,得出足球的运动特征分析图如图9所示。
![](//html.hanspub.org/file/31-1543058x16_hanspub.png?20240103090822062)
Figure 9. Analysis of football sports characteristics
图9. 足球运动特征分析图
模型性能指标如图10所示,图(a)说明精确度逐渐稳定,(b)说明召回率持续上升,表明模型识别物体的准确性在提高;图(c)和(d)显示了模型在不同IoU阈值下的性能提升。
6. 项目总结
6.1. 不足之处
方案由于通过网络传输的方式进行通信,因此存在传输速率的带宽问题,在通信上具有一定的延迟,可以进行临时性功能的测试,但是在实时对机器人操作做出反应的功能上不能很好地实现,例如实时对场地中最佳的击球策略进行计算等。
6.2. 改进方向
改进方向包括设计更轻便高效的消息队列进行通信,或通过本机双系统的方式建立本机进程间的通信。
6.3. 总结和意义
项目为解决机器人程序迭代中功能扩展时的操作系统兼容问题提出了一种基于消息队列的解决方案,并在RoboCup中型组足球机器人程序上进行了可行性验证,并对基于此的视觉处理结果进行分析,验证了该方案在该实验环境下数据传输的稳定性。
基于对足球机器人程序视觉分析功能的扩展,探索了一种在不同操作系统环境下测试算法程序的方案,通过对通信方式的对比,探索一种相对适用于老旧操作系统版本机器人临时测试的深度学习视觉检测功能的实现方案,该方案可以为解决类似的老版本控制程序迭代过程中出现的具有兼容问题的功能测试提供一种可行的解决方案。
致谢
感谢北京信息科技大学大学生创新创业训练计划项目的资金支持,感谢张翠平老师的指导。
基金项目
基金资助由北京信息科技大学促进高校分类发展–大学生创新创业训练计划项目——计算机学院(5112310855)支持。
NOTES
*通讯作者。