說(shuō)多了,感覺(jué)要跑題了。如果你有興趣,并想了解更多關(guān)于編程機(jī)器人來(lái)處理未知的東西,推薦Ronald Arkin的《Behavior-Based Robotics》和Thomas Braun的《嵌入式機(jī)器人學(xué):基于嵌入式系統(tǒng)的移動(dòng)機(jī)器人設(shè)計(jì)和應(yīng)用》。慎思式的機(jī)器人編程方法,從中級(jí)到高級(jí)的探討,推薦Christopher A. Rouff等人的《Agent Technology from a Formal Perspective》。
一張圖小結(jié)一下:
二、混合系統(tǒng):實(shí)踐的產(chǎn)物
沒(méi)有萬(wàn)靈的結(jié)構(gòu),混合系統(tǒng)結(jié)合了SPA和反應(yīng)體系的原理,將多種混合系統(tǒng)應(yīng)用于在傳感器和電機(jī)輸出間進(jìn)行協(xié)調(diào)來(lái)完成任務(wù)?;旌辖Y(jié)構(gòu)相結(jié)合最具吸引力的好處可能是:系統(tǒng)按照有利于完成任務(wù)的標(biāo)準(zhǔn)進(jìn)行設(shè)計(jì),而非刻板的遵循某一教條。但再?gòu)?fù)雜的機(jī)構(gòu),基本上也都是二者的組合。以ROS的導(dǎo)航包為例:
圖6 ROS導(dǎo)航包
導(dǎo)航包整體上是SPA結(jié)構(gòu),左右兩側(cè)是感知S,包括傳感器數(shù)據(jù)/里程計(jì)/地圖等,中間框圖是Global和Local兩級(jí)規(guī)劃P,最后發(fā)送cmd_vel給行動(dòng)A。
如果世界是完美的,那按照規(guī)劃的地圖行進(jìn)到目的地就完事了。然而基于行為方法就是為了處理各種意外而生的。當(dāng)機(jī)器人遇到障礙物或是被卡住的時(shí)候,內(nèi)嵌的基于行為的系統(tǒng)就開(kāi)始發(fā)揮作用。會(huì)根據(jù)情況,在“行為庫(kù)”recovery_behaviors中調(diào)用某一預(yù)先設(shè)定的“行為”來(lái)擺脫困境。
圖7 recovery_behaviors
默認(rèn)的行為是:首先,清除機(jī)器人地圖指定區(qū)域以外的障礙。接下來(lái),如果可能的話,機(jī)器人將執(zhí)行一個(gè)原地旋轉(zhuǎn)清理空間。如果這也失敗了,機(jī)器人將更激進(jìn)地清理地圖,清除一切可以原地旋轉(zhuǎn)的矩形區(qū)域以外的障礙。這將是另一個(gè)就地旋轉(zhuǎn)緊隨其后。如果這些都失敗了,機(jī)器人將認(rèn)為其目標(biāo)不可行,停止運(yùn)行并通知用戶。
當(dāng)然,你還可以針對(duì)各種意外設(shè)計(jì)更為復(fù)雜的recovery_behaviors “行為庫(kù)”以備調(diào)用。
三、安全自主機(jī)器人應(yīng)用框架
現(xiàn)在還有一種基于場(chǎng)景和態(tài)勢(shì)的設(shè)計(jì)框架SARAA,我覺(jué)得很有趣。安全自主機(jī)器人應(yīng)用架構(gòu)(SARAA,Safe Autonomous Robot Application Architecture, SARAA)是一種強(qiáng)調(diào)安全性的自主機(jī)器人的開(kāi)發(fā)方法。
圖8 SARAA
SARAA機(jī)器人總結(jié)
在《機(jī)器人編程實(shí)戰(zhàn)》(2017年出版)書(shū)中,詳細(xì)介紹了編程一個(gè)機(jī)器人自主執(zhí)行其任務(wù)、構(gòu)成了所謂SARAA的7項(xiàng)技術(shù):
軟件機(jī)器人框架
ROLL模型
REQUIRE
RSVP
SPACES
STORIES
PASS
我們稱具有這種體系結(jié)構(gòu)的機(jī)器人為SARAA機(jī)器人。當(dāng)正確地實(shí)現(xiàn)時(shí),這些編程技術(shù)產(chǎn)生一個(gè)基于知識(shí)的機(jī)器人控制器。因此,一個(gè)SARAA機(jī)器人是一個(gè)可以在預(yù)先設(shè)定的場(chǎng)景和態(tài)勢(shì)中自主行動(dòng)的知識(shí)型機(jī)器人。其中一個(gè)設(shè)計(jì)思想是根據(jù)場(chǎng)景和態(tài)勢(shì)對(duì)前提/后置條件的判斷以提高安全性。
感興趣可訪問(wèn)Ctest實(shí)驗(yàn)室,SARAA已經(jīng)用于在開(kāi)源機(jī)器人平臺(tái)內(nèi)工作,例如Arduino、Linux和ROS。如果對(duì)編程SARAA機(jī)器人的場(chǎng)景和態(tài)勢(shì)很好理解與恰當(dāng)定義,則SARAA機(jī)器人的設(shè)計(jì)有助于提升機(jī)器人的安全性。