為什麼我選擇並且推崇用ROS開發機器人?

2021-01-09 電子產品世界

如果我們現在想研發一款機器人,應該選擇哪一個作業系統呢?其實我們大家平常接觸到的作業系統寥寥無幾,Windows,MacOS,Linux,iOS,Andoird。ROS雖然全名是Robot Operating System,但本質上不是作業系統,是Linux發行版Ubuntu下的一個用來開發機器人的Middleware,這個沒有什麼好辯駁的。Android雖然意思是人形機器人,但是我覺得這就只是名字而已,Andy Rubin難道真的是想通過智慧型手機探秘智慧機器人?而且機器人學裡的人形機器人一般寫成Humanoid。為了規避因「作業系統」產生的歧義,本文中我們討論研發一款機器人需要怎樣的「環境配置」?所以很多概念沒有區分是否稱得上作業系統。

本文引用地址:http://www.eepw.com.cn/article/201807/383852.htm

選擇怎樣的環境配置,有幾點是我們先要搞清楚的。首先我們需要知道實時性是不是必須的。簡單的說,如果在系統中是關鍵變量,系統就需要實時,例如雙足機器人動態行走系統就必須實時,但是靜態行走的話其實不實時也可以。如果實時性是必須的,我們可以選擇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開發的機器人。


相關焦點

  • 乾貨:機器人開源作業系統ROS
    所以,ROS就是為了鼓勵協作化的機器人軟體開發。ROS,就是為了讓擅長不同技術領域的開發小組合作起來,彼此借鑑各自的專長,共同應對機器人所需要面對的複雜任務。ROS,為大多數的機器人項目提供了很多價值,也代表了世界一流機器人的合作化的開發趨勢。
  • 機器人課程系列:如何安裝ROS(Robot Operating System,機器人操作...
    維基上ROS的定義如下,ROS(機器人作業系統,RobotOperating System),是專為機器人軟體開發所設計出來的一套電腦作業系統架構。之前的課程裡分享了很多機器人的專案,很多夥伴也都有做各種不同的機器人,例如:雙足機器人、教育型機器人或是Arduino的關節型機器人。這些機器人有些沒有作業系統,且硬體設計都不一樣,如果在新的項目只是想用之前設計的一部分的話,代表要重複製作,才有辦法使用到別人早就做過的東西。
  • 機器人作業系統從ROS升級到ROS2 部署不再是難題
    但事實上,你可以用這些組件構建他們,然後和其它開發者共享,因此這些開發者可以使用它們,而不需要理解他們內部的細節,提高了創新速度,真正讓人們用這些強大的組件構建機器人。」  ROS確實是一個很成功的開源項目、開源生態系統,現在已經建立了龐大的生態系統,在全球估計有十萬名開發者正在使用或熟悉ROS,並且所有擁有機器人經驗的學術界人士都在使用ROS。
  • 除了ROS ,機器人自主定位導航還能怎麼做?
    隨著這兩年國內機器人的升溫,自主定位導航技術作為機器人智能化的第一步正不斷引起行業內的重視。為了實現這一功能,不少廠家選擇採用機器人作業系統ROS(Robot Operation System),今天我們就聊一聊ROS系統。
  • 機器人應用部署——ROS簡介
    「機器人」一詞起源於捷克,本意是指「助理」或者「工人」。近100年來,機器人活躍在各行各業,比如工業裝配、食品準備、家庭援助,另外還有各種陸地、海上和空中自主車輛,而機器人技術也在得到不斷的完善。機器人產生的原因基本上都是為了自動執行環境骯髒、乏味、危險或困難的任務。這些機器人擁有「智慧的大腦」,可以獨立工作,或者只需要最低限度的人為幹預。
  • ROS——機器人世界的Android
    軟體架構:根據你選擇的核心板,寫出高效的成熟的簡潔的代碼,最優化地實現現有庫的調用,以及考慮硬體來進一步修改代碼,加入各種閉環來穩定整個系統的運行。3.  界面接口:實現人與機器很好的交互,雖然還是十分複雜。4.
  • 如何利用ROS MoveIt快速搭建機器人運動規劃平臺?
    主要是因為機器人運動規劃涉及太多基礎內容,如果跳過不講就會變成新坑;一時半會又沒法講完。 所以,這次就從初學者如何利用MoveIt快速搭建機器人運動規劃平臺來講吧,先展示Big Picture,其他細節內容以後有空再慢慢填。但可能會坑的地方我會用(坑)標註出來。
  • 機器人作業系統——ROS
    ROS為Robot Operating System(機器人作業系統)的簡寫,是一個面向機器人的開源元作業系統(open-source,meta-operating system)。它能夠提供類似傳統作業系統的諸多功能,如硬體抽象、底層設備控制、進程間消息傳遞和程序包管理等。
  • 加速實現AI機器人開發,凌華科技聯手英特爾推出ROS 2控制器
    ,能夠滿足各種機器人應用的需求。開發人員可以輕鬆地使用ROScube-I入門套件或者ROScube Pico 開發套件(由Intel Core, Celeron 和 Atom處理器提供支持)快速實現原型算法,並立即將其部署到凌華科技ROS 2機器人快速開發套件NeuronBot中並進行展示。採用這樣的方法,可以快速改善AI模型並獲取視覺數據,優化運營決策。
  • 詳細解讀:什麼是機器人作業系統ROS
    目前,以美國西南研究院為首的幾位大佬開始嘗試將ROS應用在工業機器人中,上面這個視頻就是ROS-I項目一周年的進展情況。  為了說明講清楚ROS,我就從ROS是什麼,為什麼使用ROS,如何使用ROS三個方面展開。
  • 全球首發 EAI ROS教學移動機器人LEO在IROS震撼發布
    軟硬體相輔相成,LEO教學移動機器人智能更先進  LEO教學移動機器人作為EAI越登智能全新推出的一款針對高校用戶用於教學、科研、競賽的智能移動平臺,它是一款革命性的產品,配套豐富的學習資料,有效降低ROS學習門檻;硬體上,LEO教學移動機器人採用模塊化設計理念,可以很方便地構建多種機器人應用方案,譬如移動抓取、模擬自動駕駛等;尺寸大小適中
  • 機器人越來越火,我們來談談它的那些「ROS龜」們
    在2009年初推出了ROS0.4,現在所用系統的框架在這個版本中已初具雛形。經過近一年的測試後,於2010年初推出了ROS1.0版,並在當年三月份推出了正式發行版本:ROS Box Turtle,到現在(2016年5月)已經發行了10個版本,最新版本是ROS Kinetic Kame。比較有趣的是,ROS各版本均以龜作為發行代號,至今已設計出10種造型奇特的「ROS龜」。
  • 迷迭香 Rosmarin
    德語裡迷迭香叫做Rosmarin, 英語裡是很接近的rosemary, 都是來自於拉丁語兩個詞的組合,ros(露珠,dew,Tau)和 marinus(海,sea,Meeres),直譯的話是『海洋之露』,描述了它耐旱,在乾燥環境下頑強的生命力,只需要富集夜裡海邊的露珠就可以茁壯成長。所以,林奈在給這個屬命名的時候,就延用了rosmarinus,迷迭香屬有4個種和兩個雜交種。
  • 用Recast.AI 創建一個聊天機器人
    然後選擇公共機器人選項並點擊創建一個機器人。所以這就是你在 Recast 平臺創建的機器人。開發一個機器人的五個階段用 Recast 官方博客的話說,在機器人的生命中有五個階段。訓練——教授機器人需要理解的內容 構建——使用機器人構建工具創建你的對話流 編寫代碼——將機器人連接到外部 API 或資料庫 連接——將機器人發布到一個或多個消息平臺 監控——訓練機器人讓它更敏銳,並且了解其使用情況 通過意圖訓練機器人你可以在儀錶板上看到搜索、分叉或創建一個意圖intent的選項。「『意圖』是一系列含義相同但構造不同的表達。
  • 從 0 開始,開發一款聊天機器人
    本人:我在開發聊天機器人。友人:像你這麼不會聊天的人,也能開發聊天機器人啊?本人:……不會聊天的人能開發聊天機器人嗎?如果開發者自己就不會聊天,開發出來的機器人是不是也不會聊天呢?ELIZA:聊天機器人的鼻祖我們先來看看世界上第一款聊天機器人吧:1966年,在 MIT 任職的德裔美國計算機科學家 Joseph Weizenbaum,開發出了一款名為 ELIZA 的聊天機器人程序。通過運行名為 DOCTOR 的腳本,此程序可以用類似心理學家的方式和人類交談。
  • 成都80後小夥開發微創手術機器人 讓患者「用得起」
    這是成都博恩思醫學機器人有限公司(以下簡稱「博恩思」)開發的新一代完全自主智慧財產權人工智慧微創外科機器人。目前,這款醫療機器人已完成了動物實驗,最快2019年面世。為了讓醫療手術機器人變得更「聰明」,讓醫生「用得上」、「用得好」,最後還要讓患者「用得起」。博恩思組建了一支世界頂級機器人及生物醫學工程科學家團隊。
  • 看這個天才老爸如何用Jetson NANO做一個帶娃機器人
    於是他就在想——為什麼不構建一個可以與他一起玩這類指向遊戲的機器人呢?為什麼我們需要狀態機?這樣,我們就可以在收到同一事件時做出不同的決定,具體取決於我們當前所處的狀態。例如,如果以前Qrio尚未見過寶寶,則獨自觀看飛機玩具不應觸發播放YouTube視頻的呼叫,因為這可能是玩具飛機正躺在沙發上的情況。在播放飛機視頻後看到飛機玩具應該讓Qrio說:「嘿,我們以前玩過飛機。你為什麼不帶我看 的東西呢?
  • 諸葛亮為什麼推崇名士劉巴?
    諸葛亮為什麼推崇名士劉巴?那麼,像諸葛亮這樣的傳奇人物,在同時期有沒有他特別推崇和敬佩的人呢?有,但僅寥寥幾人而已。而其中最令諸葛亮推崇有加的一位名士,就是蜀中名士劉巴。諸葛亮曾說過:「運籌策於帷幄之中,吾不如子初遠矣。」(見《三國志·蜀書·劉巴傳》,裴松之注)「子初」便是名士劉巴。可見諸葛亮對這位蜀中名士有多麼器重。劉巴,字子初,荊州零陵人。出身官宦世家,其祖父劉曜,曾任蒼梧太守。
  • 《喋血戰士》博士開發的安卓暗殺機器人不慎被黑客root,後果很致命...
    總結來說,整部電影描述的事情可以用一句話總結,那就是:邪惡博士利用士兵屍體成功開發安卓暗殺機器人,用於剷除異己,沒想到被黑客root,終被機器人反殺。就這麼簡單的事情,硬是被導演用各種特效和尬聊給拖了整整1個半小時的時長....
  • 日本的機器人技術怎樣?為什麼日本人:特別喜歡機器人?
    一旦它檢測到有行人,便會選擇另一條路避讓,但即使是輕微地碰一下,它也能夠保持平衡。可以與人類正常交流的機器人EmiewEmiew為白色人形機器人,有紅色的頭髮,重量為14千克,身高大約80裡面。HAL用途廣泛,主要面向高齡護理、殘疾人輔助、消防及警察等危險作業,並且加強運動娛樂用途市場的開發力度。比如使用可以記錄人體活動的機能,把專業高爾夫選手擊球活動記錄到HAL中,那麼穿上這件HAL的人就會同他一樣打高爾夫。