技術(shù)講堂:使用分層的方法設(shè)計機(jī)器人軟件
機(jī)器人軟件架構(gòu)是典型的控制回路的層次集掺胖,包含了高端計算平臺上的高級任務(wù)規(guī)劃、運動控制回路以及最終的現(xiàn)場可編程門陣列(FPGA)醉檐。在這中間盾叭,還有循環(huán)控制路徑規(guī)劃、機(jī)器人軌跡勿镇、障礙避讓和許多其他任務(wù)肄高。這些控制回路可在不同的計算節(jié)點(包括臺式機(jī)、實時操作系統(tǒng)以及沒有操作系統(tǒng)的自定制處理器)上以不同的速率運行邦匆。
在某些時候睦绍,系統(tǒng)中的各個部分必須一同運行。通常情況下涉波,這需要在軟件和平臺間預(yù)定義一個非常簡單的界面—就如控制和監(jiān)測方向與速度般簡單英上。共享軟件棧的不同層次的傳感器數(shù)據(jù)是一個不錯的想法,但會給集成帶來相當(dāng)大的麻煩啤覆。每個參與機(jī)器人設(shè)計的工程師或科學(xué)家的理念都有所不同苍日,舉例來說惭聂,同一個架構(gòu)對于計算機(jī)科學(xué)家來說運作良好,而在機(jī)械工程師那里可能就無法正常工作相恃。
如圖1所示辜纲,擬議的移動機(jī)器人軟件架構(gòu)由下列圖形所表示的三至四層系統(tǒng)構(gòu)成。軟件中的每一層只取決于特定的系統(tǒng)拦耐、硬件平臺或機(jī)器人的終極目標(biāo)耕腾,與其上下層的內(nèi)容完全不相關(guān)。典型的機(jī)器人軟件包括驅(qū)動程序杀糯、平臺和算法層組件扫俺,而具備用戶交互形式的應(yīng)用包含了用戶界面層(該層可能不需要完全自主實現(xiàn))。
圖1.機(jī)器人參考架構(gòu)
該范例中的架構(gòu)為帶有機(jī)械手臂的自主移動機(jī)器人固翰,它能夠執(zhí)行路徑規(guī)劃涉姆、障礙避讓和地圖繪制等任務(wù)。這類機(jī)器人的應(yīng)用范圍在真實世界十分廣泛治盆,包括農(nóng)業(yè)绳弯、物流或搜索和救援。板載傳感器包括編碼器矫摸、慣性測量單元(IMU)耗砖、攝像頭和多個聲納及紅外(IR)傳感器。傳感器聚變可以用來整合針對本地化的編碼器和IMU數(shù)據(jù)镐访,并定義機(jī)器人環(huán)境地圖二蚓。攝像頭則用于識別載板機(jī)械手臂握住的物體,而機(jī)械手臂的位置由平臺層上執(zhí)行的運動學(xué)算法所控制限榆,聲納和紅外傳感器可以避開障礙物停就。最后,轉(zhuǎn)向算法被用來控制機(jī)器人的移動笆唧,即車輪或履帶的移動颈癌。圖2就是基于移動機(jī)器人架構(gòu)的美國宇航局機(jī)器人。
圖2.SuperDroidRobots設(shè)計的移動機(jī)器人
開發(fā)人員可以借助NILabVIEW系統(tǒng)設(shè)計軟件來實現(xiàn)這些移動機(jī)器人的平臺層岸裙。LabVIEW可用于設(shè)計復(fù)雜的機(jī)器人應(yīng)用—從機(jī)械手臂延伸到自主車輛開發(fā)猖败。該軟件提取I/O并可與多種硬件平臺集成,幫助工程師和科學(xué)家提高了他們的開發(fā)效率降允。NICompactRIO硬件平臺在機(jī)器人開發(fā)中十分常用恩闻,它包括了集成的實時處理器與FPGA技術(shù)。LabVIEW平臺的內(nèi)置功能可實現(xiàn)每一層之間的數(shù)據(jù)通信剧董,通過網(wǎng)絡(luò)傳輸數(shù)據(jù)并顯示在PC主機(jī)上幢尚。
1.驅(qū)動層
顧名思義,驅(qū)動層主要處理機(jī)器人操控所需的底層驅(qū)動函數(shù)翅楼。在這一層的組件取決于系統(tǒng)中的傳感器和執(zhí)行器尉剩,以及運行著驅(qū)動軟件的硬件真慢。一般情況下,這一層的模塊采集工程單位(位置理茎,速度黑界,力量等等)中激勵器的設(shè)定值,生成底層信號來創(chuàng)建相應(yīng)的觸發(fā)皂林,其中可能包括關(guān)閉這些設(shè)定值循環(huán)的代碼朗鸠。同樣的,該層的模塊還能采集原始傳感器數(shù)據(jù)丑辖,將其轉(zhuǎn)換成有用的工程單位卷芜,并將傳感器值傳輸至其它架構(gòu)層。圖3中的驅(qū)動層代碼就是使用LabVIEWFPGA模塊開發(fā)的咏编,并在CompactRIO平臺的嵌入式FPGA模塊上執(zhí)行。聲納熄朴、紅外和電壓傳感器都連接在FPGA的數(shù)字I/O引腳上理侄,信號在連續(xù)循環(huán)結(jié)構(gòu)中進(jìn)行處理,這些結(jié)構(gòu)在FPGA上真正的并行執(zhí)行雾鸠。這些函數(shù)輸出的數(shù)據(jù)被發(fā)送到平臺層上進(jìn)行進(jìn)一步處理限牢。
圖3.傳感器和激勵器的驅(qū)動層界面
驅(qū)動層可以連接到實際的傳感器或激勵器,或連接環(huán)境仿真器中的I/O纪娄。除了驅(qū)動層以外戈裳,開發(fā)人員無需修改系統(tǒng)中的任何層,就能在仿真和實際硬件之間進(jìn)行切換启毁。圖4為LabVIEW機(jī)器人模塊2011橘蹭,它包含了基于物理學(xué)的環(huán)境仿真器,因此用戶可在硬件和仿真之間切換页衙,除了硬件I/O模塊以外就無需修改任何代碼摊滔。開發(fā)人員可以使用例如LabVIEW機(jī)器人環(huán)境仿真器等工具來在軟件中快速驗證他們的算法。
圖4.如果需要進(jìn)行仿真店乐,必須要在驅(qū)動層中使用環(huán)境仿真器
2.平臺層
平臺層中的代碼對應(yīng)了機(jī)器人的物理硬件配置艰躺。該層中底層的信息和完整的高層軟件之間能夠進(jìn)行雙向轉(zhuǎn)換,頻繁地在驅(qū)動層和高層算法層之間切換眨八。如圖5所示腺兴,我們使用了LabVIEWFPGA讀/寫結(jié)點從FPGA中接受原始紅外傳感器數(shù)據(jù),并且在CompactRIO實時控制器上進(jìn)行數(shù)據(jù)處理廉侧。我們使用LabVIEW函數(shù)將原始傳感器數(shù)據(jù)轉(zhuǎn)換成有用的數(shù)據(jù)—在本案例中為距離页响,并判斷我們是否在4米至31米的范圍之外。
圖5.平臺層在驅(qū)動層和算法層之間進(jìn)行轉(zhuǎn)換
3.算法層
該層中的組件代表了機(jī)器人系統(tǒng)中高層的控制算法伏穆。圖6呈現(xiàn)了機(jī)器人需要完成任務(wù)拘泞,可以看到算法層中的模塊采集系統(tǒng)信息纷纫,如位置、速度或處理后的視頻圖像陪腌,并基于所有反饋信息作出控制決定辱魁。該層中的組件能夠為機(jī)器人環(huán)境規(guī)劃地圖,并根據(jù)機(jī)器人周圍的障礙物規(guī)劃路徑叼稍。圖6中的代碼顯示的是使用矢量場直方圖(VFH)避障的范例轨赦。在該范例中,距離數(shù)據(jù)從平臺層發(fā)送至距離傳感器闻荠,再由VFH模塊接收谈芬。VFH模塊的輸出數(shù)據(jù)包含了路徑方向,該信息直接發(fā)送到平臺層上藻拟。在平臺層上式蠢,路徑方向輸入至轉(zhuǎn)向算法,并生成底層代碼卑聚,然后直接發(fā)送到驅(qū)動層上的電機(jī)上遥妒。
圖6.算法層根據(jù)反饋信息作出控制決定
算法層組件的另一個范例是搜索紅色的球狀物體,并使用機(jī)械手臂將它拾起的機(jī)器人纽秽。該機(jī)器人憑借其設(shè)定的方式珍询,在避讓障礙的同時探索環(huán)境——這就需要搜索算法與避障算法相結(jié)合。在搜索時掰腌,平臺層模塊會處理圖像策橘,并且返回物體是否找到的信息。球被檢測到以后娜亿,算法會生成一條運動軌跡丽已,手臂端點根據(jù)它就能抓住并拾起球體。
范例中的每個任務(wù)都具有一個高層目標(biāo)暇唾,與平臺或物理硬件無關(guān)促脉。如果機(jī)器人擁有多個高層目標(biāo),那么這一層還需包含仲裁來為目標(biāo)排序策州。
4.用戶接口層
用戶接口層中的應(yīng)用程序并不需要完全獨立瘸味,它為機(jī)器人和操作員提供了物理互動,或在PC主機(jī)上顯示相關(guān)信息够挂。圖7顯示的是圖形用戶界面旁仿,上面包含板載相機(jī)上的實時圖像數(shù)據(jù),以及地圖上周圍障礙的XY軸坐標(biāo)孽糖。伺服角度控制讓用戶可以旋轉(zhuǎn)與相機(jī)連接的板載伺服電機(jī)枯冈。在該層中還能讀取鼠標(biāo)或游戲桿的輸入數(shù)據(jù),或驅(qū)動簡單的文本顯示办悟。該層中的組件尘奏,例如GUI的優(yōu)先級非常低炊捻;而急停按鈕等類似組件則需要以確定性的方式與代碼捆綁。
圖7.用戶接口層允許用戶與機(jī)器人進(jìn)行交互或顯示信息
根據(jù)目標(biāo)硬件不同瓣挂,軟件層可能分布于多個不同目標(biāo)眨捶。在很多情況下,各個層都在一個計算平臺上運行类埋。對于不確定的應(yīng)用程序履字,軟件目標(biāo)為運行Windows或Linux系統(tǒng)的單臺PC。對于需要更為嚴(yán)格定時限制的系統(tǒng)鼓辈,軟件目標(biāo)為單個處理節(jié)點攀瘟,且具備實時操作系統(tǒng)。
鑒于CompactRIO與NISingle-BoardRIO的小體積失跷、供電要求和硬件架構(gòu)诉玲,它們對于移動應(yīng)用程序來說是理想的計算平臺。驅(qū)動程序叔梆、平臺和算法層可在實時處理器和FPGA上分布钢婆,如圖8所示,如果需要臂外,用戶界面層可在一臺主機(jī)PC上運行。電機(jī)驅(qū)動器或傳感器過濾器等高速組件可在FPGA架構(gòu)上確定地運行喇颁,無需占用處理器的時鐘周期漏健。平臺和算法層上的中層控制代碼可以以優(yōu)先循環(huán)的方式在實時處理器上確定地運行,而內(nèi)置的以太網(wǎng)硬件可將信息傳輸?shù)街鳈C(jī)PC上生成用戶界面層橘霎。
圖8.映射到CompactRIO或NISingle-BoardRIO嵌入式系統(tǒng)的移動機(jī)器人參考架構(gòu)
文獻(xiàn)中有關(guān)移動機(jī)器人軟件架構(gòu)的簡要介紹表明了該主題還存在很多不同方法來創(chuàng)建機(jī)器人軟件蔫浆。本文就如何構(gòu)建移動機(jī)器人軟件給出了一種廣義的答案;然而任何設(shè)計都需要預(yù)先作出考慮與規(guī)劃姐叁,才能適應(yīng)架構(gòu)瓦盛。作為回報,一個定義明確的架構(gòu)有助于開發(fā)人員輕松地并行處理項目外潜,將軟件劃分成明確的界面層次原环。此外,將代碼劃分成具有明確的輸入和輸出功能模塊有助于今后項目中的代碼組件復(fù)用处窥。
聲明:本網(wǎng)站所收集的部分公開資料來源于互聯(lián)網(wǎng)嘱吗,轉(zhuǎn)載的目的在于傳遞更多信息及用于網(wǎng)絡(luò)分享,并不代表本站贊同其觀點和對其真實性負(fù)責(zé)滔驾,也不構(gòu)成任何其他建議谒麦。本站部分作品是由網(wǎng)友自主投稿和發(fā)布、編輯整理上傳采冕,對此類作品本站僅提供交流平臺援愁,不為其版權(quán)負(fù)責(zé)贫拭。如果您發(fā)現(xiàn)網(wǎng)站上所用視頻、圖片径揭、文字如涉及作品版權(quán)問題耍叮,請第一時間告知,我們將根據(jù)您提供的證明材料確認(rèn)版權(quán)并按國家標(biāo)準(zhǔn)支付稿酬或立即刪除內(nèi)容高骑,以保證您的權(quán)益蝠盘!聯(lián)系電話:010-58612588 或 Email:editor@mmsonline.com.cn。
- 暫無反饋
編輯推薦
- 2025新年特刊:打造新質(zhì)生產(chǎn)力凄在,智啟未來新篇章
- 定義制造業(yè)未來的數(shù)控加工中心技術(shù)專題
- 航空航天及交通領(lǐng)域先進(jìn)制造技術(shù)應(yīng)用專題
- 解碼消費電子產(chǎn)品生產(chǎn)的數(shù)字化之路技術(shù)專題
- 精密智能機(jī)床钩裆,助力制造升級技術(shù)專題
- 汽車輕量化驅(qū)動下的零部件加工應(yīng)用專題
- 高性能銑刀實現(xiàn)高精加工生產(chǎn)技術(shù)專題
- 航空航天發(fā)動機(jī)解決方案專題
- 高效齒輪加工生產(chǎn)技術(shù)方案專題
- 金屬加工液的性能不止?jié)櫥夹g(shù)應(yīng)用專題