當前位置: 華文問答 > 科學

ROS系統基於Web技術的遠端呈現方案

2021-11-01科學

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都支持模組化、可配置的Panel

雖然WebViz和FoxGlove有這麽的相似之處,他們之間還是存在著許多的不同。

Webviz和Foxglove Studio的不同之處

首先,從這兩個專案的建立初衷是不同的。

Webviz是rviz在自動駕駛場景中的一個擴充套件,它更多的是關註於自動駕駛相關的功能。因此,雖然webviz是開源軟件,但是它還是更多低關註自動駕駛的Use case,它的一些功能擴充套件也試跟自動駕駛強耦合的。強耦合這種事情,是被軟件架構界所極力排斥的。

而Foxglove是Cruise公司自稱更接近於中立的一個開源專案。Cruise公司聲稱將跟開源社區做更深度的合作,由開源社區來主導其功能集以及開發優先級。似乎是對ROS社區更友好的一種開發模式。

其次,Foxglove Studio已經擁有了實際的落地場景。

將Foxglove落地到實際產品上的,是A.I. Solutions公司。a.i. solutions是美國頗有名氣的軟件供應商,與軍界很多超前專案有染。

a.i. solutions公司使用Foxglove Studio展示航天產品的數據狀態

Foxglove的功能集已經被證明,可以涵蓋「農業、航天和海洋探索」(by Cruise自述)。看來Cruise還是自信滿滿的。

第三,Foxglove Studio提供了更多的Panel支持。

下面是Foxglove Studio新增加的panel:

  • Map panel – Display sensor_msgs/NavSatFix messages as points on a map.
  • Parameters panel – Read and set rosparams from your connected ROS source.
  • Topic Graph panel – Display a computational graph of ROS nodes and topics in your data source.
  • URDF Viewer panel – Use a Unified Robot Description Format (URDF) file to visualize your robot model.
  • 「由於Foxglove具備很好的模組化設計,更多的Panel可以被輕松實作。」

    第四,Foxglove Studio支持更多的數據來源,包括對ROS2的支持。

    Foxglove除了跟Webviz一樣支持ROS1的rosbridge和rosbag之外,還支持如下的幾個webviz不支持的:

  • ROS 2 connections (Rosbridge and native)
  • ROS 2 bag playback
  • Native ROS 1 connections
  • Velodyne LiDAR connections
  • Foxglove Studio支持的數據來源,其中包括ROS2系統
    Foxglove Studio可以直接連線到 Velodyne LiDAR硬件呈現velodyne scan數據

    Foxglove跟LiDAR器材的直接,直接開啟了一些器材展示的先例,這或許也試讓一些小型系統獲得即時展示的很不錯的嘗試。

    第五,Foxglove Studio不但支持跨平台的Web開啟模式,也支持桌面套用開啟模式。

    Foxglove Studio的web開啟模式,是其具備了很好的跨平台的能力,使用者在不需要改變既有系統狀態的情況,就可以輕易加入3D展示能力。而桌面套用則可以像ROS或者ROS2原生套用一樣使用3D展示能力,即保證了即時性,有強化了Panel等的擴充套件能力。在桌面app模式下,使用者客製Panel的自由度就大了許多,例如存取原生的檔案系統或者在Panel內部做更多的演算法實作等等。

    Foxglove Studio is available as both a web (Chrome) and desktop app (Linux, Windows, macOS).

    第六,Foxglove Studio的一個新功能:多人合作模式(Foxglove for Teams)。

    這似乎是一個很大的功能點,但是又不知道到底有多大。它描述了一個很好的願景。視覺化工具的主要使用場景,要麽是做功能展示(Demo),要麽是功能偵錯(Debug)。而在功能偵錯的過程中,勢必就需要多人聯調,或者多機聯調。在這兩種情況下,「Foxglove for Teams"這個feature都是極好的。

    這樣的例子有很多:

  • 一個人在測試,一個人在調程式碼
  • 多個人一起對特定硬件調配參數,每個人可以分擔一部份的參數最佳化,可以做到多人並列
  • 一個在一台機器上測試,在另一台機器上檢視結果
  • 這樣做的好處是,避免了對log或者展示效果的復制貼上的過程,提高了團隊合作的效率。由於減少了無聊的copy-paste過程,每個人都是所見即所得,而且沒有時間差,開發者和測試者的幸福感指數也得到了提高。^,^。

    第七,Foxglove Studio的另一個新功能:數據平台(Data Platform)。

    wow,貌似又一個很大的feature。

    data platform跟視覺化似乎沒有直接的關系,然而又有千絲萬縷的曖昧關系。視覺化針對的物件是數據,而數據多了,就最好有一個統一的平台來管理。而上升到統一的數據管理平台之後,其它的一些大feature就順理成章啦。

    Foxglove 數據平台提供了一個集中化的資料倉儲,可以對機器人數據做upload、explore、stream等等操作

    目前Foxglove數據平台同時支持ROS1 和ROS2,看起來還比較良心的,只是目前很多feature還處於開發之中,離可以使用它可能還差好久好久。