基于机械臂的隧道波纹钢支护结构装配控制技术探究
2020-05-13李晓冉丁文其
李晓冉, 丁文其, *
(1. 同济大学土木工程学院地下建筑与工程系, 上海 200092;2. 同济大学 岩土及地下工程教育部重点实验室, 上海 200092)
0 引言
近年来,随着大断面隧道施工技术的发展,配套施工机械如凿岩台车、湿喷机械手、钢拱架安装台车等[1]应用日益广泛,在断面挖掘、初期支护以及喷浆等施工阶段发挥着重要作用,如郑万高速铁路湖北段隧道采用多种配套机械设备[2],体现了隧道建设的机械化和信息化。这类隧道施工机械一般以多自由度机械臂为主体,如初期支护架设中常用的钢拱架安装台车,相关机械臂研发逐渐深入,国内已有两臂一篮、多功能台车等[3-4]装配机械臂出现。
国外的隧道施工机械化程度高,也纷纷推出了具有智能化运动控制的产品。例如: 瑞士学者M. Honegger等[5]利用视觉辅助隧道湿喷混凝土机器人施工,实现自动控制模式; G. Girmscheid等[6]基于激光扫描轮廓开发湿喷机器人的全自动过程控制,并对喷射混凝土的质量控制进行了较为系统的研究。相比之下,国内隧道施工中虽然已经介入大型机械,但是仍然存在以下问题: 如钢拱架拼装机仍然处于半自动化水平,操作方式为半人工方式(还需要人工移动操作杆、人工拧螺栓)[7];机械设备中没有融入远程控制技术,工人工作环境仍在危险区域内;控制系统目前难以嵌入复杂控制算法,未能获得具有自适应、自学习、自整定功能的智能控制理想性能。
现有的国内研究中,代葆融[8]针对钢拱架安装车工业PLC控制系统,使用模糊控制方法提高精度,但仍然局限于特定PLC产品的上位机软件环境,编程语言较为低级; 张守静[9]研究隧道暗挖施工一体机的控制方法,借助上位机PC,并通过VB串口通讯控件实现了PLC与PC通讯,但仅开发了一体机挖掘臂干涉判别的功能;王恒升[10]以实现双三角臂精确定位为目标,基于CAN总线设计了一个相对独立的凿岩机器人分布式控制系统; 张奕霏[11]通过开发Wincc监控界面获得机械臂运动数据,并具有进行复杂操作的功能扩展性,但是AMEsim软件对机械臂运动空间的仿真不够直观。综上可以看出,隧道施工机械控制技术研究与施工对象、施工工序密切相关,目前初期支护阶段研究较多的施工机械主要是针对钢拱架的装配架设。近年来,波形钢板结构引起人们对其广泛用途的重视[12],其断面大、强度高。在隧道初期支护阶段,连续拼装的波纹钢板外部混凝土填充效果良好,整体结构提供了足够的强度并且具有一定的变形协调性,同时对隧道出现的渗漏水现象可以起到良好的隔绝作用,提高了支护效果[13-16]。另外,波纹钢板支护结构可预制装配,具备方便加工和施工快速的优势。
对于隧道施工机械控制的相关研究,大多是基于传统常见的工法和施工对象,如初期支护中常用的钢拱架支护结构,并且开发功能一般限于某种特定需求,如双挖掘臂的干涉判断,对于新型波纹钢初期支护结构型式难以适用,也不具备直观的运动模拟仿真环境。本文结合该新型结构型式,采取基于机械臂的计算机集成控制技术,确定机械臂离线编程的二次开发总体框架,利用RobotStudio的虚拟环境在机械臂端搭建仿真平台,同时在计算机端依照二次开发流程,设计运动控制算法,实现波纹钢初期支护装配功能的开发,验证该控制方法的可行性。波纹钢支护结构分段图示意如图1所示。隧道波纹钢初期支护结构如图2所示。
图1 波纹钢支护结构分段图示意
(a) 波纹钢施工机械
(b) 装配式波纹钢初期支护
1 基于机械臂的计算机集成控制原理
隧道施工环境中,工业机器人由多自由度或多关节机械臂组成,输入特别的编程指令,依靠控制器来实现规划的各种功能,从而自动执行工业施工过程。一般来说,工业机器人由3大部分6个子系统组成[17]。3大部分是机械部分、传感部分和控制部分,6个子系统如图3所示。
图3 工业机器人结构框图[17]
工业机器人系统的设备不仅包括机械臂本体,还包括变位器、传感器系统、工装夹具以及与之相关联的I/O设备、辅助设备等。整个作业系统高效而有序运行的前提是需要一个高度集成的控制系统,从而把这些外围设备进行有机地集成。硬件和软件集成是系统集成的2个部分。硬件集成需要根据每个设备不同的通讯接口,用相应的通讯协议通过总线将其集成为一个整体;软件集成主要功能是实时监测执行机构以及与之相关联外围设备的运行状态,接收并处理现场传感系统实时反馈的数据信息,统一协调各个设备之间的资源,按照一定的工作过程控制各个设备的正常运转[18]。
由于常见的工业机器人系统均具有一定的封闭性,控制器上只允许用户通过特定的机器人语言进行编程,而没有提供其他高级语言的编译器及运行环境,一般只支持简单的算数运算、流程控制、通信、机器人运动等功能,从而将文件操作、多线程等系统调用进行了屏蔽。基于这些特点,需要采用计算机集成和其他通信技术[19],将信息传送至计算机内部进行处理,并通过计算机编程,完成高级算法,实现二次开发。基于KUKA机械臂的二次开发架构如图4所示。
图4 KUKA机械臂二次开发架构[20]
研究工业机械臂的后端控制技术,实现二次开发的功能,首先,需针对机器人的控制系统并利用相应的机器人编程语言,搭建软件控制端和硬件设备端通信的平台; 然后,通过虚拟仿真平台验证控制方法的合理性。
2 机械臂离线编程的二次开发总体框架
工业机械臂的控制需要做出编程指令,作为常用编程方式之一的离线编程在路径规划方面有着更高效率,同时离线编程软件一般具备仿真功能,可以通过虚拟仿真来检验模拟效果和运动路径。RobotStudio是瑞典的ABB公司专门用于ABB机械臂产品的离线编程软件,软件自带机器人编程语言为RAPID语言,其优势在于通过虚拟机器人技术,代码可不经转换直接应用于计算机端和机械臂[21]。RobotStudio还是唯一支持微软Visual Studio的机械臂仿真软件,高级用户可以通过二次开发(使用C#或VB.NET编写代码)改变或者提升RobotStudio的性能[22]。本文将选取ABB机器人及RobotStudio离线编程软件作为研究工具。RobotStudio离线编程常用模块如图5所示。
图5 RobotStudio离线编程常用模块
编程指令在做出后,只有通过一定通信方式到达机械臂本体才能够控制其实现运动。在整个工业机械臂作业系统中,设备与设备之间、设备与机械臂之间的通信都需要一定的通信机制才能实现。机械臂系统的通信通常分为2级: 第1级通信是计算机与机械臂控制器的通信,通常采用串行通信技术或者网络通讯技术; 第2级是机械臂控制器与外围设备的通信,多采用工业现场总线通信技术[18]。ABB机械臂丰富的I/O通信机制使得与计算机、周围设备的通信易于实现。ABB机械臂通信方式如表1所示。
表1中PC SDK是ABB官方提供的以便开发人员根据自身需求进行二次开发的开发包。对ABB进行二次开发,能够实现在计算机上通过网络远程操控机械臂,获取机械臂的位姿、程序、I/O信号等模块信息。PC SDK支持C#和VB 2种开发语言,在开发时需要添加动态链接库文件,就可以调用类库。本文借助PC SDK的通信方式,深入研究ABB机械臂的控制与开发。在此基础上,针对隧道中波纹钢支护结构搬运装配的实际情况,开发了波纹钢搬运装配离线编程软件,用于模拟计算机端控制机器人端实现波纹钢结构的搬运装配。RobotStudio二次开发总体框架如图6所示。
表1 ABB机械臂通信方式
图6 RobotStudio二次开发总体框架
Fig. 6 Overall framework of secondary development of RobotStudio
3 波纹钢支护结构装配控制的二次开发流程
3.1 开发方法
本研究采用计算机端的PC SDK通信方式,在Visual Studio平台上进行RobotStudio的二次开发。用于访问机械臂控制器功能的类共同构成Controller API(application program interface,应用程序接口,简称CAPI)。PC SDK通过Controller API提供控制功能,这些接口是对RobotStudio进行二次开发的基础,Controller API的结构属于多层次逐级分布的树状网络结构[23]。CAPI树状结构如图7所示。
图7 CAPI树状结构
3.2 开发语言及平台
3.2.1 机器人端
ABB机械臂的RAPID程序指令一般分为2类,即运动指令和程序控制指令[23]。其整体编程风格与面向过程编程的C语言风格相类似。RAPID主要是以模块为单位进行编程,将完成不同功能的例行程序封装成不同的模块,分为编程模块和系统模块。RAPID程序模块如图8所示。
图8 RAPID程序模块[24]
3.2.2 计算机端
与RAPID语言不同,C#是面向对象的高级程序设计语言,特别适合桌面和Web应用程序的开发[25]。开发平台Visual Studio包括编译器、代码完成工具、图形设计器和许多其他功能,以简化软件开发过程[26]。本文采用Visual Studio 2019,调试C#编写的程序。
3.3 目标点位姿数据结构
RobotStudio中机械臂的运动轨迹是由一系列目标点构成的,而目标点数据类型为robtarget。定义一个目标点的格式如下:
CONST robtarget p15:=[[600,500,225],[1,0,0,0],
transrot
[1,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]]。
robconfextax
由上可知,位姿数据由trans、rot、robconf和extax 4个部分组成。其中: robconf表示机械臂的轴配置(软件中反解得到);exta表示机器人的外轴情况; 在机械臂无外轴(以9E9表示)的情况下,目标点位姿就由trans和rot决定; trans即TCP(工具中心点)的x、y、z坐标; rot即机械臂末端姿态的四元数表示形式。四元数由矢量部分和标量部分组成,可表示为
q=q4+q1i+q2j+q3k。
欧拉角到四元数的转换与欧拉角的转动顺序有关。以Z-Y-X的转动顺序为例,定义ψ、θ、φ分别为绕Z、Y、X轴的旋转角度,则欧拉角到四元数的转换可表示为
将上式展开,得到
3.4 C#窗体模块设计
在计算机端控制机械臂,首先要扫描机械臂控制器,再选择相应的机械臂进行连接;机械臂搬运波纹钢路径由不同的目标点组成,在每一个目标点有不同的动作功能,相应的如抓取、移动、释放等作业动作。操作人员根据实际环境判断机械臂运动轨迹,输入目标点(如起始点等特征点)坐标后才能控制机械臂实现装配动作。开发的波纹钢搬运装配离线编程软件包括扫描控制器并连接、目标点设置以及装配运动控制等3个模块。窗体总体效果如图9所示。
3.4.1 扫描控制器并连接模块
控制机械臂的第1步是添加PC SDK的动态链接库,即引用ABB.Robotics.Controllers.PC.dll文件,并在建立的winform项目中声明要使用的功能,如下所示:
using ABB.Robotics.Controllers;
using ABB.Robotics.Controllers.Discovery;
using ABB.Robotics.Controllers.RapidDomain。
图9 波纹钢搬运装配离线编程软件窗体总体效果
Fig. 9 Overall form of off-line programming software for corrugated steel handling and assembling
扫锚控制器并连接模块实现功能为运行窗体时,自动扫描现有的机械臂控制器,并将控制器信息记录在列表中。扫描控制器之后,由用户选择要连接的控制器一行,首先要判断控制器是否可用,如果已经被控制,则需先行释放控制器再登录。同时,为人机交互更为方便,在窗体中添加信息提示框,用于监视程序运行的各个重要节点,如: 控制器是否已登录、装配运动是否启动等。
3.4.2 目标点设置模块
该模块为适应实际波纹钢搬运动作,将目标点主要分为起始点、拾取点和释放点3种类型。拾取点为机器人抓取波纹钢板件时TCP的位置;释放点为机器人达到波纹钢板安装位置时TCP的位置;起始点为初始时机器人停止的安全位置。为了增强程序的拓展性能,在目标点不属于以上3类时,程序默认其为过渡点。在实际操作时,可以根据环境来自由设置,实现避障等优化轨迹运动的功能。
3.4.3 装配运动控制模块
该模块包括对已经输入目标点位姿数据的整理。用户输入目标点数据中的姿态部分(即rot部分,机械臂绕Z、Y、X轴的旋转角度)根据3.3节欧拉角到四元数的转换方法转换为可以发送给机械臂端的数据格式,还可以实现对目标点的上下移动和删除等操作。装配运动执行的控制也在这一模块,PC SDK考虑到防止在RAPID程序运行过程中其他用户对程序进行突然改写或者调用,所以同时只允许有1台远程用户向控制器发送指令或者调用RAPID程序。远程应用程序要对RapidDomain中的Tasks、Modules、Routines、Variables等进行改写操作时需要向控制器申请改写权限。
3.5 波纹钢支护结构搬运装配运动控制算法
3.5.1 运动数据的交换
考虑到安全性等问题,PC SDK不支持直接对机械臂的轴运动进行控制,而是通过修改RAPID程序中的变量来间接控制机械臂运动。而机械臂的运动控制直接依靠的还是RAPID语言中的运动指令,如MoveL、MoveJ等。
因此,二次开发程序中的运动数据需交换到RAPID的运动指令中。读取RAPID程序数据,可以选择Direct Access,即直接进入RAPID程序,获取想要的数据信息。这种方法节省内存而且信息获取更加迅速[28]。如下示例即为获取RAPID程序“reg1”变量的代码:
RapidDatard = aController.Rapid.GetRapidData("T_ROB1", "user", "reg1")。
3.5.2 运动算法流程
将用户输入的目标点数据交换给对应的 RAPID 程序变量之后,RobotStudio虚拟控制器中要实现机器人的装配动作。得到用户交互的数据后,如何利用 RAPID 中预编写的程序启动机器人装配也是一个关键点。
RAPID程序中设置pPickBase(拾取点基点)、pPlaceBase(释放点基点)以及pHome(初始点)等可变量,随着用户在 C#端输入完成目标点数据,此3点的数据也随之改变。RAPID 程序运行后,首先进入 main程序。其中在初始化子程序(rInitAll)里,根据pHome初始点数据,从当前机械臂TCP 位置回到初始点,以防止直接开始运动导致触碰事故,同时设置程序完成标志FinishedFlag为False,设置搬运波纹钢板件的个数nCount为1。
之后正式进入拾取、释放运动程序中,为实现搬运装配程序的可拓展性,并考虑到波纹钢板的装配位置具有规律,本文根据拾取点或释放点基点坐标,推出下一块波纹钢板的拾取点和释放点,在每次进入拾取和释放子程序之前,确定下一次的拾取和释放点坐标,编写程序用到RAPID内置函数RelTool,功能为根据上一点的位置在工具坐标系里实现偏移。RelTool函数的调用方法为RelTool(robtarget,x、y、zRx:=αRy:=βRz:=γ),其中robtarget为待偏移基点坐标,x、y、z以及α、β、γ为工具坐标系下偏移的距离和角度。部分代码实现如下:
PROC rPosition_Pick() !释放点位置确定子程序与此类似
TEST nCount !检验第几块波纹钢板
CASE1:
pPick:=RelTool(pPickBase,0,0,0Rz:=0);
在2018年AWE上,长虹推出了人工智能智慧家庭解决方案(CHiQ Life),围绕娱乐、烹饪、空气、用水等家庭生活场景,借助全空间语音交互等人工智能技术,为用户带来更舒适、更便捷、更轻松的美好生活。人工智能语音交互技术为智慧型家电带来了新的自然交互方式,而在长虹CHiQ Life解决方案中,首次提出了基于全空间语音交互等人工智能技术,实现在家庭全空间与电视、冰箱、空调、洗衣机、空气净化器、厨电、净水器、窗帘、安防等智能设备,做到实时交互、实时响应,为用户提供“随叫随到”的舒心服务。
CASE2:
pPick:=RelTool(pPickBase,1 500,0,0Rz:=0);
……
ENDTEST
ENDPROC
在主程序main的循环结构里,不断执行rPick和rPlace子程序,直到nCount个数满足要求,此时将完成标志FinishedFlag置为True,至此程序结束运行。波纹钢搬运装配运动控制算法逻辑如图10所示。
图10 波纹钢搬运装配运动控制算法逻辑
Fig. 10 Motion control algorithm of corrugated steel handling and assembling
4 波纹钢初期支护结构机械臂装配仿真试验
4.1 机械臂虚拟仿真实验室搭建
本文搭建了RobotStudio中的机械臂虚拟仿真实验室。通过导入三维模型并在离线编程软件中建立Smart组件,设置I/O信号,模拟相应传感器,结合软件中自带的机械臂等模型库,生成工作站,实现C#与机械臂的联调通信。该仿真实验室包括ABB IRB7600机器人[29]、IRC5控制器及示教器、储物托盘、真空吸盘、波纹钢板以及安全维护栏。波纹钢结构机械臂装配虚拟仿真实验室总体布局如图11所示。其中,波纹钢板在SolidWorks中完成建模后导入。
1—ABB IRB7600机器人; 2—IRC5控制器 ; 3—示教器 ; 4—真空吸盘; 5—储物托盘; 6—待拼装波纹钢; 7—堆放波纹钢 ; 8—安全围护栏。
图11 波纹钢结构机械臂装配虚拟仿真实验室总体布局
Fig. 11 General layout of virtual simulation laboratory for assembly of corrugated steel structure
4.2 机械臂末端工具及波纹钢工件坐标系
4.3 配置I/O信号
RobotStudio中I/O信号可以实现机械臂与外围设备如传感器的通信,根据I/O信号的变化,外围设备可以完成对应的动作。软件中的Smart组件通过添加I/O信号,可以实现传感器的功能。Smart组件的动作可以由代码或其他Smart组件控制执行[21]。
4.3.1 真空吸盘Smart组件I/O信号
本文主要对真空吸盘添加I/O信号,需要完成吸附、分离、感知等功能。建立真空吸盘Smart组件(SC_Gripper)。真空吸盘Smart组件信号连接如图12所示。其工作流程为: 1)输入信号(diGripper)置1,启动线性传感器(LineSensor),可感应真空吸盘是否运动到拾取点附近; 2)当真空吸盘移动到波纹钢板附近,激活吸附功能(Attacher),该功能使真空吸盘和感应到的波纹钢板成为一体; 3)当真空吸盘抓取到波纹钢板之后,发出吸附成功的信号(doVacuumOK); 4)此时机械臂进入到释放点的运动过程中,当移动到释放点之后,输入信号(diGripper)重置为0,激活分离功能(Detacher),该功能使得真空吸盘和吸附的波纹钢板分离开; 5)搬运到位之后,吸附成功信号(doVacuumOK)置0,完成整个搬运装配过程,进入下一次循环。
图12 真空吸盘Smart组件信号连接
4.3.2 波纹钢结构机械臂装配的工作站逻辑
在完成真空吸盘Smart组件信号连接之后,将机械臂的信号系统与之相连,才能构成一个完整的工作站逻辑,从而控制搬运装配的实现。首先分别新建输入信号(diVacuumOK)和输出信号(doGripper),作为与真空吸盘Smart组件(SC_Gripper)相连的I/O信号。机械臂与真空吸盘输入输出信号对应连接: 当机械臂运动至拾取点时,发出doGripper信号,控制真空吸盘的吸附动作;待机械臂运动至释放点时,接受真空吸盘的diVacuumOK信号,控制与真空吸盘的分离动作,然后机械臂回到初始点,等到下一次运动指令。工作站逻辑信号连接如图13所示。
4.4 C#控制机械臂装配仿真试验结果
完成机械臂虚拟仿真实验室搭建后,利用RobotStudio的仿真功能,模拟波纹钢支护结构的抓取及搬运过程,验证此次RobotStudio二次开发程序的适用性。
1)运行C#二次开发程序,加载出窗体后,程序自动扫描现有机械臂控制器。扫描并连接控制器如图14所示。因为本文使用的是RobotStudio中的虚拟机械臂,其IP地址默认为127.0.0.1,选中要连接的控制器一行,点击一键连接,右侧信息提示框出现已经登录控制器的提示。
图13 工作站逻辑信号连接
图14 仿真试验第1步: 扫描并连接控制器
2)输入目标点位姿数据,本次仿真模拟总共录入3个特征点。录入数据如表2所示。
表2 目标点数据
完成目标点数据录入如图15所示。
图15 仿真试验第2步: 完成目标点数据录入
以上录入的数据点包括拾取点的基点和释放点的基点。依据3.5.2节装配位置调整的方法,并考虑到工具坐标系建立在波纹钢构件上,后续拾取点和释放点的坐标容易计算得到。后续拾取点与施工环境中波纹钢板摆放位置有关,本文仿真试验的简化模型中,待拼装波纹钢板之间仅在X轴方向存在偏移。而后续释放点坐标与几何约束有关,隧道中波纹钢初期支护呈环形,如图1和图2中所示,每一环的波纹钢板分段之间的坐标存在位置上的约束关系。本文简化模型中,第2块波纹钢板与第1块波纹钢板的释放点仅在工具坐标系的X轴方向上有偏移,偏移距离即为波纹钢板的长度。仿真模型中波纹钢板中心的拾取点和释放点坐标如表3所示。偏移量在工具坐标系中计算,目标点在世界坐标系中计算,第2块波纹钢板拾取点与释放点坐标分别调用偏移函数RelTool(pPickBase,1 500,0,0Rz:=0),RelTool(pPlaceBase,1 000,0,0Ry:=0)对第1块波纹钢板进行偏移计算得到。
表3 波纹钢板中心的拾取点和释放点坐标(以仿真模型中第2块为例)
Table 3 Coordinates of pick and release point of corrugated steel plate center (take 2 pieces as examples)
波纹钢板块数拾取点 释放点第1块[2 400,-5,150][250,2 700,1 800]第2块[2 400,1 495 ,150][250,2 200,2 666]
3)点击“启动装配”按钮,机械臂开始按照指定路径运动。在运动过程中,RobotStudio会监控机器人的姿态位置,如果出现坐标不能达到或者机械臂位姿出现异常情况等,系统会停止仿真并输出错误信息,可根据系统输出的错误信息对程序或数据进行修改。根据表2提供数据进行波纹钢搬运装配仿真运行,结果如图16所示。
(a) 初始化到达起始点
(b) 初始点向拾取点运动
(c) 拾取点抓取波纹钢
(d) 搬运波纹钢
(e) 释放波纹钢
5 结论与讨论
本文对波纹钢初期支护结构装配控制技术进行探索,从工业机械臂的计算机集成控制角度提出了实现特定二次开发功能(如装配或搬运)的研究方案。由于商用机器人编程语言如RAPID语言一般较为低级,单纯借助ABB 机械臂及其RobotStudio离线编程平台难以实现新功能的集成。通过联合机械臂端预编程与计算机端网络控制方法进行研究,主要结论如下。
1)机械臂端主要负责运动控制算法的直接实现,可以根据波纹钢结构装配位置的几何约束规律得到运动目标点坐标,预编程具备良好的可扩展性。
2)PCSDK通信方式利于使用C#语言二次开发,使得计算机端可以通过网络控制收发交换数据。
3)Smart组件通过配置I/O信号模拟传感器功能,形成的工作站信号逻辑可以仿真硬件总线功能。
4)仿真试验的成功运行验证了波纹钢装配控制技术的可行性,仿真数据可以为实际应用提供可靠的参考。
之后研究还要结合机械臂物理试验验证装配技术的运行性能,虚拟仿真的简化处理需进一步深化设计,如机械臂工具中心(TCP)所装置的抓取工具由波纹钢构件的节点连接构造型式决定,据此也可调整细部装配动作。进一步的机械臂运动与路径规划还需结合隧道开挖工法以及支护施工工序调整,如有配套台车等其他机械可能使装配式施工的快速性得到更好体现。