A
vision-language reward model for robot locomotion quality assessment, fine-tuned from
MiniCPM-V-2.6 using LoRA. Combines VLM understanding with physics-based normalization for robust scoring across 5 MuJoCo environments.
1 from robomind import RoboMindJudge , hybrid_judge
2
3 # VLM-only judgment
4 judge = RoboMindJudge ( )
5 judge . load ( )
6 result = judge . judge_from_paths ( [ "frame1.jpg" , "frame2.jpg" , "frame3.jpg" ] )
7
8 # Hybrid scoring (with physics data)
9 from robomind . hybrid import hybrid_judge , hybrid_to_dict
10 score = hybrid_judge (
11 vlm_parsed = result ,
12 ep_return = 8000 , min_return = 4000 , max_return = 10000 ,
13 fell = False , tier = "medium" , env = "walker2d" ,
14 )
15 print ( hybrid_to_dict ( score ) )
robomind/
├── robomind/ # Installable Python package
│ ├── __init__.py
│ ├── judge.py # Core VLM judge class
│ ├── hybrid.py # Hybrid VLM + rule-based scoring
│ └── sound.py # Audio-based fall/gait detection
├── app.py # FastAPI web UI (Modal deployment)
├── hybrid_judge.py # Standalone hybrid judge (used by app.py)
├── data_gen_all_modal.py # Data generation (15 env combos x 20 episodes)
├── dataset_build_v2.py # Dataset builder with visual analysis
├── finetune_modal.py # LoRA fine-tune on Modal GPU
├── validation.py # Validation suite on Modal GPU
├── sound_detection.py # Sound detection on Modal
├── tests_comprehensive.py # 18 unit/integration tests
├── pyproject.toml # Package config
└── LICENSE # MIT License
1 # Generate data
2 modal run --detach data_gen_all_modal.py
3
4 # Build dataset
5 modal run dataset_build_v2.py
6
7 # Train (50 epochs, LoRA r=64)
8 modal run --detach finetune_modal.py::full_train
9
10 # Validate
11 modal run validation.py
12
13 # Deploy web UI
14 modal deploy app.py
1 python -m pytest tests_comprehensive.py -v
2 # 18/18 pass