|
# Tasks |
|
|
|
### Descriptions |
|
|
|
This folder contains a total of 10 goal-conditioned (language or image) and 8 demo-conditioned (original TransporterNets) tasks. 8 out of the 10 goal-conditioned tasks contain two splits: **seen** and **unseen**. The **full** version is a union of both **seen** and **unseen** attributes made specifically for multi-attr training. Sequential tasks that involve following instructions in a specific order are indicated by **seq** in their names. |
|
|
|
See [__init__.py](__init__.py) for the full list of demo-conditioned and goal-conditioned (language or image) tasks: |
|
|
|
```python |
|
# demo conditioned |
|
'align-box-corner': AlignBoxCorner, |
|
'assembling-kits': AssemblingKits, |
|
'assembling-kits-easy': AssemblingKitsEasy, |
|
'block-insertion': BlockInsertion, |
|
'block-insertion-easy': BlockInsertionEasy, |
|
'block-insertion-nofixture': BlockInsertionNoFixture, |
|
'block-insertion-sixdof': BlockInsertionSixDof, |
|
'block-insertion-translation': BlockInsertionTranslation, |
|
'manipulating-rope': ManipulatingRope, |
|
'packing-boxes': PackingBoxes, |
|
'palletizing-boxes': PalletizingBoxes, |
|
'place-red-in-green': PlaceRedInGreen, |
|
'stack-block-pyramid': StackBlockPyramid, |
|
'sweeping-piles': SweepingPiles, |
|
'towers-of-hanoi': TowersOfHanoi, |
|
|
|
# goal conditioned |
|
'align-rope': AlignRope, |
|
'assembling-kits-seq-seen-colors': AssemblingKitsSeqSeenColors, |
|
'assembling-kits-seq-unseen-colors': AssemblingKitsSeqUnseenColors, |
|
'assembling-kits-seq-full': AssemblingKitsSeqFull, |
|
'packing-shapes': PackingShapes, |
|
'packing-boxes-pairs-seen-colors': PackingBoxesPairsSeenColors, |
|
'packing-boxes-pairs-unseen-colors': PackingBoxesPairsUnseenColors, |
|
'packing-boxes-pairs-full': PackingBoxesPairsFull, |
|
'packing-seen-google-objects-seq': PackingSeenGoogleObjectsSeq, |
|
'packing-unseen-google-objects-seq': PackingUnseenGoogleObjectsSeq, |
|
'packing-seen-google-objects-group': PackingSeenGoogleObjectsGroup, |
|
'packing-unseen-google-objects-group': PackingUnseenGoogleObjectsGroup, |
|
'put-block-in-bowl-seen-colors': PutBlockInBowlSeenColors, |
|
'put-block-in-bowl-unseen-colors': PutBlockInBowlUnseenColors, |
|
'put-block-in-bowl-full': PutBlockInBowlFull, |
|
'stack-block-pyramid-seq-seen-colors': StackBlockPyramidSeqSeenColors, |
|
'stack-block-pyramid-seq-unseen-colors': StackBlockPyramidSeqUnseenColors, |
|
'stack-block-pyramid-seq-full': StackBlockPyramidSeqFull, |
|
'separating-piles-seen-colors': SeparatingPilesSeenColors, |
|
'separating-piles-unseen-colors': SeparatingPilesUnseenColors, |
|
'separating-piles-full': SeparatingPilesFull, |
|
'towers-of-hanoi-seq-seen-colors': TowersOfHanoiSeqSeenColors, |
|
'towers-of-hanoi-seq-unseen-colors': TowersOfHanoiSeqUnseenColors, |
|
'towers-of-hanoi-seq-full': TowersOfHanoiSeqFull, |
|
``` |
|
|
|
### Generated Tasks by GPT |
|
1. All of them should be automatically imported and exists in `generated_tasks` |
|
|
|
### Adding New Tasks |
|
|
|
See [put_block_in_bowl.py](put_block_in_bowl.py) for an example on how a task is specified. Creating a new task involves: (1) setting up a scene with the desired objects, (2) specifying goals with a language instruction and target "zones" or "poses", (3) defining an evaluation metric that is either sequential or non-sequential. See the original [Ravens codebase](https://github.com/google-research/ravens) for more details on task specification and organization. |
|
|
|
### Correcting COM for Google Scanned Objects |
|
|
|
By default all [Google Scanned Objects](https://app.ignitionrobotics.org/GoogleResearch/fuel/collections/Google%20Scanned%20Objects) have COMs (Center of Mass) at the base of the object, which leads to weird behavior with the physics engine. To correct this, I manually edited the COM of each `.obj` file to be the geometric center of the mesh with [Blender](https://www.blender.org/). See this [guide on editing COMs](https://blender.stackexchange.com/questions/14294/how-to-recenter-an-objects-origin) for reference. After correction, the original `.obj` can be overwritten using Blender's Export option. |
|
|
|
## Credit |
|
|
|
All demo-conditioned are from [Ravens](https://github.com/google-research/ravens). The language-conditioned tasks were built-off the same PyBullet environments. |