RoVLA: Multi-Consistency Constraints for Robust Vision-Language-Action Models
Python
15
0 commits
updated May 24, 2026
RoVLA is a robust vision-language-action framework that enhances VLA model generalization and robustness through adversarial training and multi-consistency learning.
RoVLA introduces multi-consistency constraints into vision-language-action (VLA) models to significantly improve their robustness and generalization capability in robotic manipulation tasks. Built upon NVIDIA's GR00T N1.6 framework with InternVL-3.5 backbone, RoVLA enforces consistency at three levels:
RoVLA is evaluated on the LIBERO-Plus and RoboTwin 2.0 benchmarks and demonstrates state-of-the-art performance in robotic manipulation tasks.
RoVLA introduces three complementary consistency constraints to enhance VLA robustness:
| Constraint | Description |
|---|---|
| 🗣️ Instructional Consistency (IC) | Promotes stable grounding under semantically equivalent instruction rewrites, ensuring the model produces consistent actions across diverse phrasings of the same task |
| 🔄 Evolutionary Consistency (EC) | Preserves coherent action intent throughout the flow matching generation process by enforcing consistency across intermediate diffusion steps |
| 👁️ Observational Consistency (OC) | Improves robustness to visual and proprioceptive perturbations by enforcing consistent predictions before and after targeted disturbances (e.g., PGD adversarial attacks) |
RoVLA/
├── gr00t/ # Core implementation
│ ├── model/ # Model definitions
│ │ ├── gr00t_n1d6/ # Base model architecture
│ │ └── modules/ # Model components
│ │ ├── pgd_module.py # PGD adversarial training
│ │ ├── cslearning_module.py # Consistency learning
│ │ ├── dit.py # Diffusion transformer
│ │ └── *_backbone.py # VLM backbones (Eagle, InternVL, Qwen)
│ ├── experiment/ # Training code
│ ├── eval/ # Evaluation code
│ ├── configs/ # Configuration files
│ └── data/ # Data processing
├── scripts/ # Utility scripts
│ └── lerobot_conversion/ # Dataset conversion tools
├── external_dependencies/ # External environments
├── examples/ # Fine-tuning examples
│ ├── LIBERO/
│ ├── LIBEROPLUS/
│ ├── SO100/
│ └── robocasa/
├── media/ # Images and diagrams
└── pyproject.toml # Project dependencies
git clone https://github.com/HCPLab-SYSU/RoVLA.git
cd RoVLA
# Use the pre-configured pyproject.toml for Transformers 4.57
cp ./pyproject_transformers4.57.txt ./pyproject.toml
# Install dependencies with uv
pip install uv
uv sync --python 3.10
# Activate the virtual environment
source .venv/bin/activate
# Install the project in editable mode
uv pip install -e . \
--extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple \
--extra-index-url https://pypi.nvidia.com/
Follow the LIBERO-Plus setup guide:
# Install LIBERO-Plus simulation environment
bash ./gr00t/eval/sim/LIBEROPLUS/setup_libero_plus.sh
# Download LIBERO-Plus assets
wget "https://huggingface.co/datasets/Sylvest/LIBERO-plus/resolve/main/assets.zip?download=true" -O ./assets.zip
mkdir -p ./temp/
unzip ./assets.zip -d ./temp/
mv ./temp/inspire/hdd/project/embodied-multimodality/public/syfei/libero_new/release/dataset/LIBERO-plus-0/assets \
./external_dependencies/LIBERO-plus/libero/libero/
rm -r ./temp/
rm ./assets.zip
# Download the LIBERO-Plus dataset from Hugging Face
huggingface-cli download \
Sylvest/libero_plus_lerobot \
--repo-type dataset \
--local-dir $HOME/data/datasets/libero_plus_lerobot_4suite \
--local-dir-use-symlinks False
Before training, generate diversified task instruction variants to improve language generalization:
python ./scripts/lerobot_conversion/generate_task_variants_ray.py \
--task_path_pattern "$HOME/data/datasets/libero_plus_lerobot_4suite/lerobot/*/meta/tasks.jsonl"
Train RoVLA on the LIBERO-Plus benchmark with the following command:
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
export NUM_GPUS=8
torchrun --nproc_per_node=$NUM_GPUS --standalone \
gr00t/experiment/launch_finetune.py \
--base_model_path ./gr00t/model/modules/GR00T-N1.6-InternVL3.5-3B \
--dataset_path $HOME/data/datasets/libero_plus_lerobot_4suite/lerobot \
--embodiment_tag LIBEROPLUS_PANDA \
--num_gpus $NUM_GPUS \
--output_dir $HOME/data/checkpoints/GR00TN-1.6-InterVL3.5-3B/liberoplus/rovla \
--save_steps 5000 \
--save_total_limit 5 \
--max_steps 60000 \
--warmup_ratio 0.05 \
--weight_decay 1e-5 \
--learning_rate 1e-4 \
--global_batch_size 256 \
--color_jitter_params brightness 0.3 contrast 0.4 saturation 0.5 hue 0.08 \
--dataloader_num_workers 8 \
--use_pgd \
--use_consistency_learning \
--deepspeed_stage 2 \
--gradient_checkpointing
Note: The
--use_pgdand--use_consistency_learningflags enable the core multi-consistency constraints of RoVLA.
Evaluation uses a server-client architecture. Start the server and client in separate terminals:
export CUDA_VISIBLE_DEVICES=0,1,2,3
source .venv/bin/activate
./.venv/bin/python gr00t/eval/run_gr00t_server_multigpus.py \
--model-path $HOME/data/checkpoints/GR00TN-1.6-InterVL3.5-3B/liberoplus/rovla/checkpoint-60000 \
--embodiment-tag LIBEROPLUS_PANDA \
--use-sim-policy-wrapper \
--port 23782
export CUDA_VISIBLE_DEVICES=0,1,2,3
gr00t/eval/sim/LIBEROPLUS/liberoplus_uv/.venv/bin/python \
gr00t/eval/rollout_policy_multigpus.py \
--n_episodes 1 \
--policy_client_host 127.0.0.1 \
--policy_client_port 23782 \
--max_episode_steps=720 \
--benchmark_name liberoplus/all \
--n_action_steps 8 \
--n_envs 1 \
--use_spawn \
--experinment_path $HOME/data/checkpoints/GR00TN-1.6-InterVL3.5-3B/liberoplus/rovla/checkpoint-60000
Evaluation results (success rates) will be saved to:
$HOME/data/checkpoints/GR00TN-1.6-InterVL3.5-3B/liberoplus/rovla/checkpoint-60000/eval_liberoplus/all/all_results.csv
Please refer to our paper for detailed experimental results and analysis.
Note on RoboTwin 2.0: Our paper also includes evaluation on the RoboTwin 2.0 benchmark. However, since RoboTwin's codebase relies heavily on hardcoded relative paths that require project-specific modifications, we are unable to provide directly executable evaluation scripts for it in this release. We recommend referring to the original RoboTwin 2.0 repository and adapting the scripts to your local environment.
If you find RoVLA useful in your research, please consider citing:
@article{luo2026rovla,
title={RoVLA: Multi-Consistency Constraints for Robust Vision-Language-Action Models},
author={Luo, Jingzhou and Wen, Yifan and Bai, Yongjie and Song, Xinshuai and Liu, Yang and Lin, Liang},
journal={arXiv preprint arXiv:2605.19678},
year={2026}
}
This project is released under the MIT License.
RoVLA: Multi-Consistency Constraints for Robust Vision-Language-Action Models
Python
15
0 commits
updated May 24, 2026
RoVLA is a robust vision-language-action framework that enhances VLA model generalization and robustness through adversarial training and multi-consistency learning.
RoVLA introduces multi-consistency constraints into vision-language-action (VLA) models to significantly improve their robustness and generalization capability in robotic manipulation tasks. Built upon NVIDIA's GR00T N1.6 framework with InternVL-3.5 backbone, RoVLA enforces consistency at three levels:
RoVLA is evaluated on the LIBERO-Plus and RoboTwin 2.0 benchmarks and demonstrates state-of-the-art performance in robotic manipulation tasks.
RoVLA introduces three complementary consistency constraints to enhance VLA robustness:
| Constraint | Description |
|---|---|
| 🗣️ Instructional Consistency (IC) | Promotes stable grounding under semantically equivalent instruction rewrites, ensuring the model produces consistent actions across diverse phrasings of the same task |
| 🔄 Evolutionary Consistency (EC) | Preserves coherent action intent throughout the flow matching generation process by enforcing consistency across intermediate diffusion steps |
| 👁️ Observational Consistency (OC) | Improves robustness to visual and proprioceptive perturbations by enforcing consistent predictions before and after targeted disturbances (e.g., PGD adversarial attacks) |
RoVLA/
├── gr00t/ # Core implementation
│ ├── model/ # Model definitions
│ │ ├── gr00t_n1d6/ # Base model architecture
│ │ └── modules/ # Model components
│ │ ├── pgd_module.py # PGD adversarial training
│ │ ├── cslearning_module.py # Consistency learning
│ │ ├── dit.py # Diffusion transformer
│ │ └── *_backbone.py # VLM backbones (Eagle, InternVL, Qwen)
│ ├── experiment/ # Training code
│ ├── eval/ # Evaluation code
│ ├── configs/ # Configuration files
│ └── data/ # Data processing
├── scripts/ # Utility scripts
│ └── lerobot_conversion/ # Dataset conversion tools
├── external_dependencies/ # External environments
├── examples/ # Fine-tuning examples
│ ├── LIBERO/
│ ├── LIBEROPLUS/
│ ├── SO100/
│ └── robocasa/
├── media/ # Images and diagrams
└── pyproject.toml # Project dependencies
git clone https://github.com/HCPLab-SYSU/RoVLA.git
cd RoVLA
# Use the pre-configured pyproject.toml for Transformers 4.57
cp ./pyproject_transformers4.57.txt ./pyproject.toml
# Install dependencies with uv
pip install uv
uv sync --python 3.10
# Activate the virtual environment
source .venv/bin/activate
# Install the project in editable mode
uv pip install -e . \
--extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple \
--extra-index-url https://pypi.nvidia.com/
Follow the LIBERO-Plus setup guide:
# Install LIBERO-Plus simulation environment
bash ./gr00t/eval/sim/LIBEROPLUS/setup_libero_plus.sh
# Download LIBERO-Plus assets
wget "https://huggingface.co/datasets/Sylvest/LIBERO-plus/resolve/main/assets.zip?download=true" -O ./assets.zip
mkdir -p ./temp/
unzip ./assets.zip -d ./temp/
mv ./temp/inspire/hdd/project/embodied-multimodality/public/syfei/libero_new/release/dataset/LIBERO-plus-0/assets \
./external_dependencies/LIBERO-plus/libero/libero/
rm -r ./temp/
rm ./assets.zip
# Download the LIBERO-Plus dataset from Hugging Face
huggingface-cli download \
Sylvest/libero_plus_lerobot \
--repo-type dataset \
--local-dir $HOME/data/datasets/libero_plus_lerobot_4suite \
--local-dir-use-symlinks False
Before training, generate diversified task instruction variants to improve language generalization:
python ./scripts/lerobot_conversion/generate_task_variants_ray.py \
--task_path_pattern "$HOME/data/datasets/libero_plus_lerobot_4suite/lerobot/*/meta/tasks.jsonl"
Train RoVLA on the LIBERO-Plus benchmark with the following command:
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
export NUM_GPUS=8
torchrun --nproc_per_node=$NUM_GPUS --standalone \
gr00t/experiment/launch_finetune.py \
--base_model_path ./gr00t/model/modules/GR00T-N1.6-InternVL3.5-3B \
--dataset_path $HOME/data/datasets/libero_plus_lerobot_4suite/lerobot \
--embodiment_tag LIBEROPLUS_PANDA \
--num_gpus $NUM_GPUS \
--output_dir $HOME/data/checkpoints/GR00TN-1.6-InterVL3.5-3B/liberoplus/rovla \
--save_steps 5000 \
--save_total_limit 5 \
--max_steps 60000 \
--warmup_ratio 0.05 \
--weight_decay 1e-5 \
--learning_rate 1e-4 \
--global_batch_size 256 \
--color_jitter_params brightness 0.3 contrast 0.4 saturation 0.5 hue 0.08 \
--dataloader_num_workers 8 \
--use_pgd \
--use_consistency_learning \
--deepspeed_stage 2 \
--gradient_checkpointing
Note: The
--use_pgdand--use_consistency_learningflags enable the core multi-consistency constraints of RoVLA.
Evaluation uses a server-client architecture. Start the server and client in separate terminals:
export CUDA_VISIBLE_DEVICES=0,1,2,3
source .venv/bin/activate
./.venv/bin/python gr00t/eval/run_gr00t_server_multigpus.py \
--model-path $HOME/data/checkpoints/GR00TN-1.6-InterVL3.5-3B/liberoplus/rovla/checkpoint-60000 \
--embodiment-tag LIBEROPLUS_PANDA \
--use-sim-policy-wrapper \
--port 23782
export CUDA_VISIBLE_DEVICES=0,1,2,3
gr00t/eval/sim/LIBEROPLUS/liberoplus_uv/.venv/bin/python \
gr00t/eval/rollout_policy_multigpus.py \
--n_episodes 1 \
--policy_client_host 127.0.0.1 \
--policy_client_port 23782 \
--max_episode_steps=720 \
--benchmark_name liberoplus/all \
--n_action_steps 8 \
--n_envs 1 \
--use_spawn \
--experinment_path $HOME/data/checkpoints/GR00TN-1.6-InterVL3.5-3B/liberoplus/rovla/checkpoint-60000
Evaluation results (success rates) will be saved to:
$HOME/data/checkpoints/GR00TN-1.6-InterVL3.5-3B/liberoplus/rovla/checkpoint-60000/eval_liberoplus/all/all_results.csv
Please refer to our paper for detailed experimental results and analysis.
Note on RoboTwin 2.0: Our paper also includes evaluation on the RoboTwin 2.0 benchmark. However, since RoboTwin's codebase relies heavily on hardcoded relative paths that require project-specific modifications, we are unable to provide directly executable evaluation scripts for it in this release. We recommend referring to the original RoboTwin 2.0 repository and adapting the scripts to your local environment.
If you find RoVLA useful in your research, please consider citing:
@article{luo2026rovla,
title={RoVLA: Multi-Consistency Constraints for Robust Vision-Language-Action Models},
author={Luo, Jingzhou and Wen, Yifan and Bai, Yongjie and Song, Xinshuai and Liu, Yang and Lin, Liang},
journal={arXiv preprint arXiv:2605.19678},
year={2026}
}
This project is released under the MIT License.