基于V-REP的关节机器人运动仿真

2017-04-21 00:44赵海林孙福佳
电子科技 2017年4期
关键词:控制程序脚本离线

赵海林,钱 炜,孙福佳

(上海理工大学 机械工程学院,上海 200093)

基于V-REP的关节机器人运动仿真

赵海林,钱 炜,孙福佳

(上海理工大学 机械工程学院,上海 200093)

提出了一种在V-REP平台下实现机器人虚拟运动控制及运动仿真方法。在V-REP中创建了机器人控制模型,并使用Lua编写了控制脚本及通信接口,使用Visual Studio 2010编写了外部控制程序。通过Socket通信实现机器人模型与外部控制程序的连接。以广泛应用的IRB4600六轴机器人模型为实验对象,通过外部控制程序实现机器人运动仿真的步骤。实验中机器人准确响应外部控制指令到达相应位置,验证了本方法的有效性。

V-REP;关节机器人;运动仿真;Lua

离线编程系统对工业机器人发挥着重要作用,而控制机器人的动作模拟,实现机器人模型的运动仿真便是离线编程系统中的重要一环[1]。现在国内科研机构对于离线编程系统中的运动仿真模块,多是采用Open GL 图形绘制引擎以及WTK虚拟环境开发包工具独立开发,在虚拟环境中建模、根据计算的位置驱动模型仿真运动[2-3],这样做的缺点就是建模能力差,不适应科研人员对不同机器人运动学控制研究的需要。本文针对机器人模型运动仿真提出一种新的方法,即将机器人运动仿真界面和运动学计算及控制分开,选择V-REP为运动仿真平台,利用其开源性、接受多种语言编程以及丰富的API来做界面仿真,把后台的计算过程放在外部控制程序中[4-5]。文中运动仿真实验证实了此方法可行,为未来机器人理想编程系统的开发提供了一定的参考。

1 运动仿真平台及脚本语言

1.1 运动仿真平台V-REP

本文选择V-REP作为机器人运动仿真的实验平台, 虚拟机器人实验平台(Virtual Robot Experiment Platform,V-REP),其是国外一款开源的有自身IDE的机器人仿真软件。其支持嵌入脚本、插件、 ROS、remote API clients、 Add-on等控制方式,以及C/C++, Python、Java、Lua、Matlab等编程语言。另外还支持机器人运动学正解和逆解、碰撞检测、路径规划、定制UI、视觉计算、三维建模、距离感应计算[6]。在开发集编程仿真于一体的离线编程软件时,可选择嵌入V-REP,将其当作一个独立的仿真模拟环境。

1.2 Lua语言及Luasocket

Lua是一个小巧的脚本语言,在所有操作系统和平台上都能够编译运行,其设计目的是为了嵌入应用程序中,为应用程序提供灵活的扩展和定制功能。在目前所有脚本引擎中,Lua的速度是最快的,这决定了Lua是作为嵌入式脚本的最佳选择[7]。而LuaSocket是Lua的网络模块库,其提供TCP、UDP、DNS、FTP、HTTP、SMTP 等多种网络协议的访问操作,本文使用Luasocket中的socket.tcp()这一函数[8]。

2 在V-REP中创建机器人控制模型

在V-REP中创建机器人控制模型分为两部分:(1)建立机器人三维模型、添加关节约束;(2)为模型编写控制脚本代码和通信接口。

2.1 建立机器人三维模型

建立机器人模型可在V-REP中完成,也可在外部的CAD软件中完成然后导入V-REP;但是前者建模能力较弱且较为繁琐,远不如现在已经商用化的三维软件便捷。本文选择在SolidWorks中设计机器人三维模型,然后转换成V-REP能够读取的标准CAD格式(如stl,dxf,3ds等)导入到V-REP中[9]。

不管是内部建模还是外部导入,由于机器人零件众多,为了在进行机器人运动仿真时V-REP减少延迟及提高运行效率,需要将同一个连杆的各个零件合并成一个部件。本文以IRB4600六轴工业机器人为例,其最终的优化结果是7个部件,部件之间以6个关节连接。其原始三维模型以及优化后的模型如图1所示,图1(a)为原始模型;图1(b)为优化后的模型。

图1 机器人优化前后的模型图

在运控仿真时图1(b)的模型被标示在不可见的图层中。根据IRB4600机器人的D-H参数,如表1为其添加关节约束,添加关节时需要考虑到各连杆的长度及扭转角,各关节变量及偏置量。

表1 IRB4600机器人D-H参数表

6个关节分别连接着7个部件(连杆),其层级结构如图2所示。

图2 连杆和关节的层级关系图

2.2 编写控制脚本与通讯接口设计

V-REP中控制脚本分为线程脚本和非线程脚本两种,和非线程脚本相比,线程脚本常规动作部分是循环执行的,且运行模拟时机器人能够持续接受外部指令进行动作,因此本文选择线程脚本来编写控制代码和通信接口程序。

V-REP中的机器人控制模型和外部控制程序之间需要可靠地数据通信服务,因此本文选择TCP协议中的流式套接字来传输指令,通信体系结构选择常见的客户端—服务器模式,以V-REP为客户端,外部控制程序为服务器端。编写脚本代码使用Lua语言,和外部控制程序通信使用Luasocket模块中的相关函数。

在控制脚本中,使用socket=require("socket")来加载Socket通信模块,使用函数client=socket.tcp()和client:connect()来和外部控制程序建立连接,使用jointHandles[i]=simGetObjectHandle('IRB4600_joint'..i)给各关节添加控制句柄。使用函数client:receive(‘*l’)来接收外部控制指令字符串,其参数’*l’表示接收一行字符串,以换行符” ”作为作为一次指令读取结束的标志。使用simRMLMoveToJointPositions()函数来控制机器人的动作,此函数可以在同一时间控制机器人的各个关节动作(包括各关节转速,加速度以及转动角度等参数)以达到控制机器人运动的目的[10]。

V-REP端要设计控制接口,以解析外部控制程序发来的运动指令。外部控制程序发出一串特定格式的字符,V-REP端通过string.find()、string.sub()、tonumber()等函数解析出各个关节的目标角度值,然后把设定好的各个参数值赋给simRMLMoveToJointPositions()函数,控制机器人的各个关节以一定的速度和加速度转动设定的角度,以实现对机器人的运动控制。本文采用线程脚本编写控制代码,其常规动作部分循环执行,因此外部控制程序和V-REP成功连接后,通过发送一系列的控制指令便可实现对机器人动作的连续控制。

3 外部控制程序设计及调试验证

3.1 外部控制程序及界面设计

按前文所述外部控制程序和V-REP之间通讯采用客户端—服务器模式。为保持脚本代码的简洁以使机器人模拟动作时迅速响应,本文选择将控制界面上的一系列控制动作全部在控制程序后台转化成关节轴的转角,然后写入字符串变量中通过Socket发送给V-REP,以实现对V-REP中机器人模型的动作控制。

本文选择Visual Studio 2010编写外部控制程序,其控制界面如图3所示。

图3 外部控制程序界面

和V-REP建立Socket通信,服务器端需要两个套接字对象;“m_ListenSocket”(用于监听)和“m_ServerSocket”(用于通信);这两个Socket对应于两个Socket类,都继承自CAsyncSocket。此外部控制程序是一个基于对话框的MFC项目[11]。

在控制界面中的端口设置区,本文使用ServerIP.GetAddress()函数读取服务器IP地址,使用m_ListenSocket.Create()函数创建用于监听的套接字,使用函数m_ListenSocket.Listen(1)限定只接受一个客户端(V-REP)的连接,使用m_ListenSocket.Close()函数停止监听外部客户端的连接请求,使用m_ServerSocket.Close()断开与客户端(V-REP)的连接;在关节角度控制区,由于机器人的每个关节轴均有一定的转角范围,如表1所示。因此要在界面中的关节转角编辑框中检测输入的目标角度,如果超过最大转角范围,则不发送控制指令并弹出提示信息;同样在关节角调整区也需要实时检测调整转角时将会达到的转角上限。关节角度控制区使用m_ServerSocket.Send()函数发送控制指令,关节角度调整区与此类似。在位置坐标控制区,按照机器人的D-H参数表,如表1所示,建立机器人模型[12-13],通过机器人逆运动学函数invkine()将求解出的6个关节的转角转换成字符串赋值给m_angle,同样通过m_ServerSocket.Send()函数发送给V-REP,以实现对机器人末端执行器位姿的控制。

3.2 软件调试及机器人运动仿真验证

本文以应用广泛的IRB4600机器人为实验对象进行运动仿真验证。在V-REP中载入已创建完成的IRB4600机器人控制模型,打开外部控制程序并开始监听等待V-REP的连接申请,点下V-REP中模拟开始按钮,V-REP根据控制脚本内设定的IP地址连接到外部控制程序,外部程序接收到V-REP的连接请求后自动接收连接请求,成功连接后机器人等待外部程序发送控制指令。在外部控制界面上输入6个关节转角或末端执行器位姿数据给机器人指定目标位置,通过各增量按钮对机器人的姿态进行调节,这样便可通过外部程序控制机器人动作了。调试结果如图4所示。

图4 调试效果图

调试结果显示,外部控制程序和V-REP成功连接,并对输入的转角和位姿指令均可准确动作并到达指定位置,对于超过转角范围的也会弹出提示。不过不足之处是在进行大角度增量调节时,机器人动作相对控制按钮的输入会有延迟,这和V-REP的模拟引擎(分别为Bullet、ODE、Vortex、Newton的4种引擎)、设定的精确度以及模拟时间步长有关,在模拟设置中作出相应调整仿真效果会明显改善。

4 结束语

本文在V-REP中建立了机器人的控制模型并为其添加了关节约束,同时编写了控制脚本以及与外部控制程序的通信接口函数;用VS2010编写了外部控制程序界面以及关节控制和坐标控制代码。调试实验实现了外部控制程序对机器人运动的控制,证实了通过外部程序控制机器人的动作以及利用V-REP实现机器人模型的运动仿真的可行性,这也为以后的机器人离线编程系统的开发打下了基础[14]。本文所述的控制机器人进行运动仿真的方法,不仅限于六轴机器人,对于其他的多轴关节型机器人、轮式机器人也可通过修改控制脚本和外部控制程序代码进行运动控制模拟。本文作为机器人离线编程系统开发的前期研究成果,尚未加入程序编辑及指令编译等模块,后续研究中需要在控制界面中增添更多的功能模块以及丰富V-REP中的机器人控制模型库。

[1] 蔡自兴,谢斌.机器人学[M]. 3版.北京:清华大学出版社,2015.

[2] 孙斌.六轴工业机器人的离线编程与仿真系统研究[D].太原:太原理工大学,2014.

[3] 晏升辉,张海鸥,王桂兰,等.基于OpenGL的五轴数控铣削仿真[J].机械制造,2012,50(2):45-47.

[4] 曹金学.工业点焊机器人离线编程软件的国产化开发及应用[J].计算机应用与软件,2011,28(12):30-32.

[5] 祁若龙,周维佳,刘金国,等. VC平台下机器人虚拟运动控制及3D运动仿真的有效实现方法[J].机器人,2013,35(5):594-599.

[6] Rohmer E, Singh S P N, Freese M. V-REP: A versatile and scalable robot simulation framework[C]. TA,USA:IEEE/RSJ International Conference on Intelligent Robots & Systems. IEEE, 2013.

[7] Roberto Ierusalimschy.Lua 程序设计[M].2版.周惟迪,译.北京:电子工业出版社,2008.

[8] Diego Nehab. Network support for the Lua language [EB/OL]. (2007-10-3) [2016-04-24] http:∥w3.impa.br/~diego/software/luasocket/home.html.

[9] 甘亚辉,戴先中.一种高效的开放式关节型机器人3D仿真环境构建方法[J]. 机器人,2012,34(5):628-633.

[10] Diego N.Virtual robot experimentation platform user manual[EB/OL]. (2016-2-18) [2016-04-25] http:∥www.coppeliarobotics.com/helpfiles/index.html.

[11] 郑阿奇.Visual C++网络编程教程(Visual Studio 2010平台)[M].北京:电子工业出版社,2013.

[12] 孙树栋.工业机器人技术基础[M].西安:西北工业大学出版社,2006.

[13] Mitsi S,Bouzakis K D.Mansour off-line programming of an industrial robot formanufacturing[J].The International Journal of Advanced Manufacturing Technology,2005,26(3):262-267.

[14] Christine Connolly,张利梅.ABB Robot Studio的技术与应用[J].机器人技术与应用,2011(1):33-36.

Research of Articulated Robot Motion Simulation Based on V-REP

ZHAO Hailin,QIAN Wei,SUN Fujia

(School of Mechanical Engineering,University of Shanghai for Science&Technology, Shanghai 200093, China)

An efficient method is presented to realize the virtual robot motion control and motion simulation based on V-REP platform.In V-REP robot control model is created and control script and the communication interface is developed with the Lua, and the external control program is written in Visual Studio 2010.Connection between robot model and external control program is realized through the Socket communication .Taking the widely used six-axis robot model IRB4600 as experimental object, this paper steps through the procedure of realizing the robot motion simulation with external control program.Robot responsed to external control instruction to reach the corresponding position in the experiment, whichveri-fied the effectiveness of this method.

V-REP; articulated robot; motion simulation; Lua

2016- 04- 24

上海市经信委重大技术装备研制专项基金资助项目(ZB-ZBYZ-03-11-1709)

赵海林(1988- ),男,硕士研究生。研究方向:工业机器人运动控制。钱炜(1964- ),男,硕士,副教授。研究方向:机器人机构学等。

10.16180/j.cnki.issn1007-7820.2017.04.013

TP242.2

A

1007-7820(2017)04-053-04

猜你喜欢
控制程序脚本离线
酒驾
异步电机离线参数辨识方法
基于PLC的变电站备用电源自动投入装置控制程序的研究
安奇奇与小cool 龙(第二回)
浅谈ATC离线基础数据的准备
FTGS轨道电路离线测试平台开发
离线富集-HPLC法同时测定氨咖黄敏胶囊中5种合成色素
快乐假期
小编的新年愿望
重型车辆协同式自适应巡航控制系统的车际通信控制程序和信息交互