<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于RTX51的排爆機器人嵌入式控制器固件開發(fā)

          基于RTX51的排爆機器人嵌入式控制器固件開發(fā)

          ——
          作者:上海交通大學(xué)機器人研究所(200030) 寧柯軍 楊汝清 翁新華 時間:2007-02-06 來源:電子技術(shù)應(yīng)用 收藏

          摘 要:介紹遙操作PBJ-1的嵌入式控制系統(tǒng)研制情況。敘述了利用開發(fā)嵌入式控制系統(tǒng)固件中的一些問題和解決辦法。實踐證明基于嵌入式開發(fā)工作于非結(jié)構(gòu)環(huán)境中的遙操作機器人控制系統(tǒng)可以有效地提高整個機器人系統(tǒng)的性能及開發(fā)效率。 

          關(guān)鍵詞    

          排爆機器人(EOD robot)是一種遙操作地面移動機器人,操作機主體一般是由一個機械手和一個可移動平臺組成,主要用于拆除疑似爆炸物品,以減少作業(yè)現(xiàn)場人員傷亡,是軍警部門必須裝備的設(shè)施。目前國際上主要流行美國Remotec公司的Andros系列排爆機器人、法國Cybernetics公司研制的TRS200中型排爆機器人等。但是國外的排爆機器人價格過高,出現(xiàn)故障后維修特別不方便。因此國家863專家組已經(jīng)將高性能排爆機器人的研發(fā)及國產(chǎn)化列入了重點支持的課題。
           
          由于種種原因,目前的排爆機器人很多只采用PLC實現(xiàn)點動控制,功能有限且操作性較差。研究高性能控制器成為排爆、消防等各種遙操作地面移動機器人的共同課題。利用先進的嵌入式系統(tǒng)技術(shù)可以較好地解決這類問題。
           
          本文概述了上海交通大學(xué)機器人研究所研制的新型遙控移動式排爆機器人PBJ-1的嵌入式控制系統(tǒng)(如圖1所示),主要敘述基于RTX51嵌入式(RTOS)開發(fā)排爆機器人PBJ-1嵌入式控制系統(tǒng)固件的情況。利用嵌入式系統(tǒng)技術(shù)開發(fā)適合排爆等各類遙控地面移動機器人使用的嵌入式控制系統(tǒng)能夠解決上述種種矛盾。

          圖1 遙操作排爆機器人PBJ-1

          1 PBJ-1功能介紹
           
          目前國際上比較流行的排爆機器人,都需要由經(jīng)過專門培訓(xùn)的操作人員通過操作一組分別控制機械臂上各個關(guān)節(jié)驅(qū)動電機的按鍵控制,操作很不方便。操作人員需要根據(jù)現(xiàn)場的狀況,判斷出需要機械手執(zhí)行的動作,再經(jīng)過大腦的轉(zhuǎn)換,手工控制機械臂各個關(guān)節(jié)順序動作,使機械手爪擬合出一條空間軌跡以完成作業(yè),大大降低了工作效率。這類排爆機器人一般都需要大量的攝像機,隨時顯示爆炸物相對機械手爪的位置,以便操作人員決定下一步動作。 

          新型排爆機器人PBJ-1為了使操作人員操作更加方便,在嵌入式控制器中嵌入了機器人運動學(xué)運算,能夠?qū)崿F(xiàn)機械臂的自主聯(lián)動控制。操作者只要通過觀看控制箱上面的顯示器,直接操縱控制器命令機器人水平前、后或垂直上、下運動,機械臂可以實時進行機器人運動學(xué)運算和分解運動控制,控制機械手爪完成空間的直線擬合運動。這種操作方式略過了操作人員在大腦中進行動作轉(zhuǎn)換的步驟,大大方便了排爆這一高危險性作業(yè)現(xiàn)場的作業(yè)。 

          為了方便現(xiàn)場操作,在其嵌入式控制器系統(tǒng)中還加入了機器人的一些半自主動作功能。例如當機器人完成作業(yè)后機械臂可以自動折疊歸位;機械臂可以自動進入作業(yè)最佳操作姿態(tài);當操作不當時,控制器可以自主取消操作人員發(fā)送的命令,以避免機械臂與車體之間的干涉碰撞等。 

          為防止爆炸物被恐怖分子遙控引爆,爆炸物品的拆除現(xiàn)場一般都要做電磁屏蔽處理,不能使用無線遙控型機器人,只能采用有纜遙操作移動機器人。由于爆炸物品的拆除作業(yè)危險性很大,所以對排爆機器人的有線通訊系統(tǒng)的可靠性要求很高。PBJ-1是通過RS-485協(xié)議實現(xiàn)相互之間遠距離、高速、高可靠性通訊。 

          操作人員可以通過上位控制箱里的液晶顯示器監(jiān)視作業(yè)現(xiàn)場的狀態(tài);通過操作各種動作按鈕及操縱桿控制機器人完成各種作業(yè)。控制箱有六組4位數(shù)顯LED,分別顯示機器人型號(PBJ1)、通訊狀態(tài)(run或Err)、大小臂關(guān)節(jié)角、機器人及車體運動速度、機器人電源實時電壓。這些都保證了操作人員可以全面了解機器人具體運行狀態(tài),順利完成作業(yè)。 

          2 PBJ-1嵌入式控制系統(tǒng)設(shè)計 

          遙操作機器人由于工作于非結(jié)構(gòu)環(huán)境中,實際期望運動軌跡未知,所以需要根據(jù)操作者的實時操作情況進行動態(tài)實時的目標位置生成及軌跡規(guī)劃,并完成相應(yīng)的運動控制。 

          由于這臺新型排爆機器人功能增強,下位機需要實時完成機器人運動學(xué)及分解運動控制解算,并驅(qū)動各個接口器件實時控制機器人運動,還要保證上、下位機之間的正常通訊連接,及時、迅速、高可靠性地響應(yīng)上位機經(jīng)過處理的數(shù)據(jù)并且上傳機器人本體的各種狀態(tài)信息,負擔(dān)很重。因此如何合理地進行系統(tǒng)固件程序設(shè)計成為決定該機器人實際運行效果的關(guān)鍵。 

          要實現(xiàn)上面所述的功能,的應(yīng)用必須能夠同時進行多任務(wù)或工作的執(zhí)行。對此,傳統(tǒng)的基于單任務(wù)順序循環(huán)機制的程序設(shè)計方法難以勝任,如圖2所示。因此,需要找到一種新的合適的控制器設(shè)計方法。由于微控制器系統(tǒng)功能通??梢苑纸鉃槎鄠€相對獨立的模塊,將這些模塊理解為任務(wù),從而可以引入多任務(wù)機制進行管理。引入多任務(wù)機制后,可以有效地改善程序結(jié)構(gòu),滿足應(yīng)用系統(tǒng)復(fù)雜的定時要求。在多任務(wù)機制下,CPU的運行時間被劃分成許多小的時間片,由某種調(diào)度算法按不同的優(yōu)先級別分配給不同的任務(wù)。多個任務(wù)分別在各自的時間片內(nèi)訪問CPU,從而產(chǎn)生了微觀上輪流運行、宏觀上并行運行的多任務(wù)效果,如圖3所示。  

          圖2 順序循環(huán)機制的程序流程 圖3 多任務(wù)機制下的程序流程 {{分頁}}

          在多任務(wù)嵌入式系統(tǒng)中,合理的任務(wù)調(diào)度必不可少。單純通過提高處理器速度無法達到目的,這樣就要求嵌入式系統(tǒng)的軟件必須具有多任務(wù)調(diào)度能力。因此必須基于多任務(wù)實時操作系統(tǒng)進行嵌入式系統(tǒng)固件開發(fā)。 

          實時操作系統(tǒng)的首要任務(wù)是調(diào)度一切可利用的資源完成實時控制任務(wù);其次才著眼于提高計算機系統(tǒng)的使用效率。其重要特點是通過任務(wù)調(diào)度對重要事件在規(guī)定的時間內(nèi)作出正確的響應(yīng)。實時操作系統(tǒng)既能保證對外界的信息以足夠快的速度進行相應(yīng)處理,又能并行運行多個任務(wù),具有實時性和并行性的特點,因此能很好地完成對多個信息的實時測量、處理并進行相應(yīng)的多個實時控制。
           
          PBJ-1上下位機嵌入式控制器都是以業(yè)界經(jīng)典51內(nèi)核增強型單片機AT89C55WD為核心;基于嵌入式實時操作系統(tǒng)RTX51Tiny開發(fā)固件程序。通過提供必不可少的系統(tǒng)服務(wù),如信號量管理、消息隊列、延時等,實時內(nèi)核使CPU的利用更為有效。 

          2.1 RTX51簡介 

          RTX51是德國Keil公司開發(fā)的一種應(yīng)用于MCS51系列單片機功能強大的、可用于目前世界上所有由Intel 8051標準內(nèi)核派生出的350多種增強微控制器的實時操作系統(tǒng)。使用RTX51可實現(xiàn)程序按時間片輪轉(zhuǎn)和搶先的任務(wù)調(diào)度,并且支持事件和信號驅(qū)動。 

          RTX51有兩個版本:RTX51Full和RTX51Tiny。RTX51Full允許4個優(yōu)先權(quán)任務(wù)的循環(huán)和切換,并且能夠并行地利用中斷功能。RTX51Full可以從內(nèi)存池中申請和釋放內(nèi)存,同時可以強制一個任務(wù)停止執(zhí)行等待一個中斷,或者是其它中斷傳來的信號量或者消息。RTX51Tiny短小精悍,是RTX51Full的一個子集,只占用900字節(jié)ROM、7字節(jié)DATA型及3倍于任務(wù)數(shù)量的IDATA型RAM空間,可以很容易地運行在沒有擴展外部存儲器的單片機系統(tǒng)上。使用RTX51Tiny的程序可以訪問外部存儲器,允許循環(huán)任務(wù)切換,并且支持信號傳遞,還能并行地利用中斷功能。RTX51Tiny 允許“準并行”同時執(zhí)行幾個任務(wù)。每一個任務(wù)在預(yù)先定義好的時間片內(nèi)得以執(zhí)行。時間到使正在執(zhí)行的任務(wù)掛起,并使另一個任務(wù)開始執(zhí)行。最新的RTX51Tiny2.0重新調(diào)整了內(nèi)核結(jié)構(gòu),使用更靈活、執(zhí)行更快、占用的資源更少,另外還增加了幾個新的特性。 

          RTX51Tiny內(nèi)核完全集成在Keil C51編譯器中,以系統(tǒng)函數(shù)調(diào)用的方式運行,因此可以很容易地使用Keil C51語言編寫和編譯一個多任務(wù)程序,并嵌入到實際應(yīng)用系統(tǒng)中。內(nèi)核主要提供以下函數(shù)供應(yīng)用程序引用,見表1。 

          表1 RTX51Tiny主要系統(tǒng)函數(shù)說明

          系統(tǒng)函數(shù) 文字說明
           isr_send_signal  從一個中斷發(fā)送一個信號到一個任務(wù)。
           os_clear_signal  刪除一個發(fā)送的信號。
           os_create_task  移動一個任務(wù)到運行隊列。
           os_delete_task  從運行隊列中刪除一個任務(wù)。
           os_running_task_id  返回當前運行任務(wù)的任務(wù)標識符(task ID)。
           os_send_signal  從一個任務(wù)發(fā)送一個信號到另一個任務(wù)。
           os_wait  等待一個事件。

          RTX51Tiny的用戶任務(wù)具有表2所列的幾個狀態(tài),它們?nèi)鐖D4所示進行切換。 

          為了保證任務(wù)在執(zhí)行順序上的協(xié)調(diào),必須采用同步機制。內(nèi)核用以下事件進行任務(wù)間的通信和同步: 
          (1)SIGNAL:用于任務(wù)之間通訊的位,可以用系統(tǒng)函數(shù)進行置位或清除。如果一個任務(wù)調(diào)用了os_wait函數(shù)等待SIGNAL而SIGNAL未置位,則該任務(wù)被掛起直到SIGNAL置位,才返回到READY狀態(tài),并可被再次執(zhí)行。 
          (2)TIMEOUT:由os_wait函數(shù)開始的時間延時,其持續(xù)時間可由定時節(jié)拍數(shù)確定。帶有TIMEOUT值調(diào)用os_wait函數(shù)的任務(wù)將被掛起,直到延時結(jié)束,才返回到READY狀態(tài),并可被再次執(zhí)行。 
          (3)INTERVAL:由os_wait函數(shù)開始的時間間隔,其持續(xù)時間可由定時節(jié)拍數(shù)確定。帶有INTERVAL值調(diào)用os_wait函數(shù)的任務(wù)將被掛起,直到間隔時間結(jié)束,才返回到READY狀態(tài),并可被再次執(zhí)行。與TIMEOUT不同的是,任務(wù)的節(jié)拍計數(shù)器不復(fù)位。
           
          RTX51Tiny采用微控制器(51)內(nèi)部定時器T0來產(chǎn)生定時節(jié)拍,各任務(wù)只在各自分配的定時節(jié)拍數(shù)(時間片)內(nèi)執(zhí)行。當時間片用完后,切換至下一任務(wù)運行,因此各任務(wù)是并發(fā)執(zhí)行的。RTX51Tiny調(diào)度程序定義這些任務(wù)按照下面的規(guī)則運行: 

          (1)如果出現(xiàn)以下情況,當前運行任務(wù)中斷: 
          ①任務(wù)調(diào)用os_wait函數(shù)并且指定事件沒有發(fā)生。 
          ②任務(wù)運行時間超過定義的時間片輪轉(zhuǎn)超時時間。
           
          (2)如果出現(xiàn)以下情況,則開始另一個任務(wù): 
          ①沒有其他的任務(wù)運行。 
          ②將要開始的任務(wù)處READY或TIME-OUT狀態(tài)。{{分頁}}
           
          表2 RTX51Tiny任務(wù)狀態(tài)說明

          狀 態(tài) 說 明
           RUNNING  當前正在運行的任務(wù)處于RUNNING狀態(tài)。
           同一時間只有一個任務(wù)可以運行。
           READY  等待運行的任務(wù)處于READY狀態(tài)。在當前運行的任務(wù)
           處理完成后,RTX51 Tiny開始下一個處于READY狀態(tài)的任務(wù)。
           WAITING  等待一個事件的任務(wù)處于WAITING狀態(tài)。
           如果事件發(fā)生的話任務(wù)進入READY狀態(tài)。
           DELETED  沒有開始的任務(wù)處于刪除狀態(tài)。
           TIME-OUT  被時間片輪轉(zhuǎn)超時終端的任務(wù)處于TIME-OUT狀態(tài)。
           這個狀態(tài)與READY狀態(tài)相同。

          圖4 RTX51任務(wù)切換圖

          2.2 嵌入式操作系統(tǒng)的特殊問題處理 

          在RTX51 下進行多任務(wù)編程與傳統(tǒng)的順序循環(huán)單任務(wù)編程相比有以下幾個值得注意的不同點:(1)多任務(wù)編程CPU 是輪流執(zhí)行每個任務(wù),可以將每個任務(wù)設(shè)計成死循環(huán)的模式,不斷重復(fù)地進行數(shù)據(jù)計算或者訪問硬件,不會影響別的任務(wù)的執(zhí)行。當一個任務(wù)的數(shù)據(jù)計算完成后,可以通過os_wait 函數(shù)將CPU 交出執(zhí)行別的任務(wù)。而單任務(wù)模式卻獨占了所有的CPU 資源,時常要擔(dān)心是否執(zhí)行時間太長而不能及時響應(yīng)外部的異步事件。(2)多任務(wù)編程有一個缺點,即資源沖突和重入問題。所謂資源沖突就是任務(wù)A在訪問某個資源時,恰好發(fā)生了任務(wù)切換,任務(wù)B也訪問這個資源,且改變了它的狀態(tài),這樣當再次執(zhí)行任務(wù)A時就可能發(fā)生沖突或帶來不確定性。而所謂重入是指假設(shè)任務(wù)A在運行某個函數(shù),發(fā)生任務(wù)切換后,任務(wù)B也運行這個函數(shù),這樣就會破壞任務(wù)A執(zhí)行這個函數(shù)的現(xiàn)場,從而可能導(dǎo)致任務(wù)A執(zhí)行函數(shù)時結(jié)果不正確。這種問題尤其容易出現(xiàn)在串行接口器件的操作中,例如串口、串行的A/D、D/A器件等。 

          在本嵌入式機器人控制器開發(fā)過程中,采用這種處理辦法:將對每個獨立的硬件(例如串行通訊)進行操作的驅(qū)動程序段放在一個任務(wù)中,也就是說要想對某個設(shè)備資源進行操作,只有依靠執(zhí)行相應(yīng)的任務(wù)來實現(xiàn)。這樣無論何時切換任務(wù),都不會對任何獨立的“外設(shè)”造成影響。這樣做徹底避免了資源沖突和重入問題而且利于系統(tǒng)維護與升級。各個任務(wù)之間要實現(xiàn)通信,可以調(diào)用os_send_signal函數(shù)及全局變量。 

          在嵌入式控制系統(tǒng)開發(fā)中借鑒了Windows消息驅(qū)動的思想,使部分不需要始終執(zhí)行的任務(wù)處于等待信號狀態(tài),這樣它們不會占用資源。只有當需要進行相應(yīng)處理時通過需要它們運行的任務(wù)發(fā)送給它們SIGNAL,它們才會進入RUNNING任務(wù)隊列中,得到執(zhí)行。相關(guān)的系統(tǒng)函數(shù)為: 

          os_wait (K_SIG, 0, 0); //等待信號 
          os_send_signal (Task_ID);//向Task_ID任務(wù)發(fā)送一個信號。 
          這樣的處理,可以使微控制器在有限的資源下集中精力處理好耗時且重要的事情。
           
          2.3 排爆機器人嵌入式控制系統(tǒng)固件開發(fā) 

          上位機嵌入式控制器固件結(jié)構(gòu)如圖5所示。根據(jù)控制器要完成作業(yè)的獨立性分割成幾個任務(wù)片。圖5表示了各任務(wù)之間的關(guān)系、與外設(shè)連接關(guān)系。整個系統(tǒng)被區(qū)分成三個層次。 

          減少上、下位機之間數(shù)據(jù)交換的次數(shù)及數(shù)據(jù)量有利于減少下位控制器中斷機器人的運動控制轉(zhuǎn)入通訊協(xié)議處理的幾率,可以提高運動控制的質(zhì)量。所以PBJ-1的通訊部分固件程序設(shè)計沒有采用傳統(tǒng)的定時向下位機傳送輸入設(shè)備的狀態(tài)這種高通訊負擔(dān)的方法,而是基于消息驅(qū)動的思想。通訊任務(wù)依靠輸入設(shè)備檢測任務(wù)執(zhí)行的結(jié)果來決定是否激活、進入消息隊列以實現(xiàn)控制器之間的通訊。這樣只有當操作者實際改變了輸入設(shè)備的狀態(tài),上位機才向下位機發(fā)送相應(yīng)的信息。利用消息驅(qū)動思想來開發(fā)通訊程序十分方便、可靠,并且大大減少了通訊線路的負擔(dān)。為了保證數(shù)據(jù)傳輸?shù)母呖煽啃?每次數(shù)據(jù)交換都先經(jīng)過握手以確保無誤。 

          下位機嵌入式控制器固件結(jié)構(gòu)如圖6所示。 

          圖5 上位機嵌入式控制系統(tǒng)固件結(jié)構(gòu){{分頁}}

          圖6 下位機嵌入式控制系統(tǒng)固件結(jié)構(gòu) 

          由于有些任務(wù)不需要一直執(zhí)行,例如機器人需要響應(yīng)上位機的指令完成繼電器的切換等,也將利用os_wait函數(shù)處理,使它們平時不進入RUNNING任務(wù)隊列中,減少資源浪費。在下位機串口中斷中利用isr_send_signal向該任務(wù)發(fā)送信號激活該任務(wù),使得該要求得到執(zhí)行。具體調(diào)用方法如下: 
          isr_send_signal(Task_ID); //從一個中斷發(fā)送一個信號到Task_ID任務(wù)。 

          通過Windows消息驅(qū)動的思想和RTX51 Tiny實時操作系統(tǒng)的配合,合理分配了系統(tǒng)的資源。下位機控制器“集中精力” 完成機器人運動學(xué)解算及分解運動控制運算這些相當耗時的任務(wù),實時控制機械臂運動。 

          在微控制器固件開發(fā)中嵌入操作系統(tǒng)還大大提高了系統(tǒng)的穩(wěn)定性。即使某個外設(shè)或任務(wù)出現(xiàn)故障,與之無關(guān)的任務(wù)一般不會受到影響,不像傳統(tǒng)的順序循環(huán)機制的程序設(shè)計方法中如果某一環(huán)節(jié)出現(xiàn)問題會立刻造成整個系統(tǒng)的崩潰。 

          實際整個系統(tǒng)的上下位機微控制器都是僅僅利用運行于22.1184MHz頻率下的AT89C55WD 就很好地達到了預(yù)期目標。該系統(tǒng)在隨意頻繁地分別開關(guān)上下位機電源、受到較強電磁干擾、大功率電機頻繁啟動、制動造成系統(tǒng)電源電壓波動較大等苛刻的運行測試中均表現(xiàn)出了非常高的穩(wěn)定性與數(shù)據(jù)傳輸準確性。整個系統(tǒng)在運行中即使出現(xiàn)了通訊失敗(人為切斷通訊線路或部分電源),當故障排除后,上、下位機可以迅速自動恢復(fù)正常的通訊狀態(tài)沒有出現(xiàn)誤動作。 

          筆者為新型排爆機器人PBJ-1先后開發(fā)了兩套控制器固件程序,采用完全一樣的硬件平臺。一套是基于傳統(tǒng)的順序循環(huán)機制,開始效果不理想,后來借鑒消息驅(qū)動思想改進程序架構(gòu)才滿足了要求。開發(fā)過程中花費了不少時間來調(diào)試。另一套就是本文所述的基于RTX51 Tiny嵌入式實時操作系統(tǒng)開發(fā)的,實際運行效果相當好,但是花費的時間很少,而且很容易增加新的功能。 

          實踐表明, 在系統(tǒng)復(fù)雜、對實時性和精度要求比較嚴格,并且需要并行處理的任務(wù)較多的運動控制系統(tǒng)中,使用RTX51Tiny是一個較好的解決辦法。此外,使用RTX51Tiny實時操作系統(tǒng),會加快嵌入式控制系統(tǒng)的開發(fā)速度,降低軟件編寫的復(fù)雜度,提高產(chǎn)品的開發(fā)效率。維護和功能擴展都非常方便。
           
          參考文獻 

          1 王田苗. 嵌入式系統(tǒng)設(shè)計與實例開發(fā)[M]. 北京:清華大學(xué)出版社, 2003 
          2 馬忠梅.單片機C語言應(yīng)用程序設(shè)計(修訂本) [M]. 北京:北京航空航天大學(xué)出版社,1999 
          3 劉天泉, 黃海, 王樹青.RTX51在運動控制系統(tǒng)中的應(yīng)用[J]. 機電工程, 2004;21(1):30~33 
          4 劉玉宏. KEIL RTX51 TINY內(nèi)核的分析與應(yīng)用[J]. 單片機與嵌入式系統(tǒng)應(yīng)用, 2003;10:23~25 
          5 Horowitz B, Liebman J. Platform-based embedded software design and system integration for 
            autonomous vehicles[J]. Proceedings of the IEEE, 2003;91(1):198~211 
          6 Jaehwan Lee, Mooney V J. A comparison of the RTU hard-ware RTOS with a hardware/software
            RTOS[A]. Design Au-tomation Conf. Proceedings of the ASP-DAC[C]. Asia and South Pacific,
            2003:683~688  



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();