基于Web与V-REP的机器人远程控制虚拟仿真平台

2021-11-10 05:31占宏王剑城
计算技术与自动化 2021年2期
关键词:远程控制机器人

占宏 王剑城

关键词:机器人;Web技术;远程控制;V-REP仿真;虚拟仿真平台

近年来,机器人技术已逐步应用于工业制造、医疗服务、物流分拣等多个领域,不仅节省了人力大大提高了工作效率,同时也给人们的生活带来了极大的便利。对于一些环境复杂、条件恶劣或者存在一定危险的作业场所,通常需要通过远程控制的方式来操作机器人完成相应的任务。Internet和网络通讯技术的快速发展有力促进了Web技术在机器人控制领域的应用,基于Web的机器人远程控制方式有着界画直观、操作简单的优点,易于被人们接受,因此具有重要的研究意义和广阔的应用前景。

将Web应用、V-REP仿真机器人以及机器人控制技术相结合,开发了机器人远程控制虚拟仿真平台。该平台中操作者通过Web浏览器发送相关的请求和控制命令,由Web服务器对其进行相应处理,同时建立与机器人控制服务器和图像服务器的通讯连接,以完成对V-REP中仿真机器人的控制,并由仿真Kinect获取相应的图像信息传输至Web浏览器,从而实现基于Web的机器人远程交互控制。此平台的实现为机器人控制相关的实践教学提供了虚拟仿真环境,同时对于地质科考、救援等机器人远程作业应用有一定意义。

1平台整体框架设计

平台整体框架设计如图1所示,主要分为Web浏览器层(客户端)、服务器层、仿真环境层(机器人端)三个层次,各层之间既相互独立又相互联系,共同实现控制平台的功能。

Web浏览器层即为客户端,支持Java浏览器的手机端和PC端均可使用,用户账号信息均存储于MySQL数据库中,通过注册并登录相应账号后即可进入控制界面。仿真环境采用V-REP软件中搭建的机器人模型并去除其内嵌脚本作为虚拟的被控机器人端,由外部的远程服务器完成相关的控制任务。服务器层包括Web服务器、机器人控制服务器和图像服务器三部分,其中Web服务器与Web浏览器之间通过HTTP进行通讯,与机器人控制服务器和图像服务器之间利用socket编写的TCP协议建立通讯。当Web服务器收到来自Web浏览器请求后,将根据请求的类型及URI_来获取并运行相应的服务器资源。机器人服务器和图像服务器均采用Python编写,利用多線程实现两个不同的服务器进程,同时与V-REP仿真软件使用同一端口号连接,利用V-REP远程API进行联调,从而实现用户通过Web浏览器界面对VREP中仿真机器人的远程控制和实时监控。

2主要功能模块设计

该平台的主要功能模块包括Web应用设计、机器人控制模块设计、图像获取及传输设计,本节将对以上模块设计进行详细说明。

2.1Web应用设计

Web应用设计分为Web网页与Web服务器设计两部分。其中,Web网页开发基于MVC设计模式,采用JSP作为页面显示设计组件,总共设计了登录页面login. jsp、远程控制界面control.j sp、错误页面wrong. jsp三个JSP页面。Web服务器设计也采用了基于MVC设计模式,利用JavaServlet进行控制逻辑设计,包括上述前两个页面的控制Servlet以及其他工具类的设计。

2.1.1登录页面设计

登录界面背景利用前端技术CSS中的body中type设置背景图片,HTMI_表单中包括类型为“text”的用户名和密码两个文本框,提交按钮和取消按钮。登录页面根据表单的action值,采用HTTP中post请求将用户输入的信息发送至Web服务器中相应的Servlet进行处理,以实现用户注册和登录功能。当用户在登录页面中输入登录信息并点击登录后,如果输入的用户名或者密码为空将请求重新定向到wrong. jsp页面,提示“用户名或密码为空请重新输入”。当输入均不为空时,建立与MySQI_数据库的连接并检索所输入用户是否存在,如果存在且密码正确则登录成功并跳转到控制页面,密码错误则要求重新登录;如果输入用户不存在,则为该用户注册账号并存储于数据库中;如果用户存在但密码错误,则要求重新登录。登录界面Servlet中数据库的相关操作通过导人所编写的工具类DBUtils. java来实现。

2.1.2控制页面设计

控制页面包括机械臂关节输入控制、机器人动作控制、机器人左右臂抓取控制以及图像传输四个模块。关节输入控制模块中提供一表单输入7个关节角度so-s6,该数据以POST请求方式发送至Web服务器中的控制页面Servlet。机器人动作控制模块包括舞蹈、左臂抓取、右臂抓取和还原四个动作按钮,抓手控制模块包括16个控制按钮,当按下按钮时利用Java Script中的location. href将控制指令以HTTP的Get请求的方式传输到相应的控制Servlet。Kinect摄像头拍照模块中的拍照按钮将控制指令发到相应的Servlet后进行处理,进行控制指令的传输和图像数据的接收,之后页面会通过会话作用域获取Web服务器中接收的图像存放地址,利用request. getSession().getAttribute(“”)函数获得地址信息,使用img属性将图像展示于页面之上,这样用户通过网页即可实现对机器人的监控查看。当控制页面的请求地址与存放于Web服务器中控制页面Servlet的URL名称一致时,其就能将数据发送到相应的Servlet。控制页面Servlet继承HttpServlet类,其中定义了doPost和doGet两种处理请求的方法,其设计流程如图2所示。控制页面用户输入数据的请求类型是Post,这些数据将在doPost()中处理。控制页面中表单输人为Post请求进入控制页面Servlet后,数据将在doPost()中处理,其利用请求作用域对象方法request. getParameter()获取用户输入的数据,并通过Integer. parselnt()方法将用户输入的字符串变量转换为整型变量存放于doPost()的局部变量中,以上数据将传输到机器人控制服务器中以实现对仿真机器人具体的控制。控制页面中按钮均采用Get请求,请求均在doGet()中处理。用户点击按钮后,通过request. getParameter()获取按钮指令值,从而判断请求控制图像服务器还是机器人控制服务器,以进一步建立与相应服务器的通讯连接。

2.2机器人控制模块设计

2.2.1机器人控制设计

控制页面所有控制动作均可由Python语言编写的机器人控制服务器来实现对V-REP中机器人的控制。V-REP具有多种远程客户端应用编程接口,且每种接口都含有其所有API。将官方提供的三个联调文件放在控制平台工程目录下,并使用远程API vrep. simxStart()设置相应的连接端口号即可与V-REP建立连接,接着使用远程APIvrep. simGetObjectHandle()获得机器人各个控制对象句柄。利用上述句柄以及机器人控制服务器中设计的具体控制函数,即可实现对仿真环境中机器人的控制。

对于机器人左臂关节输入控制模块的函数,输人为7个关节角度,利用各个关节的句柄和simxSetjointTargetPosition()实现对关节位置的设置,leftrotateAIIAngle()和rightrotateAIIAngle()函数分别完成机器人左右臂关节同时运动。机器人抓手及左右臂关节角控制模块中,各个关节角度的增加和减少控制函数由所设计的leftdecrease()、leftincrease()、rightdecrease()、rightincrease()以及simxSetjointTargetPosition()函数来实现。左右抓手的张开与闭合控制通过远程API来调用VREP中的嵌入式脚本vrep. simxCaIIScriptFunction()来实现。在该脚本中分别定义了Open函数和Close函数,同时利用sim. setIntegerSignal()设置抓手的信号值来实现抓手的闭合与张开。机器人动作控制模块中的舞蹈动作利用leftrotateAI-IAngle()、rightrotateAIIAngle()和延时函数sleep(),将左右臂动作连贯起来形成舞蹈效果。机械臂抓取动作是在抓手实现张开和闭合的基础上,配合机械臂运动控制来实现。

2.2.2机器人控制服务器通讯设计

机器人控制服务器作为客户端通过调用VREP远程API,即可与V-REP进行通讯连接實现对机器人的控制;作为服务端,还需与Web服务器进行通讯以获取相应页面输入的数据信息。为确保传输数据稳定可靠,机器人控制服务器与Web服务器之间采用TCP通讯协议并使用socket套接字来实现。在机器人控制服务器端使用Socket创建socket套接字,使用该socket的blind()方法绑定主机地址及通信端口号,利用listen()进行TCP监听,accept()被动接收客户端连接,连接成功后使用recv()接收TCP数据。当接收到Web服务器数据后,首先对该数据进行判断,当接收数据为各关节角度指令时,则由recv()来接收数据,最后放人leftrotateAIIAngle()函数中。当接收数据为其他控制指令时,利用if语句判断相应控制命令并调用所编写的控制函数即可完成对V-REP中机器人的控制。

2.3图像获取及传输设计

在V-REP仿真环境中,采用Kinect传感器模拟双目摄像头并放置于机器人前方以实现对机器人进行监控拍照。在获取Kinect的句柄后,利用vrep. simxGetVisionSensorlmage()即可获取RGB图像,将其分为R、G、B三部分,并采用reshape方法设置图片尺寸,接着利用merge()将上述三部分进行整合,最后将图片进行翻转得到所需要的压缩RGP图像,由imwrite()函数将其存人指定路径。

获取Kinect图像后,可采用TCP协议将图像传输到Web服务器中。TCP协议同样使用socket套接字实现,图像数据采用编码的Base64类型数据进行传输并在Web服务器中解码以重现图像。获取的图像通过编写的send()函数来发送图片文件,利用imencode()函数将图片编码成流数据,并由Base类中的b64encode方法转换成Base64类型的字节流数据,最后由socket的send()将数据发送至Web服务器。

3平台展示

3.1控制页面

打开浏览器,当完成新用户注册并成功登录后,系统即进入控制页面,控制页面如图3所示。该页面包括机械臂关节输入控制、机器人动作控制、机器人左右臂抓取控制以及图像传输四个模块,操作者通过输入数据并点击相应的按钮即可实现对V-REP中机器人的控制和实时监控。

3.2远程控制实验

在V-REP仿真环境中搭建如下场景,Baxter机器人前面摆放一张方桌,桌面放置一小木块,前方放置一台Kinect摄像头,以模拟真实实验室的环境。当机器人控制服务器和图像服务器与VREP连接成功后,通过控制页面可以对仿真环境中的机器人进行控制。如图4所示,在机器臂关节控制模块中输入各个关节的到达角度,点击“左臂boot”按钮,机器人左臂会根据输入的关节角运动到指定的关节位置。在抓手控制模块中,包含左臂3个关节和右臂3个关节增减按钮以及左右抓手打开和闭合16个控制按钮。当调整关节的角度使得机器人左臂到达小方块上方时,点击open按钮抓手打开,点击close按钮,抓手缓慢闭合直至抓住小方块,其中抓手打开和闭合速度可以通过VREP相应嵌入式脚本进行设置,其实际控制效果如图5所示。

4结论

设计并开发了基于Web与V-REP的机器人远程控制虚拟仿真平台,该平台采用动态网页技术JSP进行用户界面的开发,使用Servlet技术搭建Web服务器,Python编程搭建机器人控制服务器和图像服务器。操作者可通过Web网页发送请求和控制指令,由Web服务器对其进行处理并建立与机器人控制服务器和图像服务器的通讯连接,控制服务器接收指令后将对其进行解析并调用V-REP远程API控制仿真机器人,同时由仿真Kinect获取相应的图像信息传输至Web浏览器,从而实现基于Web的机器人远程交互控制。实验测试结果表明平台各组件之间通信稳定、控制准确。该虚拟仿真平台具有可重构性、可扩展性、易操作等特点,对于机器人控制相关实践教学有重要意义。

猜你喜欢
远程控制机器人
你好,机器人
水冷发射机冷却系统故障分析及解决方案
基于GSM的远程控制系统
机器人来帮你
认识机器人
机器人来啦