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

  • Overview
    • Introduction
      • Main Features
      • XVIZ Protocol Specification
      • XVIZ Javascript Libraries
      • XVIZ Server
    • What's New
    • Versioning
    • Concepts
      • Datum
      • Stream
      • Source
      • Metadata
      • Primitive
      • Style
      • Object
      • Variable
      • Time Series
      • Declarative UI
      • Video
      • Encoding
    • Conventions
      • Stream Naming
        • Use file system-like hierarchical names
        • Stream names should not contain ids.
      • Stream Structure
    • ROS Comparison
      • Simularties
      • Advantages
      • Disadvantages
      • Checkbox Comparision
    • Roadmap
      • Performance
      • Specification
      • Features
    • Related Projects

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

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

  1. Uber AVS 自动驾驶可视化工具(一)

    Uber AVS 自动驾驶可视化工具 (一) Uber AVS 模块组成 `XVIZ` `streetscapec.gl` 注: 引用: Uber AVS 近期,Uber开源了自动驾驶可视化工具AVS ...

  2. Uber 和通用拟开源自动驾驶可视化软件

    据报道,自动驾驶领域两大玩家Uber和通用汽车旗下Cruise公司宣布,将在网络上开源其自动驾驶可视化软件.此举有望鼓励开发人员开发出更多应用,并最终促进整个行业的发展.报道称,在严格保护商业机密的自 ...

  3. Mobileye 自动驾驶策略(二)

    Mobileye 自动驾驶策略(二) 与多方都成功进行了合作,其中比较大型的合作包括法雷奥.百度和中国 ITS. 法雷奥是最近的的 Tier 1 合作伙伴,法雷奥和 Mobileye 签署协议,表示未 ...

  4. 从零开始做自动驾驶定位(二):轨迹精度评估

    从零开始做自动驾驶定位(二):轨迹精度评估 一.EVO工具的使用 1.evo简介 evo [1] 是一个很好的测评工具,它可以根据时间戳将轨迹进行对齐,同时可以将不同尺度的轨迹按照你指定的标准轨迹进行 ...

  5. Christopher Manning​:Uber 出售自动驾驶部门是一个标志性事件​ | AI日报

    为 AI 内行人定制资讯, 帮你一篇尽览 AI 行业要闻. AI消除马赛克,GitHub开源项目上线三天收获近7000星 最近,一个名为 Depix 的 GitHub 项目爆火,上线三天 star 量 ...

  6. 自动驾驶中间件之二:通信中间件,DDS与SOME/IP 谁主沉浮?

    本文是自动驾驶中间件科普系列第二篇,上一篇为自动驾驶中间件之一:AUTOSAR正在被"边缘化"? 随着传感器的数量越来越多,数据来源越来越多.规模也会越来越大,那这些多源异构数据如 ...

  7. 自动驾驶漫谈之二:无人驾驶与高精度地图

    对机器人而言,常见的地图有四种:图特征地图(几何地图).拓扑地图.栅格地图以及直接表征法(Appearance Based Methods).对人类而言,常见的地图主要是语义地图,告诉人们这是什么路, ...

  8. 自动驾驶模拟工具CARLA的安装

    最近研究了一下自动驾驶的模拟器Airsim和CARLA,准备搭建一个学习环境来学习自动驾驶的相关知识. Airsim最初是微软推出的一个模拟飞行的平台,之后增加了模拟驾驶的内容,这个平台据网上的资料是 ...

  9. 自动驾驶——标注工具(js+electron)的开发笔记(基于Create-React-App)

    目录 1 前言 2 框架选择 3 项目需求 3.1 自动更新 4 开发环境 4.1 Yarn安装 4.2 基础库安装 react-fontawesome 5 项目初始化&配置 5.1 使用cr ...

最新文章

  1. Python 官网宣布,正式发布 Python 3.8.0!
  2. 前端学习(1428):ajax封装三
  3. 这可能是大型复杂项目下数据流的最佳实践
  4. python 通过pip安装库 pycharm里面使用第三方库
  5. javascript打印1-100内的质数
  6. 学习重要,还是学会学习重要
  7. utf8_general_ci、utf8_unicode_ci和utf8_bin的区别
  8. Optisystem中器件的学习(1-Visualizer Library、Sensors)
  9. Android 开发问题
  10. 提升机器学习数学基础,这7本书一定要读-附pdf资源
  11. 6 个主流 AI 聊天机器人平台
  12. java 把客户信息录入数组,需求说明 java-实现添加客户信息 客户信息包括:姓名、年龄、是否有会员卡...
  13. 使用豆瓣源安装Django
  14. 整理 Go 语言中 20 个占位符!
  15. 成人大专计算机专业总结,成人大专自我鉴定300字大专函授【八篇】
  16. Thinkbook16+ 2022 安装Ubuntu20.04
  17. 【阿里巴巴-飞猪旅行-内推】2020年应届实习生招聘
  18. AlphaGo与蒙特卡罗树搜索
  19. 数据库中的变量和if语句的相关语法与案例
  20. 利用数据技术构筑产业生态

热门文章

  1. 和数集团布局“和数链课堂”,人才培养才是区块链之本
  2. 如何查询全国各地公司有哪些股东(2017版)
  3. 方法导论 | α、β收益及其策略构建
  4. 2020.8.17-8.24 人工智能行业每周技术精华文章汇总
  5. 共创品牌强农精品培育消费引领 国稻种芯百团计划行动发布
  6. python对字典排序
  7. Rafy 领域实体框架演示(2) - 新功能展示
  8. Python变量初始化方法
  9. Viterbi 原理及简单实现
  10. 民生银行网上安全组件安装失败