Uber AVS 自动驾驶可视化工具(二)XVIZ之Overview

Overview


Introduction

XVIZ是AVS的数据层。

Main Features

XVIZ提供对于一下内容的描述:

  • 视觉元素
    • 几何
    • 点云
    • 图像
    • 文本
    • 向量
  • 样式表
  • 可声明的带有数据绑定的UI
  • 在@xviz/schema包中提供了一个机器可读的JSON schema
XVIZ Protocol Specification

XVIZ协议涵盖了重要概念及数据类型。

XVIZ Javascript Libraries

XVIZ Js库是一套用于验证,构建和解析XVIZ数据的模块集。这些库文件另XVIZ任务更容易,与此同时,为任何其他语言实现的验证提供支持。

XVIZ Server

XVIZ的设计在于关注分布式系统和团队。这意味着,将数据大小,处理及网络设施间数据传输的优化,皆考虑在内。

XVIZ是XVIZ数据如何被投放到应用的一个简单演示。
参照Quick Start,将XVIZ数据发送至应用。


What’s New

V1.0.0-beta - Jan 2019


Versioning

// TODO


Concepts

这里介绍了,描述XVIZ协议所依赖的一系列概念。

Datum

我们希望去可视化的一个数据对象(尤其来自一个机器人系统)。

Stream

一条数据流是一序列的带有时间戳的同类型数据。不同类型数据被归为不同数据流中。

  • Stream Name - 每条数据流必须被指定唯一的名字。由具体应用来指定这些名字,而XVIZ要求命名为类路径结构,被符号‘/’分隔,比如‘/vehicle/velocity’。
  • Stream Type - 一条数据流的类型由其包含的数据的类型来定义。

如下数据流类型是由协议预定义,同时XVIZ客户端库提供了解析并显示他们的支持:

  • Pose Stream - 一组位置数据,描述一个参与者的位置和朝向及其定义的任何相对坐标系。
  • Geometry Types - 原始几何数据
  • Variables - 数据数组
  • Time series - 一个较大序列的独立样本
  • Tree Table - 分级数据结构, 用于表达密度类型记录数据
  • Image Stream - 二进制格式图像数据
Source

一个XVIZ数据流的源。它可以是载自URL或一个文件的一个与生成日志,但是同样可能是源自比如一个socket的实时数据。
每一个源包含一个或多个数据流,同时还有一个描述数据流的元文件。

Metadata

一类特别的XVIZ消息,包含关于数据源及其数据流的可描述信息。

Primitive

一个XVIZ原始数据是一类几何对象,比如一个点,一条线,一个多边形等可被可视化的对象。它可被标注并制定特殊样式(颜色等)。

Style

XVIZ支持一个样式表的格式,允许对象属性依数据流和类被具体化。

Object

对象可以通过附加识别符到原始数据,变量和时间序列来被定义。识别符促使跨数据流和时间片的信息链接。

Variable

存在于同一时间的值的序列。比如一辆车在规划好的线路上驶过的速度。每次当你获取了一个变量数据流的更新,全部值的列表随之改变。

Time Series

可被囊入数据流的时间戳值。每次当数据流更新,你会得到一个新的时间戳和值对。

Declarative UI

是一个可映射UI元素的结构化data schema,例如plots,controls,tables,和video panels,连同数据流名和数据绑定。此数据和原数据一起被发送进而保持与数据源的密切关联。

Video

XVIZ可以和提供了适合编码的外部视频资源同步。

Encoding

XVIZ协议规范没有规定任何编码方式,然而XVIZ库支持在JSON下的编码和解析。


Conventions

Stream Naming

数据流的命名需要遵守一些简单的规则。

Use file system-like hierarchical names

Must - 使用路径分隔符

 /system/object/bounds
 /system/object/velocity
Stream names should not contain ids.

Good - 一个数据流对应一组对象
所有的对象装配到同一个数据流,使用id字段告知分隔。

 /objects

Bad- 一个对象对应一个数据流
这忽略了‘id’对于XVIZ中元素的支持并且未提供跨数据流的对象关联。

/object/123
Stream Structure

可选行或可悲分开显示的数据应该被放入自身数据流中。

Good - 每片数据的独立拆分

/raw_points
/object/bounds
/object/velocity
/object/points

Bad - 单独数据流对应整个复杂的系统

/object

ROS Comparison

XVIZ和ROS有何关联,这问题经常被提起。ROS是最流行的开源机器人开发平台,它有其基于可视化栈的RViz。然而XVIZ是一种协议,并最终成为一个用于可视化机器人系统的生态系统。

XVIZ的目标较ROS而言更明确。它被设计用来创造一个标准化协议,使得创建更富创新性的客户端,卸去服务器的高额数据转换负载,并最小化到客户端的数据传输。像HTML和MP4服务视频与多媒体一样,服务机器人。

在我们的线路图中,通过更新范例XVIZ服务器来桥接这些环境世界;进而支持ROS包日志格式和常规ROS数据类型的实时转换,是我们的计划之一。

Simularties

ROS和RViz及XVIZ之间存在合宜数量的重叠,介于空间的特性和XVIZ启发自RViz。他们皆:

  • 将世界拆分为原始数据的数据流
  • 支持几何特性,图像和时间序列数据流
  • 可以在实时系统下观测数据
  • 可以将原始数据绑定到对象
  • 具有二进制和文本协议
Advantages

XVIZ
XVIZ的优势在于它完全关注于来自数据格式和服务器实现的客户端解耦。与此同时,它具有:

  • 只可配置的UI系统 - Declarative UI
  • 综合性的样式系统
  • 可简易数据自省的原数据系统
  • 远程日志预览协议,无需拷贝日志
  • 聚焦Web,例如标准的JSON
  • 支持Protobuf(在 alpha)

ROS
ROS的优势来自其长期开发和使用,同时还有操纵机器人的基础:

  • ROS 1.0 具有10年的稳定开发
  • 更多的数据源 - 方块,球和尖头
  • 带有插件的RViz本地客户端
  • 支持动力学转换
Disadvantages

接下来便是每个平台的唯独缺点,并不只是以上优点的对立面。

XVIZ
XVIZ的短板源自其年限短以及开正在被修复的开源代码的缺点。

  • 二进制协议并未支持所有数据类型的布局优化
  • 无开源的C++或Python实现
  • 无成熟的开源服务器,不如Node.js 版本

ROS
除了因近些年来的在开发支持方面,平台和架构选择方面的削弱,ROS是一个相当完善的系统。

  • 无首要类 空泛/非密切的客户端情节 【NG】
  • 序列化无向前兼容
  • ROS1.0到2.0的变迁过于缓慢并分散了开发任务
Checkbox Comparision

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

Roadmap

Performance
  • 优化数据
  • 异步处理
Specification
  • 点云压缩
  • 持续的数据
  • 数据生命周期管理
  • 支持高级映射
  • 模型支持
Features
  • 高级的XVIZ服务器
    • 支持多日志
  • 至此ROSBAG
  • 可替代的语言实现

Related Projects

// TODO

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Uber纽约市乘车数据的可视化分析与设计是一项重要的任务,它可以帮助我们更好地理解乘客和司机的行为模式以及整个交通网络的运行情况。以下是针对该主题的300字中文回答: 在Uber纽约市乘车数据的可视化分析与设计方面,首先需要收集和整理大量的数据。这些数据包括乘客和司机的行程起止地点、乘车时间、乘车距离、费用等信息。然后,利用数据分析工具,对这些数据进行统计和分析,以提取有用的信息。 一种常见的可视化分析方式是通过地图展示乘车数据的分布情况。可以利用纽约市的地图底图,将乘车起止地点标记在地图上,采用不同的颜色、形状或大小来表示乘车次数或乘车密度。这样一来,我们可以直观地看到乘车热点和流量分布的情况,从而帮助我们优化乘车服务的分配和调度。 除了地图展示,还可以通过折线图或柱状图展示乘车数据的时间变化趋势。可以按照小时、日期、星期几等时间维度,统计乘车次数或乘车费用的变化情况。这样可以发现乘车高峰和低谷的时段,为乘车服务的优化提供数据支持。 另外,还可以对乘车数据进行空间分析,比如利用热力图展示不同地区的乘车活跃度,或者利用流向图展示不同地区之间的乘车流量。这些空间分析可以帮助我们发现交通拥堵的瓶颈区域,或者调整司机派单策略,提高乘车效率。 总之,Uber纽约市乘车数据的可视化分析与设计是一项复杂而有益的工作。通过合理运用可视化工具和技术,可以帮助我们更好地理解和优化乘车服务,提高城市的出行效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值