/opendr

A modular, open and non-proprietary toolkit for core robotic functionalities by harnessing deep learning

Primary LanguagePythonApache License 2.0Apache-2.0

A modular, open and non-proprietary toolkit for core robotic functionalities by harnessing deep learning


WebsiteInstallationPython ExamplesROS1ROS2C APICustomizationKnown IssuesRoadmapChangelogLicense

License Test Suite (master) Test Packages DOI

About

The aim of OpenDR Project is to develop a modular, open and non-proprietary toolkit for core robotic functionalities by harnessing deep learning to provide advanced perception and cognition capabilities, meeting in this way the general requirements of robotics applications in the applications areas of healthcare, agri-food and agile production. OpenDR provides the means to link the robotics applications to software libraries (deep learning frameworks, e.g., PyTorch and Tensorflow) to the operating environment (ROS). OpenDR focuses on the AI and Cognition core technology in order to provide tools that make robotic systems cognitive, giving them the ability to:

  1. interact with people and environments by developing deep learning methods for human centric and environment active perception and cognition,
  2. learn and categorize by developing deep learning tools for training and inference in common robotics settings, and
  3. make decisions and derive knowledge by developing deep learning tools for cognitive robot action and decision making.

As a result, the developed OpenDR toolkit will also enable cooperative human-robot interaction as well as the development of cognitive mechatronics where sensing and actuation are closely coupled with cognitive systems thus contributing to another two core technologies beyond AI and Cognition. OpenDR aims to develop, train, deploy and evaluate deep learning models that improve the technical capabilities of the core technologies beyond the current state of the art.

Where to start?

You can start by installing the OpenDR toolkit. OpenDR can be installed in the following ways:

  1. By cloning this repository (CPU/GPU support)
  2. Using pip (CPU/GPU support only)
  3. Using docker (CPU/GPU support)

What OpenDR provides?

OpenDR provides an intuitive and easy to use Python interface, a C API for performance critical application, a wealth of usage examples and supporting tools, as well as ready-to-use ROS nodes. OpenDR is built to support Webots Open Source Robot Simulator, while it also extensively follows industry standards, such as ONNX model format and OpenAI Gym Interface.

How can I start using OpenDR?

You can find detailed documentation in OpenDR wiki. The main point of reference after installing the toolkit is the tools index. Starting from there, you can find detailed documentation for all the tools included in OpenDR.

  • If you are interested in ready-to-use ROS nodes, then you can directly jump to our ROS1 and ROS2 workspaces.
  • If you are interested for ready-to-use examples, then you can checkout the projects folder, which contains examples and tutorials for perception, control, simulation and hyperparameter tuning tools.
  • If you want to explore our C API, then you explore the provided C demos.

How can I interface OpenDR?

OpenDR is built upon Python. Therefore, the main OpenDR interface is written in Python and it is available through the opendr package. Furthermore, OpenDR provides ROS1 and ROS2 interfaces, as well as a C interface. Note that you can use as many tools as you wish at the same time, since there is no hardware limitation on the number of tools that can run at the same time. However, hardware limitations (e.g., GPU memory) might restrict the number of tools that can run at any given moment.

Roadmap

OpenDR has the following roadmap:

  • v1.0 (2021): Baseline deep learning tools for core robotic functionalities
  • v2.0 (2022): Optimized lightweight and high-resolution deep learning tools for robotics
  • v3.0 (2023): Active perception-enabled deep learning tools for improved robotic perception

How to contribute

Please follow the instructions provided in the wiki.

How to cite us

If you use OpenDR for your research, please cite the following paper that introduces OpenDR architecture and design:

@inproceedings{opendr2022,
  title={OpenDR: An Open Toolkit for Enabling High Performance, Low Footprint Deep Learning for Robotics},
  author={Passalis, Nikolaos and Pedrazzi, Stefania and Babuska, Robert and Burgard, Wolfram and Dias, Daniel and Ferro, Francesco and Gabbouj, Moncef and Green, Ole and Iosifidis, Alexandros and Kayacan, Erdal and Kober, Jens and Michel, Olivier and Nikolaidis, Nikos and Nousi, Paraskevi and Pieters, Roel and Tzelepi, Maria and Valada, Abhinav and Tefas, Anastasios},
    booktitle = {Proceedings of the 2022 IEEE/RSJ International Conference on Intelligent Robots and Systems (to appear)},
  year={2022}
}

Acknowledgments

OpenDR project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 871449.