flowbothd
FlowBotHD: History-Aware Diffuser Handling Ambiguities in Articulated Objects Manipulation
Science Score: 36.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: arxiv.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.9%) to scientific vocabulary
Repository
FlowBotHD: History-Aware Diffuser Handling Ambiguities in Articulated Objects Manipulation
Basic Info
- Host: GitHub
- Owner: liy1shu
- Language: Jupyter Notebook
- Default Branch: main
- Homepage: https://flowbothd.github.io/
- Size: 92.2 MB
Statistics
- Stars: 12
- Watchers: 1
- Forks: 1
- Open Issues: 1
- Releases: 0
Metadata Files
README.md
FlowBotHD: History-Aware Diffuser Handling Ambiguities in Articulated Objects Manipulation
FlowBotHD is a history-aware diffusion handling ambiguities (multi-modality and occlusion) in articulated objects.

Paper: https://arxiv.org/abs/2410.07078
Project Website: https://flowbothd.github.io/
Installation
```{bash} conda create -n flowbothd python=3.9
conda activate flowbothd
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt ```
Note: Make sure you install pytorch with regard to your machine's CUDA version. If you want to change the cuda version, you also need to change the cuda version specified in requirements.txt
Then we have to also install the flowbothd package itself. [Make sure you are directly under the flowbothd directory, where you can see pyproject.toml]
{bash}
pip install .
Demo
For a quick start and overview, our demo.ipynb demonstrates the demo pipeline of generating prediction (given real-world point clouds) and simulation (given any partnet-mobility object) given a pretrained model.
Dataset
Please download PartNet-Mobility Dataset dataset from partnet-mobility. And edit the data_dir in configs/dataset/trajectory.yaml to the path you save your dataset
Train
STEP 0 : Set the config files
0) configs/_logging.yaml:
Set the `wandb.entity` and `wandb.project` for wandb logging.
1) configs/train.yaml:
Choose model
- `model`: diffuser_hispndit (FlowBotHD) / artflownet (FlowBot3D) / other structures we've tried whose names are listed in the configs/model/.
2) configs/dataset/trajectory.yaml
`dataset_type`: full-dataset for training and evaluating on full partnet-mobility, doors-only for training and evaluating only on the most ambiguous category: doors.
3) configs/training/trajectory_{model.name}.yaml
Change the corresponding detailed configs for the training process: `learning_rate`, `batch_size`, `warmup_steps`.
4) configs/model/{model.name}.yaml
Change the detailed configs for the model (Only needed for diffusion)
- `num_train_timesteps`: diffusion timestep
STEP 1 : Run training script
python scripts/train.py
Eval and Simulation
If you want to evaluate (calculate the basic cosine, mag, rmse metrics across dataset) and evaluate the simulation (calculate the success rate, normalized distance) of a trained model:
STEP 0 : Set the config files and specify the ckpt
Specify the checkpoint / run you are evaluating:
Set
checkpoint.run_idandwandb.groupwith the run_id and the group name of the run to be evaluated.Set the same
model,dataset_typeetc as the training config files above.In the evaluation / simulation script you want to run, specify the ckptfile = "PATHFILE"
For simulation:
in
eval_sim.yaml, specifysgp,consistency_check,history_filterfor the 3 policy components.Use
gui = Trueif you want to visualize the simulation process while running (but it will be slower, and don't work on remote ssh.)Use
website = Trueif you want to save all the simulation videos and also generate a website. For website, go to your log directory, and start a server under the specific log directorylog/simu_eval/
STEP 1 : Run evaluation / simulation
For evaluating diffuser-based methods with history (that needs winner-take-all metric, meaning multiple samples and take the best metric):
{bash}
python scripts/eval_history_diffuser_wta.py # For basic evaluation
python scripts/eval_sim_diffuser_history.py # For simulation
python scripts/eval_sim_diffuser.py # For simulation with model trained without history
For evaluating regression-based method (flowbot3d):
{bash}
python scripts/eval.py # For basic evaluation
python scripts/eval_sim.py # For simulation
Run Specified Subset Experiment
Need to change scripts/train.py for training and scripts/eval(_sim).py for evaluation:
When creating dataset, specify the arguments special_req and toy_dataset.
1) special_req:
- "half-half-01"(Part of data fully closed, part of data randomly opened, with 0 or 1-step history)
- "fully-closed"(All of data fully closed)
- "randomly-open"(All of the data randomly open)
2) toy_dataset: a dict to specify a small dataset - id: the name for the toy dataset - train-train: the ids for the training set - train-test: the ids for the validation set - test: the ids for the test set
An Example: ```
Create FlowBot dataset
datamodule = datamoduleclasscfg.dataset.name ```
Then run train and eval exactly like before.
Cite
If you find this codebase useful in your research, please consider citing:
@inproceedings{liflowbothd,
title={FlowBotHD: History-Aware Diffuser Handling Ambiguities in Articulated Objects Manipulation},
author={Li, Yishu and Leng, Wen Hui and Fang, Yiming and Eisner, Ben and Held, David},
booktitle={8th Annual Conference on Robot Learning}
}
Owner
- Login: liy1shu
- Kind: user
- Company: Tsinghua University
- Repositories: 2
- Profile: https://github.com/liy1shu
Be brave and take it slow 💭
GitHub Events
Total
- Issues event: 1
- Watch event: 10
- Issue comment event: 2
- Push event: 8
- Create event: 2
Last Year
- Issues event: 1
- Watch event: 10
- Issue comment event: 2
- Push event: 8
- Create event: 2