Skip to content

Robotics-Ark/ark_framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

347 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ark Framework Logo

A python framework for robotics research and development.

Lightweight, flexible, and designed for researchers and developers in robot learning.

PyPI Downloads

Star us on GitHub — your support motivates us a lot! 🙏😊

Join us on Discord!

What is this about?

Ark is a Python-first playground for robot learning. Instead of wrestling with C++ and fragmented tools, you can collect data, train policies, and switch between simulation and real robots with just a few lines of code. Think of it as the PyTorch + Gym for robotics — simple, modular, and built for rapid prototyping of intelligent robots.

📚 Learn more:

Installation

  1. Create and activate a Conda environment. Python 3.12 is recommended.

    conda create -n ark python=3.12
    conda activate ark
    python -m pip install --upgrade pip
  2. Create an Ark workspace, then clone Ark as ark_framework.

    mkdir -p path/to/ark
    cd path/to/ark
    git clone <ark-repository-url> ark_framework
    cd ark_framework

    Related repositories should be kept as siblings:

    path/to/ark/
    ├── ark_framework/
    ├── zenoh/
    └── other-repositories/
    
  3. Install Zenoh:

  4. Install Graphviz. This optional dependency is used to generate graph images in several modules. On Ubuntu:

    sudo apt install graphviz
  5. Install Ark in editable mode.

    python -m pip install -e .

Single-PC Zenoh installation

Install a Rust toolchain using rustup, then build and install the Zenoh Python bindings with shared-memory support:

python -m pip install \
  --no-binary eclipse-zenoh \
  --config-settings 'build-args=--features=zenoh/shared-memory' \
  'eclipse-zenoh==1.7.2'

Multi-PC Zenoh installation

Complete the single-PC installation on every participating PC. Then clone the matching Zenoh router source alongside ark_framework and install zenohd into the active Conda environment:

cd path/to/ark
git clone --depth 1 --branch release/1.7.2 \
  https://github.com/eclipse-zenoh/zenoh.git zenoh
cargo install \
  --locked \
  --path zenoh/zenohd \
  --features shared-memory \
  --root "$CONDA_PREFIX"
zenohd --version
cd ark_framework

The eclipse-zenoh Python package does not include zenohd, which is why this additional installation is required for multi-PC deployments.

Multi-PC network setup

After installing zenohd on every PC, run the network check tool from the machine that will run ark core. It tests connectivity between your laptop and each external host and writes the recommended configuration back into your hosts.yaml:

ark-network-check --hosts path/to/hosts.yaml

Example output:

Ark network connectivity check
========================================

  Host: remote_a  (worker → <remote-a-ip>)
    remote_a → laptop (<laptop-ip>):7447 ... reachable
    → direct connection  (router_ip: <laptop-ip>)

  Host: remote_b  (worker → <remote-b-ip>)
    remote_b → laptop (<laptop-ip>):7447 ... blocked
    → SSH reverse tunnel required

Updated config written to: path/to/hosts.yaml

Summary:
  remote_a: direct (router_ip: <laptop-ip>)
  remote_b: ssh_tunnel

The tool adds ssh_tunnel and router_ip fields to each external host entry. The ark core command reads these automatically — no further configuration needed.

How connectivity is handled at runtime:

Scenario Method Requires
Host can reach laptop on port 7447 Direct TCP Open port 7447 on laptop
Host cannot reach laptop SSH reverse tunnel Only SSH (port 22)

ark core starts zenohd on the local machine and, for each host requiring a tunnel, opens a reverse SSH connection that forwards port 7447 on the remote host back to the local zenohd. All communication flows through port 22.

Releases

No releases published

Contributors

Languages