姜龍光,王 巍
(1.海軍裝備部艦船辦,北京100036;2.北京航空航天大學機器人研究所,北京100191)
擦窗機器人是一類工作于危險環境下的服務機器人,其控制系統要求具有高可靠性、實時性和可干預等特點。因此,現有的擦窗機器人產品多采用集中控制方式,核心控制器多采用工業級控制器PLC,控制程序針對特定作業對象預編程[1-4]。
隨著以ARM為核心的微控制器的快速發展,采用實時多任務操作系統(RTOS)的嵌入式控制系統,在工業控制和民用產品中得到了廣泛應用,其可靠性和實時性已得到工業控制領域的認可。
結合“藍天潔士-4”型擦窗機器人,設計了一種以ARM微控制器為上位機,基于RTOS的分布式擦窗機器人控制系統。

圖1 “藍天潔士-4”型擦窗機器人系統
“藍天潔士-4”型擦窗機器人系統如圖1所示。“藍天潔士-4”機器人是整個系統的核心,它能在幕墻上沿垂直(Y)和水平(X)2個方向行走,完成清洗工作。“藍天潔士-4”自帶安全保護單元,通過鋼絲繩與幕墻頂部的軌道小車連接。正常行走時,鋼絲繩跟隨機器人運動;機器人意外脫離壁面時,鋼絲繩將吊掛機器人,防止機器人跌落。支援小車為機器人提供電、氣、水,回收污水并完成水的凈化循環。支援小車上安裝有平板電腦PC。該電腦完成機器人運動規劃,同時為操作人員提供監控機器人的人機界面。保護單元安裝于幕墻頂端,通過軌道小車和鋼絲繩與機器人連接,實現對機器人的跟隨運動和安全保護。機器人支架是機器人脫離壁面后的固定和存放設備,它能使機器人保持垂直狀態,方便機器人從脫離狀態吸附到壁面。
與本文相關的控制系統包括機器人本體控制器和支援小車上作為人機界面和規劃器的PC機。其中,機器人本體控制器所面對的輸出驅動對象和輸入傳感器如表1所示。

表1 機器人本體控制對象
此外,根據系統作為試驗平臺使用的特點,還需要預留一定的輸入和輸出接口,以滿足試驗要求。
“藍天潔士-4”擦窗機器人系統采用了分布式硬件結構,包括支援小車中的監控PC與機器人本體控制器。
機器人本體控制器采用了上/下位機結構。上位機與作為監控和路徑規劃控制器的PC機通過10 Mb/s以太網通訊,負責指令解析、機器人底層動作規劃、開關動作控制、傳感器信息綜合、下位機指令發送和信息反饋等任務。下位機有2個獨立的控制器1,2,分別實現X,Y氣缸的伺服控制。其中Y氣缸控制器還控制氣動馬達協調動作。上/下位機之間通過RS232串口通訊。上/下位機各留有一定的模擬輸入口、數字輸入口、開關量輸出口和高速脈沖輸出口,以方便后續功能的擴展。
機器人與PC機之間有獨立的無線視頻傳輸通道,可以將機器人攝像頭采集到的圖像傳送到內置于PC機的圖像采集卡,供監控程序使用。
全系統控制軟件總體構架采用如圖2所示的分布式結構,各部分功能和特點如下:
a.監控程序。程序運行于支援小車的PC上,負責全局信息和人工指令綜合、任務規劃、任務分發、TCP/IP通訊、串口通訊和界面更新等任務。該程序建立在封裝了基本動作調用和信息查詢函數的動態鏈接庫上。各動作調用通過事件相互協調,在保證動作規劃安全的前提下各函數對用戶完全開放。
b.支援單元程序。負責地面支援小車上各執行元件的控制、與監控器之間的串口通訊和小車信息回饋等任務,其硬件載體為地面支援小車上的PLC。

c.機器人上位機程序。負責與監控器的TCP/IP通訊、任務解析、控制指令分發、本機指令執行、機器人本體信息綜合和通過串口下發X/Y伺服指令等任務,其硬件載體為機器人上的ARM7。因為此部分涉及到機器人底層動作驅動,從安全性考慮,該部分對用戶不開放。但是上位機預留的各輸入輸出口調用都已包含到PC機的封裝函數中,以方便功能擴展。
d.機器人下位機程序。負責與上位機的串口通訊、伺服指令完成情況反饋、X/Y向位置伺服控制和氣動馬達協調控制等任務,其硬件載體為機器人的2個ATmega128單片機。位置伺服控制是該部分的主要功能,在編制程序時,將串口通訊、輸出驅動和輸入讀取等封裝到幾個函數中,并將伺服控制算法單獨封裝在1個函數中,以利于算法的改進。
機器人本體上位機是機器人動作指令和信息的轉發中心,同時也是一些基本動作的執行器,其實時性和可靠性直接決定了機器人工作的安全性。為了保證上位機程序的可靠性和實時性,采用基于μ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”的軟件必須具有良好的二次開發能力,為此,將機器人的基本動作進行封裝,使其能運行于Windows平臺上。
監控器與機器人本體之間的所用通訊指令都被封裝到動態鏈接庫“RobotDll New.dll”中。用戶在使用時,可以利用“Robot Dll New.dll”中的函數操作機器人的底層動作,具有很大的靈活性;同時也能實現互斥動作的規劃,以保證機器人的安全。
由于監控器作為整個系統的監控指揮中心,不僅要指揮機器人完成序列型的動作,進行動作規劃,還要為機器人的安全負責,在機器人出現異常情況時做出響應處理(如緊急停止),并給出響應提示,因此,監控軟件必須采用多線程。
“Robot Dll New.dll”使用Socket來實現和機器人本體的通信。為了調用的方便,“RobotDllNew.dll”里的每個動作函數都被做成了阻塞性函數,即每個函數在給機器人發出指令后,并非直接返回,而是等待機器人動作完畢或時間溢出時才返回。故監控軟件在調用這些函數時,將每個動作定義為1個線程,以此來保證機器人動作序列的安全性。為了保證數據接收的可靠性,各個函數并不直接調用Socket的Recv函數,等待機器人的動作返回值;而是在系統初始化Socket后,即打開1個常開線程,負責接收機器人控制器的返回值。每個函數,即每個動作線程,通過等待各自不同的事件來取得返回值。使用事件來實現線程的同步,可以保證互斥動作的安全。
監控程序的線程劃分如下:
a.主線程。用戶界面線程,負責與人的交互,以及建立相應Socket,連接機器人,打開接收線程。
b.動作線程。根據用戶指令完成相應的動作規劃,按順序指揮機器人完成動作指令,并將動作執行情況返回到主線程。
c.查詢線程。可隨時開啟的線程,被用以查詢機器人狀態,能給動作規劃提供必要信息。
d.緊急動作線程。在操作者發出“急停”等緊急動作指令后開啟,能打斷正在執行的動作指令,完成緊急動作。
e.接收線程。負責接收機器人的返回值。此處單獨開一個線程是為了防止丟失機器人的返回值。并根據接收的數據判斷是屬于哪類線程的返回值。此線程和動作線程、查詢線程、緊急動作線程之間,通過全局變量和不同事件(Event)內核對象同步。
為了解決線程同步問題,采用了“關鍵變量”這種用戶級別同步方式。而沒有采用諸如互斥體、信標等內核對象。用戶在等待資源時,不會由于長時間等待,而轉入內核運行,可以提高程序的運行效率。幾種線程的交互機制如圖3所示。

圖3 系統各個線程之間的交互機制
動作線程是監控軟件的核心,負責根據用戶的輸入完成相應的規劃,調用動態鏈接庫里相應的原子動作(不可分割的動作)函數,并能根據此時機器人狀態,動態調整動作序列。在用戶發出緊急停止指令后,能退出本線程。動作線程的流程如圖4所示。它采用了智能控制中慎思/反應的工作模式,即開始規劃好幾條路徑——慎思,而在執行時根據機器人具體狀態,選擇不同路徑。

圖4 動作線程的線程函數基本流程
接收線程是動態鏈接庫處理數據的核心。平常狀態下,由于Socket的Recv函數是阻塞函數,處于掛起狀態,只有在收到數據時才喚醒。所以雖然此線程是常開線程,但并不會占用太多CPU資源。線程在收到數據后,判斷返回值類型,然后將相應事件內核對象置位。接收線程函數的流程如圖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.