雷鋒網(wǎng)按:本文作者Top Liu,易科機(jī)器人實(shí)驗(yàn)室系統(tǒng)設(shè)計(jì)師,機(jī)器人技術(shù)傳播者,譯著有《機(jī)器人編程實(shí)戰(zhàn)》、《嵌入式機(jī)器人學(xué)》等。雷鋒網(wǎng)獨(dú)家發(fā)布,轉(zhuǎn)載請聯(lián)系授權(quán)。
機(jī)器人編程涉及控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),包括環(huán)境感知、交互、移動及行為的控制。
一個理想的機(jī)器人編程過程包括(假定硬件已經(jīng)一切就緒):
1.系統(tǒng)架構(gòu)設(shè)計(jì)
2.具體功能的算法實(shí)現(xiàn)
3.編碼與集成
由于筆者所從事工作性質(zhì),主要集中在:1.系統(tǒng)設(shè)計(jì)和2.算法的研究上,3.coding的機(jī)會并不是很多。第二個原因是:如果1、2工作完成后,3的工作其實(shí)和機(jī)器人本身并不大,計(jì)算機(jī)專業(yè)恐怕會做的更好。因此本文主要就1給出一些總結(jié)和建議。另外,由于所研究的算法過(wu)于(fa)先(ying)進(jìn)(yong),通常會在專業(yè)的學(xué)術(shù)期刊上發(fā)表,在此也不做過多討論。
一、機(jī)器人系統(tǒng)架構(gòu)
“架構(gòu)可定義為組件的結(jié)構(gòu)及它們之間的關(guān)系,以及規(guī)范其設(shè)計(jì)和后續(xù)進(jìn)化的原則和指南。簡言之,架構(gòu)是構(gòu)造與集成軟件密集型系統(tǒng)的深層次設(shè)計(jì)。”
系統(tǒng)架構(gòu)也可稱其為如何實(shí)施解決方案的一個策略性設(shè)計(jì)(例如基于組件的工程標(biāo)準(zhǔn)、安全)和解決方案做什么的功能性設(shè)計(jì)(如算法、設(shè)計(jì)模式、底層實(shí)現(xiàn))。
圖1 機(jī)器人功能分解
另外,軟件工程的基本要求包括模塊化、代碼可復(fù)用、功能可共享。使用通用的框架,有利于分解開發(fā)任務(wù)及代碼移植。機(jī)器人軟件同樣遵從軟件工程的一般規(guī)律。說白了,架構(gòu)就是你如何把機(jī)器人的功能打散,再如何把代碼組織起來。一個清晰的與項(xiàng)目相匹配的架構(gòu)直接決定了你的開發(fā)效率甚至最終功能的成敗。
從人類第一臺可編程的機(jī)器人開發(fā)伊始,架構(gòu)問題就與之相伴而生。早在1996年,Garlan 和 Shaw在《軟件架構(gòu):一門新興學(xué)科的展望》就總結(jié)了移動機(jī)器人的基本設(shè)計(jì)需求, 如:(1) 慎思規(guī)劃和反應(yīng)式行為;(2)容許不確定性;(3)考慮危險(xiǎn);(4)靈活性強(qiáng)。針對這些要求,他們評估了四種用于移動機(jī)器人的架構(gòu),包括控制回路(control loop)、分層(layers)、隱式調(diào)用(implicit invocation)、黑板(blackboard)。經(jīng)過了幾十年的實(shí)踐,一些架構(gòu)被逐漸淘汰,一些架構(gòu)逐漸被完善起來。
注意:現(xiàn)在很多機(jī)器人開發(fā)者一上手就是ROS,雖然ROS是一種比較不錯的系統(tǒng)架構(gòu),它的基于node的思想在當(dāng)時是非常先進(jìn)的,在今天已成為主流。但我們也要清楚,它只是其中一種架構(gòu),尤其是在小型嵌入式設(shè)備上定制機(jī)器人系統(tǒng)時,其他的架構(gòu)可能會更有效率。另外Master中央控制模式,也是單機(jī)時代的產(chǎn)物,在多機(jī)的情形就不是很適用。
| 1.S-P-A結(jié)構(gòu)
圖2 機(jī)器人的“see-think-act”工作模式
圖3 “傳感——計(jì)劃——行動”(SPA)結(jié)構(gòu)
機(jī)器人天然的工作模式是“see-think-act”,所以自然而然的就形成了“傳感——計(jì)劃——行動”(SPA)結(jié)構(gòu):從感知進(jìn)行映射,經(jīng)由一個內(nèi)在的世界模型構(gòu)造,再由此模型規(guī)劃一系列的行動,最終在真實(shí)的環(huán)境中執(zhí)行這些規(guī)劃。與之對應(yīng)的軟件結(jié)構(gòu)稱為經(jīng)典模型,也稱為層次模型、功能模型、工程模型或三層模型,這是一種由上至下執(zhí)行的可預(yù)測的軟件結(jié)構(gòu),
SPA機(jī)器人系統(tǒng)典型的結(jié)構(gòu)是中建立有三個抽象層,分別稱為