Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.0%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: damgaardmr
  • License: mit
  • Language: Python
  • Default Branch: main
  • Size: 385 MB
Statistics
  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Created almost 5 years ago · Last pushed over 3 years ago
Metadata Files
Readme License Citation

docs/README.md

Welcome to the ProbMind project

The goal of this project is to develop a series of generally applicable and reusable code fragments of probabilistic programs, what we refer to as probabilistic idioms, for use in cognitive robotics. For an extensive introduction to the background behind this project please consult @misc{damgaard2021idiomatic, title={Toward an Idiomatic Framework for Cognitive Robotics}, author={Malte R. Damgaard and Rasmus Pedersen and Thomas Bak}, year={2021}, eprint={2111.13027}, archivePrefix={arXiv}, primaryClass={cs.RO}, url={https://arxiv.org/abs/2111.13027} } If you like this work or use it in your scientific projects, please use the reference above.

To try out the code remember to clone submodules e.g. by running: git clone --recurse-submodules https://github.com/damgaardmr/probMind.git and install the project dependencies. Then you can run any of the example scripts via the code in their respective READMEs. The current dependencies of the project can be installed as a conda environment via the command: $ conda env create -f probmind/conda_environment_cross_platform.yml This will install a conda environment called "probMindenvcross_platform" with the necessary dependencies.

Collaboration/Contributions

If you would like to collaborate on this project or anything related, or make contributions to the project, feel free to reach out to Malte R. Damgaard preferable via email

Background

For a long time, it has been recognized that a hybrid symbolic-subsymbolic approach is probably the best for developing systems with general intelligent autonomous behavior. Until now, the incorporation of sub-symbolic probabilistic processing has been limited due to the available inference algorithms and the computational cost associated with these. Therefore, often problem-specific code optimizations have been necessary to obtain computationally tractable systems. However, with the latest advancements in probabilistic programming, such probabilistic processing have become way more tractable and flexible. As a result, this project seeks to implement generally applicable and reusable code fragments of probabilistic programs for use in cognitive robotics. To do this, this project is built around the probabilistic programming language Pyro.

Cognition

This module is supposed to contain the implementations of reusable probabilistic idioms. Currently, it only contains the "Planning" idiom, which can be used to reason about future optimal actions.

Examples

This module contains a series of projects incorporating general probabilistic idioms into problem-specific use cases.

robotPlanning

This set of simulations illustrates different use cases of the planning idiom. The simulations utilizes the HouseExpo dataset and a modified version of their simulator, to generate realistic SLAM output in the form of a map and estimated position. Currently, 3 different simulation scenarios have been implemented:

For more information consult the simulation README

multiRobotPlanning (HAVE NOT BEEN UPDATED - check one of the older versions)

This simulation illustrates the use of the "Planning" idiom for multi-robot navigation. The goal of each robot is to navigate between two alternating goal zones without colliding with the other robots. The motivation behind this simulation is two folds: - It illustrates how SVI and message-passing can be combined to de-centralize the computational burden of complex problems - It illustrates a simplistic implementation of the Theory of Mind

The readme for this simulation can be found at - Multi-Robot Planning

TODO/NEW IDEAS/Future Work

  • [X] how to detect when an impasse occurs?
  • [ ] General optimization of code
  • [ ] implement constraint between states, i.e. between zstau and zstauMinus1
  • [ ] Introduce memorable states - i.e. states where we had multiple choices - this would also require the implementation of sub-goals
  • [ ] Implement hierarchical or parallel decisions/planning with intertwined subgoals and shared states, constraints, PB, etc. - via msg-passing algorithms?
  • [ ] Attention mechanism to direct sampling - i.e. we should consider more samples in the direction of the action
  • [ ] Add uncertainty to LTM variables that have not been updated for a long time? corresponding to loss of memory
  • [ ] consider a Geometric distribution as prior (i.e. in the model) over the number of options (K) - many times there only exists 1 option, but sometimes we have an unknown number of options (at least at compile time)
  • [ ] consider a Geometric distribution as prior (i.e. in the model) over the number of planning timesteps (T) - often it is sufficient to only plan a few time steps into the future (fast inference), e.g. when exploring, however, sometimes it would be advantageous to plan further into the future (high "T" mean slower inference), e.g. when planning to reach a specific state.
  • [ ] consider implementing rejection sampling for Hard constraints?
  • [ ] introduce a baseline when using goals
  • [ ] Validate performance on physical robots

GitHub Events

Total
Last Year