{"id":14992172,"url":"https://github.com/erdos-project/erdos","last_synced_at":"2025-04-05T03:09:51.952Z","repository":{"id":37612040,"uuid":"156277339","full_name":"erdos-project/erdos","owner":"erdos-project","description":"Dataflow system for building self-driving car and robotics applications.","archived":false,"fork":false,"pushed_at":"2022-08-27T19:25:37.000Z","size":10659,"stargazers_count":204,"open_issues_count":12,"forks_count":45,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-03-28T01:01:56.826Z","etag":null,"topics":["autonomous-vehicles","dataflow","drone","robot","robot-framework","robot-programming","robotics","ros","rust","self-driving-car"],"latest_commit_sha":null,"homepage":"https://erdos.readthedocs.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erdos-project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-05T20:19:05.000Z","updated_at":"2025-03-25T14:09:21.000Z","dependencies_parsed_at":"2022-07-12T16:33:38.755Z","dependency_job_id":null,"html_url":"https://github.com/erdos-project/erdos","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erdos-project%2Ferdos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erdos-project%2Ferdos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erdos-project%2Ferdos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erdos-project%2Ferdos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erdos-project","download_url":"https://codeload.github.com/erdos-project/erdos/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247280272,"owners_count":20912967,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autonomous-vehicles","dataflow","drone","robot","robot-framework","robot-programming","robotics","ros","rust","self-driving-car"],"created_at":"2024-09-24T15:00:50.728Z","updated_at":"2025-04-05T03:09:51.937Z","avatar_url":"https://github.com/erdos-project.png","language":"Rust","readme":"# ERDOS\n\nERDOS is a platform for developing self-driving cars and robotics applications.\n\n[![Crates.io][crates-badge]][crates-url]\n[![Build Status](https://github.com/erdos-project/erdos/workflows/CI/badge.svg)](https://github.com/erdos-project/erdos/actions)\n[![Documentation Status](https://readthedocs.org/projects/erdos/badge/?version=latest)](https://erdos.readthedocs.io/en/latest/?badge=latest)\n[![Documentation](https://docs.rs/erdos/badge.svg)](https://docs.rs/erdos/)\n\n[crates-badge]: https://img.shields.io/crates/v/erdos.svg\n[crates-url]: https://crates.io/crates/erdos\n\n# Getting started\n\n# Local installation\n\n## System requirements\n\nERDOS is known to work on Ubuntu 18.04 and 20.04.\n\n## Rust installation\n\nTo develop an ERDOS application in Rust, simply include ERDOS in `Cargo.toml`.\nThe latest ERDOS release is published on\n[Crates.io](https://crates.io/crates/erdos)\nand documentation is available on [Docs.rs](https://docs.rs/erdos).\n\nIf you'd like to contribute to ERDOS, first\n[install Rust](https://www.rust-lang.org/tools/install).\nThen run the following to clone the repository and build ERDOS:\n```console\ngit clone https://github.com/erdos-project/erdos.git \u0026\u0026 cd erdos\ncargo build\n```\n\n## Python Installation\n\nTo develop an ERDOS application in Python, simply run\n`pip install erdos`. Documentation is available on\n[Read the Docs](https://erdos.readthedocs.io/).\n\nIf you'd like to contribute to ERDOS, first\n[install Rust](https://www.rust-lang.org/tools/install).\nWithin a [virtual environment](https://docs.python.org/3/tutorial/venv.html),\nrun the following to clone the repository and build ERDOS:\n```console\ngit clone https://github.com/erdos-project/erdos.git \u0026\u0026 cd erdos/python\npip3 install maturin\nmaturin develop\n```\n\nThe Python-Rust bridge interface is developed in the `python` crate, which\nalso contains user-facing python files under the `python/erdos` directory.\n\nIf you'd like to build ERDOS for release (better performance, but longer\nbuild times), run `maturin develop --release`.\n\n## Running an example\n\n```console\npython3 python/examples/simple_pipeline.py\n```\n\n# Writing Applications\n\nERDOS provides Python and Rust interfaces for developing applications.\n\nThe Python interface provides easy integration with popular libraries\nsuch as tensorflow, but comes at the cost of performance\n(e.g. slower serialization and the [lack of parallelism within a process](https://wiki.python.org/moin/GlobalInterpreterLock)).\n\nThe Rust interface provides more safety guarantees\n(e.g. compile-time type checking) and faster performance\n(e.g. multithreading and zero-copy message passing).\nHigh performance, safety critical applications such as\nself-driving car pipelines deployed in production should use the\nRust API to take full advantage of ERDOS.\n\n# ERDOS Design\n\nERDOS is a streaming dataflow system designed for self-driving car\npipelines and robotics applications.\n\nComponents of the pipelines are implemented as **operators** which\nare connected by **data streams**. The set of operators and streams\nforms the **dataflow graph**, the representation of the pipline that\nERDOS processes.\n\nApplications define the dataflow graph by connecting operators to streams\nin the **driver** section of the program. Operators are typically\nimplemented elsewhere.\n\nERDOS is designed for low latency. Self-driving car pipelines require\nend-to-end deadlines on the order of hundreds of milliseconds for safe\ndriving. Similarly, self-driving cars typically process gigabytes per\nsecond of data on small clusters. Therefore, ERDOS is optimized to\nsend small amounts of data (gigabytes as opposed to terabytes)\nas quickly as possible.\n\nERDOS provides determinism through **watermarks**. Low watermarks\nare a bound on the age of messages received and operators will ignore\nany messages older than the most recent watermark received. By processing\non watermarks, applications can avoid non-determinism from processing\nmessages out of order.\n\nTo read more about the ideas behind ERDOS, refer to our paper,\n[*D3: A Dynamic Deadline-Driven Approach for Building Autonomous Vehicles*](https://dl.acm.org/doi/10.1145/3492321.3519576).\nIf you find ERDOS useful to your work, please consider citing our paper:\n```bibtex\n@inproceedings{gog2022d3,\n  title={D3: a dynamic deadline-driven approach for building autonomous vehicles},\n  author={Gog, Ionel and Kalra, Sukrit and Schafhalter, Peter and Gonzalez, Joseph E and Stoica, Ion},\n  booktitle={Proceedings of the Seventeenth European Conference on Computer Systems},\n  pages={453--471},\n  year={2022}\n}\n```\n\n# Pylot\n\nWe are actively developing an AV platform atop ERDOS! For more information, see the [Pylot repository](https://github.com/erdos-project/pylot/).\n\n# Getting involved\n\nIf you would like to contact us, you can:\n* [Community on Slack](https://forms.gle/KXwSrjM6ZqRi2MT18): Join our community\non Slack for discussions about development, questions about usage, and feature\nrequests.\n* [Github Issues](https://github.com/erdos-project/erdos/issues): For reporting\nbugs.\n\nWe always welcome contributions to ERDOS. One way to get started is to\npick one of the issues tagged with **good first issue** -- these are usually good issues that help you familiarize yourself with the ERDOS\ncode base. Please submit contributions using pull requests.\n","funding_links":[],"categories":["Robot Operating System","Platforms"],"sub_categories":["Development Platforms"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferdos-project%2Ferdos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferdos-project%2Ferdos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferdos-project%2Ferdos/lists"}