APP下载

分布式擦窗机器人控制系统设计

2014-07-04姜龙光

机械与电子 2014年7期
关键词:PC机线程串口

姜龙光,王 巍

(1.海军装备部舰船办,北京100036;2.北京航空航天大学机器人研究所,北京100191)

0 引言

擦窗机器人是一类工作于危险环境下的服务机器人,其控制系统要求具有高可靠性、实时性和可干预等特点。因此,现有的擦窗机器人产品多采用集中控制方式,核心控制器多采用工业级控制器PLC,控制程序针对特定作业对象预编程[1-4]。

随着以ARM为核心的微控制器的快速发展,采用实时多任务操作系统(RTOS)的嵌入式控制系统,在工业控制和民用产品中得到了广泛应用,其可靠性和实时性已得到工业控制领域的认可。

结合“蓝天洁士-4”型擦窗机器人,设计了一种以ARM微控制器为上位机,基于RTOS的分布式擦窗机器人控制系统。

1 控制对象

图1 “蓝天洁士-4”型擦窗机器人系统

“蓝天洁士-4”型擦窗机器人系统如图1所示。“蓝天洁士-4”机器人是整个系统的核心,它能在幕墙上沿垂直(Y)和水平(X)2个方向行走,完成清洗工作。“蓝天洁士-4”自带安全保护单元,通过钢丝绳与幕墙顶部的轨道小车连接。正常行走时,钢丝绳跟随机器人运动;机器人意外脱离壁面时,钢丝绳将吊挂机器人,防止机器人跌落。支援小车为机器人提供电、气、水,回收污水并完成水的净化循环。支援小车上安装有平板电脑PC。该电脑完成机器人运动规划,同时为操作人员提供监控机器人的人机界面。保护单元安装于幕墙顶端,通过轨道小车和钢丝绳与机器人连接,实现对机器人的跟随运动和安全保护。机器人支架是机器人脱离壁面后的固定和存放设备,它能使机器人保持垂直状态,方便机器人从脱离状态吸附到壁面。

与本文相关的控制系统包括机器人本体控制器和支援小车上作为人机界面和规划器的PC机。其中,机器人本体控制器所面对的输出驱动对象和输入传感器如表1所示。

表1 机器人本体控制对象

此外,根据系统作为试验平台使用的特点,还需要预留一定的输入和输出接口,以满足试验要求。

2 控制系统结构

2.1 硬件结构和实现

“蓝天洁士-4”擦窗机器人系统采用了分布式硬件结构,包括支援小车中的监控PC与机器人本体控制器。

机器人本体控制器采用了上/下位机结构。上位机与作为监控和路径规划控制器的PC机通过10 Mb/s以太网通讯,负责指令解析、机器人底层动作规划、开关动作控制、传感器信息综合、下位机指令发送和信息反馈等任务。下位机有2个独立的控制器1,2,分别实现X,Y气缸的伺服控制。其中Y气缸控制器还控制气动马达协调动作。上/下位机之间通过RS232串口通讯。上/下位机各留有一定的模拟输入口、数字输入口、开关量输出口和高速脉冲输出口,以方便后续功能的扩展。

机器人与PC机之间有独立的无线视频传输通道,可以将机器人摄像头采集到的图像传送到内置于PC机的图像采集卡,供监控程序使用。

2.2 软件结构和实现

全系统控制软件总体构架采用如图2所示的分布式结构,各部分功能和特点如下:

a.监控程序。程序运行于支援小车的PC上,负责全局信息和人工指令综合、任务规划、任务分发、TCP/IP通讯、串口通讯和界面更新等任务。该程序建立在封装了基本动作调用和信息查询函数的动态链接库上。各动作调用通过事件相互协调,在保证动作规划安全的前提下各函数对用户完全开放。

b.支援单元程序。负责地面支援小车上各执行元件的控制、与监控器之间的串口通讯和小车信息回馈等任务,其硬件载体为地面支援小车上的PLC。

c.机器人上位机程序。负责与监控器的TCP/IP通讯、任务解析、控制指令分发、本机指令执行、机器人本体信息综合和通过串口下发X/Y伺服指令等任务,其硬件载体为机器人上的ARM7。因为此部分涉及到机器人底层动作驱动,从安全性考虑,该部分对用户不开放。但是上位机预留的各输入输出口调用都已包含到PC机的封装函数中,以方便功能扩展。

d.机器人下位机程序。负责与上位机的串口通讯、伺服指令完成情况反馈、X/Y向位置伺服控制和气动马达协调控制等任务,其硬件载体为机器人的2个ATmega128单片机。位置伺服控制是该部分的主要功能,在编制程序时,将串口通讯、输出驱动和输入读取等封装到几个函数中,并将伺服控制算法单独封装在1个函数中,以利于算法的改进。

3 RTOS多任务的划分

机器人本体上位机是机器人动作指令和信息的转发中心,同时也是一些基本动作的执行器,其实时性和可靠性直接决定了机器人工作的安全性。为了保证上位机程序的可靠性和实时性,采用基于μC/OS-II的RTOS系统作为其开发平台。上位机程序的多任务划分和同步机制如下:

a.解析分发任务。将从TCP/IP中获得的函数指令解析后,再通过消息邮箱分发到序列动作、并发动作和状态环境查询任务处理,为第3优先级。

b.传感器任务。负责采集行程开关、模拟光电传感器和倾角传感器等传感器的值,分析抽象后得出机器人内外部信息,存入机器人内外部信息数据表中。由于传感器任务往往与其他任务相关联,如机器人执行抬腿动作时需要腿部限位传感器信息。所以它由序列动作任务和状态环境查询任务通过事件标志激活,调用系统节拍延时函数固定周期运行。此任务为第6优先级。

c.序列动作任务。执行序列动作指令函数。此类任务是机器人多数动作的执行器,它严格按照指令和传感器信息运行。该类任务被触发的同时将激活相应的传感器任务,并规定正确传感器信息的返回时间,若超时后仍得不到正确的执行结果,该任务将返回错误值。对PC机而言,它们工作于阻塞方式,即上一个序列动作没完成,下一个动作将不能发出。在其消息邮箱没有接收到来自解析分发任务的序列动作指令消息时,该任务挂起。此任务为第5优先级。

d.并发动作任务。执行并发动作指令函数。此类任务的执行无需等待上一任务的完成,属于紧急动作指令,其优先级高于序列动作任务。该任务在其消息邮箱没有接收到来自解析分发任务的并发动作指令消息时挂起。此任务为第4优先级。

e.状态环境查询任务。激活传感器任务运行1次后,更新机器人内外部数据信息表,根据PC机查询要求回发相应内容给PC机。该任务在其消息邮箱没有接收到来自解析分发任务的状态环境查询动作指令消息时挂起。此任务为第7优先级。

f.串口通信任务。负责接收来自ATmega128位置伺服模块的数据回发。序列动作和并发动作任务通过置位相应事件标志激活其运行,它会被串口接收驱动函数所阻塞。此任务为第2优先级。

g.TCP/IP通信任务。基于Socket的服务器端任务,负责接收来自PC机的连接断开请求和数据接收。该任务调用系统节拍延时函数固定周期运行。由于机器人的运动规划来自PC机,所以该任务被设为第1优先级。

4 监控软件和基本动作封装

作为一个试验平台,“蓝天洁士-4”的软件必须具有良好的二次开发能力,为此,将机器人的基本动作进行封装,使其能运行于Windows平台上。

监控器与机器人本体之间的所用通讯指令都被封装到动态链接库“RobotDll New.dll”中。用户在使用时,可以利用“Robot Dll New.dll”中的函数操作机器人的底层动作,具有很大的灵活性;同时也能实现互斥动作的规划,以保证机器人的安全。

由于监控器作为整个系统的监控指挥中心,不仅要指挥机器人完成序列型的动作,进行动作规划,还要为机器人的安全负责,在机器人出现异常情况时做出响应处理(如紧急停止),并给出响应提示,因此,监控软件必须采用多线程。

“Robot Dll New.dll”使用Socket来实现和机器人本体的通信。为了调用的方便,“RobotDllNew.dll”里的每个动作函数都被做成了阻塞性函数,即每个函数在给机器人发出指令后,并非直接返回,而是等待机器人动作完毕或时间溢出时才返回。故监控软件在调用这些函数时,将每个动作定义为1个线程,以此来保证机器人动作序列的安全性。为了保证数据接收的可靠性,各个函数并不直接调用Socket的Recv函数,等待机器人的动作返回值;而是在系统初始化Socket后,即打开1个常开线程,负责接收机器人控制器的返回值。每个函数,即每个动作线程,通过等待各自不同的事件来取得返回值。使用事件来实现线程的同步,可以保证互斥动作的安全。

4.1 监控软件的设计

监控程序的线程划分如下:

a.主线程。用户界面线程,负责与人的交互,以及建立相应Socket,连接机器人,打开接收线程。

b.动作线程。根据用户指令完成相应的动作规划,按顺序指挥机器人完成动作指令,并将动作执行情况返回到主线程。

c.查询线程。可随时开启的线程,被用以查询机器人状态,能给动作规划提供必要信息。

d.紧急动作线程。在操作者发出“急停”等紧急动作指令后开启,能打断正在执行的动作指令,完成紧急动作。

e.接收线程。负责接收机器人的返回值。此处单独开一个线程是为了防止丢失机器人的返回值。并根据接收的数据判断是属于哪类线程的返回值。此线程和动作线程、查询线程、紧急动作线程之间,通过全局变量和不同事件(Event)内核对象同步。

为了解决线程同步问题,采用了“关键变量”这种用户级别同步方式。而没有采用诸如互斥体、信标等内核对象。用户在等待资源时,不会由于长时间等待,而转入内核运行,可以提高程序的运行效率。几种线程的交互机制如图3所示。

图3 系统各个线程之间的交互机制

4.2 动作线程

动作线程是监控软件的核心,负责根据用户的输入完成相应的规划,调用动态链接库里相应的原子动作(不可分割的动作)函数,并能根据此时机器人状态,动态调整动作序列。在用户发出紧急停止指令后,能退出本线程。动作线程的流程如图4所示。它采用了智能控制中慎思/反应的工作模式,即开始规划好几条路径——慎思,而在执行时根据机器人具体状态,选择不同路径。

图4 动作线程的线程函数基本流程

4.3 接收线程

接收线程是动态链接库处理数据的核心。平常状态下,由于Socket的Recv函数是阻塞函数,处于挂起状态,只有在收到数据时才唤醒。所以虽然此线程是常开线程,但并不会占用太多CPU资源。线程在收到数据后,判断返回值类型,然后将相应事件内核对象置位。接收线程函数的流程如图5所示。

图5 接收线程函数流程

5 结束语

分布式控制系统已在“蓝天洁士-4”擦窗机器人系统中得到了应用,表现出良好的开放性、实时性。在机器人爬行过程中,通过人为设置故障来考察控制系统的可靠性;或在机器人序列动作未完成之前,下发危险的互斥动作。在多种测试中,机器人控制系统表现出良好的实时性和可靠性,能够在实际幕墙表面稳定运行。由于机器人本体控制硬件为项目组独立开发,在抗干扰能力、标准化和小型化方面与工业化产品相比尚有一定差距;此外,动态链接库封装函数的容错性也有待于进一步提高。这些将是后续工作努力的方向。

[1] Zhang H X,Zhang J W,Liu R,et al.A novel approach to pneumatic position servo control of a glass wall cleaning robot[C]∥ Proceedings of 2004 IEEE/RSJ International Conference on Intelligent Robots and Systems.Sendai,Japan,2004:467-472.

[2] Zhang H X,Zhang J W,Wang W.Design of a pneumatic glass wall cleaning robot for high-rise buildings[C]∥Proceedings of the ASER’04 2nd International Workshop on Advances Service Robotics.Stuttgart,Germany,2004:21-26.

[3] 王 巍,宗光华.气动擦窗机器人的控制和环境检测[J].液压与气动,2001(1):4-7.

[4] 张厚祥,宗光华.分段变结构Bang-Bang控制器在气动脉宽调制位置伺服系统中的研究[J].机器人,2001,23(6):515-519.

猜你喜欢

PC机线程串口
浅谈AB PLC串口跟RFID传感器的通讯应用
基于国产化环境的线程池模型研究与实现
基于PC机与单片机的多机通信技术及抗干扰方法
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
浅谈linux多线程协作
VC.NET下实现dsPIC单片机与PC机的通信
排除OLT设备登录故障
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
线程池技术在B/S网络管理软件架构中的应用