Getting Started
Getting Started
π This document is for complete environment setup and feature integration.
If you just want to verify the Web service is accessible, you can only execute Step 2; Server is not required, but client business status, robot status, and inference results may be unavailable.
For a 30-second quick experience, return to the README Quick Start.
Prerequisites
- Operating System: Linux/macOS are the primary supported environments; Windows can run Python services, but robot SDKs, ROS, and port management require separate verification.
- Python: 3.10 or higher
- Git: For cloning the code
- Model Weights: Your own checkpoint is required for inference
- GPU: Depends on the selected model
- Physical Robot (Optional): If deploying to a physical robot, prepare the vendor-provided SDK, drivers, and corresponding network environment (Ethernet/Serial/Wi-Fi, etc.)
Environment Setup Options (Choose One)
- Option A (Recommended): Prepare two separate Conda environments to avoid dependency conflicts.
vla-rail-client: Installs this repositoryβs dependencies, runs the Web client and robot adapters.vla-rail-server: Installs model-specific dependencies (e.g., PyTorch, Transformers, etc.).
- Option B (Quick Validation): Use a single Conda environment, suitable for initial quick testing.
π οΈ Step 1: Installation and Environment Setup
1. Clone the Repository
git clone <repository_url>cd open-railIf the code is already on your local machine, navigate directly to the project root directory. All commands below should be executed in the directory containing pyproject.toml.
2. Create Python Environment and Install the Project
Linux/macOS:
conda create -n vla-rail-client python=3.10 -yconda activate vla-rail-clientpython -m pip install --upgrade pippython -m pip install -e .Windows PowerShell:
conda create -n vla-rail-client python=3.10 -yconda activate vla-rail-clientpython -m pip install --upgrade pippython -m pip install -e .If you need to use the compatibility dependency list:
python -m pip install -r requirements.txtπ Step 2: Start the Web Client (Can Run Independently)
This step does not require Server or models; itβs used to verify the management interface is working.
Run in the terminal:
python run_web_client.pyWithout arguments, the program reads conf/default_conf.yaml by default and listens on 0.0.0.0:9000. To use a custom config file, pass the filename via --conf, and place it in the conf/ directory:
python run_web_client.py --conf custom_conf.yamlOpen your browser and visit http://localhost:9000. You should see the VLA-RAIL Web console, client status, and configuration panel; inference results and robot status may be empty until Server is connected and the robot is properly configured.
Port Details:
9000: Main Web service port (provides REST API and WebSocket viauvicorn).8080/8765: Visualization auxiliary services (static resources + data push) automatically started byVLAClient.run(); no manual intervention required.- On Linux/macOS,
run_web_client.pyattempts to auto-release occupied main Web ports; on Windows, please manually close the occupying process or use a different port.
π§ͺ Step 3: Start the Server and Load the Model
The Server is responsible for model inference and does not read from or send commands to robots. Run this in another terminal, within the model-specific environment.
Linux/macOS:
PYTHONPATH=<model_source_dir>:$PYTHONPATH python run_server.py --model_type <model_type> --model_path <checkpoint_path>Windows PowerShell:
$env:PYTHONPATH = "<model_source_dir>;" + $env:PYTHONPATHpython run_server.py --model_type <model_type> --model_path <checkpoint_path>Example (TAO model):
PYTHONPATH=/path/to/TAO/src:$PYTHONPATH python run_server.py --model_type tao --model_path /path/to/checkpointModel Types: See the registered model list in
conf/server_conf.py.
Adding New Models: Refer to the Add New VLA Model Guide.
π¬ Step 4: Mock Robot (Optional, for Environments Without a Physical Robot)
If you have a physical robot, skip to Step 5.
The Mock Robot replays historical observations from LeRobot-format datasets, suitable for demonstration and offline debugging.
Data Format Requirements:
<dataset_root>/βββ data/chunk-*/episode_*.parquetβββ videos/chunk-*/<video_key>/episode_*.mp4βββ meta/info.json # Optional, for reading fpsSteps:
- In
conf/default_conf.yaml, fill indataset_pathunderrobots.mock. - Ensure camera names match the video directory names.
- In the Web console configuration panel, select Mock Robot.
- Start the client task; you should see observation replay and action responses.
See Mock Robot Documentation for detailed configuration.
π§ Step 5: Configure a Physical Robot (Robot Manufacturers)
Physical robot logic is handled by the Client-side robot adapter; the Server performs inference only and does not call the robot SDK.
- Create a new directory and implementation file under
client/robots/. - Inherit the
RobotBaseclass fromclient/robots/base_robot.py. - Implement the
retrieve_observation()andexecute_action()methods. - Register the robot type and parameters in
conf/robots_conf.py. - In the Client environment, install the vendor SDK and verify observation/action interfaces independently from the model.
- Connect to the Server to confirm that inference results and action execution work correctly.
See the Robot Adaptation Guide for the complete interface specification.
Next Steps
- Project Architecture: Understand the responsibilities of Client, Server, and the ZMQ communication layer.
- Configuration Guide: Complete configuration options for Client, Server, robots, and recording.
- Add New VLA Model Guide: Integrate new checkpoints/model implementations.
- Robot Adaptation Guide: Integrate physical robots.
- Troubleshooting: Common runtime issues.
- Mock Robot Documentation: Configure offline dataset replay.