于振中,蔡楷倜
(江南大学 物联网工程学院,江苏 无锡 214122)
摘要:为了克服传统机器人示教系统扩展性差且较为封闭等缺点,设计了一种基于STM32的机器人仿真示教器。该示教器以STM32作为主控芯片,引入μC/OSII实时操作系统,并采用以太网通信的方式,提高了系统的开放性。通过对利用计算机模拟得到的三维机器人进行仿真操控,验证该示教器的手动控制和示教再现等基本功能。实验结果表明,该仿真示教器可以灵活方便地练习机器人的示教操作,达到模拟操作实体机器人的效果,具有一定的实用价值。
关键词:示教器;仿真;以太网;开放性
中图分类号:TP242.2文献标识码:ADOI: 10.19358/j.issn.16747720.2016.23.011
引用格式:于振中,蔡楷倜. 基于STM32的机器人仿真示教器设计[J].微型机与应用,2016,35(23):38-41.
0引言
当前,工业机器人已经广泛应用于许多工厂的实际使用中,其中通过示教器对机器人的动作进行编程是最为普遍的做法。示教器是进行人机交互的重要工具,操作人员通过示教器对机器人的运动轨迹进行示教和编程,使机器人能够完成要求的任务,在生产线上进行重复的劳作[1]。机器人的实际使用效果取决于动作示教的效果,因此示教器的性能和操作人员的经验显得尤为重要。
目前国内外的机器人示教系统大多由各大厂商针对自有产品进行设计研发,开放程度低,并且如果由缺乏经验的人员直接操控实体机器人则容易存在安全隐患,影响示教的效果。学会操作机器人之前首先要学会使用机器人示教器,如ABB机器人公司推出虚拟示教软件RobotStudio[2],其虚拟示教台功能可以让操作人员利用计算机学习ABB机器人示教器的操作,是一款出色的教学和培训工具。但其操作需通过鼠标点击计算机屏幕上的示教器图形来完成,缺乏操作手持示教器时的真实感,并且软件受封闭保护,难以进行后续的开发,有一定的局限性。
本设计研制了一款基于STM32的机器人仿真示教器,在降低成本的同时易于进行二次开发。在实现方法上采用触摸屏与按键结合的输入方式提高了示教器的人机交互性能。不仅如此,利用以太网通信的方式仅需一根网线即可实现与计算机相连,不仅方便快捷而且能实现跨平台的通信,提高了系统的可扩展性。仿真示教器对计算机模拟得到的三维机器人进行操作,不仅可以用来练习机器人的示教,还可以利用该平台验证机器人的运动控制算法和机器人机械结构设计的合理性,具有良好的开放性,在节约成本的同时具有一定的实用价值。
1示教器的硬件设计
本文所设计的仿真示教器以STM32为主控芯片,主要包括触摸屏、按键、指示灯和通信等模块。其硬件结构如图1所示。
主控制器芯片采用CortexM4内核的STM32F407,相比于STM32F103等CortexM3内核的芯片,其具有更明显的性能优势,被广泛应用于工业控制领域。STM32F407强大的性能以及丰富的接口可以满足示教器的使用需求,与使用嵌入式计算机等作为示教器的主控制器相比成本更低。不仅如此,开发人员可在STM32上运行操作系统,进而方便对系统任务进行调度和分配。
为了使示教器具备良好的人机交互体验,采用“按键+触摸屏”的输入方式。触摸屏采用的是分辨率为800×480的7英寸HMI触摸屏。HMI触摸屏的显示界面制作方便快捷,STM32主控芯片仅需通过串口即可发送指令控制触摸屏的显示和获取触摸屏上控件的参数信息,大大提高开发效率的同时也简化了硬件设计。由于示教器上的按键较多,若采用矩阵式键盘设计会占用大量的I/O口。故本设计的键盘电路结合了STM32F407自带的USB OTG功能模块以及HT82K628A标准键盘芯片,大大节省了主控芯片的I/O口资源,同时也保证了按键输入的准确性。
示教器的通信功能至关重要,需保证传输的速度和准确性。STM32内置以太网MAC层,仅需外接一个PHY芯片和TCP/IP协议栈的支持就可以实现以太网通信。此处PHY芯片采用LAN8720,传输速率最高可达到100 Mb/s,并支持自动翻转,无需更换网线即可更改交叉或者直连的连接方式。
2示教器的软件设计
2.1主程序设计
由于仿真示教器的程序任务多且复杂,故在主程序的设计上引入μC/OSII实时操作系统对各任务进行分配和调度。μC/OSII以其完全公开的源代码和优越的性能,得到了广泛的应用[3-4]。
示教器的主程序设计主要分成以下三个部分:
(1)初始化。主要包括对系统时钟、一系列外设和μC/OSII的初始化。
(2)创建启动任务。主要用于创建以太网通信、键盘读取任务等各种系统任务,创建完成之后挂起启动任务。
(3)开启μC/OSII,开始对系统的各个任务进行管理。
示教器的主程序流程如图2所示。
2.2以太网通信程序设计
示教器的通信效果关系到控制命令传输的准确性和及时性。传统的串行通信技术作为一种灵活方便的通信方式一直被广泛应用于IT和工业通信领域。例如常见的RS232接口,虽然其价格便宜、编程容易,但是传输速率较低,最高仅为20 kb/s,而且抗干扰能力弱。以太网的出现以其速度和性能的优势,逐渐取代串行通信成为工业控制网络建设的一种有效的解决方案。本设计中的示教器采用以太网通信,基于TCP/IP协议设计示教器的通信模块。在网络程序中具体采用套接字(Socket)的实现方法,Socket包括IP地址、端口号和TCP/IP协议,因其存在于通信区域中,程序员通过它可非常方便地访问TCP/IP协议。Socket在Linux和Windows等操作系统中都可应用,能很好地实现基于TCP/IP的跨平台通信,大大地提高了示教器的开放性和扩展性。
本设计采用LwIP作为TCP/IP协议栈,LwIP是瑞典计算机科学院的Adam Dunkels开发的小型开源TCP/IP协议栈,只需十几KB的RAM和40 KB左右的ROM即可运行,适用于低端的嵌入式系统[5-7],可满足示教系统网络通信的使用需求。依据协议分层模型,TCP/IP可分成网络接口层、网络层、传输层、应用层,LwIP用来提供网络层和传输层的功能,用户可以在应用层实现所需的功能。
通过对LwIP的移植,结合实时操作系统,将网络通信的接收任务和发送任务合并在一个系统任务来运行,并赋予较高的任务优先级,保证通信任务的及时性。任务程序流程如图3所示。通信网络架构采用主从式架构,示教器端作为服务器,连接时服务器进入监听模式,等待来自客户端的连接请求,当远端IP地址和端口号正确即可连接成功。当示教器要发送信息时,将数据存入sendbuf数据缓存区,并置位发送标志位即可发送数据到计算机上。
2.3键盘读取程序设计
当示教器使用STM32的USB模块时需要有USB底层驱动程序的支持,ST公司提供USB例程可供移植参考,其中的“usb_usr.c”文件提供用户应用层接口函数,用户可以根据读取到的键值编写相应的执行程序[8]。
本设计引入了操作系统对任务进行管理,将USB读取键值的程序作为一个任务来执行。USB的程序流程如图4所示,按键作为人机交互的关键部件,需保证USB连接的稳定可靠。在USB的任务程序中不断检测连接状态,当USB设备出现通信异常或者枚举死机时需重新发起连接。部分按键需控制触摸屏显示,则通过串口发送指令信息。部分按键需发送指令至计算机端,则调用相应的网络通信任务程序。
在实际示教过程中,机器人是采用点动的运动方式,即按下方向键时机器人运动,松开方向键时停止。针对这种情况,在程序上检测到按下方向键时发送对应轴的启动指令,松开时发送停止指令,实现要求的同时也降低了软件开发难度,节省主控制器资源。
3示教器实验测试
相比传统的示教系统,本设计中仿真示教器最大的特点是通过与计算机仿真平台相连接,控制由计算机仿真得到的三维虚拟机器人模型,模拟进行机器人的操作练习。机器人的三维模型是通过SolidWorks软件进行制作,然后经MFC导入基于OpenGL建立的工作环境中,从而获得逼真的机器人模型。修改机器人模型和相对应的运动学控制算法即可对不同型号的机器人进行示教,使本文的仿真示教器具有良好的开放性。
3.1以太网通信连接测试
要使示教器功能正常使用需保证通信连接的稳定可靠。本文中通信网络架构采用的是主从式架构,计算机仿真平台作为客户端,需主动发起连接请求。在计算机上的仿真平台中输入IP地址和端口号,点击“连接”,若符合示教器的内部参数设置则连接成功,在接收框中将显示“连接服务器成功!”的提示,程序通过采用“EnableWindow(false)”的指令禁止对IP地址和端口号的修改,具体的示教器连接效果如图5所示。当按下示教器的按键或点击触摸屏,会在接收框中看到示教器发送来的指令信息。通过实验测试,示教器与计算机仿真平台的通信连接成功,发送数据准确快速。
3.2示教器功能测试
当示教器与计算机仿真平台的以太网通信成功之后,即可对其主要的手动控制和示教再现两个功能进行测试。通过示教器上的功能键将机器人当前的控制模式切换成手动控制,并将运动坐标切换为关节坐标。若按下键盘上的方向控制键即可观察到机器人上对应轴的单独转动,松开则停止。如果切换运动坐标为直角坐标,按下方向控制键即可观察到机器人的末端会沿着空间直角坐标系做直线运动。
示教再现是机器人示教器的一个重要功能,测试效果如图6所示。操作过程可分为以下3个步骤:
(1)确定示教点位姿。通过示教器手动移动机器人到达指定的位置并按下键盘上的“示教”,示教点记录框中按顺序记录着每个点的位姿信息。
(2)编辑动作指令。点击触摸屏进入程序编辑界面,逐条编辑动作程序指令,通过键盘切换选择“MOVJ”的关节插补运动或者“MOVL”的直线插补运动,然后选择该条指令运动到达的目标点序号,最后设置该条指令运行时的速度。在触摸屏上和仿真平台的“示教代码框”中可以看到所编辑的程序指令。
(3)运行。当所有指令编辑完成后点击键盘上的“确定”然后点击“运行”,即可观察到机器人根据示教的动作进行往复的运动。
实验证明,该示教器可以通过简单的操作达到示教机器人的效果,贴近实际使用的操作方式,并且机器人三维模型显示逼真,运动流畅,可以达到教学和培训的目的。
4结论
本设计采用基于STM32的主控制器和以太网通信方案,并引入虚拟仿真技术,设计了一款机器人仿真示教器。克服了传统机器人示教系统的扩展性差、灵活性差等缺点。实验结果表明,该示教器能灵活地对计算机仿真平台中的三维虚拟机器人进行控制并完成示教的任务,并且人机交互效果良好、控制反应迅速,达到了模拟操作实体机器人的效果。
参考文献
[1] 辛鑫. 机器人手持智能终端系统的研发[D].天津:天津大学,2012.
[2] CONNOLLY C. Technology and applications of ABB RobotStudio[J]. Industrial Robot, 2013, 36(6): 540-545.
[3] 陈果, 冯静. ucos系统及其消息队列详解[J]. 电子元器件应用, 2011, 13(3): 38-43
[4] 王长清, 余丙涛, 潘德强. 基于STM32的逐阳帆控制系统设计[J]. 电子技术应用, 2015, 41(12): 25-27.
[5] 朱升林. 嵌入式网络那些事:LwIP协议深度剖析与实战演练[M]. 北京:中国水利水电出版社, 2012.
[6] 赵凤申, 李爱芹, 吴文祥. 工业机器人嵌入式示教盒设计[J]. 电焊机, 2011, 41(12): 9-12.
[7] 沈跃, 王家鼎. 基于ARM技术的CAN总线和以太网间的互联设计[J]. 电子技术应用, 2006, 32(5): 56-59.
[8] 余修武, 刘岚. USB接口技术在嵌入式系统中的应用研究[J]. 电子技术应用, 2008, 34(10): 151-154.