This repository provides a Simultaneous Task Allocation And Motion Scheduling (STAAMS) Solver based on Constraint Programming (CP), including a running example. The provided method is described in the paper "A Constraint Programming Approach to Simultaneous Task Allocation and Motion Scheduling for Industrial Dual-Arm Manipulation Tasks" by Behrens et al., accepted for ICRA 2019. An extended version of the paper is available at arXiv:1901.07914 [cs.RO].
This software is a research prototype, solely developed for and published as part of the publications cited above. It will neither be maintained nor monitored in any way.
We developed and tested using Ubuntu 16.04 and ROS Kinetic. Core dependecies are:
echo "deb http://downloads.skewed.de/apt/xenial xenial universe" >> /etc/apt/sources.list
echo "deb-src http://downloads.skewed.de/apt/xenial xenial universe" >> /etc/apt/sources.list
apt-key adv --keyserver pgp.skewed.de --recv-key 612DEFB798507F25
apt-get update && apt-get install -y --allow-unauthenticated \
build-essential python-pip python-graph-tool liblmdb
pip install --upgrade lmdb pip catkin_tools ortools plotly --user
Clone the repository into a ROS workspace. Execute from inside the src folder
git clone https://github.com/boschresearch/STAAMS-Solver.git
rosdep install --from-paths . --ignore-src -r -y
We use the install space for some example data. To enable the use of the install space, execute:
catkin config --install
Build it using catkin-tools.
catkin build
This will start a gazebo simulation, RVIZ visualization, the planning infrastructure (scenegraph, planner, and motion executor), and a script using these to plan a small example of moving four blocks from the table.
rosrun nextage_cp_adapter startup.py
rosrun cp_planning_examples example_scene_manager.py
rosrun roadmap_planner prm_planner_node.py
rosrun roadmap_planner motion_dispatcher.py
rosrun cp_planning_examples four_blocks_01.py
- 3rd-party contains dependencies which are not available as Ubuntu package
- cp_planning_examples provides examples for the solver usage
- nextage_cp_adapter contains a ros package defining the robot dependencies and adapting it for the STAAMS solver
- roadmap_planner is a ROS package which defines the planner, a wrapping node, the motion dispatcher (moves the robot in simulation)
- roadmap_planner_tools is a ROS package which holds misc tools for the roadmap planner. Mainly a helper script to build a planner input data structure is provided
- roadmap_planner_common_msgs defines messages and services
- roadmap_tools holds data structures and ros nodes (scene-graph, roadmap, visualization)
STAAMS-Solver is open-sourced under the BSD-3-Clause license. See the LICENSE file for details.
For a list of other open source components included in Benchmarks, see the file 3rd-party-licenses.txt.