劉偉



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