origin: http://www.leiphone.com/news/201701/zBHXGJcsRTioj4gH.html
雷鋒網(公衆号:雷鋒網)按:本文來自知乎,作者賈子楓,雷鋒網已獲授權。
如果我們現在想研發一款機器人,應該選擇哪一個作業系統呢?其實我們大家平常接觸到的作業系統寥寥無幾,Windows,MacOS,Linux,iOS,Andoird。ROS雖然全名是Robot Operating System,但本質上不是作業系統,是Linux發行版Ubuntu下的一個用來開發機器人的Middleware,這個沒有什麼好辯駁的。Android雖然意思是人形機器人,但是我覺得這就隻是名字而已,Andy Rubin難道真的是想通過智能手機探秘智能機器人?而且機器人學裡的人形機器人一般寫成Humanoid。為了規避因“作業系統”産生的歧義,本文中我們讨論研發一款機器人需要怎樣的“環境配置”?是以很多概念沒有區分是否稱得上作業系統。
選擇怎樣的環境配置,有幾點是我們先要搞清楚的。首先我們需要知道實時性是不是必須的。簡單的說,如果在系統中是關鍵變量,系統就需要實時,例如雙足機器人動态行走系統就必須實時,但是靜态行走的話其實不實時也可以。如果實時性是必須的,我們可以選擇Windows + VxWorks,這是在傳統運動控制領域非常常見的一個組合。也可以選擇QNX作業系統,或者LabView,不過這兩個實時的我并沒有很多經驗。我最早接觸的實時作業系統是Windows + Ardence RTX,後來應該改名為IntervalZero。還有就是是否系統需要整體上實時?我們在做雙足機器人的時候,運動控制就用到了RTX,但是圖像處理并沒有。後來我們将運動控制的部分移到了一個ARM7的下位機,上位機的Windows隻需要發送action的指令。是以,即便是需要實時,架構也是很靈活的。上位機是沒有實時性的強需求的。
當我們希望稍微提高一下機器人複雜度的時候,就會發現另一個需要考慮的問題,程序間通信。在我們用Windows + RTX的時候,程序間通信使用RTX提供的shared memory,不過都是比較慢的圖像處理程序向shared memory中寫資料,決策和運動控制程序讀資料。shared memory顯然并不是很好的通信方式,這裡不再多加讨論。ROS則使用了一個很好的通信架構,并且是ROS整個架構的一個基礎(不論是對于ROS中的topic,service,plugin,actionlib等基礎概念還是rviz,navigation package等功能包。想了解這些概念最近多關注下@Top Liu),是以很多人簡單的了解ROS隻不過是做了一個通信的架構而已。我必須說明下,程序間通信并不是ROS能夠占領機器人開發環境的主要原因。在2010年,我們開發一款類似Atlas的大型人形軍用機器人的時候,就用到了程序間通信工具IPC。IPC就是Inter Process Communication,開發者是CMU的Reid Simmons,應該是出現在2000年左右。後來我在幫助大學生參加RoboCup Standard Platform League的時候用過Nao的作業系統NAOqi,這個系統大概是出現在2006年。在NAOqi中,整個通信的架構和ROS非常像了,ROS中的Node在NAOqi中叫一個broker,都是占用一個系統的端口。是以,2010年ROS正式釋出Box turtle的時候,通信架構并不是颠覆性的。Android的程序間通信的機制據我了解也是非常強悍的。根據@邵天蘭 之前的一次講座,我也了解到ROS的通信機制放到現在看其實已經有點過時了。是以僅僅從通信機制上評價ROS,意義不大。再有,ROS中的通信機制并不是說不能繞過,其程式本質上還是C++和Python。
我認為ROS最大的貢獻就是制定了機器人開發的統一接口标準。因為Willow Garage當年是做移動服務機器人,是以這些标準是首先在移動機器人界統一的。是以ROS的意義,我概括的時候就是六個字,“書同文,車同軌”,極大加速了交流與進步。也是因為這樣,機器人學界才慢慢能夠形成一些BenchMarking,能夠在開源社群形成百花齊放的态勢,能夠讓大家不再深陷于又要搭建硬體又要搭建軟體的重複造輪子的困境。其實最主要就是ROS的message,看起來不過是一些頭檔案,但是可以讓我們輕松的替換各種傳感器和執行機構,替換軟體中的各個算法,現在搭建機器人在我們眼中,就像玩樂高積木,組裝一台電腦。
當然,作為一個開發工具,隻做到這裡是不夠的。我看過LabView的開發工具,支援硬體很多,應該标準也很好。Microsoft Robotics Developer Studio是個不錯的開發工具,可惜挂掉了,也算是流行了一段時間。針對機器人開發,ROS則提供了很好的可視化、模拟仿真和Debug的工具,專業上講是非常developer friendly,這也是很多人說為什麼ROS适合學習和做研發的原因。不過我覺得這不能支援ROS不适合做産品開發的觀點,因為産品成型後,這些調試工具平時都是可以去掉的。關于可視化工具Rviz,模拟仿真的Gazebo,Debug的log等級以及線上調參的rosparam和rqt等等,ROS星火計劃都有詳細的講解。
最後,就要說說基因,社群,支援和人才的問題。ROS的基因是移動式服務機器人,LabView的基因是NI,Android的基因是Google和智能手機。ROS社群還算是活躍,雖然機器人的高端玩家比較多,但是整體開發者數量估計也就在十萬的量級(ROS answer注冊使用者也就三萬吧),總量不能和如日中天的Android相比,也是現在背後支援OSRF和google的差距。我也在不同場合聊過很多次,矽谷的機器人創業公司基于ROS開發的比較多(相對國内而言,具體比例不清楚,從RosCon的支援廠商就能看到一些端倪),但是國内用Android的公司明顯在數量上占據上風 。
是以最後要支援本文論點了。不讨論工業機器人(以及類工業機器人的醫療機器人等,以控制為核心),我們把剩下的機器人品類再劃分的細緻一些。首先,教育機器人(這裡指學習機器人的套件等,不是說用來學習英文或者唐詩的對話機器人,這個歸屬到情感陪護類),主要面向k-12的學生,也就是我國高等教育之前的學生,大多就是scratch+單片機,不需要什麼系統。不過我覺得這種情況會在未來不久發生改變,主要是教育機器人業内已經有人發現機器人教育和機器人開發的脫節是個問題,那麼也就是個商機,但是要等到産業足夠大。玩具類機器人不需要開發環境,是以就是玩各種單片機。這些都不是支撐機器人能成為一項颠覆性技術的方向。是以以下主要分析用Android和ROS開發的機器人。
情感陪護類機器人,從學術上講是social robotics,也是研究了很久的一個方向,不過作為這兩年機器人産業的一個爆點,也就是@機器人孔博士 提到的消費級服務機器人,我在2014年以前是從來沒想到過的。因為整體上來說,機器人的智能還不足以支撐情感陪護這個概念。但是,借助智能手機的發展,尤其是現在內建了大量傳感器的智能手機,使Android對硬體比如攝像頭、IMU、麥克、通訊元件等等支援很好;其次,一直在緻力于改變人機互動方式的巨頭們做出了很多驚人的貢獻,語音對話取得突破性進展(沒有語音的話,觸屏互動或者觸摸互動也還能将就下。在互動這一點上,基于Linux的ROS很吃虧);再有,因為Android系統的一些附屬産品的發展,Android平闆、智能家居産品、故事機等,使得兒童陪護機器人整個産業鍊從硬體到内容都非常完善,一切的一切造就了兒童情感陪護類的機器人爆發。其實從需求和市場上來講,老年陪護類的機器人應該是未來更大的蛋糕。無論如何,這兩年做情感陪護機器人,Android應該是Donimating(要用dota配音去念!)了。
但是,若要進入機器人行業,趁着機器人行業的爆發飛起來,把機器人作為一生的事業,用Android怕是不夠的。
首先,由于Android的基因,我們發現情感陪護機器人的大多功能都是手機和平闆能夠實作的,雖然內建了更多的傳感器,比手機這種被動裝置在主動性上進步了一些,但是對于實作複雜的功能上和ROS相比後勁不足,也導緻産品同質化比較明顯。第二,情感陪護類機器人這兩年增長确實很快,算在機器人行業裡是非常大的體量,但是如果算在Android的陣營呢?機器人行業整體很小,中國服務機器人市場2016年銷售額大概100多億人民币,占大頭兒的還是掃地機器人,而華為2016年消費者業務銷售額1780億人民币,我了解主要就是Android手機業務。是以,作為Anroid的衍生品,情感陪護類機器人在這個存量市場的份額并不大,是否能颠覆這個市場?未知數。 最後,面向行業的服務機器人, 前幾日我分享的算法并不決定一切!迅雷創始人程浩談國内機器人創業,其中有觀點談到短期内創業To B的機器人更容易實作,暗含的意思To B的機器人在短期内會迎來爆發(投資人認為适合創業,一定是要爆發的)。那讓我們看看國内外做To B的服務機器人的公司,做酒店運送的Savioke和雲迹科技,做Mobile Manipulation的Fetch Robotics和藍胖子,做機械臂的Baxter,應該還有一些做物流機器人的公司。這些公司的共同點就是産品直接應用在第二和第三産業,目标都是直接推動生産力,如果真正降低成本,是毋庸置疑的剛性需求。這些機器人技術難度比較高,沿襲了機器人學的發展,用ROS開發有很大的優勢。
對機器人産業來說,需要有足夠的開發人員,需要有一小撮精英的研究人員做出技術突破。對于機器人開發人員來說,不僅僅要選擇一個開發的系統和環境,還需要通過整個體系了解機器人運作的原理,即使未來最主流的機器人作業系統不是ROS,一定會有ROS深深的烙印。
編者按:1月12日晚上8點,雷鋒網硬創公開課邀請到文中提到的Top Liu和大家分享一點自己學習和使用的經驗和心得。本次雷鋒網硬創公開課将會有「 鬥魚直播+微信群問答」兩個環節,嘉賓直播授課分享結束後,将會在微信群與群友問答互動。