劉偉
摘 要:高性能嵌入式處理器上運(yùn)行機(jī)器人的核心系統(tǒng)。ROS作為機(jī)器人專用的軟件平臺,可在ARM搭配Ubuntu的環(huán)境下運(yùn)行,具有點(diǎn)對點(diǎn)設(shè)計,多語言支持,精簡與集成,工具包豐富,免費(fèi)開源等優(yōu)點(diǎn),應(yīng)用前景廣闊。
關(guān)鍵詞:ROS;機(jī)器人;Ubuntu
20世紀(jì)以來隨著電子技術(shù)的不斷發(fā)展及人類對于自身的不斷了解,機(jī)器人的研究也在不斷深入?,F(xiàn)階段雖能做出外表、走路等接近人類的機(jī)器人,但這些都屬于前沿領(lǐng)域,研究門檻高,實(shí)際的商業(yè)用途不是很廣,所以大多還停留在樣品階段,走進(jìn)市場的很少。借助互聯(lián)網(wǎng)和智能手機(jī)的大潮,嵌入式處理器正在完成以前臺式處理器做不到的事情,于是現(xiàn)階段機(jī)器人又被重新定義。在目前的消費(fèi)領(lǐng)域,某些配備智能處理器和具有互聯(lián)網(wǎng)功能的產(chǎn)品也被認(rèn)為是機(jī)器人,如圖1所示的兩款國內(nèi)廠家生產(chǎn)的機(jī)器人產(chǎn)品。圖1所示的機(jī)器人屬于生活工具類,一般放置在家中,無法自行移動,采用嵌入式處理器,帶有攝像頭、無線網(wǎng)絡(luò)模塊、顯示模塊,可以連接手機(jī),通過手機(jī)App對機(jī)器人進(jìn)行相關(guān)設(shè)置,同時機(jī)器人攝像頭采集到的圖像也能實(shí)時傳給手機(jī),和手機(jī)進(jìn)行語音對講。機(jī)器人還帶有語音識別模塊,若向它詢問“明天天氣如何”,他會從網(wǎng)絡(luò)獲取天氣信息然后作出回答。這些放置在家中的機(jī)器人也可以實(shí)現(xiàn)安全監(jiān)測的功能,通過手機(jī)實(shí)時查看家中的監(jiān)控影像或通過適配各種傳感器以實(shí)時洞悉,比如貼在門窗后面的加速度傳感器,當(dāng)門窗被動作時傳感器給機(jī)器人發(fā)出信號,機(jī)器人隨即通過設(shè)定的方式進(jìn)行報警。
圖2所示為兩款國外生產(chǎn)的機(jī)器人,其最主要的特點(diǎn)是可以運(yùn)動,屬于智能玩具的范疇。這些機(jī)器人可以連接智能手機(jī),通過手機(jī)對機(jī)器人進(jìn)行設(shè)置,然后把手機(jī)當(dāng)做機(jī)器人的操作桿,操作其做出各種運(yùn)動,達(dá)到娛樂的目的。同時,機(jī)器上裝有攝像頭,可以在手機(jī)上同步看到機(jī)器人攝像頭拍攝到的視頻畫面。但也有一些創(chuàng)新,如左邊的機(jī)器人在星戰(zhàn)電影里有原形,用手機(jī)攝像頭對準(zhǔn)該機(jī)器人,通過手機(jī)端的AR技術(shù),在手機(jī)屏幕里可以給機(jī)器人加上各種效果,增加娛樂性。
還有一些具有特殊用途的機(jī)器人,如掃地機(jī)器人,其根據(jù)內(nèi)部的路徑算法清潔地面,同時能自動避開障礙物,并于電量即將耗盡時自動返回充電樁充電。
今后服務(wù)機(jī)器人的趨勢會是以上列舉的這些機(jī)器人的集大成者,即在軟件智能和機(jī)械運(yùn)動方面不斷發(fā)展。軟件智能通過高性能的嵌入式處理器實(shí)現(xiàn)視頻處理、網(wǎng)絡(luò)連接和語音識別等技術(shù)。機(jī)械運(yùn)動則先搭配單片機(jī)和步進(jìn)電機(jī),通過輪子的滾動實(shí)現(xiàn)移動,通過增加機(jī)械零件和改進(jìn)算法來逐步實(shí)現(xiàn)動物甚至人體的肢體行走。圖3所示框圖列出了實(shí)現(xiàn)具有該功能機(jī)器人需要采用的技術(shù)。
高性能嵌入式處理器上運(yùn)行著機(jī)器人的核心系統(tǒng)。攝像頭采集視頻圖像,并對圖像中的事物進(jìn)行一些簡單判別,如識別人臉,對靜態(tài)事物的圖像采集也能讓機(jī)器人辨別障礙物,或計算出靜態(tài)事物的大致幾何圖形甚至尺寸。對動態(tài)事物的圖像采集,機(jī)器人可以計算出動態(tài)事物的運(yùn)動軌跡甚至速度。4G和WiFi&BT模塊屬于無線通信模塊,有了無線通信機(jī)器人才能得到自身之外的更多信號,并將自身的信息傳達(dá)給別人。語音識別模塊能讓機(jī)器人識別聲音,顯示&觸摸屏只是機(jī)器人與外界交互的一種方式,GPS模塊能讓機(jī)器人知道自己的位置信息,存儲模塊除了存儲機(jī)器人的系統(tǒng)和各類軟件外,也能讓機(jī)器人具有記憶功能。攝像頭采集視頻圖像并計算,計算結(jié)果可以存儲在存儲模塊中,當(dāng)遇到類似的計算時就可以判別事物,通過網(wǎng)絡(luò)模塊將這類信息傳遞出去分享給更多的機(jī)器人。單片機(jī)管理著機(jī)器人各類基礎(chǔ)模塊,步進(jìn)電機(jī)控制機(jī)器人的運(yùn)動,各類傳感器讓機(jī)器人有了感知外界環(huán)境的能力。紅外模塊可以實(shí)現(xiàn)對一些外部電器的操控,電池和電池管理模塊為整個機(jī)器人的運(yùn)轉(zhuǎn)提供能量。
硬件結(jié)構(gòu)是實(shí)現(xiàn)服務(wù)機(jī)器人運(yùn)算和控制的基礎(chǔ),在高性能嵌入式處理器上運(yùn)行的操作系統(tǒng)進(jìn)行服務(wù)機(jī)器人具體的運(yùn)算和控制,相當(dāng)于機(jī)器人的靈魂。目前主流的三大機(jī)器人操作系統(tǒng)有Ubuntu,Android和ROS。Android軟件平臺使用較廣泛,ROS為專用的機(jī)器人軟件平臺。要實(shí)現(xiàn)對服務(wù)機(jī)器人的運(yùn)算和控制,軟件平臺需要解決以下問題:
(1)分布式計算現(xiàn)代機(jī)器人系統(tǒng)往往需要多個計算機(jī)同時運(yùn)行多個進(jìn)程,當(dāng)多個機(jī)器人需要協(xié)同完成一個任務(wù)時,需要互相通信來支撐任務(wù)完成;用戶通過臺式機(jī)、筆記本或者移動設(shè)備發(fā)送指令控制機(jī)器人,而人機(jī)交互接口可以認(rèn)為是機(jī)器人軟件的一部分。
(2)軟件復(fù)用隨著機(jī)器人研究的快速推進(jìn),誕生了一批應(yīng)對導(dǎo)航、路徑規(guī)劃、建圖等通用任務(wù)的算法。當(dāng)然,任何一個算法實(shí)用的前提是其能夠應(yīng)用于新的領(lǐng)域,且不必重復(fù)實(shí)現(xiàn)。
(3)快速測試為機(jī)器人開發(fā)軟件比其他軟件開發(fā)更具有挑戰(zhàn)性,主要是因?yàn)檎{(diào)試準(zhǔn)備時間長,且調(diào)試過程復(fù)雜。何況受硬件維修、經(jīng)費(fèi)有限等條件限制,未必隨時有機(jī)器人可供使用。
ROS作為機(jī)器人專用的軟件平臺,可在ARM搭配Ubuntu的環(huán)境下運(yùn)行,對服務(wù)機(jī)器人的運(yùn)算和控制進(jìn)行了諸多優(yōu)化,大大增強(qiáng)了其實(shí)用性。
(1)點(diǎn)對點(diǎn)設(shè)計
一個使用ROS的系統(tǒng)包括一系列進(jìn)程,這些進(jìn)程存在于多個不同的主機(jī)并且在運(yùn)行過程中通過端對端的拓?fù)浣Y(jié)構(gòu)進(jìn)行聯(lián)系。雖然基于中心服務(wù)器的那些軟件框架也可以實(shí)現(xiàn)多進(jìn)程和多主機(jī)的優(yōu)勢,但在這些框架中,當(dāng)各電腦通過不同的網(wǎng)絡(luò)進(jìn)行連接時,中心數(shù)據(jù)服務(wù)器就會出現(xiàn)問題。
ROS的點(diǎn)對點(diǎn)設(shè)計以及服務(wù)和節(jié)點(diǎn)管理器等機(jī)制可以分散由計算機(jī)視覺和語音識別等功能帶來的實(shí)時計算壓力,適應(yīng)多機(jī)器人遇到的挑戰(zhàn)。點(diǎn)對點(diǎn)設(shè)計示意如圖4所示。
(2)多語言支持
在寫代碼時,許多編程者會比較偏向某一些編程語言。這些偏好是個人在每種語言的編程時間、調(diào)試效果、語法、執(zhí)行效率以及各種技術(shù)和文化的原因?qū)е碌摹榻鉀Q這些問題,我們將ROS設(shè)計成語言中立性框架結(jié)構(gòu)。ROS現(xiàn)在支持許多種不同的語言,如C++、Python、Octave和LISP,同時還包含其他語言的多種接口實(shí)現(xiàn)。
(3)精簡與集成
大多數(shù)已經(jīng)存在的機(jī)器人軟件工程包含了可以在工程外重復(fù)使用的驅(qū)動和算法,不幸的是,由于多方面的原因,大部分代碼的中間層都過于混亂,以至于很難提取出它的功能,也很難把它們從原型中提取出來應(yīng)用到其他方面。
為了應(yīng)對這種趨勢,我們鼓勵將所有的驅(qū)動和算法逐漸發(fā)展成為和ROS沒有依賴性單獨(dú)的庫。ROS建立的系統(tǒng)具有模塊化的特點(diǎn),各模塊中的代碼可以單獨(dú)編譯,而且編譯使用的CMake工具使它很容易的就實(shí)現(xiàn)精簡的理念。ROS將復(fù)雜的代碼封裝在庫里,只創(chuàng)建一些小的應(yīng)用程序?yàn)镽OS顯示庫的功能,允許對簡單代碼超越原型進(jìn)行移植和重新使用。作為一種新加入的優(yōu)勢,當(dāng)代碼在庫中分散后單元測試也變得非常容易,一個單獨(dú)的測試程序可以測試庫中很多的特點(diǎn)。
(4)工具包豐富
為了管理復(fù)雜的ROS軟件框架,利用大量小工具來編譯和運(yùn)行多種多樣的ROS組建,從而設(shè)計成了內(nèi)核,而非構(gòu)建一個龐大的開發(fā)和運(yùn)行環(huán)境,示意圖如圖5所示。
(5)免費(fèi)并且開源
ROS所有的源代碼都是公開發(fā)布的。我們相信這必將促進(jìn)ROS軟件各層的調(diào)試,不斷改正錯誤。雖然像Microsoft Robotics Studio和Webots這樣的非開源軟件也有很多值得贊美的屬性,但我們認(rèn)為一個開源的平臺是無可替代的,當(dāng)硬件和各層次的軟件同時設(shè)計和調(diào)試時,這一點(diǎn)尤其真實(shí)。
現(xiàn)階段高性能嵌入式處理器在手機(jī)平板電腦上運(yùn)用較多,但這類處理器由于向手機(jī)行業(yè)方向發(fā)展,接口比較傳統(tǒng)和固定,很難滿足機(jī)器人的設(shè)計需求。工業(yè)方向的高性能嵌入式處理器不多,飛思卡爾的imx系列是一個不錯的平臺,接口豐富,可定制化的形態(tài)較多,滿足機(jī)器人多元化接口的需求。同時imx系列對Ubuntu,Android這兩大操作系統(tǒng)的支持良好,可使系統(tǒng)在該平臺上穩(wěn)定運(yùn)行。通過Ubuntu支持ROS軟件平臺,利用ROS軟件平臺的優(yōu)點(diǎn)能很好地解決上述機(jī)器人軟件開發(fā)的一些問題。辰漢電子作為專攻飛思卡爾imx平臺設(shè)計研發(fā)的上市公司,對平臺定制方面有著多年的經(jīng)驗(yàn)和成功案例,在工業(yè)機(jī)器人市場有著穩(wěn)定出貨的產(chǎn)品,公司也在服務(wù)機(jī)器人市場有著充實(shí)的準(zhǔn)備。