基于.net的五自由度机械手控制软件的设计与实现
景鑫,陆瑶
(无锡职业技术学院 机器人研究所 江苏 无锡 214121)
摘要:五自由度机械手的运动行为由控制卡操作电机实现,以往的上位机控制软件都是直接调用控制卡提供的基本运动单元函数,其程序本身并不因具体情况而具有逻辑性。为了使操作软件更加符合机械手本身的特点,本文以无锡职业技术学院机器人研究所开发的五自由度机械手为依托,设计了一种比较适合五自由度机械手运动特点的软件结构,并在.net环境下用C#语言实现。最后,本文对该方案进行了总结,并对其不足及改进方向进行了阐述。
关键字:五自由度机械手;机械手;统一建模语言;.net 框架
The Design and Implementing of Operation Software Based On .Net For Five-Degree-of-Freedom Manipulator
Jing Xin, Lu Yao
Abstract: The electric operation card operates the electric motor to implement the movement of five-degree-of-freedom manipulator, the control software of upper monitor just runs the basic moving-unit functions which the card just offers in programmer directly foretime, therefore the programmer itself didn’t have the managing logic. The article describes a design of the software construct of five-degree-of-freedom manipulator which is developed by Robot laboratory of Wu xi Institute of Technology, and implements the programmer under the .net environment in C# language. In the end, the article summarizes the method, and describes the shortage and improvement.
Keywords: five-degree-freedom manipulator; manipulator; UML; .net framework
中图分类号:TP241 文献标识码:A
1 引言
五自由度机械手是一款经典的机械手模型,同时集转向、升降、手臂伸缩、抓合动作于一体,具有较广的应用范围,能在三维空间大规模作业,具有较强的抓取能力。它可以在90度范围内自由旋转,消除了对物体的位置要求,大大提高了它的适应性 [1]。本文阐述的机械手属于垂直多关节型机械手,包括转动基座、大臂、小臂、手腕、手指五个关节,通过软件操作每个关节的运动,从而控制机械手的整体运动姿态。无锡职业技术学院机器人研究所根据教学的需要,研制了一款符合高校教学特点的五自由度机械手。如图1。
本文重点描述了机械手操作软件的设计方案,以及在.net环境下开发机械手操作软件的重点和难点。文章在最后提出了本方案存在的不足以及待改进的方面。
2 软件设计
2.1设计理念
机械手的一次运动行为是由单关节运动(也称单轴运动)或多关节联动(也称多轴联动)组成。通过多个单轴运动和多轴运动组成机械手的一次运动行为[2]。因此,在软件设计中需要设计实现机械手运动姿态的一系列接口以及各种运动方式的有序连接。
图1 五自由度机械手
(Fig.1 Five-Degree-of-Freedom Manipulator diagram)
2.2 设计方案
UML(Unified Modeling Language)的全称是统一建模语言,是计算机界普遍采用的描述现实世界中各种问题的方法。它通过一系列标准化图形描述软件开发中的各种问题,并设计出解决方案[3]。本文根据机械手控制软件的特点,采用UML描述其控制软件结构。如图2。
图2 软件结构图
(Fig.2 The structure diagram of software)
如图所示,根据机械手的机械结构分析,机械手类是一个实现机械手抽象接口的实体类,其内部由手指,手腕、大臂、小臂以及基座关节的实例组成。从机械手的动力结构分析,每个关节的驱动都是由一个或多个电机组成(在本文引用的机械手中,手指关节由直流电机控制,其余关节由步进电机控制),所以其关节类实际是一个包含电机集合的实体类。
通过以上分析可以可知,整个机械手的运动控制实际上全部由电机类的提供,机械手的任何行为都可以通过其软件结构逐步传递给电机类,由电机类中的基本运动函数实现其运动姿态。
3重点和难点
本文阐述的机械手控制软件基于微软.net framework 2.0框架。其框架提供了丰富的类库,并通过中间件语言技术支持多语言开发。同时,微软提供了vs.net开发工具,可以使用纯面向对象的C#语言作为开发语言,用统一的解决方案管理多个的开发项目,规避了原C和C++语言开发时带来的种种不便,大大提高了开发效率[4-5]。
3.1 控制卡函数的调用
本文所阐述的机械手控制电路是由2片乐创电子科技公司的MPC07运动控制卡组成,该控制卡是基于PC机PCI总线的步进电机或数字式伺服电机的上位单元,它与PC机组成主从式控制结构,该卡提供了基于MFC的运动函数库,可控制4轴步进电机或数字式伺服电机,并支持多卡共用。
通过运行MPC07卡的安装程序,其函数库以动态链接库(dll)的形式安装到本机的windows操作系统。该卡提供的函数库基于MFC框架,并不能直接被.net framework调用,所以,必须首先把这些函数导入到开发程序中才能保证其正常运行。在此背景下,通过使用微软的DLL Import技术,可以将不兼容的函数库导入到应用程序中,从而解决该问题[5]。
这种技术允许用户使用规定的语法调用WIN32 API以及任何基于MFC的dll。因此,在机械手控制程序中创建一个ManipulatorDynamicLib类用于专门保存MPC07.dll提供的运动函数。如自动设置函数的导入。
public class ManipulatorDynamicLib{
[DllImport("MPC07.dll")]
public static extern int auto_set();
}
3.2边界的预判断
五自由度机械手除基座关节可以360度运动外,其他关节有运动极限,所以,在实现其运动姿态时应考虑到关节运动的极限位置,否则可能因过度运动而造成的机械损害。因此,在实现其运动功能函数时,需用多线程或者计时器实时判断其运动矢量是否到达了临界位置[6]。
3.3 运动顺序的安排
机械手的运动因周围环境的影响需要设置其关节的运动顺序,所以,最优运动姿态不一定是最好的运动方式[7-8]。例如,机械手向斜上方做直线运动时,可能会碰到周围环境中的物体,所以,需控制大臂和小臂联动将手臂抬高,然后再控制基座做旋转运动。因此,在设计控制程序的过程中,应有手动控制单元,避免周围环境对机械手造成损害。
软件界面如图3。
图3 软件界面
(Fig.3 The interface of software diagram)
4 结论
本文在阐述机械手软件设计的过程中,将基座关节、肘关节、手腕关节以及手指进行了实例化。在实际的开发过程中发现,其各个关节的性质组成是一致的,所以,可以将机械手设计成多关节的集合,即机械手可以由多个关节组成,而不局限于5个关节。这也符合实际生产生活中的应用特点,例如,FMS系统中的机械手关节组成结构。
其次,电机的类型也可设计为电机接口,而不是实例化的直流电机或者步进电机。将电机类型设置为电机接口可以提高软件的扩展性,有利于软件的后期开发和功能扩展。
最后,本文论述的机械手上位单元受 MPC07 卡限制,软件本身不能根据其上位机的需要,动态地获得其他控制卡的运动函数也是待改进的方向。