雷鋒網按:本文作者科技剪刀手,思嵐科技技術顧問。
隨著這兩年國內機器人的升溫,自主定位導航技術作為機器人智能化的第一步正不斷引起行業內的重視。為了實現這一功能,不少廠家選擇採用機器人作業系統ROS(Robot Operation System),今天我們就聊一聊ROS系統。
| 什麼是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不同版本的依賴也會出現相應的變化。
| 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的基礎框架配合選定的功能包快速實現系統原型,從而讓開發人員將更多時間用於核心算法的開發改進上。用戶也可以單獨選用某些功能包,將其集成在已有產品中,實現特定功能。
| ROS的缺陷與不足
對於機器人廠家來說,採用ROS進行開發,更多的希望藉助系統實現機器人的導航、定位與路徑規劃,這其中就要依靠SLAM算法 (simultaneous localization and mapping, 即時定位與地圖構建)。但作為一個開源項目,ROS也存在一些問題。例如,ROS因為將功能分布在各個節點之中,節點間基於消息機制通信,通訊部分消耗了很多系統資源。尤其是當所有節點位於同一個處理器時,ROS仍然一直執行相應的消息分發,節點間的數據傳遞通過內存複製,大量的系統資源都浪費在通訊上,使得系統必須選用高性能的處理器和存儲系統以彌補損耗。換句話說,利用ROS來實現SLAM,需要配備性能優越的硬體設備,這對於一些小型化嵌入式平臺,尤其是實際的機器人產品裡,其對計算資源、存儲空間的消耗會使成本大幅上升。
除了ROS本身系統設計的局限性外,利用ROS實現SLAM需要深入的調整優化,需要耗費大量人力與時間成本。更為重要的是,針對具體的機器人產品,如掃地機器人,還需要獨特的貼邊清掃、折回清掃、多房間自主導航等功能,目前已有的ROS系統,只能實現簡單的建圖,無法滿足掃地機器人的實際需要。
| ROS之外,還能怎麼做?
在機器人商用應用開發的道路上,很多技術團隊和公司針對機器人特定功能開發著相應商用產品,特別是在移動機器人領域,如思嵐科技的Slamware控制模塊,就將SLAM算法,導航,定位等功能集成在一個體積很小的模塊,並且提供了多平臺的SDK方便用戶使用。針對掃地機器人等具體領域應用,思嵐科技也提供完整的解決方案,整合了其特有的貼邊清掃、往復式打掃、區域劃分、斷點續掃、自動回充等功能,方便掃地機器人廠家進行整合,不需要進行二次開發。
當然,相較於採用開源ROS系統,選擇已有的成熟解決方案,無疑會增加機器人廠家的成本,但考慮到廠家必須投入大量的人力與時間進行算法優化與調整,這也不失為一種更好的選擇。
綜上,ROS為機器人研究開發提供了標準化的框架,其方便的代碼重用,研究人員間的有效交流,可以加快機器人產品的原型設計和算法開發驗證。但真正要做穩定可靠的產品,選擇已有的成熟解決方案,可以大幅降低研發成本,快速獲得產品原型,投入市場。
雷鋒網註:本文原載於微信公眾號思嵐科技。本文由作者發布雷鋒網(公眾號:雷鋒網),轉載請聯繫授權並保留出處和作者,不得刪減內容。
雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。