hub-robot

star 7

Use for robot control nodes in dora. Triggers on: dora-piper, dora-reachy2, dora-ugv, dora-kit-car, dora-rdt-1b, Piper, Reachy, UGV, robot arm, chassis, VLA, robot control, Agilex, joint control, kinematics, teleoperation, 机械臂, 底盘, 机器人控制, 遥操作

ZhangHanDong By ZhangHanDong schedule Updated 1/21/2026

name: hub-robot description: "Use for robot control nodes in dora. Triggers on: dora-piper, dora-reachy2, dora-ugv, dora-kit-car, dora-rdt-1b, Piper, Reachy, UGV, robot arm, chassis, VLA, robot control, Agilex, joint control, kinematics, teleoperation, 机械臂, 底盘, 机器人控制, 遥操作" globs: ["/dataflow.yml", "/dataflow.yaml"] source: "https://github.com/dora-rs/dora-hub"

Robot Control Nodes

Robot arms, chassis, and vision-language-action models

Available Robot Nodes

Node Install Description Type
dora-piper pip install dora-piper Agilex Piper arm Arm
dora-reachy2 pip install dora-reachy2 Pollen Reachy 2 humanoid Humanoid
dora-ugv pip install dora-ugv Agilex UGV chassis Chassis
dora-kit-car pip install dora-kit-car Open-source chassis Chassis
dora-rdt-1b pip install dora-rdt-1b Robotic Diffusion Transformer VLA

Robot Arm Nodes

dora-piper

Agilex Piper robot arm control.

Prerequisites

Install Agilex Piper SDK:

git clone https://github.com/agilexrobotics/piper_sdk
cd piper_sdk
# Follow setup and installation instructions

Ensure CAN bus is activated and leader arms are not connected.

YAML Configuration

- id: piper
  build: pip install dora-piper
  path: dora-piper
  inputs:
    joint_positions: policy/positions  # Float32Array joint targets
  outputs:
    - joint_state  # Current joint positions

dora-reachy2

Pollen Robotics Reachy 2 humanoid robot.

YAML Configuration

- id: reachy
  build: pip install dora-reachy2
  path: dora-reachy2
  inputs:
    command: control/command
  outputs:
    - image_left   # Left camera image
    - image_right  # Right camera image
    - joint_state  # Joint positions

Chassis Nodes

dora-ugv

Agilex UGV (Unmanned Ground Vehicle) control.

YAML Configuration

- id: ugv
  build: pip install dora-ugv
  path: dora-ugv
  inputs:
    velocity: control/velocity  # [linear_x, angular_z]
  outputs:
    - odometry  # Position and velocity feedback

dora-kit-car

Open-source educational chassis.

YAML Configuration

- id: car
  build: pip install dora-kit-car
  path: dora-kit-car
  inputs:
    command: control/command

Vision-Language-Action (VLA)

dora-rdt-1b

Robotic Diffusion Transformer for policy inference from images and language.

YAML Configuration

- id: policy
  build: pip install dora-rdt-1b
  path: dora-rdt-1b
  inputs:
    image: camera/image
    instruction: input/text  # Natural language instruction
  outputs:
    - action  # Joint positions/velocities

VLA Pipeline with Robot Arm

nodes:
  # Camera
  - id: camera
    build: pip install opencv-video-capture
    path: opencv-video-capture
    inputs:
      tick: dora/timer/millis/100
    outputs:
      - image

  # Microphone for voice commands
  - id: microphone
    build: pip install dora-microphone
    path: dora-microphone
    inputs:
      tick: dora/timer/millis/100
    outputs:
      - audio

  # Speech to text
  - id: whisper
    build: pip install dora-distil-whisper
    path: dora-distil-whisper
    inputs:
      input: microphone/audio
    outputs:
      - text

  # VLA policy
  - id: policy
    build: pip install dora-rdt-1b
    path: dora-rdt-1b
    inputs:
      image: camera/image
      instruction: whisper/text
    outputs:
      - action

  # Robot arm
  - id: arm
    build: pip install dora-piper
    path: dora-piper
    inputs:
      joint_positions: policy/action
    outputs:
      - joint_state

  # Visualization
  - id: rerun
    build: pip install dora-rerun
    path: dora-rerun
    inputs:
      image: camera/image
      joint_state:
        source: arm/joint_state
        metadata:
          primitive: "jointstate"

Teleoperation Pipeline

nodes:
  # Leader arm (human operated)
  - id: leader
    build: pip install dora-piper
    path: dora-piper
    inputs:
      tick: dora/timer/millis/20
    outputs:
      - joint_state
    env:
      MODE: leader
      CAN_INTERFACE: can0

  # Follower arm (robot)
  - id: follower
    build: pip install dora-piper
    path: dora-piper
    inputs:
      joint_positions: leader/joint_state
    outputs:
      - joint_state
    env:
      MODE: follower
      CAN_INTERFACE: can1

  # Camera for recording
  - id: camera
    build: pip install opencv-video-capture
    path: opencv-video-capture
    inputs:
      tick: dora/timer/millis/33
    outputs:
      - image

  # Recording for imitation learning
  - id: recorder
    build: pip install llama-factory-recorder
    path: llama-factory-recorder
    inputs:
      image_right: camera/image
      ground_truth: leader/joint_state
    outputs:
      - text

Joint State Data Format

Float32Array for Joint Positions

import pyarrow as pa
import numpy as np

# 7-DOF arm joint positions (radians)
joint_positions = np.array([0.0, -0.5, 0.0, 1.0, 0.0, 0.5, 0.0], dtype=np.float32)

# Send joint command
node.send_output("joint_positions", pa.array(joint_positions), {
    "num_joints": 7,
    "primitive": "jointstate"
})

Receiving Joint State

if event["type"] == "INPUT":
    joint_state = event["value"].to_numpy()
    print(f"Joint positions: {joint_state}")

Pose Data Format (for end-effector)

# 7 values: [x, y, z, qx, qy, qz, qw]
pose = np.array([0.5, 0.0, 0.3, 0.0, 0.0, 0.0, 1.0], dtype=np.float32)
node.send_output("pose", pa.array(pose), {"primitive": "pose"})

Mobile Robot Pipeline

nodes:
  # Camera
  - id: camera
    build: pip install opencv-video-capture
    path: opencv-video-capture
    inputs:
      tick: dora/timer/millis/33
    outputs:
      - image

  # Object detection
  - id: yolo
    build: pip install dora-yolo
    path: dora-yolo
    inputs:
      image: camera/image
    outputs:
      - bbox

  # Navigation control (custom node)
  - id: navigator
    path: navigator.py
    inputs:
      detections: yolo/bbox
    outputs:
      - velocity

  # Chassis
  - id: ugv
    build: pip install dora-ugv
    path: dora-ugv
    inputs:
      velocity: navigator/velocity
    outputs:
      - odometry

  # Visualization
  - id: rerun
    build: pip install dora-rerun
    path: dora-rerun
    inputs:
      image: camera/image
      detections: yolo/bbox

URDF Visualization with Rerun

- id: rerun
  build: pip install dora-rerun
  path: dora-rerun
  inputs:
    jointstate_piper: arm/joint_state
  env:
    piper_urdf: /path/to/piper.urdf
    piper_transform: "0 0.3 0"  # x y z offset

Note: URDF file paths in the URDF are relative to the dataflow working directory.

Related Skills

  • hub-camera - Camera input for robot vision
  • hub-detection - Object detection for manipulation
  • hub-recording - Data recording for imitation learning
  • data-pipeline - LeRobot recording and replay
Install via CLI
npx skills add https://github.com/ZhangHanDong/dora-skills --skill hub-robot
Repository Details
star Stars 7
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator
ZhangHanDong
ZhangHanDong Explore all skills →