1. 程式人生 > >有了開源ROS,機器人就能自由行走?

有了開源ROS,機器人就能自由行走?

          隨著這兩年國內機器人的升溫,自主定位導航技術作為機器人智慧化的第一步正不斷引起行業內的重視。為了實現這一功能,不少廠家選擇採用機器人作業系統ROS(Robot Operation System),今天我們就聊一聊ROS系統。

  1. 什麼是ROS?

  ROS系統起源於2007年,斯坦福大學人工智慧實驗室與機器人技術公司Willow Garage針對其個人機器人專案(Personal Robots Program)開發了ROS的雛形。2008年後,由Willow Garage公司推動了ROS的進一步發展。2012年後,ROS團隊從Willow Garage公司獨立出來,成為非盈利組織the Open Source Robotics Foundation (OSRF),負責維護和更新ROS,併為機器人社群提供相應的支援和開源工具。

Willow Garage PR2 機器人平臺

  ROS大致每年釋出一個版本,目前正在維護的ROS版本包括indigo,jade,kinetic,一些早期版本現在已經停止維護。ROS依賴於Linux核心,因此每當Ubuntu版本發生變化,ROS不同版本的依賴也會出現相應的變化。

  2. ROS的特性與優勢

  ROS被稱為機器人作業系統,其實ROS充當的是通訊中介軟體的角色,即在已有作業系統的基礎上搭建了一整套針對機器人系統的實現框架。ROS還提供一組實用工具和軟體庫,用於維護、構建、編寫和執行可用於多個計算平臺的軟體程式碼。

  值得一提的是,ROS的設計者考慮到各開發者使用的開發語言不同,因此ROS的開發語言獨立,支援C++, python等多種開發語言。因此,除了官方提供的功能包之外,ROS還聚合了全世界開發者實現的大量開源功能包,如思嵐科技(SLAMTEC)就釋出了針對其自主研發的鐳射雷達RPLIDAR的ROS功能包rplidar_ros。這些開源功能包與ROS一起構成了強大的開源生態環境。

  ROS的系統結構設計也頗有特色,ROS執行時是由多個鬆耦合的程序組成,每個程序ROS稱之為節點(Node),所有節點可以執行在一個處理器上,也可以分散式執行在多個處理器上。在實際使用時,這種鬆耦合的結構設計可以讓開發者根據機器人所需功能靈活新增各個功能模組。

  例如,在一個支援SLAM功能的移動機器人中,鐳射資料採集和里程資料獲取分別由兩個node實現,用於感知環境;SLAM演算法執行在另一個node中,用於處理感測器資料,繪製地圖;SLAM節點和資料採集節點之間採用topics方式通訊。當新增一個攝像頭模組時,僅需在現有結構裡增加一個新的視訊節點,讓其與SLAM節點採用topics方式通訊即可,另外兩個功能節點不需任何改動。

ROS構建的室內地圖

  與其他開源產品(Linux,GCC等)一樣,ROS具有優良的開源基因,鬆耦合設計方法,可擴充套件的軟體結構,功能複用思想,極大降低了機器人領域的進入門檻,讓開發者無需像前人一樣走過眾多彎路,掌握多種知識後才能開始實現其機器人設計的夢想。開發者可以用ROS的基礎框架配合選定的功能包快速實現系統原型,從而讓開發人員將更多時間用於核心演算法的開發改進上。使用者也可以單獨選用某些功能包,將其整合在已有產品中,實現特定功能。

  3. ROS的缺陷與不足

  對於機器人廠家來說,採用ROS進行開發,更多的希望藉助系統實現機器人的導航、定位與路徑規劃,這其中就要依靠SLAM演算法 (simultaneous localization and mapping, 即時定位與地圖構建)。

  但作為一個開源專案,ROS也存在一些問題。例如,ROS因為將功能分佈在各個節點之中,節點間基於訊息機制通訊,通訊部分消耗了很多系統資源。尤其是當所有節點位於同一個處理器時,ROS仍然一直執行相應的訊息分發,節點間的資料傳遞通過記憶體複製,大量的系統資源都浪費在通訊上,使得系統必須選用高效能的處理器和儲存系統以彌補損耗。換句話說,利用ROS來實現SLAM,需要配備效能優越的硬體裝置,這對於一些小型化嵌入式平臺,尤其是實際的機器人產品裡,其對計算資源、儲存空間的消耗會使成本大幅上升。

  除了ROS本身系統設計的侷限性外,利用ROS實現SLAM需要深入的調整優化,需要耗費大量人力與時間成本。更為重要的是,針對具體的機器人產品,如掃地機器人,還需要獨特的貼邊清掃、折回清掃、多房間自主導航等功能,目前已有的ROS系統,只能實現簡單的建圖,無法滿足掃地機器人的實際需要。

  4. ROS之外,還能怎麼做?

  在機器人商用應用開發的道路上,很多技術團隊和公司針對機器人特定功能開發著相應商用產品,特別是在移動機器人領域,如思嵐科技的Slamware控制模組,就將SLAM演算法,導航,定位等功能整合在一個體積很小的模組,並且提供了多平臺的SDK方便使用者使用。針對掃地機器人等具體領域應用,思嵐科技也提供完整的解決方案,整合了其特有的貼邊清掃、往復式打掃、區域劃分、斷點續掃、自動回充等功能,方便掃地機器人廠家進行整合,不需要進行二次開發。

  當然,相較於採用開源ROS系統,選擇已有的成熟解決方案,無疑會增加機器人廠家的成本,但考慮到廠家必須投入大量的人力與時間進行演算法優化與調整,這也不失為一種更好的選擇。

  5. 總結

  綜上,ROS為機器人研究開發提供了標準化的框架,其方便的程式碼重用,研究人員間的有效交流,可以加快機器人產品的原型設計和演算法開發驗證。但真正要做穩定可靠的產品,選擇已有的成熟解決方案,可以大幅降低研發成本,快速獲得產品原型,投入市場。