隨著這兩年國內(nèi)機器人的升溫,自主定位導航技術(shù)作為機器人智能化的第一步正不斷引起行業(yè)內(nèi)的重視。為了實現(xiàn)這一功能,不少廠家選擇采用機器人操作系統(tǒng)ROS(Robot Operation System),今天我們就聊一聊ROS系統(tǒng)。
1.什么是ROS?
ROS系統(tǒng)起源于2007年,斯坦福大學人工智能實驗室與機器人技術(shù)公司W(wǎng)illow Garage針對其個人機器人項目(Personal Robots Program)開發(fā)了ROS的雛形。2008年后,由Willow Garage公司推動了ROS的進一步發(fā)展。2012年后,ROS團隊從WillowGarage公司獨立出來,成為非盈利組織the Open Source Robotics Foundation(OSRF),負責維護和更新ROS,并為機器人社區(qū)提供相應的支持和開源工具。 Willow GaragePR2機器人平臺
ROS大致每年發(fā)布一個版本,目前正在維護的ROS版本包括indigo,jade,kinetic,一些早期版本現(xiàn)在已經(jīng)停止維護。ROS依賴于Linux內(nèi)核,因此每當Ubuntu版本發(fā)生變化,ROS不同版本的依賴也會出現(xiàn)相應的變化。
2.ROS的特性與優(yōu)勢
ROS被稱為機器人操作系統(tǒng),其實ROS充當?shù)氖峭ㄐ胖虚g件的角色,即在已有操作系統(tǒng)的基礎(chǔ)上搭建了一整套針對機器人系統(tǒng)的實現(xiàn)框架。ROS還提供一組實用工具和軟件庫,用于維護、構(gòu)建、編寫和執(zhí)行可用于多個計算平臺的軟件代碼。
值得一提的是,ROS的設(shè)計者考慮到各開發(fā)者使用的開發(fā)語言不同,因此ROS的開發(fā)語言獨立,支持C++,python等多種開發(fā)語言。因此,除了官方提供的功能包之外,ROS還聚合了全世界開發(fā)者實現(xiàn)的大量開源功能包,如思嵐科技(SLAMTEC)就發(fā)布了針對其自主研發(fā)的激光雷達RPLIDAR的ROS功能包rplidar_ros。這些開源功能包與ROS一起構(gòu)成了強大的開源生態(tài)環(huán)境。ROS的系統(tǒng)結(jié)構(gòu)設(shè)計也頗有特色,ROS運行時是由多個松耦合的進程組成,每個進程ROS稱之為節(jié)點(Node),所有節(jié)點可以運行在一個處理器上,也可以分布式運行在多個處理器上。在實際使用時,這種松耦合的結(jié)構(gòu)設(shè)計可以讓開發(fā)者根據(jù)機器人所需功能靈活添加各個功能模塊。
例如,在一個支持SLAM功能的移動機器人中,激光數(shù)據(jù)采集和里程數(shù)據(jù)獲取分別由兩個node實現(xiàn),用于感知環(huán)境;SLAM算法運行在另一個node中,用于處理傳感器數(shù)據(jù),繪制地圖;SLAM節(jié)點和數(shù)據(jù)采集節(jié)點之間采用topics方式通信。當新增一個攝像頭模塊時,僅需在現(xiàn)有結(jié)構(gòu)里增加一個新的視頻節(jié)點,讓其與SLAM節(jié)點采用topics方式通信即可,另外兩個功能節(jié)點不需任何改動。
ROS構(gòu)建的室內(nèi)地圖
與其他開源產(chǎn)品(Linux,GCC等)一樣,ROS具有優(yōu)良的開源基因,松耦合設(shè)計方法,可擴展的軟件結(jié)構(gòu),功能復用思想,極大降低了機器人領(lǐng)域的進入門檻,讓開發(fā)者無需像前人一樣走過眾多彎路,掌握多種知識后才能開始實現(xiàn)其機器人設(shè)計的夢想。開發(fā)者可以用ROS的基礎(chǔ)框架配合選定的功能包快速實現(xiàn)系統(tǒng)原型,從而讓開發(fā)人員將更多時間用于核心算法的開發(fā)改進上。用戶也可以單獨選用某些功能包,將其集成在已有產(chǎn)品中,實現(xiàn)特定功能。
3.ROS的缺陷與不足
對于機器人廠家來說,采用ROS進行開發(fā),更多的希望借助系統(tǒng)實現(xiàn)機器人的導航、定位與路徑規(guī)劃,這其中就要依靠SLAM算法(simultaneous localization and mapping,即時定位與地圖構(gòu)建)。
但作為一個開源項目,ROS也存在一些問題。例如,ROS因為將功能分布在各個節(jié)點之中,節(jié)點間基于消息機制通信,通訊部分消耗了很多系統(tǒng)資源。尤其是當所有節(jié)點位于同一個處理器時,ROS仍然一直執(zhí)行相應的消息分發(fā),節(jié)點間的數(shù)據(jù)傳遞通過內(nèi)存復制,大量的系統(tǒng)資源都浪費在通訊上,使得系統(tǒng)必須選用高性能的處理器和存儲系統(tǒng)以彌補損耗。換句話說,利用ROS來實現(xiàn)SLAM,需要配備性能優(yōu)越的硬件設(shè)備,這對于一些小型化嵌入式平臺,尤其是實際的機器人產(chǎn)品里,其對計算資源、存儲空間的消耗會使成本大幅上升。
除了ROS本身系統(tǒng)設(shè)計的局限性外,利用ROS實現(xiàn)SLAM需要深入的調(diào)整優(yōu)化,需要耗費大量人力與時間成本。更為重要的是,針對具體的機器人產(chǎn)品,如掃地機器人,還需要獨特的貼邊清掃、折回清掃、多房間自主導航等功能,目前已有的ROS系統(tǒng),只能實現(xiàn)簡單的建圖,無法滿足掃地機器人的實際需要。
4.ROS之外,還能怎么做?
在機器人商用應用開發(fā)的道路上,很多技術(shù)團隊和公司針對機器人特定功能開發(fā)著相應商用產(chǎn)品,特別是在移動機器人領(lǐng)域,如思嵐科技的Slam ware控制模塊,就將SLAM算法,導航,定位等功能集成在一個體積很小的模塊,并且提供了多平臺的SDK方便用戶使用。針對掃地機器人等具體領(lǐng)域應用,思嵐科技也提供完整的解決方案,整合了其特有的貼邊清掃、往復式打掃、區(qū)域劃分、斷點續(xù)掃、自動回充等功能,方便掃地機器人廠家進行整合,不需要進行二次開發(fā)。
5.總結(jié)
綜上,ROS為機器人研究開發(fā)提供了標準化的框架,其方便的代碼重用,研究人員間的有效交流,可以加快機器人產(chǎn)品的原型設(shè)計和算法開發(fā)驗證。但真正要做穩(wěn)定可靠的產(chǎn)品,選擇已有的成熟解決方案,可以大幅降低研發(fā)成本,快速獲得產(chǎn)品原型,投入市場。