当前位置: 华文问答 > 科学

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还处于开发之中,离可以使用它可能还差好久好久。