Skip to content

Merge master into develop #203

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jan 25, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
103 changes: 103 additions & 0 deletions .github/workflows/test_packages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
name: Test Packages
# This workflow tests the latest (third-party hosted) available builds

on:
pull_request:
types: [opened, reopened, synchronize, labeled, unlabeled]
schedule:
- cron: '0 23 * * *'

defaults:
run:
shell: bash


jobs:
cleanup-runs:
if: ${{ contains(github.event.pull_request.labels.*.name, 'test packages') || github.event_name == 'schedule' }}
runs-on: ubuntu-latest
steps:
- uses: rokroskar/workflow-run-cleanup-action@master
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
test-wheel:
needs: cleanup-runs
if: ${{ contains(github.event.pull_request.labels.*.name, 'test packages') || github.event_name == 'schedule' }}
strategy:
matrix:
os: [ubuntu-20.04]
package:
- engine
- utils
- perception/activity_recognition
- perception/compressive_learning
- perception/face_recognition
- perception/heart_anomaly_detection
- perception/multimodal_human_centric
- perception/object_tracking_2d
- perception/pose_estimation
- perception/speech_recognition
- perception/skeleton_based_action_recognition
- perception/semantic_segmentation
- perception/object_detection_2d
- perception/facial_expression_recognition
# - perception/object_detection_3d
# - control/mobile_manipulation
# - simulation/human_model_generation
# - control/single_demo_grasp
# - perception/object_tracking_3d
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Test Wheel
run: |
export DISABLE_BCOLZ_AVX2=true
sudo apt -y install python3.8-venv libfreetype6-dev git build-essential cmake python3-dev wget libopenblas-dev libsndfile1 libboost-dev python3-dev
python3 -m venv venv
source venv/bin/activate
wget https://raw.githubusercontent.com/opendr-eu/opendr/master/dependencies/pip_requirements.txt
cat pip_requirements.txt | xargs -n 1 -L 1 pip install
# Test new package
pip install opendr-toolkit
python -m unittest discover -s tests/sources/tools/${{ matrix.package }}
test-docker:
needs: cleanup-runs
if: ${{ contains(github.event.pull_request.labels.*.name, 'test packages') || github.event_name == 'schedule' }}
strategy:
matrix:
os: [ubuntu-20.04]
package:
- engine
- utils
- perception/activity_recognition
- perception/compressive_learning
- perception/face_recognition
- perception/heart_anomaly_detection
- perception/multimodal_human_centric
- perception/object_tracking_2d
- perception/pose_estimation
- perception/speech_recognition
- perception/skeleton_based_action_recognition
- perception/semantic_segmentation
- perception/object_detection_2d
- perception/facial_expression_recognition
- perception/object_detection_3d
- control/mobile_manipulation
- simulation/human_model_generation
- control/single_demo_grasp
#- perception/object_tracking_3d
runs-on: ${{ matrix.os }}
steps:
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Test Docker
run: |
docker run --name toolkit -i opendr/opendr-toolkit:cpu_latest bash
docker start toolkit
docker exec -i toolkit bash -c "source bin/activate.sh && source tests/sources/tools/control/mobile_manipulation/run_ros.sh && python -m unittest discover -s tests/sources/tools/${{ matrix.package }}"
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
name: Test Sources
name: Test Suite (master)

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review, labeled, unlabeled]
schedule:
- cron: '0 23 * * *'

defaults:
run:
shell: bash

jobs:
cleanup-runs:
if: ${{ contains(github.event.pull_request.labels.*.name, 'test sources') || contains(github.event.pull_request.labels.*.name, 'test tools') }}
if: ${{ contains(github.event.pull_request.labels.*.name, 'test sources') || contains(github.event.pull_request.labels.*.name, 'test tools') || github.event_name == 'schedule' }}
runs-on: ubuntu-latest
steps:
- uses: rokroskar/workflow-run-cleanup-action@master
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
test-sources:
needs: cleanup-runs
if: ${{ contains(github.event.pull_request.labels.*.name, 'test sources') }}
if: ${{ contains(github.event.pull_request.labels.*.name, 'test sources') || github.event_name == 'schedule' }}
strategy:
matrix:
os: [ubuntu-18.04, ubuntu-20.04, macos-10.15]
Expand Down Expand Up @@ -50,7 +52,7 @@ jobs:
python -m unittest discover -s tests
test-tools:
needs: cleanup-runs
if: ${{ contains(github.event.pull_request.labels.*.name, 'test tools') }}
if: ${{ contains(github.event.pull_request.labels.*.name, 'test tools') || github.event_name == 'schedule' }}
strategy:
matrix:
os: [ubuntu-20.04]
Expand All @@ -71,7 +73,7 @@ jobs:
- control/mobile_manipulation
- perception/object_detection_2d
- simulation/human_model_generation
- perception/facial_expression_recognition/landmark_based_facial_expression_recognition
- perception/facial_expression_recognition
- control/single_demo_grasp
# - perception/object_tracking_3d
include:
Expand All @@ -88,7 +90,6 @@ jobs:
with:
python-version: 3.8
- name: Test Tools
if: ${{ contains(github.event.pull_request.labels.*.name, 'test tools') }}
run: |
${{ matrix.DEPENDENCIES_INSTALLATION }}
export OPENDR_HOME=$PWD
Expand All @@ -105,3 +106,4 @@ jobs:
source tests/sources/tools/control/mobile_manipulation/run_ros.sh
python -m unittest discover -s tests/sources/tools/${{ matrix.package }}
fi

108 changes: 108 additions & 0 deletions .github/workflows/tests_suite_develop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: Test Suite (develop)

on:
schedule:
- cron: '0 23 * * *'

defaults:
run:
shell: bash

jobs:
cleanup-runs:
if: ${{ contains(github.event.pull_request.labels.*.name, 'test sources') || contains(github.event.pull_request.labels.*.name, 'test tools') || github.event_name == 'schedule' }}
runs-on: ubuntu-latest
steps:
- uses: rokroskar/workflow-run-cleanup-action@master
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
test-sources:
needs: cleanup-runs
if: ${{ contains(github.event.pull_request.labels.*.name, 'test sources') || github.event_name == 'schedule' }}
strategy:
matrix:
os: [ubuntu-18.04, ubuntu-20.04, macos-10.15]
include:
- os: ubuntu-18.04
DEPENDENCIES_INSTALLATION: "sudo apt -y install clang-format-10 cppcheck"
- os: ubuntu-20.04
DEPENDENCIES_INSTALLATION: "sudo apt -y install clang-format-10 cppcheck"
- os: macos-10.15
DEPENDENCIES_INSTALLATION: "brew install clang-format cppcheck"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
if: matrix.os == 'ubuntu-20.04' || github.event.pull_request.draft == false
with:
submodules: true
ref: develop
- name: Set up Python 3.8
if: matrix.os == 'ubuntu-20.04' || github.event.pull_request.draft == false
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Test Sources
if: matrix.os == 'ubuntu-20.04' || github.event.pull_request.draft == false
run: |
${{ matrix.DEPENDENCIES_INSTALLATION }}
export OPENDR_HOME=$PWD
export OPENDR_DEVICE=cpu
pip install -r tests/requirements.txt
python -m unittest discover -s tests
test-tools:
needs: cleanup-runs
if: ${{ contains(github.event.pull_request.labels.*.name, 'test tools') || github.event_name == 'schedule' }}
strategy:
matrix:
os: [ubuntu-20.04]
package:
- engine
- utils
- perception/activity_recognition
- perception/compressive_learning
- perception/face_recognition
- perception/heart_anomaly_detection
- perception/multimodal_human_centric
- perception/object_tracking_2d
- perception/object_detection_3d
- perception/pose_estimation
- perception/speech_recognition
- perception/skeleton_based_action_recognition
- perception/semantic_segmentation
- control/mobile_manipulation
- perception/object_detection_2d
- simulation/human_model_generation
- perception/facial_expression_recognition
- control/single_demo_grasp
# - perception/object_tracking_3d
include:
- os: ubuntu-20.04
DEPENDENCIES_INSTALLATION: "sudo sh -c 'echo \"deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main\" > /etc/apt/sources.list.d/ros-latest.list' \
&& curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
with:
submodules: true
ref: develop
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Test Tools
run: |
${{ matrix.DEPENDENCIES_INSTALLATION }}
export OPENDR_HOME=$PWD
export OPENDR_DEVICE=cpu
export PYTHONPATH=$OPENDR_HOME/src:$PYTHONPATH
export DISABLE_BCOLZ_AVX2=true
export ROS_DISTRO=noetic
make install_compilation_dependencies
make install_runtime_dependencies
pip install -r tests/sources/requirements.txt
if [ ${{ matrix.package }} = "ctests" ]; then
make ctests
else
source tests/sources/tools/control/mobile_manipulation/run_ros.sh
python -m unittest discover -s tests/sources/tools/${{ matrix.package }}
fi
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# OpenDR Toolkit Change Log

## Version 1.X
Released on XX, XXth, 2022.

- New Features:
- None.
- Enhancements:
- None.
- Bug Fixes:
- Updated wheel building pipeline to include missing files and removed unnecessary dependencies ([#200](https://github.com/opendr-eu/opendr/pull/200)).
- Dependency Updates:
- `heart anomaly detection`: upgraded scikit-learn runtime dependency from 0.21.3 to 0.22 ([#198](https://github.com/opendr-eu/opendr/pull/198)).


## Version 1.0
Released on December 31th, 2021.
2 changes: 2 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
recursive-include src/opendr *
include requirements.txt
22 changes: 12 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,30 @@ ______________________________________________________________________
<p align="center">
<a href="https://www.opendr.eu/">Website</a> •
<a href="#about">About</a> •
<a href="docs/reference/installation.md">Installation</a> •
<a href="docs/reference/installation.md">Installation</a> •
<a href="#using-opendr-toolkit">Using OpenDR toolkit</a> •
<a href="projects">Examples</a> •
<a href="#roadmap">Roadmap</a> •
<a href="#roadmap">Roadmap</a> •
<a href="CHANGELOG.md">Changelog</a> •
<a href="LICENSE">License</a>
</p>

[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

[![Test Suite (master)](https://github.com/opendr-eu/opendr/actions/workflows/tests_suite.yml/badge.svg)](https://github.com/opendr-eu/opendr/actions/workflows/tests_suite.yml)
[![Test Packages](https://github.com/opendr-eu/opendr/actions/workflows/test_packages.yml/badge.svg)](https://github.com/opendr-eu/opendr/actions/workflows/test_packages.yml)
</div>

## About

The aim of [OpenDR Project](https://opendr.eu) 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](https://pytorch.org/) and [Tensorflow](https://www.tensorflow.org/)) to the **operating environment ([ROS](https://www.ros.org/))**.
The aim of [OpenDR Project](https://opendr.eu) 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](https://pytorch.org/) and [Tensorflow](https://www.tensorflow.org/)) to the **operating environment ([ROS](https://www.ros.org/))**.
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
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.
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.

## Installing OpenDR Toolkit

Expand All @@ -42,7 +44,7 @@ You can find detailed installation instruction in the [documentation](docs/refer

## Using OpenDR toolkit
OpenDR provides an intuitive and easy to use **[Python interface](src/opendr)**, a **[C API](src/c_api) for performance critical application**, a wealth of **[usage examples and supporting tools](projects)**, as well as **ready-to-use [ROS nodes](projects/opendr_ws)**.
OpenDR is built to support [Webots Open Source Robot Simulator](https://cyberbotics.com/), while it also extensively follows industry standards, such as [ONNX model format](https://onnx.ai/) and [OpenAI Gym Interface](https://gym.openai.com/).
OpenDR is built to support [Webots Open Source Robot Simulator](https://cyberbotics.com/), while it also extensively follows industry standards, such as [ONNX model format](https://onnx.ai/) and [OpenAI Gym Interface](https://gym.openai.com/).
You can find detailed documentation in OpenDR [wiki](https://github.com/tasostefas/opendr_internal/wiki), as well as in the [tools index](docs/reference/index.md).

## Roadmap
Expand All @@ -52,7 +54,7 @@ OpenDR has the following roadmap:
- **v3.0 (2023)**: Active perception-enabled deep learning tools for improved robotic perception

## How to contribute
Please follow the instructions provided in the [wiki](https://github.com/tasostefas/opendr_internal/wiki).
Please follow the instructions provided in the [wiki](https://github.com/tasostefas/opendr_internal/wiki).


## Acknowledgments
Expand Down
19 changes: 19 additions & 0 deletions bin/build_wheel.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash

# Build all OpenDR dependecies
./bin/install.sh

# Activate OpenDR
source ./bin/activate.sh

# Prepare requirements.txt for wheel distributions
pip3 freeze > requirements.txt

# Remove detectron and git repositories (installation not supported through PyPI)
sed -i '/detectron2/d' requirements.txt
sed -i '/git/d' requirements.txt
sed -i '/pkg_resources/d' requirements.txt
sed -i '/auditwheel/d' requirements.txt

# Build binary wheel and repair it
python3 setup.py sdist
8 changes: 0 additions & 8 deletions bin/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,5 @@ make install_compilation_dependencies
make install_runtime_dependencies
make libopendr

# Prepare requirements.txt for wheel distributions
pip3 freeze > requirements.txt

# Remove detectron, since it was installed from git repo
sed -i '/detectron2/d' requirements.txt
sed -i '/git/d' requirements.txt
python3 setup.py bdist_wheel

deactivate

2 changes: 1 addition & 1 deletion dependencies/parse_dependencies.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env python3

# Copyright 2020-2021 OpenDR European Project
# Copyright 2020-2022 OpenDR European Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand Down
Loading