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