4 个版本 (2 个破坏性更新)
0.4.0 | 2022年4月6日 |
---|---|
0.3.1 | 2020年9月25日 |
0.3.0 | 2020年7月22日 |
0.2.0 | 2020年1月17日 |
#38 在 机器人技术 中
430KB
8K SLoC
ERDOS
ERDOS 是一个用于开发自动驾驶汽车和机器人应用的平台。
入门指南
本地安装
系统要求
已知 ERDOS 在 Ubuntu 18.04 和 20.04 上运行。
Rust 安装
要在 Rust 中开发 ERDOS 应用,只需在 Cargo.toml
中包含 ERDOS。最新的 ERDOS 版本在 Crates.io 上发布,文档在 Docs.rs 上可用。
如果您想为 ERDOS 贡献,首先 安装 Rust。然后运行以下命令来克隆仓库并构建 ERDOS
git clone https://github.com/erdos-project/erdos.git && cd erdos
cargo build
Python 安装
要在 Python 中开发 ERDOS 应用,只需运行 pip install erdos
。文档在 Read the Docs 上可用。
如果您想为 ERDOS 贡献,首先 安装 Rust。在 虚拟环境 中,运行以下命令来克隆仓库并构建 ERDOS
git clone https://github.com/erdos-project/erdos.git && cd erdos/python
pip3 install maturin
maturin develop
Python-Rust 桥接接口在 python
包中开发,该包还包含在 python/erdos
目录下的用户界面 Python 文件。
如果您想为发布版构建 ERDOS(更好的性能,但更长的构建时间),请运行 maturin develop --release
。
运行示例
python3 python/examples/simple_pipeline.py
编写应用程序
ERDOS 为开发应用程序提供 Python 和 Rust 接口。
Python 接口提供了与 tensorflow 等流行库的简单集成,但代价是性能(例如,更慢的序列化和进程内的并行性不足 缺乏并行性)。
Rust 接口提供了更多的安全性保证(例如编译时类型检查)和更快的性能(例如多线程和无拷贝消息传递)。高性能、安全性关键的应用,如生产中部署的自动驾驶汽车管线,应使用 Rust API 来充分利用 ERDOS。
ERDOS 设计
ERDOS 是一个为自动驾驶汽车管线和机器人应用设计的流式数据处理系统。
管线组件被实现为 算子,它们通过 数据流 连接。算子和流的集合形成 数据流图,这是 ERDOS 处理的管线表示。
应用程序通过在程序的 驱动 部分中将算子连接到流来定义数据流图。算子通常在其他地方实现。
ERDOS 为低延迟而设计。自动驾驶汽车管线需要数百毫秒的端到端截止时间以确保安全驾驶。同样,自动驾驶汽车通常在小型集群上处理每秒数GB的数据。因此,ERDOS 优化了尽可能快地发送少量数据(与TB相比为GB)。
ERDOS 通过 水印 提供确定性。低水印是接收到的消息年龄的上限,算子将忽略任何比最近接收到的水印更老的消息。通过基于水印处理,应用程序可以避免由于处理消息顺序不当而导致的非确定性。
了解更多关于 ERDOS 背后理念的信息,请参阅我们的论文,D3: A Dynamic Deadline-Driven Approach for Building Autonomous Vehicles。如果您发现 ERDOS 对您的工作有所帮助,请按照以下方式引用我们的论文
@inproceedings{10.1145/3492321.3519576,
author = {Gog, Ionel and Kalra, Sukrit and Schafhalter, Peter and Gonzalez, Joseph E. and Stoica, Ion},
title = {D3: A Dynamic Deadline-Driven Approach for Building Autonomous Vehicles},
year = {2022},
isbn = {9781450391627},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3492321.3519576},
doi = {10.1145/3492321.3519576},
booktitle = {Proceedings of the Seventeenth European Conference on Computer Systems},
pages = {453–471},
numpages = {19},
location = {Rennes, France},
series = {EuroSys '22}
}
Pylot
我们正在积极开发一个基于 ERDOS 的自动驾驶平台!有关更多信息,请参阅 Pylot 仓库。
参与其中
如果您想联系我们,您可以
我们始终欢迎对 ERDOS 的贡献。一种入门方式是选择一个带有 良好首次问题 标签的问题——这些通常是帮助您熟悉 ERDOS 代码库的好问题。请使用拉取请求提交贡献。
依赖项
~11–25MB
~376K SLoC