Tools to manipulate and use task models for human robot collaboration.
If you are using this software and or one of its components, we warmly recommend you to cite the following paper:
[Roncone2017] | (1, 2) Roncone Alessandro, Mangin Olivier, Scassellati Brian Transparent Role Assignment and Task Allocation in Human Robot Collaboration IEEE International Conference on Robotics and Automation (ICRA 2017), Singapore. [PDF] [BIB] |
The top-level directories contain the following code:
samples
: scripts,tests
: unittests (runpython -m unittest discover tests
),visualization
: task models and policies visualizations based on d3.js <https://d3js.org/>.
The code from the task_models
package contains a set of classes to
represents models of tasks for human robot collaboration and in particular
hierarchical task models. The code mostly consists in the following components:
- The
state.py
andaction.py
modules define useful classes used intask.py
. In addition to providing useful objects to represent hierarchies of task (HTM), the latter also implements the techniques for extracting such structure that were introduced in [Hayes2016]. - The
lib
directory provides: -pomdp.py
: a python wrapper to Anthony Cassandra's POMDP solver. Please visit pomdp.org. -pomcp.py
: a partial implementation of [Silver2010], -belief.py
: belief representations, -py23.py
: compatibility code for python 2 and 3, -utils.py
: additional helpers. utils
is a clone of https://github.com/omangin/python-utils.task_to_pomdp.py
: code mostly used for [Roncone2017].
[Silver2010] | Silver, David and Veness, Joel Monte-Carlo Planning in Large POMDPs (2010) |
[Hayes2016] | Hayes, Bradley and Scassellati, Brian Autonomously constructing hierarchical task networks for planning and human-robot collaboration, IEEE International Conference on Robotics and Automation (ICRA 2016) |
This package requires a binary from Anthony Cassandra's POMDP solver. Please visit pomdp.org for any matter related to the POMDP solver. In order to be using the simplex finite grid method, a fork of the version from cmansley needs to be installed that contains a fix to the original code. You can get the fork here.
The python code is looking for the pomdp-solve
executable in your $PATH
. Here are some instructions on how to compile and install the solver properly (assuming that ~/src
is the directory in which you usually place your code):
cd ~/src git clone https://github.com/scazlab/pomdp-solve cd pomdp-solve mkdir build cd build/ ../configure --prefix=$HOME/.local make make install
Make sure that ~/.local/bin
is in yout path and now you should have pomdp-solve
installed in it, and it should be available for the python package to be used.
To generate the policy from the experiment in [Roncone2017], please use the script samples/icra_scenario2pomdp.py
. The script will generate the corresponding POMDP model, solve it with Anthony Cassandra's POMDP solver, and store the corresponding policy under visualization/policy/json/icra.json
. To run the full experiment on the baxter robot, please refer to github.com/ScazLab/baxter_collaboration.