1
0 引言
随着当今科技的快速发展,工业用机械臂已经成为工业生产、运输、无损检测等多种领域不可或缺的设备。尤其是在高温、高辐射、有毒气体等恶劣环境中,机械臂能够代替操作人员进行现场工作,使得操作人员可在安全位置进行远程操控[1-3]。
各类机械臂厂商会提供响应的操作界面,但有时其使用受到各类限制且使用起来不甚方便,故而厂商也提供了各类接口供操作人员进行二次开发,通过二次开发,可定制各类特定功能以方便现场的各类操作[4-7]。机械臂在实际使用过程中,如果直接在某些场合使用,会造成碰撞等事故,对现场设备和机械臂本身造成损坏。再者,操作过程中有时操作人员收现场条件限制,无法准确观测现场情况,需要借助仿真软件辅助推断现场情况。故而机械臂仿真软件对于机械臂的使用起到极其重要的作用。
本文介绍使用Python语言对优傲公司生产的UR10机械臂进行二次开发,实现对UR10机械臂进行远程操控,同时连接V-REP EDU仿真软件,实现同步仿真功能。
1 UR10机械臂简介
1.1 UR10机械臂
优傲公司(Universal Robots,简称UR)是一家专业从事生产多功能、协作式工业机械臂的丹麦公司,主要产品
包括台式的机械臂U R3、U R3e,中小型机械臂U R 5、UR5e、UR10、UR10e,重型机械臂UR16e。所有的型号都是六关节机械臂,依照不同型号支持不同的负载。优傲公司生产的机械臂在多种场合广泛运用,为了在现场的环境中能够更好的使用,有必要对其进行仿真的开发研究[8]。
本软件采用了UR10型号的机械臂作为研究对象。该机械臂拥有1300mm半径移动范围,有效荷载10千克和六个轴,所有轴转动范围都支持正负360°,支持Modbus-TCP,EthernetIP以及Profinet三种主线。同时,UR10支持多个通讯接口,包括Dashboard、Primary、Secondary、Realtime、RTDE、Socket、XML-RPC等接口,主要使用的接口包括:Dashboard使用29999端口,执行机器人初始化、加载程序、开始和暂停程序、运行以及设置用户角等,该接口需要上位机主动发送Dashboard命令字符串后返回相应数据;Primary接口使用30001端口,主要发送机器人状态以及附加信息,会以10HZ的频率向上位机发送相关信息,当接口在收到上位机脚本指令字符串后会立即中断当前运行的程序,然后运行收到的指令。Secondary接口使用30002端口,与Primary接口相似,但发送的信息中只包括机器人状态
而不包括附加信息。Realtime,接口使用30003端口,与Primary、Secondary接口相似,以125HZ的频率向上位机发送详细状态信息。RTDE接口使用3004端口,RTDE接口不能接收脚本信息,只能以125HZ频率发送机器人的详细状态信息。Socket 通讯通过Socket相关脚本指令与上位机进行通讯。XML-RPC通讯通过XML格式传输数据。Modbus-TCP通过Modbus协议传输数据。UR10
机械臂支持三种运动模式:关节运动、线性运动、圆周运动。关节运动(MoveJ),通过输入6个关节的弧度值来确定移动位置,移动采用曲线路径。线性运动(MoveL),通过输
收稿日期:2020-10-30
*基金项目:核电厂检修典型机器人技术研究(GHYX-ZX-1901-01)
作者简介:郑怡廷(1984—),男,上海人,本科,工程师,研究方向:机器人仿真及深度学习技术。
基于Python 的UR10机械臂可视化仿真平台设计*
郑怡廷  赵琛  王一帆  陶泽勇
(国核电站运行服务技术公司,上海  200233)
摘要:本文以UR10工业机械臂为模型,通过Python语言编写的操控软件将UR10机械臂和V-REP EDU仿真平台结合起来,以实现UR10可视化仿真,并进行了仿真交互验证。结果表明,该仿真平台精度达标,延迟率低,对同类机械臂的研究具有很大的
借鉴和参考价值。
关键词:Python;UR10机械臂;V-REP仿真中图分类号:TP241.2文献标识码:A
python默认安装路径文章编号:1007-9416(2020)12-0001-05
DOI:10.19695/jki12-1369.2020.12.01
数控技术
第  38  卷                      数字技术与应用    www.szjsyyy
2
入6个参数,其中3个参数代表位置,3个参数代表姿态来确定移动位置,移动采用线性方式,使工具保持在线性路径上。圆周运动(MoveP)同样通过输入6个参数,3个参数代表位置,3个参数代表姿态来确定移动位置,但是是以恒定速度通过圆形混合区进行移动。
1.2 URScript脚本编程
U R 机械臂有三种种编程方式:P o l y s c o p e 编程、URScript脚本编程以及C-API编程,本文中UR10为更好通过Python来呈现,降低延迟率,故选用UR公司自有的URScript脚本级机器人编程语言。和大部分脚本编程语言一样,URScript支持布尔值、整数、浮点、字符串、null等基本类型,此外有独有的姿态类型,用来表示机械臂的位姿。URScript支持自定义函数、控制流语句、多线程功能[9]。
2 UR10运动编程环境构建
在UR10机械臂运动编程仿真环境中,基于通讯接口Realtime来开发,可以将不同语言开发的模型集成在一个平台上运行,实现低延迟操控和仿真。通过对UR10机械臂、空间环境、运动策略等参数进行配置,能够快速构建适用于所需空间和运动操控的任务,如图1所示。
2.1 Python编程软件
Python语言作为当今最流行的程序开发语言之一,代码优美易读,开发效率高,拥有种类齐全丰富的开发库。本文考虑语言通用性,采用版本Python3.6来进行语言编写,其中,程序使用Tkinter8.6图形界面接口库,Tk是一个轻量级、跨平台的图形用户开发包,Tkinter是其在Python上的接口。在开发时使用的集成开发环境(IDE)为JetBrains PyCharm,是著名的开发Python语言的IDE,界面简洁,功能齐全,易于使用[10]。
Python在下载即可,注意下载与本机操作系
统和位数相符的安装本,下载完成后默认安装即可,注意需要勾选Add Python to PATH,否则安装完成后需要手动配置环境变量。如果选择自定义安装,则一定要勾选td/tk and IDLE,Tkinter是Python的自带库,完成安装后即搭建了开发环境。
2.2 V-REP仿真平台
V-REP(Virtual Robot Experimentation Platform EDU,虚拟机器人实验平台(教育版))是一款跨平台的仿真软件。V-REP软件内自带众多机器人模型,同时也支持从外部文件导入模型。V-REP支持嵌入脚本、附加脚本或沙盒脚本、插件、远程API、ROS节点。其中嵌入脚本、附加脚本或沙盒脚本、插件都支持Lua语言,远程API支持C、
Python、Java、Matlab、Octave和Lua等语言。V-REP软件自带UR10模型,可直接使用,但为了能和程序进行正常通讯,需要作一定的配置。首先,要在V-REP中新建场景,之后将UR10模型拖入场景中,然后需要编辑UR10的子脚本,在自动生成的子脚本下function sysCall_init()子函数中调用simRemoteApi.start函数,该函数可在指定端口上启动A P I 服务,用于与程序进行通讯,做循环判定,当simRemoteApi.start函数返回-1时则结束程序[11-12]。
为了更好地观测仿真UR10的运动轨迹,需要在UR10的TCP处加入轨迹显示,在UR10_link7节点新增Graph控件,在Graph控件的配置中新增三个记录数据流(data stream to record),分别对应UR10_link7在笛卡尔坐标系的X,Y,Z轴,配置完毕后,随着机械臂在V-REP软件内的移动,操作人员可在V-REP软件内直观观察到过去一段时间机械臂的移动轨迹,当机械臂作一定功能的移动时,轨迹功能很好的辅助操作人员确认移动情况。
3 UR10可视化仿真平台设计
UR10机械臂可视化仿真平台由三个模块组成,分别为数据接收模块、数据发送模块、仿真交互模块。数据接收模块接收UR10机械臂发出的状态数据,数据发送模块发送向机械臂发送指令使机械臂运动,仿真交互模块与V-REP交互数据实现仿真。
3.1 数据接收模块
数据接收模块使用Realtime接口,30003端口,采用TCP连接方式连接,连接后机械臂会以以125HZ的频率发送详细状态信息。考虑到上位机的处理能力和资源配置情况,在时间精度要求不高的场合,不必拆解每一个包,可根据实际情况适当降低获取的频率。
Realtime接口每次发送1108个字节(UR10不同的内置软件版本会有所不同,但主要数据格式不变),发送的数据
图1  UR10机械臂编程仿真结构
2020年第 12 期
3
格式如表1:
表1中的笛卡尔坐标采用(X,Y,Z,Rx,Ry,Rz)表示,其中X,Y,Z表示位置,Rx,Ry,Rz表示姿态,UR10机械臂采用旋转矢量法表示姿态。由于并非所有的数据都需要观
测,本程序仅选取较为重要的一些数据进行显示。获取数据后,使用struct.unpack函数,将tcp接收到的返回值转换为指定格式,除了数据包总长度为int外其他所有的数据都为double,此外还需要注意,接收到的数据为大端格式,所
序号 内容 数据类型 数据数量
字节数 1 数据包总长度 int    1    4 2 设备启动时间 double    1 8 3 目标关节位置 double    6 48 4 目标关节速度 double    6 48 5 目标关节加速度 double    6 48 6 目标关节电流 double    6 48 7 目标关节扭矩 double    6 48 8 实际关节位置 double    6 48 9 实际关节速度 double    6 48 10 实际关节电流 doubl
e    6 48 11 关节控制电流 double    6 48 12 实际笛卡尔坐标TCP 位置 double    6 48 13 实际笛卡尔坐标TCP 速度
double    6 48 14 TCP 广义力
double    6 48 15 目标笛卡尔坐标工具TCP 位置 double    6 48 16 目标笛卡尔坐标工具TCP 速度
double    6 48 17 数字量输入状态 double    1 8 18 各关节温度(摄氏度) double    6 48 19 实时线程执行时间
double    1 8 20 UR 自用 double    1 8 21 机器人状态 double    1 8 22 关机控制状态 double    6 48 23 安全状态 double    1 8 24 UR 自用 double    6 48 25 X,Y,Z 加速度值
double    3 24 26 UR 自用
double    6 48 27 轨迹限制器的速度缩放 double    1 8 28 笛卡尔线性动量范数
double    1 8 29 UR 自用 double    1 8 30 UR 自用 double    1 8 31 主电压 double    1 8 32 机器人电压 double    1 8 33 机器人电流 double    1 8 34 实际关机电压 double    6 48 35 数字输出 double    1 8 36 程序状态 double    1 8 37 肘关节位置 double    3 24 38
肘关节电压
double
3
24
表1
郑怡廷 赵琛 王一帆等:基于Py th o n 的UR 10机械臂可视化仿真平台设计
第  38  卷                      数字技术与应用    www.szjsyyy
4
以要按照'>d'的格式转换数据,无论有几个值,数据最终都以元祖格式返回,后续处理时需自行转换。
如下示例获取第一个轴的实际位置:data = _tcp_recv()
position = struct.unpack('>d', data[252:260])[0]获取的值是弧度,在程序中将其转换为角度方便使用。在获取到数据后,程序如上述例子数据处理并显示到程序界面上供操作人员查看。
3.2 数据发送模块
数据发送模块负责将根据操作人员的操作生成的上位机指令发送到UR10机械臂,以实现对通过二次开发的本软件对UR10机械臂的操控。数据发送模块同样采用30003端口,TCP协议发送,发送命令使用URScript语言。移动命令支持JOG、Move Pose、Move Location模式。JOG,即点动,按下鼠标左键后开始移动,移动过程中松开鼠标不放,鼠标放开后即停止。支持两种方式,轴移动和位姿移动,轴移动采用关节运动方式,即MoveJ方式,位姿移动采用线性运动,即MoveL方式。
MoveJ方式:movej([j1,j2,j3,j4,j5,j6],a,v),其中j1-j6代表U R10机械臂的六个轴,a 代表关节加速度(rad/s^2),v代表关节速度(rad/s),还有两个可选参数时间和交融半径可选,本程序不用。点动时,操作人员选择要动的轴,程序通过拼接字符串将命令拼接好发送至
UR10机械臂。
MoveL方式:movel([x,y,z,Rx,Ry,Rz],a,v),其中x,y,z代表三轴的位置,Rx,Ry,Rz代表姿态,其他与MoveJ 类似。
Move Pose方式,即由操作人员输入6轴的位置,UR10机械臂通过内部算法直接移动到响应位置。
Move Location方式,与Move Pose类似,操作人员输入位姿的6个参数,UR10机械臂通过内部算法直接移动到响应位置。
当需要机械臂停止时,发送停止命令即可,stopj命令对应MoveJ运动方式,stopl命令对应MoveL移动方式。本程序还定制了一些现场实际使用的特定模式,例如三点间的循环运动,机械臂与每个点停留一定时间,之后向下个
点运动。脚本直接存放于程序下,可根据现场的实际情况实施修改。
3.3 仿真交互模块
仿真交互模块负责程序与V-REP交互,主要功能是将UR10机械臂的位置数据反馈到V-REP中,使得操作者能够观测仿真环境。在使用前,需要对程序进行配置才可使Python程序正常链接V-REP。在V-RE
P安装目录下\programming\remoteApiBindings\python\python目录中到vrep.py、vrepConst.py、remoteApi.dll这三个
文件,将其拷贝到本程序的同级目录下,之后在Python程
图2  UR10机械臂可视化平台操控界面
2020年第 12 期
5
Design of  Visual Simulation Platform for UR10 Manipulator Based on Python
ZHENG Yi-ting,ZHAO Chen,WANG Yi-fan,TAO Ze-yong
(State Nulclear Power Plant Service Company, Shanghai  200233)
Abstract:This paper takes UR10 industrial robot as a model, and combines the UR10 robot and the V-REP EDU simulation platform through the control software written in the Python to realize the visual simulation of the UR10, and conducts simulation interactive verification. The results show that
the precision of the simulation platform is up to standard, and the delay rate is low. It has great reference value for the research of similar robot.
Key words:Python; UR10 robot; V-REP simulation
序头部导入vrep模块即可。随后需要考虑链接V-REP的功能,使用vrep.simxStar函数,该函数作用是启动一个通信线程与V-REP相连,注意函数中的端口号要与V-REP 子脚本中配置的端口号一致。
使用时分为仿真模式和实时同步模式,仿真模式时只在V-REP中驱动仿真界面不操作实际机械臂,实时同步模式实际操作机械臂,通过数据接收模块读取UR10机械臂的实际位置后将其反馈给V-REP。仿真模式较为简单,由于无需与UR10机械臂交互,当操作人员点击按钮后,只要算出移动后的位置,将移动位置传输给V-REP接口即可。实时同步模式中,当操作人员点击按钮后,首先通过数据发送模块将命令传送给UR10机械臂,然后通过数据接收模式获取UR10机械臂的实时位置反馈,最后通过仿真交互模块将位置数据传给V-REP以实现仿真功能。
在连接成功后,通过vrep.simxGetObjectHandle函数获取UR10和UR10各个关节轴的句柄,将其存于一个变量之中以供之后调用。当用户操作后程序获取位置时,将各轴位置通过vrep.simxSetJointTargetPosition函数通知V-REP程序,调用时将各轴位置和之前获取的句柄一一对应。simxSetJointTargetPosition中的各轴位置使用的是弧度,源程序使用的角度,需要在程序中进行
转换。
4 UR10仿真交互控制结果
基于Python的UR10机械臂可视化平台操控界面如图2所示。
首先,打开V-REP软件,打开先前设置好的V-REP场景,并启动模拟环境。之后打开操作程序,点击V-REP连接按钮,当程序提示成功后,如果使用仿真模式即可直接操作,在V-REP上查看仿真运动轨迹。如果使用实时同步模式还需要点击机械臂连接按钮,之后即可各种操作,观察UR10机械臂的运动情况和V-REP中的仿真情况。操作人员按下各个JOG+、JOG-按钮即可对相应的轴或者位姿进行点动,放开鼠标即停止点动,为了安全原因,每次点动最多移动90°,移动超过90°后会自动停止,需要继续移动要松开鼠标并再次按下鼠标。经过测试,本软件能够顺利操控机
械臂,延迟时间低,在实时同步模式下UR10机械臂与V-REP软件延迟低于0.1s,能够使操作人员较好的利用仿真环境操控实际机械臂,实现了UR机械臂模拟的需求。
5 结论
基于对UR10机械臂可视化仿真平台设计分析,叙述了Python语言编写的操控及仿真的机构、设计和实现,通过仿真结果来验证该设计方案的可行性,体现了平台的通用性和可扩展性,为进一步优化、研
究机械臂仿真和操控打下了基础。
参考文献
[1] 刘明磊,李捍东,庞爱平,等.6自由度机械臂远程控制系统研究[J].现代电子技术,2020,43(2):37-40+44.
[2] 夏伟,吴玉文.基于MATLAB Robtics Tookbox 的机械臂轨迹仿真研究[J].河南科技,2020,(4):54-56.
[3] 乐斌,曾兴斌.V-REP机器人仿真远程控制方法研究[J].工业控制计算机,2018,31(9):41-43.
[4] 王丽燕,胡玲,祖洪飞,等.UR10工业机械臂位置精度及可靠性分析[J].现代制造工程,2020(09):46-52.
[5] 马国庆,刘丽,于正林,等.基于MATLAB的UR10机器人运动学分析与仿真[J].制造业自动化,2019,41(10):87-90.
[6] 刘强,杨道国,郝卫东.UR10机器人的运动学分析与轨迹规划[J].机床与液压,2019,47(17):22-28+35.
[7] 任亚冰.基于机器学习的机械臂运动规划研究[D].成都:电子科技大学,2019.
[8] 崔玉霞,段奕林.基于联合仿真的机械臂最优路径筛选[J].机械制造与自动化,2020,49(5):161-164.
[9] 康拥宙.六由度机械臂轨迹规划及仿真研究[D].太原:中北大学,2020.
[10] 苏华勇,李海艳.机械臂系统的动力学建模与分析[J].机电工程技术,2020,49(7):120-122.
[11] 张昌,武玉强.基于P-Rob 六自由度机械臂运动学建模与仿真[J].包装工程,2020,41(11):166-173.
[12] 廖伟东,李锻能,王强,等.6R机器人工具端的运动学建模及仿真[J].机械设计与制造,2018(9):108-111.
郑怡廷 赵琛 王一帆等:基于Py th o n 的UR 10机械臂可视化仿真平台设计

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。