Architecture

Internal architecture and design of HID ROS 2.

System Architecture

┌───────────────────────────────────────────────────────────────┐
│                      YAML Schema                              │
│                 (Single Source of Truth)                      │
└─────────────────────────┬─────────────────────────────────────┘
                          │
          ┌───────────────┴────────────────┐
          ▼                                ▼
┌──────────────────────┐         ┌──────────────────────┐
│  Code Generator      │         │  Firmware Generator  │
│  (Python)            │         │  (Python)            │
├──────────────────────┤         ├──────────────────────┤
│ • URDF Generator     │         │ • HID Descriptor     │
│ • Config Generator   │         │ • Report Structs     │
│ • Launch Generator   │         │ • Type Definitions   │
└──────────┬───────────┘         └───────────┬──────────┘
           │                                 │
           ▼                                 ▼
┌──────────────────────┐         ┌──────────────────────┐
│  ROS 2 Control       │   USB   │  Microcontroller     │
│                      │◄───────►│  Firmware            │
│ • Hardware Interface │   HID   │                      │
│ • Controllers        │         │ • HID Reports        │
│ • State Interfaces   │         │ • Application Logic  │
└──────────────────────┘         └──────────────────────┘

Component Details

This section provides technical details about the internal architecture. For user-level documentation, see other guides.

Code Organization

The repository is organized into multiple ROS 2 packages, each with a specific responsibility.

For complete architectural documentation, see ARCHITECTURE.md in the repository root.