1. 绪论
机器人是典型的机电一体化设备,不仅在制造业、农业、医疗、海洋开发、航天工程等方面得到了越来越广泛的应用,而且已经渗透到人们生活的各个方面,随着工业机器人向更深更层次的发展以及机器人智能化水平的逐渐提高,机器人的应用范围还在不断地扩大。国内外专家预测机器人产业将是继汽车、计算机之后出现的新型高技术产业。在这样的背景下,机器人技术与相关方面的人才的需求也在迅速增加,各高校也相应加大了对机器人技术人才的培养力度。
为了促进我国在该领域相关行业的发展需求,培养机器人的设计、研发、生产等方面的人才,很多高等院校已经开设机器人学课程。但关于该课程的实践教学手段并不是很成熟,有些院校购买国内外较成熟的工业产品用于实践教学,但是并不具备开放性,学生无法更深入地了解其内部构造以及信息流的控制过程。
本课题的主要研究目的是将多自由度开放式机械手臂、模糊控制器及主动视觉系统有机结合,尝试设计出一种智能化、自动化程度较高且具有一定环境适应能力的智能化机械手臂,研究相关模糊控制算法,实现机械手臂在不同环境下的自动识物、取物及运移,并可与智能小车结合实现更广泛的应用。与此同时,该系统也构成一套开放式运动控制实验平台,与单片机原理、嵌入式技术、运动控制、模糊控制等紧密衔接,有利于深入地了解其内部构造以及信息流的控制过程,因此具有较好的推广应用价值。
2. 视觉系统模型研究
本题目建立了一个主动机器视觉定位系统,用于工业机器人对零件工位的精确定位。采用基于区域的匹配和形状特征识别相结合的图像处理方法,该方法经过阈值和形状判据,识别出物体特征,能够快速准确地得到物体的边界和质心,进行数据识别和计算,再结合机器人运动学原理控制机器人实时运动以消除此误差,满足工业机器人自定位的要求。
2.1. 基于位置的视觉伺服系统
采用基于位置的视觉伺服控制结构。使用CCD摄像机和USB连接线,将视频信号输入计算机,并对其快速处理。首先从图像中提取图像特征,然后利用图像特征与目标的几何模型、摄像机模型来确定所求目标并估计目标与摄像机的相对位置;目标与摄像机相对位置的估计量与其期望值相比较后,产生的位置误差量送入笛卡尔坐标控制模块 [4] 。基于位置的视觉伺服系统控制结构见图1。
摄像头与目标的相对位置是通过机械手末端坐标与固定坐标系的关系矩阵T (T已知)间接获得。基于位置的视觉伺服系统在实际应用中较为便利。
本设计中机器人视觉定位系统功能模块图如图2所示,在关节型机器人末端安装单个摄像机,使工件能完全出现在摄像机的图像中。系统包括摄像机系统和控制系统:
1) 摄像机系统:由单个摄像机和计算机(包括图像采集卡)组成,负责视觉图像的采集和机器视觉算法;
2) 控制系统:由计算机和控制箱组成,用来控制机器人末端的实际位置;经CCD摄像机对工作区进行拍摄,计算机通过本文使用的图像识别方法,提取跟踪特征,进行数据识别和计算,通过逆运动学求解得到机器人各关节位置误差值,最后控制高精度的末端执行机构,调整机器人的位姿。
2.2. 基于位置的视觉伺服系统硬件设计
2.2.1. 工业摄像头
本次课题选用的工业摄像机是USB2.0接口的MindVision CMOS相机,支持二次开发。工业摄相机提供了提供丰富的图像处理接口,算法关键部分采用了硬件加速功能,在有效的提升图像质量的同时降低CPU占用率,具体参数及实物图如图3、表1。
![](//html.hanspub.org/file/1-2610096x10_hanspub.png)
Figure 1. Visual servo control based on the position structure diagram
图1. 基于位置的视觉伺服控制结构框图
![](//html.hanspub.org/file/1-2610096x11_hanspub.png)
Figure 2. Robot vision positioning system block diagram
图2. 机器人视觉定位系统功能模块图
![](Images/Table_Tmp.jpg)
Table 1. Industrial camera parameter
表1. 工业摄像机参数
2.2.2. 摄像机支架
摄像机支架主要实现支撑、稳定工业摄像机,协助工业摄像机完成实时采集的作用,以便摄像机在实时采集时更加稳定,考虑到所需支架对强度的要求不是很高,并且资金也并不是很宽裕,所以便采用实验室木板自己简单设计加工了两个木质支架,分别协助工业摄像机完成俯拍和侧拍任务 [5] ,实物图4、图5。
2.2.3. 机械手臂
本次研究采用基于成型的多自由度机械臂平台设计模糊控制器,并结合PC机实现对机械臂的控制,如图6、图7所示。
机械臂一种是模拟手臂功能的机械结构。多关节机械臂是最接近人类手臂的结构。它由许多接头组成,一系列刚性机构通过一系列柔性接头连接成的开链结构,具有接受指令,精准地定位到三维(或二维)空间上的具体某一点进行作业的功能。每个关节通过舵机驱动。各种较为复杂的操作可由不同的关节驱动组合而成。这些连杆就好比人的骨架,分别类似于胸、腹和颈,而关节相当于人体的各种如肘关节、
膝关节和腕关节 [6] 。机械臂的最前端装有手爪型的末端执行器,手爪类似一个夹子可以进行“开”与“合”,实现抓取动作和细微操作。手臂的动作幅度一般较大,通常进行宏操作,机械臂模型如图8所示。
每一个关节的运动由舵机控制,旋转的角度有电平脉冲宽度控制,从而实现每一个具体转动角度,如图9。
![](//html.hanspub.org/file/1-2610096x17_hanspub.png)
Figure 8. Mechanical arm structure design
图8. 机械臂结构设计图
![](//html.hanspub.org/file/1-2610096x18_hanspub.png)
Figure 9. Pulse width and rotation angle of steering gear diagram
图9. 脉冲宽度与舵机旋转角度关系图
2.3. 基于位置的视觉伺服系统软件设计
使用HALCON [5] 软件进行机器人手眼标定目的是为了得到机器人基准坐标系相对于摄像头坐标系的位姿。该位姿参数的精确性也会直接影响到机械手对目标点的定位精度。
在进行手眼系统的标定时,必须提供标定板中所有黑色圆点的三维坐标值及其对应的图像像素值。在每幅标定图像中,还必须提供黑色圆点的三维坐标值,对应的像素值以及三维点的个数。
由于本设计只使用了单个相机,在未知目标工件三维模型的情况下,无法获取目标物体在相机光轴方向上的深度信息。这就需要在此引入参考坐标系,且让该参考坐标系与目标物体的坐标系是处在同一个平面上。这样就能通过标准的标定板信息引入所需的深度信息。
对含有目标物体的图像,首先将其进行灰度 [7] 化处理,然后选取可抓取的区域范围,再进行阈值化处理,最后进行区域填充与形状选择,从而得到目标物体。得到目标物体后进行简单的blob分析,其边界就被转化为XLD轮廓。在提取出边界轮廓之后,寻找其中长直的平行边从而就可以得到四个端点,那么,抓取点就在各端点的中央位置。
2.3.1. 目标物形状识别模块
目标物形状识别模块主要完成的功能是实现机器人对简单几何形状目标物的识别,例如,在二维图像中辨别正方形,三角形或者圆形等,在采集三维空间立体几何模型图片后识别正方体,圆柱体或球等。程序流程图如图10。
2.3.2. 目标物颜色识别模块
目标物颜色识别模块主要完成的功能是实现机器人对目标物基本颜色的识别,程序流程图见图11。
2.3.3. 目标物大小识别模块
目标物大小识别模块主要完成的功能是实现机器人对目标物尺寸的识别,程序很容易实现求得目标物的面积大小,在识别图形的基础之上便很容易求出几何目标物的基本参数,程序流程图如图12。
2.3.4. 机器视觉控制机械手臂的抓取目标物
在后期机器视觉系统与机械臂相结合时,机械手臂的控制是采用的模糊控制,需要视觉系统实时发送机械臂末端坐标以便控制器下达下一步的指令,程序流程图见图13。
3. 机械手臂模糊控制系统研究
3.1. 系统组成
整个机械臂模糊控制研究系统由硬件和软件两部分组成,硬件包括多自由度机械臂和上位机。本文提出的机械臂控制方案是以视觉定位与模糊控制相结合的一种机械手臂控制方案。在机械臂控制过程中,通过视频采集装置获得机械手的精确位置,并将获取的机械手的坐标信息与由机械手计算的初始坐标信息进行比较,获得机械手的角度差。模糊控制器以角度差和差值变化率作为输入信号运算得出输出控制信号,实现对机械手臂运动的微调。机械臂的整个控制系统构成闭环系统,以实现调节运动过程的不断反馈。根据实践需要,系统内部包括通信模块、界面显示模块、模糊控制模块、数据读取模块和运算模块等部分组成,如图14所示。
从图中可以看出,系统是通过在固定位置安装摄像机,通过摄像头实时获取机械臂运动过程的视频图像信息,对视频图像的进行分析处理,实现机械臂手爪运动位置的精确定位。运动过程中产生的与理论的运动轨迹之间的差值被发送到模糊控制器,模糊控制器根据预设的模糊控制规则对机械臂轨迹进行模糊控制输出,将控制结果发送到机械手的运动驱动装置中,调整机械手的运动角度,改变机械臂的轨迹路径,使得机械手到达预定目标位置。因此基于视频图像的采集,分析和处理是设计模糊控制系统实现机器人运动的精确控制的先决条件。系统的具体运行步骤如下:
第一步:正确摆放目标物、机械臂和摄像机,将机械臂位置进行初始化,启动摄像机对机械臂爪子与目标物实时定位。
第二步:利用机械臂控制系统内部编写的运算模块,计算从起始位置坐标到运动目标位置坐标之间
![](//html.hanspub.org/file/1-2610096x22_hanspub.png)
Figure 13. Machine vision combined with mechanical arms flow chart
图13. 机器视觉结合机械手臂流程图
![](//html.hanspub.org/file/1-2610096x23_hanspub.png)
Figure 14. General structure of manipulator control system
图14. 机械手控制系统总体组成结构图
的关节角度及角度差,给出机械臂在运动过程中各运动关节的实时控制信号,以及关节到达指定目标位置时,其各个关节节点的最终状态值,如各个关节的运动角度等信息。
第三步:机械臂运动控制系统计算机械臂各个关节节点在不同时刻的角度及角度变化率信息,输入到机械臂模糊控制器,通过模糊控制器输出机械臂的运动控制信息,控制机械臂运动。
第四步:机械臂运动控制信号驱动机械臂持续运动,根据摄像机不断反馈的位置信息对机械手的运动过程进行监控并对机械臂的发出调整信号。当机械手运动达到指定的目标位置时,由摄像机获取机械臂爪子坐标,根据此坐标计算出各主要关节点角度信息与预先计算的角度信息进行比对,如果二者之间的差值小于预先设定的范围,则机械臂停止运动,完成机械手运动过程的控制任务。
3.2. 模糊控制模块
本文中的模糊控制模块主要实现对输入的变量进行模糊运算得到输出结果的功能。模糊控制模块的内容主要有建立输入和输出的模糊集,定义输入输出变量和制定模糊控制规则。功能是对输入的变量进行模糊化和模糊运算,最终得到输出变量控制机械臂。
本文研究分别运用了一个云台模糊控制器和三个关节模糊控制器,总体设计思路如下:
1) 模糊化接口
模糊化 [8] 是通过在控制器的输入和输出量上定义语言变量将精确的输入和输出值转换为模糊语言值。模糊化的设计过程实际上是定义语言变量的过程。本文中,机械臂云台模糊控制器中将云台角度与目标角度的角度差及角度差值变化率作为输入量,机械臂的关节模糊控制器将关节现在角度与预设角度的角度差和差值变化率分别作为输入量,进行模糊化。
① 确定语言变量。针对模糊控制器的每个输入、输出量,各自定义一个语言变量。因为对机械臂控制输出的判断,往往不仅根据角度的变化,而且还根据角度的变化率来进行综合评判。所以,在机械臂的模糊控制器设计中,取机械臂角度与目标角度的角度差Ɵ及角度差值变化率ΔƟ为模糊控制器的两个输入,则在Ɵ的论域上定义语言变量“角度Ɵ”,在ΔƟ的论域上定义语言变量“角度变化率ΔƟ”;在输出控制量angle的论域上定义语言变量“角度angle”。
② 设计语言变量论域。在定义了语言变量的个数和名称之后,接下来要定义的是各语言变量的论域。模糊控制系统进行在线运行时,为了提高运算速度,模糊控制器常常以模糊控制查询表的形式出现。该表反映了通过模糊控制算法获得的在给定离散点处的模糊控制器输入和输出值的对应的关系。为了方便生成控制查询表,在模糊控制器的设计中,语言变量的域通常定义为有限的离散整数。本文中机械臂云台控制器的论域分别为Ɵ[−180,180],ΔƟ[−180,180],angle[−180,180]。机械臂的关节控制器的论域分别为Ɵ1[−90,90],ΔƟ1[−90,90],angle1[−90,90]。
③ 定义各语言变量的语言值。在语言变量的论域上,可将Ɵ、ΔƟ和angle划分为{“正大(PB)”,“正中(PM)”,“正小(PS)”,“零(ZO)”,“负小(NS)”,“负中(NM)”,“负大(NB)”}七档。选择更多的“档”,“级别”,即对于每个变量进行更多状态的描述,制定规则时回更加灵活详细,但相应的规则也将变得越来越复杂。选择较少“档”,“级别”,规则相应较少,实现方便,但会使控制效果无法达到预期效果,因此在选择模糊级别时要同事兼顾规则简单和控制效果。
④ 定义各语言值的隶属函数 [9] 。隶属函数的类型通常有:正态分布型(例如高斯基函数)、三角型和梯型。确定模糊语言变量的隶属函数时需要考虑隶属函数曲线形状对控制性能的影响和隶属函数曲线的分布对控制性能的影响。本文采用三角形隶属函数,如图15所示。
经过以上四步的定义后,精确的模糊控制器输入、输出论域值就可以用模糊的语言值来描述了。
2) 规则库
规则库由一系列基于专家经验得出的控制规则组成,按照“IF…is…AND…is…THEN…is…”的
形式表达。规则库也可以用矩阵表的形式进行描述。
3) 模糊推理
模糊推理是一种近似推理,模糊推理是模糊决策的基础,是形成模糊控制的前提。模糊控制器将实际输入的模糊取值根据控制规则中的输入输出模糊关系,通过模糊推理,得到输出的模糊状态。
4) 清晰化接口
模糊控制系统输出给执行机构的信号是精确值,所以要将模糊推理得到的模糊输出值转化为精确控制量,才能施加于被控对象。本文中采用加权平均法进行模糊输出值的清晰化。
经过模糊化接口、规则库、模糊推理、清晰化接口的设计,一个完整的模糊控制器就构建成功了。本文模糊控制规则以模糊控制表的形式表示,如表2所示。
3.3. 通信模块
通信模块包括上位机与摄像设备间的通信以及上位机与机械臂之间的通信。上位机与摄像设备间的通信:将摄像机获取的机械臂与目标物位置信息存入TEXT文档,再由上位机程序读取此文档,得到机械臂控制程序的输入量。上位机与机械臂通信:用C#编写串口程序,包括端口选择,波特率选择,数据接收,机械臂初始化,复位和发送控制指令等功能。
3.4. 界面显示模块
界面显示模块包括端口设置、接收数据窗口、测试窗口以及各种功能按钮,如图16。
4. 模糊控制与视觉结合运行调试
将摄像机固定地安装在机器人工作空间的某个位置,如正上方或斜侧方等,可获得固定的图像分辨率,并可同时获取有关机器人及其周围环境的图像信息,便于将视觉系统集成到控制中。机器人通过摄像机拍摄目标小球的图像,并提取其特征(目标小球在图像2D坐标中的横坐标x,纵坐标y和小球半径r)来构成位置闭环。模糊视觉控制器根据图像特征的误差根据模糊控制规则得到机器人三个关节位置的期望变化率。机械臂位置伺服控制器再根据这些变化率来控制机械臂各关节运动,使机械臂末端手爪朝着目标运动。
4.1. 测试方法
本次研究的调试分为两个大的步骤,一是与视觉结合之前,通过手动输入坐标值进行系统调试。二是与视觉结合后通过自动获取坐标值进行调试。
表2. 模糊控制表 [10]
1) 手动输入坐标值
放置机械臂与目标物,确定坐标系,通过C#的文本框分别输入机械臂爪子和目标物的坐标值,机械臂运动停止后再次输入当前位置坐标,直到机械臂完成指定任务,以此测试模糊控制器的设计、程序运算过程的编写是否合理。具体测试如图17所示。
在测试过程中发现,机械臂运动偏差很大,通过不断调整模糊集依然无法解决,最终发现是由于没有正确编写闭环控制程序,导致系统并没有构成闭环系统,经过不断修改程序该问题得到解决。
2) 自动获取坐标值
放置正确机械臂、目标物以及摄像机位置,打开机械臂复位,打开机械臂和摄像机的上位机控制软件,连接蓝牙,打开串口,点击“图像初始化”和“实时采集”按钮,通过测试与调试确保机械臂与摄像机的坐标系重合。摄像机实时获取目标物与机械臂爪子的坐标,存放在TEXT中,通过机械臂上位机软件实时读取坐标,输入程序进行运算进而控制机械臂运动。在这个过程中,需要不断调整摄像机与机械臂的位置使坐标重合,如图18、图19。
4.2. 机器视觉结合机械臂的调试
在自动获取坐标值调试的过程中,出现了机械臂单步调试正常,连续调试无法实现控制的情况,经过检查发现,摄像机实时获取坐标的频率过低,无法跟上机械臂的运动速度,导致无法准确控制机械臂。在一开始的运算控制程序中,直接根据模糊控制器输出的角度值换算成代码 [6] 控制机械臂关节运动,由于每个代码代表机械臂关节的一个固定位置,导致运行时机械臂大幅度摆动 [11] ,没有得到有效控制。后来将大的角度分解成数个小角度后依次输出,使机械臂实现平稳运动,如图20、图21。
![](//html.hanspub.org/file/1-2610096x26_hanspub.png)
Figure 17. Manually entering coordinate values test
图17. 手动输入坐标值测试
![](//html.hanspub.org/file/1-2610096x28_hanspub.png)
Figure 19. Machine vision based robot arm Visual window [12]
图19. 机器视觉结合机械臂视觉窗口 [12]
![](//html.hanspub.org/file/1-2610096x29_hanspub.png)
Figure 20. Target and robotic arm marks at the end of a target chart [13]
图20. 目标物和机械手臂末端坐标示例图 [13]
![](//html.hanspub.org/file/1-2610096x30_hanspub.png)
Figure 21. Target and robotic arm marks at the end of a target chart [14]
图21. 目标物和机械手臂末端坐标示例图 [14]
5. 总结
本文进行了结合视觉伺服的机械手臂模糊控制研究,应用模糊控制理论 [15] ,利用C#编写上位机控制程序,包括模糊控制器、人机界面和运算程序等,实现了机械臂的自动取物放物的功能。
在本次研究中,首先遇到的一个问题就是C#语言的学习使用,由于以前没有接触过,所以在最初的学习中走了很多弯路。经过多种途径的学习,对Visual Studio [16] 的使用有了一定了解,后续的编程过程才得以进行。接下来的软件设计过程,首先将模糊控制理论与C#结合,了解C#中的每条语句所代表的有关模糊理论的含义,设计模糊控制器。由于没有准确找到问题所在,在调试过程中模糊控制器参数的设定上花费了大量时间。
在编写机械臂运算控制程序时,由于编写错误导致系统并没有构成反馈。导致调试结果始终不尽如人意。后续与视觉伺服结合时,存在摄像机与机械臂坐标系不一致,摄像机获取坐标速度跟不上机械臂运动速度等问题,使机械臂运动无法达到预期效果。经过不断修正,最终解决了上述问题。
在本文的研究中仍旧存在很多不足,例如控制算法不够准确,使机械臂的控制不够精准平稳;由于缺少工程实践经验,导致模糊规则 [17] 制定不够完备,并且在工程中遇到很多问题无法有效解决。在后续的研究中,可以尝试加入更多新技术,例如自适应、PID控制 [18] 以及神经网络等,与模糊理论相结合,使控制更精准,可靠性更好。还可以将机械臂的控制规则等进一步完善,使机械臂实现更多功能,控制更加平稳准确。