Installation
Source install via uv on Python 3.10+, verified with an offline dataset replay.
Requirements
- EVA Client source — installed from its source tree. All commands run from the repo root.
- Python 3.10+ — 3.10 or newer.
uvfetches it on demand. - uv — required: EVA pins exact dependency versions and ships only a
uv-based install path. - ROS Noetic — only for the
ros1transport. The offline test below usesdatasetand needs no ROS. See Transport.
camera extra installs nothing and the camera will not work at runtime.Prerequisites
1. Clone the source.
git clone https://github.com/Noietch/EVA-CLIENT.git cd EVA-CLIENT # repo root — run later commands here
2. Install uv (other methods on the uv project page):
curl -LsSf https://astral.sh/uv/install.sh | sh
3. Fetch Python 3.10+ (optional; uv venv will fetch on demand):
uv python install 3.10
Create environment and install
From the repo root, create a Python 3.10+ venv, activate, install editable. Add --system-site-packages only for ros1, which exposes the system ROS install to the venv.
Standard (non-ros1):
uv venv --python 3.10 .venv source .venv/bin/activate uv pip install -e ".[dev]"
For ros1:
uv venv --python 3.10 --system-site-packages .venv
The dev extra adds test/lint tooling (see Development) and installs the eva entry point. Confirm:
eva --help
Hardware extras
Robot and camera drivers are opt-in extras. List them alongside dev, e.g. for UR5e:
uv pip install -e ".[dev,ur5e]"
| Extra | Use it for |
|---|---|
dev | Always included. Test and lint tooling. |
franka | Franka arms (dual_franka robot). |
arx | ARX R5 arm (arx_r5 robot). |
ur5e | UR5e arm (ur5e robot) with DH gripper. |
camera | Orbbec depth cameras (Linux x86_64/aarch64, macOS arm64). |
viz | Faster 3D robot model loading in the web view. |
arx and ur5e ship the vendor driver in-tree; no separate download.examples/hardware ships only reference samples that you adapt to your own robot's setup. See Adding a robot.Offline test
An open-loop config replays a recorded dataset, so no robot or policy server is needed. The path below is a real file in the repo; swap in your own config later (see Configuration).
# offline dataset replay — no ROS, no policy server eva --config configs/00_openloop/dual_agilex_AGILEX_openloop.py
Success line in the log:
Console web server: http://127.0.0.1:8080
Open http://localhost:8080. For a remote host, forward the port:
ssh -L 8080:localhost:8080 <user>@<host>
--config is required. If port 8080 is taken, override with --web-port 8090.Next: full flags on the CLI reference, end-to-end run in Quickstart.