ROS系統原生內建一個Visualization的工具RViz。
rviz是一款三維視覺化工具,很好的相容了各種基於ROS軟體框架的機器人平台。 在rviz中,可以使用XML對機器人、周圍物體等任何實物進行尺寸、品質、位置、材質、關節等內容的描述,並且在界面中呈現出來。同時,rviz還可以透過圖形化的方式,即時顯示機器人傳感器的資訊、機器人的運動狀態、周圍環境的變化等。
RViz已經被很多人使用,甚至已經被很多的機器人設計公司套用到了他們的產品中。可以說,每一款基於ROS開發的機器人(不管是工業機械臂還是移動機器人)都或多或少地使用這個3D視覺化工具。
然而,使用過的人都知道,RViz是基於C++語言編寫的一套工具,在使用的時候都需要經過編譯、安裝這樣的過程。這對於遠端展示來說,就不是那麽的友好。對於遠端的機器系統來說,也有了更多的軟體棧的要求,為了使用RViz這一個功能,需要把ROS系統的核心部件都需要安裝一遍。
那麽,解決辦法自然是 使用Web技術,來跳過編譯、安裝這樣的過程 。這樣做的好處就是在網路條件滿足的情況下,可以隨意選擇任何一台機器做展示,而不需要事先做環境部署,提高了自由度。
基於web的RViz實作版本,目前主要有WebViz和FoxGlove兩個。
其實呢,這也不能算是兩個,應該算是一個。他們的維護者是出自一家公司:Cruise。
Cruise是一家做自動駕駛的美國初創公司,獲得了美國通用(GM)、軟銀(SoftBank)、微軟(MicroSoft)、本田(Honda)、沃爾瑪(Walmart)等等數家大頭的多輪數十億美元的融資,目前市值也達到了300多億美元,有點牛B哄哄。
Foxglove計畫是webviz計畫的一個延伸,這個計畫的logo產權是歸Cruise的,但是同樣是開源的。在webviz還在維護的狀態下,他們還要建立一個有繼承關系的新計畫,其原因不外乎,他們畢竟是一家需要盈利的公司,他們所做的一些貢獻要跟他們的套用場景直接掛鉤,同時也期望獲得更多的存在感和被認同感。
那麽既然是兩個計畫,自然應該有他們的不同。
那麽就先從他們的相同處講起。(^,^)。
Webviz和Foxglove Studio的相同之處
功能點 | Foxglove & Webviz |
---|---|
技術框架 |
Web-based。基於Web技術。都是可以在web Browser中做機器人Topic的3D展示。
同樣都是使用了新穎的Web渲染技術,如WebGL和WebAssembly。 |
釋出模式 | Open-Source,開源。WebViz和Foxglove Studio都是可以免費使用所有功能的,而且是原始碼開放,任何人都可以使用它,或者向它貢獻程式碼。但是呢,Foxglove Studio還提供了一個收費模式,就是對Cruise開發的一些新模組,提供服務外包的模式, |
與開發環境的整合度 | WebViz和Foxglove Studio都整合了開發環境。對於ROS系統的整合,幫助開發者偵錯他們的機器人系統。 |
Panel外掛程式 | Web和Foxglovestudio都支持一套模組化設計的Panel。這些panel是預定義的,適應於某種特定的機器人場景,對特定的機器人數據進行解析和展示。 |
雖然WebViz和FoxGlove有這麽的相似之處,他們之間還是存在著許多的不同。
Webviz和Foxglove Studio的不同之處
首先,從這兩個計畫的建立初衷是不同的。
Webviz是rviz在自動駕駛場景中的一個擴充套件,它更多的是關註於自動駕駛相關的功能。因此,雖然webviz是開源軟體,但是它還是更多低關註自動駕駛的Use case,它的一些功能擴充套件也試跟自動駕駛強耦合的。強耦合這種事情,是被軟體架構界所極力排斥的。
而Foxglove是Cruise公司自稱更接近於中立的一個開源計畫。Cruise公司聲稱將跟開源社群做更深度的合作,由開源社群來主導其功能集以及開發優先級。似乎是對ROS社群更友好的一種開發模式。
其次,Foxglove Studio已經擁有了實際的落地場景。
將Foxglove落地到實際產品上的,是A.I. Solutions公司。a.i. solutions是美國頗有名氣的軟體供應商,與軍界很多超前計畫有染。
Foxglove的功能集已經被證明,可以涵蓋「農業、航天和海洋探索」(by Cruise自述)。看來Cruise還是自信滿滿的。
第三,Foxglove Studio提供了更多的Panel支持。
下面是Foxglove Studio新增加的panel:
「由於Foxglove具備很好的模組化設計,更多的Panel可以被輕松實作。」
第四,Foxglove Studio支持更多的數據來源,包括對ROS2的支持。
Foxglove除了跟Webviz一樣支持ROS1的rosbridge和rosbag之外,還支持如下的幾個webviz不支持的:
Foxglove跟LiDAR裝置的直接,直接開啟了一些裝置展示的先例,這或許也試讓一些小型系統獲得即時展示的很不錯的嘗試。
第五,Foxglove Studio不但支持跨平台的Web開啟模式,也支持桌面套用開啟模式。
Foxglove Studio的web開啟模式,是其具備了很好的跨平台的能力,使用者在不需要改變既有系統狀態的情況,就可以輕易加入3D展示能力。而桌面套用則可以像ROS或者ROS2原生套用一樣使用3D展示能力,即保證了即時性,有強化了Panel等的擴充套件能力。在桌面app模式下,使用者客製Panel的自由度就大了許多,例如存取原生的檔案系統或者在Panel內部做更多的演算法實作等等。
第六,Foxglove Studio的一個新功能:多人合作模式(Foxglove for Teams)。
這似乎是一個很大的功能點,但是又不知道到底有多大。它描述了一個很好的願景。視覺化工具的主要使用場景,要麽是做功能展示(Demo),要麽是功能偵錯(Debug)。而在功能偵錯的過程中,勢必就需要多人聯調,或者多機聯調。在這兩種情況下,「Foxglove for Teams"這個feature都是極好的。
這樣的例子有很多:
這樣做的好處是,避免了對log或者展示效果的復制貼上的過程,提高了團隊合作的效率。由於減少了無聊的copy-paste過程,每個人都是所見即所得,而且沒有時間差,開發者和測試者的幸福感指數也得到了提高。^,^。
第七,Foxglove Studio的另一個新功能:數據平台(Data Platform)。
wow,貌似又一個很大的feature。
data platform跟視覺化似乎沒有直接的關系,然而又有千絲萬縷的曖昧關系。視覺化針對的物件是數據,而數據多了,就最好有一個統一的平台來管理。而上升到統一的數據管理平台之後,其它的一些大feature就順理成章啦。
目前Foxglove數據平台同時支持ROS1 和ROS2,看起來還比較良心的,只是目前很多feature還處於開發之中,離可以使用它可能還差好久好久。