Comprehensive monorepo for LeKiwi robot software development, combining simulation, control, and machine learning capabilities. This workspace integrates Rust and Python packages to provide a complete robotics development environment supporting both physical and simulated LeKiwi robots.
- ๐ Simulation Environment: High-fidelity MuJoCo-based simulation
- ๐ค Real Robot Integration: Direct control of physical LeKiwi robots
- ๐ง ML Pipeline: LeRobot integration for learning and inference
- ๐ก Dora Integration: Distributed computing with Dora framework
- ๐ง Development Tools: Comprehensive tooling for teleoperation and data collection
lekiwi/
โโโ ๐ packages/ # Python packages
โ โโโ ๐ฎ lekiwi_sim/ # MuJoCo simulation environment
โ โโโ ๐ค lekiwi_lerobot/ # LeRobot integration scripts
โ โโโ ๐น๏ธ lekiwi_teleoperate/ # Teleoperation interface
โโโ ๐ dora/ # Dora Integration
โ โโโ ๐ lekiwi/graphs/ # Dora dataflows
โ โโโ ๐ node_hub/ # Dora nodes
โ โโโ ๐ dora_lekiwi_client/ # Robot interface node
โ โโโ ๐ง dora_run_policy/ # Policy execution node
โ โโโ ๐ก dora_lekiwi_action_publisher/ # Action publisher
โโโ ๐ crates/ # Rust packages
โโโ ๐ .devcontainer/ # Development environment
For Real Robot:
- LeKiwi robot hardware
- Ubuntu 22.04 LTS
For Simulation:
- Docker with GPU support
- Ubuntu 22.04 LTS (or via devcontainer)
-
Clone the repository:
git clone https://github.com/ekumenlabs/rnd_lekiwi.git cd lekiwi-dora -
Use devcontainer (Recommended): See Development Environment Setup
# Open in VS Code and select "Reopen in Container" # OR use devcontainer CLI devcontainer up --workspace-folder .
-
Manual setup:
# Create Python virtual environment uv venv -p 3.11 --seed source .venv/bin/activate # Install packages in development mode uv pip install -e . # Build Rust packages cargo build
Terminal 1 - Start simulation:
uv run lekiwi_host_simTerminal 2 - Teleoperate:
uv run lekiwi_teleoperateThis monorepo uses multiple build systems:
# Install all packages in development mode
uv pip install -e .
# Build distribution packages
uv build --all-packages
# Run specific package command
uv run lekiwi_sim_standalone# Build all Rust crates
cargo build
# Run tests
cargo testThe lekiwi_sim package provides a high-fidelity MuJoCo simulation environment that serves as a drop-in replacement for the real robot's host server. The implementation replicates LeRobot's lekiwi_host server interface, allowing seamless switching between simulation and real hardware without code changes. This means all LeRobot tools and scripts (teleoperation, recording, policy execution) work identically with both the simulated and physical robot.
lekiwi_sim_example.webm
Key Features:
- Physics-accurate omniwheel modeling
- Real-time robot visualization
- Camera feed simulation
- Compatible with LeRobot API
Two Modes Available:
-
Standalone Viewer (
standalone_mujoco_sim):- Direct MuJoCo visualization only
- Interactive joint control via GUI
- Useful for model debugging and physics parameter tuning
- No server/client architecture required
uv run standalone_mujoco_sim
-
Server Mode (
lekiwi_host_sim):- Replicates LeRobot's
lekiwi_hostserver - Enables interaction via
LeKiwiClientAPI - Compatible with teleoperation, recording, and policy execution
- Works exactly like the real robot from the client perspective
uv run lekiwi_host_sim
- Replicates LeRobot's
See packages/lekiwi_sim/README.md for detailed documentation.
Integration with LeRobot provides machine learning capabilities for the LeKiwi robot, including teleoperation, data collection, and policy training.
Features:
- ๐น๏ธ Teleoperation: Manual robot control via keyboard for demonstrations
- ๐น Data Collection: Record teleoperation episodes for training
- ๐ง Policy Training: Train ACT and other imitation learning policies
- ๐ Policy Deployment: Run trained models on robot/simulation
Manual control interface using the LeRobot API:
# Start simulation or real robot first
uv run lekiwi_host_sim # For simulation
# Then teleoperate the simulated or real robot.
uv run lekiwi_teleoperatelekiwi_sim_pick_cube.webm
By default it will allow you to teleoperate the Lekiwi completely using the keyboard. If you have a leader arm you can use it to teleoperate the arm part in the simulation as well:
uv run lekiwi_teleoperate --leader-armlekiwi_sim_leader_LOW.webm
# Record teleoperation demonstrations
uv run lekiwi_lerobot_record --repo-id your_username/dataset_name --episodes 50
# Replay recorded episodes to verify
uv run lekiwi_lerobot_replay --repo-id your_username/dataset_name --episode 0
# Train a policy (see lekiwi_lerobot README for full training options)
uv run lerobot-train \
--dataset.repo_id=your_username/dataset_name \
--policy.type=act \
--output_dir=outputs/my_policySee packages/lekiwi_lerobot/README.md for detailed documentation.
Dora enables distributed computing and dataflow orchestration for robotics applications, providing a powerful framework for building modular, distributed robot control systems.
- dora_lekiwi_client: Interfaces with robot hardware/simulation, publishes observations and executes actions
- dora_run_policy: Executes trained ML policies (ACT, Diffusion, etc.) for action prediction
- dora_lekiwi_action_publisher: Publishes hardcoded robot actions for testing and debugging
The repository includes pre-configured dataflow graphs in dora/lekiwi/graphs/:
1. Policy Execution Dataflow (dataflow.yml):
- Complete pipeline for running trained policies on simulation
- Connects robot observations โ policy inference โ robot actions
- Includes camera feeds and state observations
- Configurable policy model via environment variables
Prerequisites:
# Start simulation (or alternatively the real robot).
uv run lekiwi_host_simRun the policy execution dataflow:
# Navigate to dataflow directory
cd dora/lekiwi/graphs/
# Build if not built already
dora build dataflow.yml
# Start the dataflow
dora run dataflow.yml --uv
Optional features (uncomment in dataflow.yml):
- Visualization: Enable
rerun-viznode for real-time 3D visualization - Data Recording: Enable
dora-recordnode to save observations to Parquet files - Testing Mode: Use
dora_lekiwi_action_publisherinstead of policy for hardcoded actions
See Dora documentation for more details on dataflow configuration.
# Run Python tests
uv run pytest
# Run Rust tests
cargo test
# Run pre-commit checks
pre-commit run --all-filesWe welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
This repository uses:
- pre-commit hooks for automated code quality checks
- GitHub Actions CI for continuous integration
- ruff for Python linting and formatting
- cargo clippy for Rust linting
- Development Environment Setup
- Simulation Package
- LeRobot Integration
- Teleoperation
- LeKiwi Hardware Documentation
- LeRobot Official Docs
This project is licensed under the Apache License 2.0. See LICENSE for details.
- SIGRobotics-UIUC for the original LeKiwi robot design
- LeRobot team for the robotics learning framework
- Dora team for the distributed computing framework