Giter Club home page Giter Club logo

teaching-app's Introduction

🚗 TEACHING App ✈️

TEACHING: A computing Toolkit for building Efficient Autonomous appliCations leveraging Humanistic INtelliGence is an EU-funded project that designs a computing platform and the associated software toolkit supporting the development and deployment of autonomous, adaptive and dependable CPSoS applications, allowing them to exploit a sustainable human feedback to drive, optimize and personalize the provisioning of their services.

This repository can be taken as the main access point for the TEACHING platform (a collection of repositories) and for the design and deployment of new applications within the EU TEACHING 2020 project.

In particular, in this repository you will find a set of TEACHING applications defined as docker-compose configuration files following a parallel and distributed micro-services architecture. Five different applications showcasing the main features of the platform can be found in scenarios.

Main Application Logic

The application logic is defined at the docker compose level with a graph connecting several nodes (docker images) and arcs (communications link). Nodes can be producers, consumers or both and communicate via RabbitMQ. Following the INPUT_TOPIC(s) and OUTPUT_TOPIC(s) variables (often hardcoded within each node) is possible to understand the graph composition.

Nevertheless, every node is agnostic with respect to the graph composition and technology used in other nodes. Every node only implements a single function and process each DataPacket (a JSON based object) made available trought the INPUT_TOPIC.

Data flow and processing is mostly abstracted to the end TEACHING app designer and implemented in the main repository:

Implement your own TEACHING app

In order to implement a new TEACHING application, first it is important to understand if the nodes available are enough to fit your needs. In particular you may want to check the following repos:

  • teaching-base: Repository for the base image(s) and classes of the TEACHING platform.
  • teaching-sensors: Project for all the sensors that can be instantiated, from "file" sensors to cameras and wearables.
  • teaching-data: Project for persistent storage, e.g., the influxdb instance.
  • teaching-ai-toolkit: AI-Toolkit collecting and implementing the AI modules for a TEACHING application.
  • model-transfer-service: services to encrypt and transfer parametric models.

We also offer an indipendend service (that can be run in parallel) that can be useful to model Federated Learning use-cases:

If these repos do not provide the producing or consuming nodes you need. Then you can implement your own following the guidelines provided within each repository documentation (mostly README.md).

Repository Structure

The main content of this repo:

  • defaults: defaults environment variables useful for the TEACHING platform.
  • old_version: some reference scripts from the previous version of the platform.
  • scenarios: TEACHING app applications defined as docker-composed config files.

Supported Platforms

Theoretically any Docker supported system may be run a TEACHING application. However, the reference platforms for the projects are:

  • Linux ✅
  • Windows 10, 11 under WSL2 ✅
  • IMX8 ⚠️ (see additional instructions here)
  • Other ARM64 boards ⚠️

Working ⚠️ In progress

Pre-Defined Apps (Also Called Scenarios)

Scenario Description x86/x64 IMX8 Other ARM
Scenario 1 Record measurements of a vehicle in a route. ⚠️
Scenario 2 Personalization of driving experience using a RL model. ⚠️
Scenario 3 Process real time video stream and draw the measurements on the image. ⚠️
Scenario 4 Record measurements of a driver using a shimmer device. ⚠️ ⚠️ ⚠️
Scenario 5 Integration between AI-Toolkit and TEACHING_Platform. ⚠️ ⚠️

Tested ⚠️ Untested

Run your First App!

First of all you need to setup your environment. If you are using Windows, you can install WSL2 and Docker Desktop. Then within Docker settings make sure to check the WSL integration tab and connect it to your virtual image. Once this is done you can run docker-compose directly within your WSL image (e.g. Ubuntu based). Alternatively, you can install and run everything from Windows powershell directly. Before running the app, make sure you have docker installed properly in your system using the latest stable version. If you are using Windows you can follow this guide. If you still encounter some issues try to run the simplest scenario like scenario_1.yaml without modifying it. If this also fails it means the problem is mostly due to the installation of the TEACHING app dependencies (docker images, etc.) out of the scope of this repository. You can run the scenarios with the following commands:

# if you want to run it in the iMX8 remember to set the ARCH global variable
# to "arm64" otherwise "amd64" (for laptops, etc.) will be set by default
export ARCH=arm64
git clone --recurse-submodules https://github.com/EU-TEACHING/teaching-app
cd teaching-app
docker-compose -f scenarios/scenario_1.yaml up

Partners

Fundings

This project has received funding from the European Union’s Horizon 2020 Research and Innovation program under grant agreement No 871385.

teaching-app's People

Contributors

antodima avatar chronis10 avatar vdecaro avatar vlomonaco avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.