GithubHelp home page GithubHelp logo

cobair's Introduction

CoBaIR

CoBaIR is a python library for Context Based Intention Recognition. It provides the means to infer an intention from given context. An intention is a binary value e.g. repair pipe that can either be present or not. Only one intention can be present at a time. Context on the otherhand can have multiple discrete instantiations e.g. weather:sunny|cloudy|raining. If context values are continuous, discretizer functions can be used to create discrete values. From the inferred intention in a HRI scenario the robot can perform corresponding actions to help the human with a specific task.

Publications

For a more in-depth explanation consult the following papers:

Install

pip install CoBaIR

You can install the library from your local copy after cloning this repo with pip using pip install . or install the newest experimental features from the develop branch with pip install git+https://github.com/dfki-ric/CoBaIR.git@develop

Known Issues

On some Linux Distros there seems to be a problem with a shared library. This Solutions suggests to export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 which works on Ubuntu 22.04.

Graphical User Interface

GUI

To make the configuration of a scenario easier we provide a Graphical User Interface(GUI). The GUI can be started with

python start_configurator.py

if you want to start the GUI with a loaded config use

python start_configurator.py -f config.yml

Tutorial

For a step-by-step guide on how to use CoBaIR, check out our Tutorial.

Documentation

The Documentation can be accessed on https://dfki-ric.github.io/CoBaIR/

Bayesian Approach

In the bayesian approach CoBaIR uses a two-layer Bayesian Net of the following structure. two-layer Bayesian Net

Config Format

Configs will be saved in yml files. For convenience the is a configurator which can be started with

python start_configurator.py

Bayesian Approach

The configuration file for a two layer bayesian net for context based intention recognition follows the given format:

# List of contexts. Contexts can have different discrete instantiations. 
# Number of instantiations must be larger than 1.
# For all discrete instantiations a prior probability must be given(sum for one context must be 1)
contexts:
  context 1:
    instantiation 1 : float
      .
    instantiation m_1 : float
  context n:
    instantiation 1 : float
      .
    instantiation m_n : float
# List of intentions. Intentions are always binary(either present or not)
# For every intention the context variables and their influence on the intention is given
# [very high, high, medium, low, very low, no] => [5, 4, 3, 2, 1, 0]
intentions: 
  intention 1:
    context 1:
        instantiation 1: int # one out of [5, 4, 3, 2, 1, 0]
        .
        instantiation m_1: int # one out of [5, 4, 3, 2, 1, 0]
    context n:
        instantiation 1: int # one out of [5, 4, 3, 2, 1, 0]
        .
        instantiation m_n: int # one out of [5, 4, 3, 2, 1, 0]
  intention p:
    context 1:
        instantiation 1: int # one out of [5, 4, 3, 2, 1, 0]
        .
        instantiation m_1: int # one out of [5, 4, 3, 2, 1, 0]
    context n:
        instantiation 1: int # one out of [5, 4, 3, 2, 1, 0]
        .
        instantiation m_n: int # one out of [5, 4, 3, 2, 1, 0]
# decision_threshold is a float value between 0 and 1 which decides 
# when an intention should be considered in inference.
# Probability must be greater than decision_threshold.
decision_threshold: float

How to contribute

If you find any Bugs or want to contribute/suggest a new feature you can create a Merge Request / Pull Request or contact me directly via [email protected]

Run tests

Tests are implemented with pytest. To install test dependencies you need to run

pip install -r requirements/test_requirements.txt

Then you can run

python -m pytest tests/

You can as well see the test report for a specific commit in gitlab under pipeline->Tests

Coverage

If you want to see coverage for the tests you can run

coverage run -m pytest tests/

Use

coverage report

or

coverage html

You can as well see the coverage for a specific job in gitlab under jobs

To show results of the coverage analysis.

Build docu

Documentation is implemented with the material theme for mkdocs.

Dependencies

Install all dependencies for building the docu with

pip install -r requirements/doc_requirements.txt

Build

Build the docu with

mkdocs build

The documentation will be in the site folder.

Authors

Adrian Lubitz & Arunima Gopikrishnan

Funding

CoBaIR is currently developed in the Robotics Group of the University of Bremen, together with the Robotics Innovation Center of the German Research Center for Artificial Intelligence (DFKI) in Bremen. CoBaIR has been funded by the German Federal Ministry for Economic Affairs and Energy and the German Aerospace Center (DLR). CoBaIR been used and/or developed in the KiMMI-SF project.

cobair's People

Contributors

arunima-code avatar malter avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

arunima-code

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.