guided_tamp_benchmark

This repository contains benchmarking code for the ICRA 2023 submission titled Multi-Contact Task and Motion Planning Guided by Video Demonstration.

https://github.com/agimus-project/guided_tamp_benchmark

Science Score: 44.0%

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

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

Repository

This repository contains benchmarking code for the ICRA 2023 submission titled Multi-Contact Task and Motion Planning Guided by Video Demonstration.

Basic Info
  • Host: GitHub
  • Owner: agimus-project
  • License: bsd-3-clause
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 39.9 MB
Statistics
  • Stars: 10
  • Watchers: 1
  • Forks: 1
  • Open Issues: 2
  • Releases: 2
Created over 3 years ago · Last pushed about 1 year ago
Metadata Files
Readme License Citation

README.md

GuidedTAMPBenchmark

PyPI version static_code_analysis

This repository contains code for benchmarking/evaluating task-and-motion-planners guided by video demonstration. The code was used in ICRA 2023 submission entitled Multi-Contact Task and Motion Planning Guided by Video Demonstration:

bibtex @inproceeding{2023ICRA_Zorina, author = {Zorina, Kateryna and Kovar, David and Lamiraux, Florent and Mansard, Nicolas and Carpentier, Justin and Sivic, Josef and Petrik, Vladimir}, title = {{Multi-contact task and motion planning guided by video demonstration.}}, booktitle={ICRA 2023-International Conference on Robotics and Automation}, year={2023} }

Additional resources: ICRA2023 planner source code, Project page, Video overview

Installation

Stable version: bash pip install guided-tamp-benchmark For development: bash git clone https://github.com/agimus-project/guided_tamp_benchmark.git conda create -n gtamp python=3.10 poetry conda activate gtamp poetry install

Usage

To evaluate your planner, you need to implement all abstract methods from core.planner.BasePlanner class. Then you can use our benchmarking script to evaluate it, for example: ```python task = ShelfTask(1, PandaRobot(), 2) b = Benchmark() b.dobenchmark( task=task, planner=YourPlannerCls, seeds=[1], plannerarg={"verbose": True,}, maxplanningtime=60, delta=0.001, )

``` See our examples directory for more information or our ICRA2023 planner https://github.com/agimus-project/tampguidedby_video that utilizes this benchmark for the evaluation.

Benchmark variability

Tasks

There are three tasks implemented: Shelf Task, Waiter Task, and Tunnel Task. Here is an example of task initialization:

```python from guidedtampbenchmark.tasks import ShelfTask from guidedtampbenchmark.models.robots import *

task = ShelfTask(0, PandaRobot(), 1) ```

In this example, a Shelf Task with the first demonstration (i.e., number 0) is created with Panda Robot which base is placed at the reference pose number 1.

Shelf Task

The shelf task is composed of a table, a shelf and a varying set of objects that the robotic manipulator is supposed to arrange, i.e. to move the objects to the predefined poses on the table or on the shelf. The complexity of the task is controlled by the number of objects that the robot should arrange. This task is challenging for state-of-the-art planners because it requires moving multiple objects in a single planning task.

Tunnel Task

The tunnel task consists of a tunnel and a single object that should be transferred through the tunnel. The tunnel is thin enough so that the robot can place an object inside the tunnel on one side and pick it up from the other side. The challenge lies in the narrow passage in the admissible configuration space that needs to be discovered by the planner.

Waiter Task

The waiter task simulates the job of waiter, in which a set of objects needs to be transferred from one location to another distant location. Waiters use a tray to minimize the walked distance. In our simulation, a mobile robot is equipped with a tray-like space that it can use for transferring objects. Discovering the tray in the planning state-space is non-trivial, which makes this task challenging for the planners that do not utilize demonstrations

Robots

We implemented following robots for benchmarking: - Panda robot (fixed base, 7DoF), - UR5 robot (fixed base, 6DoF), - KUKA IIWA robot (fixed base, 7DoF), - KUKA KMR IIWA robot (mobile base, 7+3DoF).

Code structure

Core

In guided_tamp_benchmark.core is description of base planner function that is compatible with benchmarking script and is to be used as template. Description of configuration class, used for storing scene configuration, and path class, which is a template class for storing path planned by planner is also there.

Models

In guided_tamp_benchmark.models is description of robots, furniture and objects used in different tasks of benchmark.

Scripts

In guided_tamp_benchmark.scripts is class benchmark that can be used for running benchmark on planner.

Tasks

In guided_tamp_benchmark.tasks are classes with descriptions of benchmarking tasks, renderer, demonstration class used for storing and loading demonstration files saved as .pkl files and collision class used for collision checking for path evaluation.

Acknowledgment

This work is part of the AGIMUS project, funded by the European Union under GA no.101070165. Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or the European Commission. Neither the European Union nor the European Commission can be held responsible for them. This work was funded by the European Regional Development Fund under the project IMPACT (reg. No. CZ.02.1.01/0.0/0.0/15_003/0000468), the Grant Agency of the Czech Technical University in Prague, grant No. SGS21/178/OHK3/3T/17.

Owner

  • Name: agimus-project
  • Login: agimus-project
  • Kind: organization

Citation (CITATION.cff)

cff-version: 1.2.0
title: >-
  Multi-contact task and motion planning guided by video
  demonstration.
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Kateryna
    family-names: Zorina
    email: kateryna.zorina@cvut.cz
    affiliation: 'CIIRC, CVUT'
  - given-names: David
    family-names: Kovar
    affiliation: 'CIIRC, CVUT'
  - given-names: Florent
    family-names: Lamiraux
    affiliation: 'LAAS, CNRS'
  - given-names: Nicolas
    family-names: Mansard
    affiliation: 'LAAS, CNRS'
  - given-names: Justin
    family-names: Carpentier
    affiliation: 'INRIA'
  - given-names: Josef
    family-names: Sivic
    affiliation: 'CIIRC, CVUT'
  - given-names: Vladimir
    family-names: Petrik
    email: vladimir.petrik@cvut.cz
    affiliation: 'CIIRC, CVUT'
identifiers:
  - type: url
    value: >-
      https://hal.laas.fr/hal-03945110/file/2022_Kateryna__Video_Guided_Task_and_Motion_Planner.pdf
    description: Conference paper describing the benchmark.
abstract: >-
  This work aims at leveraging instructional video to guide
  the solving of complex multi-contact task-and-motion
  planning tasks in robotics. Towards this goal, we propose
  an extension of the well-established Rapidly-Exploring
  Random Tree (RRT) planner, which simultaneously grows
  multiple trees around grasp and release states extracted
  from the guiding video. Our key novelty lies in combining
  contact states, and 3D object poses extracted from the
  guiding video with a traditional planning algorithm that
  allows us to solve tasks with sequential dependencies, for
  example, if an object needs to be placed at a specific
  location to be grasped later. To demonstrate the benefits
  of the proposed video-guided planning approach, we design
  a new benchmark with three challenging tasks: (i) 3D
  rearrangement of multiple objects between a table and a
  shelf, (ii) multi-contact transfer of an object through a
  tunnel, and (iii) transferring objects using a tray in a
  similar way a waiter transfers dishes. We demonstrate the
  effectiveness of our planning algorithm on several robots,
  including the Franka Emika Panda and the KUKA KMR iiwa.

GitHub Events

Total
  • Issues event: 1
  • Watch event: 2
  • Push event: 3
  • Pull request event: 1
  • Create event: 1
Last Year
  • Issues event: 1
  • Watch event: 2
  • Push event: 3
  • Pull request event: 1
  • Create event: 1

Dependencies

.github/workflows/publish.yml actions
  • JRubics/poetry-publish v1.17 composite
  • actions/checkout v3 composite
.github/workflows/static_code_analysis_and_tests.yml actions
  • actions/checkout v3 composite
  • conda-incubator/setup-miniconda v2 composite
poetry.lock pypi
  • attrs 22.2.0 develop
  • black 23.3.0 develop
  • click 8.1.3 develop
  • exceptiongroup 1.1.1 develop
  • iniconfig 2.0.0 develop
  • mypy-extensions 1.0.0 develop
  • packaging 23.0 develop
  • pathspec 0.11.1 develop
  • platformdirs 3.2.0 develop
  • pluggy 1.0.0 develop
  • pytest 7.2.2 develop
  • ruff 0.0.260 develop
  • appnope 0.1.3
  • asttokens 2.2.1
  • backcall 0.2.0
  • cffi 1.15.1
  • cmeel 0.35.0
  • cmeel-assimp 5.2.5
  • cmeel-boost 1.81.0
  • cmeel-console-bridge 1.0.2.1
  • cmeel-octomap 1.9.8.1
  • cmeel-tinyxml 2.6.2.1
  • cmeel-urdfdom 3.1.0.1
  • colorama 0.4.6
  • decorator 5.1.1
  • dill 0.3.6
  • eigenpy 2.9.2
  • executing 1.2.0
  • hpp-fcl 2.3.1
  • imageio 2.27.0
  • imageio-ffmpeg 0.4.8
  • ipython 8.12.0
  • jedi 0.18.2
  • matplotlib-inline 0.1.6
  • meshcat 0.3.2
  • numpy 1.24.2
  • parso 0.8.3
  • pexpect 4.8.0
  • pickleshare 0.7.5
  • pillow 9.5.0
  • pin 2.6.17
  • prompt-toolkit 3.0.38
  • ptyprocess 0.7.0
  • pure-eval 0.2.2
  • pycparser 2.21
  • pygments 2.14.0
  • pyngrok 5.2.1
  • pyyaml 6.0
  • pyzmq 25.0.2
  • robomeshcat 1.1.1
  • six 1.16.0
  • stack-data 0.6.2
  • tomli 2.0.1
  • tornado 6.2
  • traitlets 5.9.0
  • trimesh 3.21.3
  • u-msgpack-python 2.7.2
  • wcwidth 0.2.6
pyproject.toml pypi
  • dill ^0.3.6
  • numpy ^1.24.2
  • pin ^2.6.17
  • python ^3.8
  • robomeshcat ^1.1.1