Views
No views yet
zaleni/MagicBot-VGA-Robotwin
with the MagicBot-VGA codebase.1git clone https://github.com/zaleni/MagicBot-VGA.git
2cd MagicBot-VGA1conda create -y -n magicbot python=3.10
2conda activate magicbot
3pip install --upgrade pipconda install -c conda-forge ffmpeg=7.1.1 svt-av1 -y1pip install torch==2.7.1 torchvision==0.22.1 torchaudio==2.7.1 \
2 --index-url https://download.pytorch.org/whl/cu1281pip install torchcodec numpy scipy transformers==4.57.1 mediapy loguru pytest omegaconf
2pip install -e .CubeV2, the recommended dependency is the official Hugging Face Qwen3-VL
implementation provided by transformers>=4.57.0.CubeV2 imports Qwen3-VL directly from:1from transformers.models.qwen3_vl import modeling_qwen3_vl
2from transformers.models.qwen3_vl import Qwen3VLForConditionalGeneration, Qwen3VLTextModeltransformers if your environment
already uses a recent enough official version such as transformers==4.57.1.src/lerobot/policies/cubev2/transformers_replace/models/qwen3_vl/modeling_qwen3_vl.pyzaleni/MagicBot-VGA-Robotwin should not need it unless they intentionally want to
reproduce a specific local patched behavior.git submodule update --init third_party/RoboTwin<repo_root>/third_party/RoboTwin1MagicBot-VGA/
2 evaluation/
3 launch/
4 src/
5 third_party/
6 RoboTwin/third_party/RoboTwin, orthird_party/RoboTwin pointing to your existing RoboTwin directorythird_party/RoboTwin directly.sudo apt install -y libvulkan1 mesa-vulkan-drivers vulkan-tools1cp evaluation/RoboTwin/requirements.txt third_party/RoboTwin/script/requirements.txt
2cd third_party/RoboTwin
3bash script/_install.sh
4bash script/_download_assets.sh
5cd ../../zaleni/MagicBot-VGA-Robotwin is intended to be lightweight.
For RoboTwin action evaluation, you should provide the external backbone/tokenizer assets explicitly.Qwen/Qwen3-VL-2B-Instructnvidia/Cosmos-Tokenizer-CI8x81QWEN3_VL_PATH=/path/to/Qwen3-VL-2B-Instruct
2COSMOS_TOKENIZER_PATH=/path/to/Cosmos-Tokenizer-CI8x8DISABLE_DA3_TEACHER_FOR_EVAL=trueevaluation/RoboTwin/inference.py on a single RoboTwin task.0 (adjust_bottle) on demo_clean:1cd third_party/RoboTwin
2
3python ../../evaluation/RoboTwin/inference.py \
4 --args.ckpt_path zaleni/MagicBot-VGA-Robotwin \
5 --args.video_dir ../../evaluation/RoboTwin/output_magicbot/demo_clean/task_00 \
6 --args.task_config demo_clean \
7 --args.task_idx 0 \
8 --args.action_mode delta \
9 --args.stats_key aloha \
10 --args.dtype bfloat16 \
11 --args.qwen3_vl_pretrained_path Qwen/Qwen3-VL-2B-Instruct \
12 --args.qwen3_vl_processor_path Qwen/Qwen3-VL-2B-Instruct \
13 --args.cosmos_tokenizer_path_or_name nvidia/Cosmos-Tokenizer-CI8x8 \
14 --args.disable_3d_teacher_for_eval--args.ckpt_path: model repo id or local pretrained_model directory--args.task_config: demo_clean or demo_randomized--args.task_idx: task index in evaluation/RoboTwin/inference.py--args.action_mode: usually delta for this model--args.stats_key: usually aloha for RoboTwin--args.dtype: bfloat16 is recommended on modern GPUs--args.video_dir, including:summary.jsonsummary.txt1PRETRAINED_CKPT=zaleni/MagicBot-VGA-Robotwin \
2QWEN3_VL_PRETRAINED_PATH=Qwen/Qwen3-VL-2B-Instruct \
3QWEN3_VL_PROCESSOR_PATH=Qwen/Qwen3-VL-2B-Instruct \
4COSMOS_TOKENIZER_PATH_OR_NAME=nvidia/Cosmos-Tokenizer-CI8x8 \
5DISABLE_DA3_TEACHER_FOR_EVAL=true \
6GPU_IDS=0,1 \
7MAX_JOBS_PER_GPU=2 \
8bash evaluation/RoboTwin/eval_randomized_50.shPRETRAINED_CKPT: model repo id or local checkpoint directoryGPU_IDS: comma-separated GPU ids, for example 0,1,2,3MAX_JOBS_PER_GPU: parallel RoboTwin jobs per GPUTASK_CONFIG: defaults to demo_randomizedTEST_NUM: number of episodes per taskDTYPE: bfloat16 or float32BASE_OUTPUT_PATH: output root directorytasks/summary.jsonsummary.txteval_randomized_50.sh supports continuous ranges through:START_TASK_IDXTASK_COUNT10 to 19:1PRETRAINED_CKPT=zaleni/MagicBot-VGA-Robotwin \
2QWEN3_VL_PRETRAINED_PATH=Qwen/Qwen3-VL-2B-Instruct \
3QWEN3_VL_PROCESSOR_PATH=Qwen/Qwen3-VL-2B-Instruct \
4COSMOS_TOKENIZER_PATH_OR_NAME=nvidia/Cosmos-Tokenizer-CI8x8 \
5DISABLE_DA3_TEACHER_FOR_EVAL=true \
6START_TASK_IDX=10 \
7TASK_COUNT=10 \
8bash evaluation/RoboTwin/eval_randomized_50.shopen-gigaai/CVPR-2026-RoboTwin-Track-LeaderBoard,
we use the following 11-task subset:[2, 3, 9, 10, 12, 15, 17, 25, 28, 30, 44]evaluation/RoboTwin/inference.py are:blocks_ranking_rgbblocks_ranking_sizehandover_michanging_mugmove_can_potmove_stapler_padopen_microwaveplace_can_basketplace_dual_shoesplace_fanstack_blocks_three1cd third_party/RoboTwin
2
3TASKS=(2 3 9 10 12 15 17 25 28 30 44)
4for t in "${TASKS[@]}"; do
5 python ../../evaluation/RoboTwin/inference.py \
6 --args.ckpt_path zaleni/MagicBot-VGA-Robotwin \
7 --args.video_dir ../../evaluation/RoboTwin/output_magicbot/custom_subset/task_${t} \
8 --args.task_config demo_randomized \
9 --args.task_idx "${t}" \
10 --args.action_mode delta \
11 --args.stats_key aloha \
12 --args.dtype bfloat16 \
13 --args.qwen3_vl_pretrained_path Qwen/Qwen3-VL-2B-Instruct \
14 --args.qwen3_vl_processor_path Qwen/Qwen3-VL-2B-Instruct \
15 --args.cosmos_tokenizer_path_or_name nvidia/Cosmos-Tokenizer-CI8x8 \
16 --args.disable_3d_teacher_for_eval
17donesummary.json and summary.txt.1python util_scripts/package_robotwin_submission.py \
2 --run /path/to/output_randomized_50/<run_name>/summary.txt \
3 --dst /path/to/output_randomized_50/<run_name>/submission_package \
4 --overwrite --policy-dir /path/to/policy/Your_Policysubmission_package/<task_name>/episode0.mp4, episode1.mp4, ...package_manifest.txtselected_task_summary.jsonselected_task_summary.txtsuccess_ratesuccess_count and test_numavg_task_success_rate across the 11 tasksoverall_episode_success_rate across all episodes in the 11-task subsetevaluation/RoboTwin/inference.py.0: adjust_bottle2: blocks_ranking_rgb3: blocks_ranking_size9: handover_mic10: hanging_mug12: move_can_pot15: move_stapler_pad17: open_microwave25: place_can_basket28: place_dual_shoes30: place_fan44: stack_blocks_threeinference.py can load checkpoints from either a local directory or a Hugging Face repo id.--args.disable_3d_teacher_for_eval enabled is recommended.--args.decode_image_flag, though this is not required for standard RoboTwin scoring.