README.md

July 20, 2024 · View on GitHub

BiGym

PRs

BiGym: A Demo-Driven Mobile Bi-Manual Manipulation Benchmark
Nikita Cherniadev*, Nicholas Backshall*, Xiao Ma*, Yunfan Lu, Younggyo Seo, Stephen James

BiGym is a new benchmark and learning environment for mobile bi-manual demo-driven robotic manipulation. BiGym features 40 diverse tasks set in home environments, ranging from simple target reaching to complex kitchen cleaning. To capture the real-world performance accurately, we provide human-collected demonstrations for each task, reflecting the diverse modalities found in real-world robot trajectories. BiGym supports a variety of observations, including proprioceptive data and visual inputs such as RGB, and depth from 3 camera views.

For latest updates, check our project page: https://chernyadev.github.io/bigym/

Table of Contents

  1. Install
  2. Tasks
  3. Usage
  4. Contributing

Install

pip install .

Tasks

TaskDescriptionPreview
ReachTargetReach the target with either left or right wrist.
ReachTargetSingleReach the target with specific wrist.
ReachTargetDualReach 2 targets, one with each arm.
StackBlocksMove blocks across the table, and stack them in the target area.
MovePlateMove the plate between two draining racks.
MoveTwoPlatesMove two plates simultaneously from one draining rack to the other.
FlipCupFlip the cup, initially positioned upside down on the table, to an upright position.
FlipCutleryTake the cutlery from the static holder, flip it, and place it back into the holder.
DishwasherOpenOpen the dishwasher door and pull out all trays.
DishwasherClosePush back all trays and close the door of the dishwasher.
DishwasherOpenTraysPull out the dishwasher’s trays with the door initially open.
DishwasherCloseTraysPush the dishwasher’s trays back with the door initially open.
DishwasherLoadPlatesMove plates from the rack to the lower tray of the dishwasher.
DishwasherLoadCupsMove cups from the table to the upper tray of the dishwasher.
DishwasherLoadCutleryMove cutlery from the table holder to the dishwasher’s cutlery basket.
DishwasherUnloadPlatesMove plates from the tray of the dishwasher to a table rack.
DishwasherUnloadCupsMove cups from the upper tray of the dishwasher to the table.
DishwasherUnloadCutleryMove cutlery from the cutlery basket to a tray on the table.
DishwasherUnloadPlatesLongA full task of unloading a plate: picking up the plate from dishwasher, placing this plate into the rack located in the closed wall cabinet, and closing the dishwasher and cupboard.
DishwasherUnloadCupsLongA full task of unloading a cup: picking up the cup, placing it inside the closed wall cabinet, and closing the dishwasher and cupboard.
DishwasherUnloadCutleryLongA full task of unloading a cutlery: picking up a cutlery, placing it into the cutlery tray inside the closed drawer, and closing the dishwasher and drawer.
DrawerTopOpenOpen the top drawer of the kitchen cabinet.
DrawerTopCloseClose the top drawer of the kitchen cabinet.
DrawersAllOpenOpen all sliding drawers of the kitchen cabinet.
DrawersAllCloseClose all sliding drawers of the kitchen cabinet.
WallCupboardOpenOpen doors of the wall cabinet.
WallCupboardCloseClose doors of the wall cabinet.
CupboardsOpenAllOpen all drawers and doors of the kitchen set.
CupboardsCloseAllClose all drawers and doors of the kitchen set.
PutCupsPick up cups from the table and put them into the closed wall cabinet.
TakeCupsTake two cups out from the closed wall cabinet and put them on the table.
PickBoxPick up a large box from the floor and place it on the counter.
StoreBoxMove a large box from the counter to the shelf in the cabinet below.
SaucepanToHobTake the saucepan from the closed cabinet and place it on the hob.
StoreKitchenwareTake all items from the hob and place them in the cabinet below.
ToastSandwichUse the spatula to put the sandwich on the frying pan.
FlipSandwichFlip the sandwich in the frying pan using the spatula.
RemoveSandwichTake the sandwich out of the frying pan.
GroceriesStoreLowerPlace a random set of groceries in the cabinets below the counter.
GroceriesStoreUpperPlace a random set of groceries in cabinets and shelves on the wall.

Usage

Directly instantiate the task of interest. Tasks are located in bigym/envs/.

from bigym.action_modes import TorqueActionMode
from bigym.envs.reach_target import ReachTarget
from bigym.utils.observation_config import ObservationConfig, CameraConfig

env = ReachTarget(
    action_mode=TorqueActionMode(floating_base=True),
    observation_config=ObservationConfig(
        cameras=[
            CameraConfig(
                name="head",
                rgb=True,
                depth=False,
                resolution=(128, 128),
            )
        ],
    ),
    render_mode=None,
)

Use ActionModes to parameterise how you want to control your robot.

Working with demonstrations

Demo Store

Please see simple example here: examples/replay_demo.py.

Demonstrations are automatically downloaded from GitHub releases. When demos are requested by calling DemoStore.get_demos(). The current dataset will be cached locally at $HOME/.bigym/v0.0.0. Demonstrations with custom observations and frequency are also cached to $HOME/.bigym/v0.0.0.

⚠️ Warning: We are working on the dataset. Not all demonstrations will result in successful completion of the task. Please validate before use.

⚠️ Warning: The current dataset includes demonstrations for the following action modes only:

  • JointPositionActionMode(floating_base=True, absolute=True)
  • JointPositionActionMode(floating_base=True, absolute=False)

Demo Player

Replay existing demos using GUI player.

python tools/demo_player/main.py

VR Demo Recorder

Record new demos in VR. Follow VR README to configure docker container to run this tool.

python tools/demo_recorder/main.py

Contributing

On each PR, please ensure to bump the:

  • Major version if you alter the existing interface in any way.
  • Minor version if you have added new features (which didn't break the existing interface)
  • Patch version for bug fixes.

Please ensure that you pass pre-commits before opening a PR: pre-commit run --all-files and that you pass all tests: pytest tests/ --run-slow.

Licenses

Citation

If you find our work helpful, please kindly cite us

@article{chernyadev2024bigym,
  title={BiGym: A Demo-Driven Mobile Bi-Manual Manipulation Benchmark},
  author={Chernyadev, Nikita and Backshall, Nicholas and Ma, Xiao and Lu, Yunfan and Seo, Younggyo and James, Stephen},
  journal={arXiv preprint arXiv:2407.07788},
  year={2024}
}