XVIZ是AVS的数据层。
XVIZ提供对于一下内容的描述:
XVIZ协议涵盖了重要概念及数据类型。
XVIZ Js库是一套用于验证,构建和解析XVIZ数据的模块集。这些库文件另XVIZ任务更容易,与此同时,为任何其他语言实现的验证提供支持。
XVIZ的设计在于关注分布式系统和团队。这意味着,将数据大小,处理及网络设施间数据传输的优化,皆考虑在内。
XVIZ是XVIZ数据如何被投放到应用的一个简单演示。
参照Quick Start,将XVIZ数据发送至应用。
V1.0.0-beta - Jan 2019
// TODO
这里介绍了,描述XVIZ协议所依赖的一系列概念。
我们希望去可视化的一个数据对象(尤其来自一个机器人系统)。
一条数据流是一序列的带有时间戳的同类型数据。不同类型数据被归为不同数据流中。
如下数据流类型是由协议预定义,同时XVIZ客户端库提供了解析并显示他们的支持:
一个XVIZ数据流的源。它可以是载自URL或一个文件的一个与生成日志,但是同样可能是源自比如一个socket的实时数据。
每一个源包含一个或多个数据流,同时还有一个描述数据流的元文件。
一类特别的XVIZ消息,包含关于数据源及其数据流的可描述信息。
一个XVIZ原始数据是一类几何对象,比如一个点,一条线,一个多边形等可被可视化的对象。它可被标注并制定特殊样式(颜色等)。
XVIZ支持一个样式表的格式,允许对象属性依数据流和类被具体化。
对象可以通过附加识别符到原始数据,变量和时间序列来被定义。识别符促使跨数据流和时间片的信息链接。
存在于同一时间的值的序列。比如一辆车在规划好的线路上驶过的速度。每次当你获取了一个变量数据流的更新,全部值的列表随之改变。
可被囊入数据流的时间戳值。每次当数据流更新,你会得到一个新的时间戳和值对。
是一个可映射UI元素的结构化data schema,例如plots,controls,tables,和video panels,连同数据流名和数据绑定。此数据和原数据一起被发送进而保持与数据源的密切关联。
XVIZ可以和提供了适合编码的外部视频资源同步。
XVIZ协议规范没有规定任何编码方式,然而XVIZ库支持在JSON下的编码和解析。
数据流的命名需要遵守一些简单的规则。
Must - 使用路径分隔符
/system/object/bounds
/system/object/velocity
Good - 一个数据流对应一组对象
所有的对象装配到同一个数据流,使用id
字段告知分隔。
/objects
Bad- 一个对象对应一个数据流
这忽略了‘id’对于XVIZ中元素的支持并且未提供跨数据流的对象关联。
/object/123
可选行或可悲分开显示的数据应该被放入自身数据流中。
Good - 每片数据的独立拆分
/raw_points
/object/bounds
/object/velocity
/object/points
Bad - 单独数据流对应整个复杂的系统
/object
XVIZ和ROS有何关联,这问题经常被提起。ROS是最流行的开源机器人开发平台,它有其基于可视化栈的RViz。然而XVIZ是一种协议,并最终成为一个用于可视化机器人系统的生态系统。
XVIZ的目标较ROS而言更明确。它被设计用来创造一个标准化协议,使得创建更富创新性的客户端,卸去服务器的高额数据转换负载,并最小化到客户端的数据传输。像HTML和MP4服务视频与多媒体一样,服务机器人。
在我们的线路图中,通过更新范例XVIZ服务器来桥接这些环境世界;进而支持ROS包日志格式和常规ROS数据类型的实时转换,是我们的计划之一。
ROS和RViz及XVIZ之间存在合宜数量的重叠,介于空间的特性和XVIZ启发自RViz。他们皆:
XVIZ
XVIZ的优势在于它完全关注于来自数据格式和服务器实现的客户端解耦。与此同时,它具有:
ROS
ROS的优势来自其长期开发和使用,同时还有操纵机器人的基础:
接下来便是每个平台的唯独缺点,并不只是以上优点的对立面。
XVIZ
XVIZ的短板源自其年限短以及开正在被修复的开源代码的缺点。
ROS
除了因近些年来的在开发支持方面,平台和架构选择方面的削弱,ROS是一个相当完善的系统。
Platform Comparision
XVIZ | ROS | |
Web App Support | First Class | Community |
Native App Support | None (Uber Internal) | First Class |
C++ Support | None (Uber Internal) | First Class |
Python Support | None | First Class |
JavaScript Support | First Class | Community |
Serialization Format | JSON or Custom | Custom or DDS |
Protobuf | Alpha | None |
Feature Comparision
XVIZ | ROS | Comments | |
Styling | Comprehensive | None | Reduces data size, make easier to understand, and more pleasing visualizations |
Metadata | Comprehensive | Partial (ROS bag type info) | Introspect on data before you read it |
Live streaming | Yes | Yes | View data from a currently running system |
Remote log protocol | Yes | None | Look with bringing any of a log to the client |
Codeless UI | Yes | None | Store UI with data, reduce dev time through less coupling |
Point clouds | Yes | Yes | |
Time series | Yes | Yes | |
2D Image display | Yes | Yes | Show an image in the UI |
2D Geometry primitives | Yes | Most | Polygons, Polylines, cricles, stadium |
3D Image Display | Planned | Community | Display an image in the 3D world |
3D Geometry primitives | None | Yes | Sphere, Cube, Cylinder, Arrow |
// TODO