All Projects → erdos-project → erdos

erdos-project / erdos

Licence: Apache-2.0 License
Dataflow system for building self-driving car and robotics applications.

Programming Languages

rust
11053 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to erdos

Fourth robot pkg
4号機(KIT-C4)用リポジトリ
Stars: ✭ 7 (-94.81%)
Mutual labels:  robot, robotics, ros, autonomous-vehicles
Awesome Robotic Tooling
Tooling for professional robotic development in C++ and Python with a touch of ROS, autonomous driving and aerospace.
Stars: ✭ 1,876 (+1289.63%)
Mutual labels:  robot, robotics, ros, self-driving-car
Webots
Webots Robot Simulator
Stars: ✭ 1,324 (+880.74%)
Mutual labels:  robot, robotics, ros, autonomous-vehicles
Ros robotics projects
Example codes of new book ROS Robotics Projects
Stars: ✭ 240 (+77.78%)
Mutual labels:  robot, robotics, ros, self-driving-car
Robotics setup
Setup Ubuntu 18.04, 16.04 and 14.04 with machine learning and robotics software plus user configuration. Includes ceres tensorflow ros caffe vrep eigen cudnn and cuda plus many more.
Stars: ✭ 110 (-18.52%)
Mutual labels:  robot, robotics, ros
Grl
Robotics tools in C++11. Implements soft real time arm drivers for Kuka LBR iiwa plus V-REP, ROS, Constrained Optimization based planning, Hand Eye Calibration and Inverse Kinematics integration.
Stars: ✭ 105 (-22.22%)
Mutual labels:  robot, robotics, ros
erwhi-hedgehog
Erwhi Hedgehog main repository
Stars: ✭ 31 (-77.04%)
Mutual labels:  robot, robotics, ros
ROS-GPS
GPS Localization with ROS, OSM and rviz
Stars: ✭ 19 (-85.93%)
Mutual labels:  robotics, ros, self-driving-car
True artificial intelligence
真AI人工智能
Stars: ✭ 38 (-71.85%)
Mutual labels:  robot, ros, self-driving-car
Dolly
🤖🐑 It's a sheep, it's a dolly, it's a following robot. Dolly was born to be cloned.
Stars: ✭ 113 (-16.3%)
Mutual labels:  robot, robotics, ros
Rosnodejs
Client library for writing ROS nodes in JavaScript with nodejs
Stars: ✭ 145 (+7.41%)
Mutual labels:  robot, robotics, ros
FusionAD
An open source autonomous driving stack by San Jose State University Autonomous Driving Team
Stars: ✭ 30 (-77.78%)
Mutual labels:  robotics, ros, autonomous-vehicles
Rvd
Robot Vulnerability Database. An archive of robot vulnerabilities and bugs.
Stars: ✭ 87 (-35.56%)
Mutual labels:  robot, robotics, ros
Pythonrobotics
Python sample codes for robotics algorithms.
Stars: ✭ 13,934 (+10221.48%)
Mutual labels:  robot, robotics, autonomous-vehicles
ROS-TCP-Connector
No description or website provided.
Stars: ✭ 123 (-8.89%)
Mutual labels:  robot, robotics, ros
Ev3dev Lang Java
A project to learn Java and create software for Mindstorms Robots using hardware supported by EV3Dev & the LeJOS way.
Stars: ✭ 79 (-41.48%)
Mutual labels:  robot, robotics, ros
Weloveinterns
中科院软件所智能软件中心实习生社区
Stars: ✭ 143 (+5.93%)
Mutual labels:  robot, robotics, ros
Ros Academy For Beginners
中国大学MOOC《机器人操作系统入门》代码示例 ROS tutorial
Stars: ✭ 861 (+537.78%)
Mutual labels:  robot, robotics, ros
Djim100 People Detect Track
A ros demo for people detection and tracking on DJI M100 drone
Stars: ✭ 150 (+11.11%)
Mutual labels:  robot, drone, ros
aerial autonomy
Easily extendable package for interacting with and defining state machines for autonomous aerial systems
Stars: ✭ 22 (-83.7%)
Mutual labels:  drone, robotics, ros

ERDOS

ERDOS is a platform for developing self-driving cars and robotics applications.

Crates.io Build Status Documentation Status Documentation

Getting started

The easiest way to get ERDOS running is to use our Docker image:

docker pull erdosproject/erdos

Local installation

System requirements

ERDOS is known to work on Ubuntu 16.04, 18.04, and 20.04.

Rust installation

To develop an ERDOS application in Rust, simply include ERDOS in Cargo.toml. The latest ERDOS release is published on Crates.io and documentation is available on Crates.io.

If you'd like to contribute to ERDOS, first install Rust. Then run the following to clone the repository and build ERDOS:

rustup default nightly  # use nightly Rust toolchain
git clone https://github.com/erdos-project/erdos.git && cd erdos
cargo build

Python Installation

To develop an ERDOS application in Python, simply run pip install erdos. Documentation is available on Read the Docs.

If you'd like to contribute to ERDOS, first install Rust. Then run the following to clone the repository and build ERDOS:

rustup default nightly  # use nightly Rust toolchain
git clone https://github.com/erdos-project/erdos.git && cd erdos
python3 python/setup.py develop

Python files are available under the python/ directory, and the Python-Rust bridge interface is developed under src/python/.

If you'd like to build ERDOS for release (has better performance, but longer build times), run python3 python/setup.py install.

Running an example

python3 python/examples/simple_pipeline.py

Build parameters

By default, ERDOS supports up to 20 read streams and 10 write streams in a stream bundle (used to add callbacks across multiple streams; see callback builder in Rust docs for more details). Some applications may require bundles that support more read and write streams. This can be configured by setting the ERDOS_BUNDLE_MAX_READ_STREAMS and ERDOS_BUNDLE_MAX_WRITE_STREAMS environment variables when building.

Building ERDOS for the first time may be slow because these parameters result in generated code which dominates the build time. Subsequent builds should be much faster due to caching unless build.rs or the code generation scripts are modified. In that case, consider setting ERDOS_BUNDLE_MAX_READ_STREAMS and ERDOS_BUNDLE_MAX_WRITE_STREAMS to speed up builds.

Writing Applications

ERDOS provides Python and Rust interfaces for developing applications.

The Python interface provides easy integration with popular libraries such as tensorflow, but comes at the cost of performance (e.g. slower serialization and the lack of multithreading).

The Rust interface provides more safety guarantees (e.g. compile-time type checking) and faster performance (e.g. multithreading and zero-copy message passing). High performance, safety critical applications such as self-driving car pipelines deployed in production should use the Rust API to take full advantage of ERDOS.

ERDOS Design

ERDOS is a streaming dataflow system designed for self-driving car pipelines and robotics applications.

Components of the pipelines are implemented as operators which are connected by data streams. The set of operators and streams forms the dataflow graph, the representation of the pipline that ERDOS processes.

Applications define the dataflow graph by connecting operators to streams in the driver section of the program. Operators are typically implemented elsewhere.

ERDOS is designed for low latency. Self-driving car pipelines require end-to-end deadlines on the order of hundreds of milliseconds for safe driving. Similarly, self-driving cars typically process gigabytes per second of data on small clusters. Therefore, ERDOS is optimized to send small amounts of data (gigabytes as opposed to terabytes) as quickly as possible.

ERDOS provides determinisim through watermarks. Low watermarks are a bound on the age of messages received and operators will ignore any messages older than the most recent watermark received. By processing on watermarks, applications can avoid non-determinism from processing messages out of order.

Getting involved

If you would like to contact us, you can:

  • Community on Slack: Join our community on Slack for discussions about development, questions about usage, and feature requests.
  • Github Issues: For reporting bugs.

We always welcome contributions to ERDOS. One way to get started is to pick one of the issues tagged with good first issue -- these are usually good issues that help you familiarize yourself with the ERDOS code base. Please submit contributions using pull requests.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].