王清珍 张珊珊 陈 浩
(郑州科技学院信息工程学院,郑州,450064)
随着科技的快速发展,大数据信息化世界已经到来。在机器人领域,多机器人编队协作完成各类任务的效率正逐渐提高,然而执行任务产生大量的数据需要保存、调用,传统方法对大量数据进行实时分析计算时,存储本地等待调用计算等数据信息增加了机器人自身负担,使数据传输出现响应时间长、数据混乱、数据泄露、丢包等问题,使得本地存储计算难以完善机器人的智能,是升级机器人前所未有的机遇和挑战。
Ramasubbareddy等提出云存储数据的存储安全访问授权方式[1],叶雄杰等人重点介绍了利用云服务器研究云端存储及实时云端数据监控;迟霆等人重点研究多机器人编队控制与云计算的结合;平丽华,樊石等人主要研究了阿里云的远程机器人控制,但上述研究侧重云服务器存储和监控,涉及云与多机器人协作编队的内容较少。在多自主移动机器人系统协调及合作控制方面,张建伟等提出基于全局视觉定位系统及单计算机多线程操作的方式,以模拟多自主机器人系统的分布式控制以及基于相对信息的局部控制[2];另外,王大伟等在基于边缘计算的云原生机器人系统[3]中,提出云—边—端融合的多机器人协同的智能系统,这为实现多自主移动机器人编队控制提供了理论依据。但是,编队产生数据较多,领航者与跟随者采集的信息都需要详细分类,云服务器、多机器人编队、视觉定位三者结合的研究者比较少。
针对这三者结合进行研究,视觉定位编队位置与云端相结合,相机定位后数据存储云端、动态编队云端计算,云服务器作为一个存储信息和计算的服务器是未来发展的趋势。将大量信息数据放在云服务器中运行,并进行实时性分析、计算,这大大减轻机器人自身负担,多自主移动机器人的编队与云计算相结合更是值得研究的方向。
本文系统利用计算机(PC)端作为控制端操作云服务器,云服务器端创建数据库、存储接收到的数据,树莓派控制板作为数据信息传输的中间媒介。树莓派的摄像头负责视觉定位,实现对机器人位置坐标检测,树莓派与多个机器人通过无线模块的TCP/IP协议进行通信,控制板与云服务器、编队机器人分别连接,在编队过程中进行数据传输。系统总体结构如图1所示。
图1 系统总体结构图
本文系统利用PC端控制云服务器,将其作为控制的客户端。该系统选用PC端的Linux系统连接云端,通过指令配置云服务器的空间。PC端与云服务器的通信通过TCP/IP协议连接,采集到的数据也通过TCP/IP协议进行传输,应用client模式和接收server模式,基于TCP/IP协议的套接字(Socket)收发数据信息。在编队过程中,树莓派控制板与云服务器、机器人双向通信。摄像头与树莓派主控芯片连接;在机器人移动过程中,摄像头对每个机器人的位置坐标信息进行实时监控,读取出每个机器人的位置后,把每个坐标信息的数据通过树莓派传输给云端,云端接收到的大量的实时位置信息经过控制端处理发送给MySQL数据库;数据库在传输数据之前,要进行数据库的创建,对数据库进行整理、创建数据表,当信息输入时,数据库对信息进行实时分类和储存;云服务器对数据库中领航者机器人的位置坐标可以调用,计算当前机器人位置信息是否正确,最终经过计算返回正确的坐标信息或下一步要执行的编队动作给树莓派控制板;控制板发送指令控制领航者进行位置调整或执行下一编队动作,跟随者在领航者的领航下完成编队。
云服务器适用于各种系统,也能满足计算和存储的需求,本文系统使用的是阿里云的云服务器[4],通过云端存储计算多自主机器人编队控制的数据信息,使领航者机器人及其跟随者机器人减少负担,提供安全的数据信息和高性能的云计算服务。
云服务器可分为不同的ECS类型,CPU与内存的配比不同,运行宽带和内核具有差异性。云端系统配置可以用Windows系统和Linux系统,本系统使用的是Linux系统Ubuntu版本,其优点在于Ubuntu版本提供了更优化的系统,操作方便,软件更新较快,稳定性更佳。选择合适的内核类型,会让云服务器的服务更高效快速。
首先需要注册购买云服务器,选择合适的运行内核,进入管理控制台的云服务器ECS选择合适的地域以及需要的系统盘。进入实例:选择Linux系统盘进行配置,配置时记住设置的密码,在Linux界面连接云服务器,在远程连接操控云服务器时,其中最重要的信息是云服务器的公网IP和私网IP,这两个IP地址是远程连接控制云服务器的关键,也是后期多机器人编队时通信的重要依据。
进行VNC远程连接后进入操作界面。远程连接的工具很多,有宝塔SSH远程连接、PuTTY连接等,在选用不同商家的云服务器的官网上会找到相应的安装包。
云服务器的系统除在第一次购买时可进行配置外,后期也可自由更改配置。进入实际的ID修改云服务器的系统,先将云端实例中的系统盘停止,再进行更换系统盘的操作,完成更改系统盘后,重新启动方可继续使用。
PC端做为客户端控制云服务器,PC端与云主机连接选择的工具是PuTTY,在连接云服务器时,输入云服务器的公网IP即可连接。由于云服务器无可视化页面,所以可以利用PuTTY的终端页面进行操作控制,在终端界面的命令框中输入root用户名称和密码,如:root@i-2zed2cbgi4jm1qics65k。控制云端的操作与本地服务器的操作命令一致。
将本地文件放入云服务器某个目录或文件下,可通过一个远程传输工具进行传输。WinSCP传输比较方便快捷,但利用WinSCP实现本地与服务器的连接需要用到云主机地址、root用户名、密码,登录后呈现出传输页面。当需要传输时只需要拖住本地文件拉进云服务器的页面即可完成上传,页面如图2所示。
图2 WinSCP详细界面图
多自主移动机器人进行编队时,坐标信息会随着运动而不断改变,机器人编队实时数据的分类处理,可表达多机器人编队的位置准确性。
运用云端MySQL数据库存储数据,创建数据库,对数据库进行配置,创建数据表,将每个机器人的实时位置信息放在对应的数据表中。
机器人进行编队时插入采集的信息或计算调用数据都可在数据库中进行查找,云端数据库也是无可视化页面的虚拟空间,为了方便直观查看,设计者可在云服务器上搭建一个Web浏览客户端,用root账户远程实时访问MySQL数据库的信息。
创建数据库可以在终端输入命令创建、利用Python语言运行PyMySQL进行创建。本文用PyMySQL创建数据库,连接云端数据库的必要操作元素有:
host:公网IP;user:用户名;password:登录密码;database:数据库名称;port:允许的串口。
创建表格后,运用SQL语句将位置信息插入到数据表。通过Navicat premium工具将云端的数据库可视化。
建立数据库的表格信息包括:R_id(机器人序号)、Color(机器人颜色)、Location(位置)、Time(实际传输时刻)等,具体结构如表1所示。(本文中位置取值以0.1mm为单位,例如:703为70.3mm,下同)。
表1 云端存储数据库信息
对机器人编队来说,机器人与云端通信是重要的部分,在进行通信之前要进行通信协议选取。
在无线通信研究领域,前人提出了TCP/IP协议进行通信,目前,最常用的协议是TCP/IP协议。TCP/IP协议仍是一个协议簇,由FTP、SMTP、TCP、UDP、IP等协议构成选择TCP/IP协议进行通信,通信结构图如图3所示。
图3 通信传输图
本系统主要利用树莓派控制板作为媒介发送和接收信息,树莓派与云主机需要双向接收和发送数据。两端需要进行编程发送(client)模式和接收(server)模式。基于TCP/IP协议的套接字(Socket)进行通信,云服务器的IP及其运用的端口是通信协议最基础的部分,本文的云服务器与机器人通信是通过树莓派进行中间传输通信,树莓派作为发送端,云服务器作为接收端,进行数据的打包传输。多机器人编队运用TCP/IP协议方便快捷,安全性高。
与云端通信采用Python语言编写代码,通过Socket进行数据传输,测试数据的发送端,发送的是摄像头检测的位置坐标,通过Socket传输云端,接收端与发送端的数据相同,当发送端输出[320.0,-540.0,‘blue’,0.0]、[564.0,251.5,‘green’,0.0]、[-692.0,28.5,‘red’0.0]三个颜色的坐标时,输出端收到的坐标也为[320.0,-540.0,‘blue’,0.0]、[564.0,251.5,‘green’,0.0]、[-692.0,28.5,‘red’0.0],每个颜色的坐标数据都一一对应无错误,表示云服务器与树莓派通信成功,经过多组数据测试也验证了两者通信无错误,接收到的位置坐标如表2所示。
表2 发送端与接收端的数据
运用云服务器进行多机器人编队时,将本由机器人承担的运算部分存放在云端,定位的信息即时传输到云端数据库,在云端存储和计算[5]解决了传统本地计算模式带来的计算资源有限性与编队系统对运算速度高要求之间的问题,使机器人更专注于环境采集和任务执行,增强编队的灵活性、准确性和实时性。
3.2.1 领航跟随算法
多机器人编队用到领航跟随法与视觉定位,通过视觉定位判断编队机器人的位置是否正确。编队的实现主要基于领航跟随法(Leader-Follower)[6]的思想,常见的编队队形有线性队形、菱形队形、三角形队形。当机器人变换队形时,云端服务器发送编队指令控制领航者移动到对应的坐标,跟随者随着领航者发送的信息开始移动;云端调用数据库中的坐标与实际坐标进行判断,检测每个机器人的位置是否正确。如:线性队形变换为三角形队形时,机器人队形如图4所示,编队机器人通过最优途径到达编队位置,变化如表3所示。
图4 机器人的队形及变换
表3 编队坐标变化表 单位/0.1mm
数据包含:颜色标志:红、黑、紫、蓝、绿和黄;角色标志:领航和跟随者;位置坐标:横坐标和纵坐标,变换的角度。可以看出,当线性变换为三角形编队时,红色坐标和紫色坐标不变,黑色、绿色、蓝色分别向上移动,黄色向左移动。经过最优移动途径编队,再结合云端大数据存储和计算功能,机器人编队效率提高。
3.2.2 视觉、编队、云端结合
在机器人编队视觉定位的过程中,领航者位置坐标信息由两个摄像头进行检测,最终将两个摄像头折合为一个坐标定位;视觉定位主要运用树莓派进行处理,树莓派利用OpenCV库对图像进行处理,通过检测物体形状和颜色[7],对所需颜色以及形状进行分析识别,识别计算所得的坐标信息及时存储云端。检测过程中用不同颜色的正方体代表不同的机器人进行位置检测,图5为摄像头的定位检测校正,图6为实际摄像头的定位检测。
图5 摄像头的定位检测校正图
图6 实际摄像头检测图
多组检测坐标与实际坐标对比如表4所示,检测的坐标数据单位为mm,检测的数据与实际坐标之间的误差最大为5.41cm,不过误差在可行的范围内,对机器人的编队不会有太大影响。
表4 检测坐标与实际坐标对比表 单位/0.1mm
控制摄像头定位采用Python语言编写,摄像头定位时,由于获取的坐标信息仅为图像中像素坐标,并非系统中真实的运动坐标,所以,待信息稳定后将像素坐标转化为真实坐标,坐标信息处理后,通过Socket传入云服务器存储。摄像头实时检测机器人的位置是否正确,编队队形是否是预期所想,如果编队发生错误,云端收到当前错误进行计算后返回正确编队信息,使机器人改变当前错误位置,重新调整编队队形。
视觉检测多机器人的颜色和形状进行定位,定位后的位置信息传入云服务器进行计算判断,如果通过视觉检测错误,将信息传入云服务器,云端检测出错误信息对这些错误分析计算,最后输出正确的位置信息,控制机器人进行位置修改。
云服务器进行分析计算相对传统的本地计算速度较快、计算准确,减少了本地运算出现的问题和机器人自身运算的负担。树莓派与云服务器的传输、发送信息,都运用安全性和稳定性较高的TCP/IP协议C/S模式通信。
本研究选用的是双核 4GiB的阿里云服务器,在树莓派与云服务器的通信过程中,网络传输会存在延时,由于数据在云边链路中串行传输需要花费时间,因此会有一定程度上的延时,网络的拥堵也会使其发生变化。本文在信息传输时对上述情况进行了研究检测,检测结果如表5所示。
表5 延迟检测表 单位/ms
表5所列为宽带传输下进行的5次测试,计算出的延时时间以及平均延时时间。延时是客观存在的,具有一定的波动性,有上升或下降,但基本会在一个稳定的区间内。笔者对实验中存在的延时进行了避免及克服:机器人进行编队时,当机器人到达指定的编队位置时,会进行编队的队形短暂保持,这正好规避了宽带的延时,使整个程序正常运行。
本文的研究是基于云服务器的多自主移动机器人的编队控制,设计了基于视觉的移动机器人编队定位方案,采用领航跟随算法设计编队队形,运用无线通信模块与云服务器连接通信。通过理论分析以及实验,证明了多机器人编队与云服务器结合是可实现的研究,云服务器的存储和计算相对传统本地计算效率更高。最早的机器人编队研究将数据的分析计算放在机器人自身,使编队时机器人自身负担加大、数据计算混乱、响应传输缓慢,将数据在云服务器进行计算处理,减少了本地负担以及机器人自身系统的配置要求。
本文的研究还存在一些不足之处,由于单个摄像获取的照射面积较小,本文采用两个摄像头进行检测定位[8],摄像头处理速度较慢。树莓派与云服务器的通信方面也有不足之处,在未来的研究中,笔者计划选用单个照射面积较大的摄像头,云端连接时端口要提前开放等。
本研究对未来规划发展:各类领域机器人在执行任务时,采集的数据在存储和计算方面可结合云服务器提高效率;云服务器也可用于企业数据的存放;基于云服务器的多自主移动机器人编队,可用于多机器人协作代替人类完成危险性较高的任务。