劉海春,陳衛東,魏之暄
仿人機器人是集機械、電子、控制、計算機、傳感器等多種學科和先進技術于一體的現代自動化技術裝備[1]。教育仿人機器人是一類應用于教育領域的專用仿人機器人,它區別于普通仿人機器人是其開放性和模塊化的特性,用戶可以方便地改變硬件配置、組合軟件功能,以實現不同的任務。因此,能基于某種開放性的編程方法,提供友好的編程環境和控制器,根據使用對象的教育水平不同實現不同層面的自主創新,逐漸成為研究的熱點[2]。
目前面向機器人的編程方法按實現步驟的不同可分為:面向過程和面向對象。其中教育仿人機器人大多數采用基于文本或者圖形化的面向過程的編程方法,如Kondo公司的KHR,VStone公司的Robovie,而其中圖形化編程方法只是將文本編程的過程圖形化,依然屬于面向過程的流程式編程,隨著任務復雜程度和環境影響因素的增加,編程難度隨之上升,限制了機器人可應用的技術人群[3]。而教育仿人機器人還鮮有面向對象的編程方法。面向對象的編程方法開放、模塊化程度高,特別適用教育領域。與面向過程的編程相比,它具有程序結構直觀、易于理解、交互方式簡單等優點,更適用于不確定環境下的編程。
針對上述問題,本文設計了一種以任務為對象,面向任務的圖形化教育仿人機器人編程方法。該方法基于行為反應式的控制方式,采用有限狀態機模型實現任務層和行為層的協調機制,并構建了完整的控制系統,包括上層編程環境和下層控制器。控制器基于ARM處理器和嵌入式Linux操作系統,使用核心板和擴展板構架,實現基于硬件的運動控制,緩解控制系統中央處理器壓力,并有良好的擴展能力。編程環境實現面向任務的編程方式,讓用戶集中精力于任務中每個狀態、行為模塊的實現和模塊間的邏輯關系,更適用于不確定環境的編程,并且能提高編程結果的重用性。本文通過教育仿人機器障礙賽的實驗,突出了其開放性和模塊化的特點,為相關學科的研究提供了一個簡潔、開放的編程方法和控制系統。
面向任務的教育仿人機器人編程方法實現了基于任務與事件觸發的規劃和基于行為反應的控制。任務與事件觸發的規劃包括按照仿人機器人感知到的環境、事件描述對整體任務進行分解與規劃,從而產生按一定序列相互連接的一系列離散的狀態。再對每個狀態進行局部規劃,每個狀態內包含若干個行為,行為是至少包括一個感知和一個動作的集合,本文規劃的行為為基元行為,它僅由一個感知和一個動作組成,基元行為是不可分的,只能完成一件單一的事。這些行為的集合描述了當前狀態的特征,狀態之間的變遷由事件感知實現,最后用有限狀態機確定完成上述任務的一系列動作的狀態序列。有限狀態機是表示有限個狀態以及在這些狀態之間的轉移的數學模型,這樣某一任務的執行過程可以被描述成以狀態為節點,基于事件觸發為變遷的一個有限狀態機,如圖1所示:

圖1 任務模型
為實現將具體任務抽象成便于面向仿人機器人編程的有限狀態機形式,本文設計了面向仿人機器人的控制系統,包括編程環境和控制器,如圖2所示:

圖2 控制系統
編程環境:提供圖形化的編程界面,用戶可以自由編寫機器人的動作,并以庫的形式存儲;支持從動作庫中調用已編寫的動作模塊,結合機器人運行環境中的感知事件,以面向任務的編程方式規劃仿人機器人任務,生成任務的狀態序列,再以XML描述語言把當前有限狀態機模型表示成樹的形式,通過串口或網絡通訊模塊下發到控制器。
控制器:基于ARM處理器和嵌入式Linux操作系統,接收編程環境下發的XML文件,并解析為任務狀態機的狀態序列,實現基于任務與事件觸發規劃的狀態下的行為控制功能。行為控制決定了某一狀態下所需選擇的行為以及行為之間的優先級和抑制關系,這是一種基于行為反應的控制器,包括多種基本行為并行工作,各行為根據感知事件的輸入,按照各自的控制算法產生動作。同時行為控制模塊還將感知得到的信息傳送給狀態序列模塊,刷新和維護任務有限狀態機模型。
控制器硬件采用模塊化設計,分離了中央處理器芯片和外設,使用核心板和擴展板疊加的構架,縮小了控制系統體積,便于靈活更換擴展設備和接口,如圖3所示:

圖3 控制系統硬件結構
核心板的嵌入式主板其性能將直接影響機器人的控制精度和實時性,同時考慮到系統對視覺功能和外設擴展的需求,嵌入式主板采用了ARM9核的微處理器S3C2440。ARM是RISC結構的處理器,內部集成了3級流水線技術,大大地提高了處理速度;ARM的功耗在同檔次處理器中是較低的,低電壓、微電流供電,適合教育仿人機器小型化、移動使用的需要。S3C2440集成了CMOS Camera控制器,可以實現視覺子系統的電路擴展,同時具有豐富的片內資源,有64M的RAM和2M的Nor Flash、1G的Nand Flash,處理器工作頻率最高達到400MHz,滿足控制系統的實時性要求。
擴展板包括舵機驅動模塊、USB HOST模塊、電源管理模塊、音頻接口模塊等擴展模塊,其中舵機驅動模塊基于型號為EPM1270T144C的CPLD芯片,用硬件的方式實現舵機控制,能緩解控制系統中央處理器壓力,而且CPLD豐富的I/O資源,可以同時進行幾十路舵機控制,滿足仿人機器人多關節規劃的需求。而且CPLD可以通過不同配置實現不同功能,使系統更加靈活,避免資源浪費。
控制器采用分布式控制原理:核心板完成中央處理功能,擴展板完成各自特定的功能。核心板和擴展板間采用并行總線、I2C和USB總線進行通信,并且方便擴展其他支持相同總線方式的設備。控制系統還具有網絡通訊功能,能實現遠程通訊或資源共享。
控制器選用了嵌入式Linux操作系統,Linux用戶可以創建多個進程,并使各個進程協同工作來滿足實時性的需求。另外Linux有豐富的設備驅動,支持多種外設的即插即用,包括攝像頭、U盤、網絡等,方便用戶擴展控制系統的功能。控制器軟件自下而上分為硬件層、系統庫層和任務層。
硬件層的核心是MDEV模塊,其作用是在系統啟動和熱插拔或動態加載驅動程序時,自動產生驅動程序所需的文件,包含CDC、CPLD定義的設備上下文對象的類。MDEV實現CDC、CPLD驅動管理功能,實現設備的模塊化調用。
系統庫層包含Linux系統的核心文件,包括Expat、OpenCV、Socket、D-Bus等。其中Expat用來解析XML任務描述文件,把編程環境中設計的有限狀態機模型解析到控制器程序中。解析過程并不需要把所有XML文件全部加載到內存里,僅需根據當前狀態調用相關行為,這樣可以分析非常大的XML文件,支持復雜的仿人機器人任務的編程。OpenCV實現視覺處理。Socket和D-bus實現各層次、各模塊間的數據傳輸。
任務層分為狀態序列模塊、行為控制模塊、動作驅動模塊和事件感知模塊,功能包括機器人的初始化,任務流程分配,狀態序列跳轉,傳感器采集,執行器驅動等。狀態序列模塊負責解析腳本分配已規劃的任務,執行狀態跳轉的功能;行為控制模塊按照行為之間的優先級和抑制關系,通過事件感知模塊的結果調用動作驅動模塊;動作驅動模塊負責控制硬件驅動,如舵機驅動、發音等;事件感知模塊負責讀取傳感器或控制器信息。
教育仿人機器人的編程環境要求簡潔、直觀、友好,除了能夠對機器人全身各關節精確控制,還要能有一定邏輯編輯能力以完成具體任務。基于圖形化編程可以提供直觀的編程界面,使得不具備或具備很少專業知識的用戶也能方便地給機器人編程[4][5]。本控制系統的編程環境基于行為反應式的控制方式,采用有限狀態機模型實現任務層和行為層的協調機制,讓用戶集中精力于任務中每個模塊的實現和模塊間的邏輯關系。編程環境分為動作編程,任務編程。
動作編程功能生成用戶需要的動作,每一個動作可以是單幀的靜態動作,也可以是連續多幀的動態動作,而且都獨立存在,以庫的形式存儲,能在任務編程中隨時被調用。本編程環境提供兩種動作編程方式:在線示教方式和基于運動捕獲的示教方式。
3.1.1 在線示教
在動作編輯界面中,拖動機器人每一個關機的角度滑塊到期望位置,并以幀的概念存儲。一幀畫面,或者一系列幀按設定時間T連續運行,即為一個動作。此界面還提供了用戶完成整個動作編輯所需的功能,包括動作的編輯管理(添加、修改、刪除、上移一幀、下移一幀等)、通過通訊端口直接將當前動作在機器人上實時運行的在線運行測試等功能,如圖4所示:

圖4 動作編輯
這種在線示教方式優點就是機器人軌跡的正確性性和精確度都能得到保證,但效率低下。
為彌補在線示教的效率問題,本界面還支持離線編程,可以導入在計算機上模擬仿真的結果,再通過在線示教的方式,對精度得不到保證的模擬結果進行修正。
3.1.2 基于運動捕獲的示教
在線示教的方法是面向最底層的示教方法,但在不適用于如步行、跌倒、爬起等復雜的全身動作的設計。仿人機器人全身運動規劃領域的探索在很久以前就已經展開,到目前為止,尚未形成成熟而實用的最終辦法。細觀涌現出的多種不同的全身運動規劃算法,根據人的運動模式來生成其全身運動是個自然而然的想法。為了獲取人的運動數據,通常使用運動捕獲系統[1]。
本文采用微軟公司的Kinect作為運動捕獲系統,獲得人的全身運動,然而由于仿人機器人與實際人體的結構特征不可避免的具有差異,捕獲得來的運動數據不能直接運用到仿人機器人上,否則可能會因為關節角度的運動范圍限制或穩定性限制[6],造成動作生成失敗。
為基于運動捕獲示教流程如下,首先,通過運動捕獲系統獲取人體運動數據,輸出簡化模型的空間坐標,對采集到的運動數據進行分析和基于仿人機器人運動學的逆運動學解算,得到仿人機器人模型的關節角數據;再經過關節角度約束和穩定性約束后,生成能夠應用于仿人機器人的動作。
提供圖形化的編程界面,以面向任務的編程方式規劃仿人機器人任務。可以自由生成任務的狀態序列,并從動作庫中調用已編寫的動作模塊,結合機器人運行環境中的感知事件,組成狀態下的各種行為。圖形化的編程界面具有兩種基本元素:圖標(icon)和連線(line)。圖標用于表達每一個狀態,連線則表示狀態間的跳轉。每個狀態圖標由多個行為組成,行為的動作描述和感知,如表1所示:

表1 行為模塊
這為行為的選擇和合成提供了基本模塊,通過設置適當的行為的觸發條件以及行為之間的耦合關系略,可由若干個基本行為構成一個復雜的狀態。最后以XML描述語言把當前任務有限狀態機模型表示成樹的形式,通過串口或網絡通訊模塊下發到控制器。
本文采用教育仿人機器人IRONEEG作為實驗平臺,機器人全身有17個自由度,每個自由度由舵機控制,上述控制器安裝在機器人背部,并在編程環境中針對機器人障礙賽編程,以驗證本控制系統對不確定環境編程的有效性。
實驗場地為2m×0.8m的長方形區域,機器人從起點開始沿黑線行走,并在沿線途中越過兩道障礙,其中一道障礙以步行避障繞過,另一道障礙需要機器人爬行通過,兩道障礙出現順序未知,終點以圓形色塊表示,位置未知,機器人看到表示終點的色塊后即向終點行走,走到終點即為完成比賽,如圖5所示:

圖5 任務有限狀態機圖
在任務編程界面按照的有限狀態機表述方式編輯上述任務,再把任務生成XML文件,通過串口或無線網絡下載到控制系統,通過控制系統的嵌入式Linux中的expat XML解析器把整個任務分解到各個功能模塊中,機器人便能按照上述有限狀態機的結構,根據感知調用動作,產生行為,自主完成給定任務。
在實驗中,機器人接收遙控器命令以較穩定的步速起步,沿跑道中的綠線行走,通過安裝在頭部的攝像頭識別需要繞行的障礙,以及需要爬行通過的障礙,最后通過攝像頭看到終點色塊時,步行到達終點位置為完成任務,如圖6所示:


圖6 障礙賽實驗進程照片
針對傳統教育仿人機器人面向過程的流程式編程不易學習和使用的問題,設計了一種面向任務的圖形化教育仿人機器人編程方法。該方法基于行為反應式的控制方式,采用有限狀態機模型實現任務層和行為層的協調機制,有限狀態機作為一個通用的表現形式,可以在一個抽象的層次上作為一個可復用的模板,利用其的正交性和收斂性,可以覆蓋機器人編程的所有可能性,又不會重復處理,并且能保證所有的處理都在可預測的控制范圍內。并構建了完整的控制系統,包括上層編程環境和下層控制器。控制系硬件分離了中央處理器芯片和外設,使用核心板和擴展板疊加的構架,縮小了控制系統體積,便于靈活更換擴展設備和接口。編程環境簡潔、直觀、友好,除了能夠對機器人全身各關節精確控制,還要具有邏輯編輯能力,能讓用戶集中精力于任務中每個模塊的實現和模塊間的邏輯關系。
通過教育仿人機器人IRONEEG進行的實驗表明,本控制系統適用于教育仿人機器人的研究和開發,其開放性和模塊化的特性能被開發人員迅速接受,有利于仿人機器人研究的深入推廣。
[1]梶田秀司.仿人機器人[M].北京:清華大學出版社,2007.
[2]鮑賢捷,陳衛東,曹其新.機器人圖標化編程環境的設計及實現[J].機器人,2006,28(6):481-486.
[3]Huq R,Lacheray H,Fulford C,et al.QBOT: An educational mobile robot controlled in MATLAB Simulink environment[C].In Proceedings of Canadian Conference on Electrical and Computer Engineering.St.John's,NL ,Canada,2009.
[4]Biggs G,MacDonald B.A survey of robot programming systems[C].In Proceedings of Australasian Conference on Robotics and Automation.Brisbane,Australia,2003.
[5]張小冰,陳衛東,曹其新.面向服務機器人的簡易編程環境設計[J].上海交通大學學報,2007,41(11):1811-1815.
[6]Katsu Yamane,Jessica Hodgins. Simultaneous Tracking and Balancing of Humanoid Robots for Imitating Human Motion Capture Data[C].In Proceedings of the IEEE/RSJ International Conference on Robots and Systems.St.Louis,USA,2009.