• OctoMY API
  • OctoMY API Reference
  • OctoMY API Reference

    Welcome to the OctoMY API documentation. This reference covers the C++ classes and interfaces that make up the OctoMY robotics platform.

    Overview

    OctoMY is an open-source robotics platform built on Qt that enables communication between robots (Agents), controllers (Remotes), coordination servers (Hubs), and cloud discovery services (Zoo).

    Node Types

    OctoMY uses four node types that communicate over encrypted channels:

    Foundation Layer

    Core infrastructure libraries that everything depends on.

    libutil - Core Utilities

    Namespace-based utility functions for common operations.

    libuptime - Runtime Safety

    Entry-point guards and debugging utilities.

    libapp - Application Framework

    Application lifecycle, configuration, and platform integration.

    libid - Identity Management

    Node identity, key management, and visual representation.

    Identity Core

    Identity Widgets

    Name Generators

    liblog - Logging

    Application logging framework.

    librng - Random Numbers

    Random number generation with multiple algorithms.

    libparser - Parsing Utilities

    Configuration file parsing.

    Security Layer

    Cryptographic security and key management.

    libsec - Security Framework

    Core security constants and utilities.

    libqpolarssl - Cryptography

    Qt wrapper for mbedTLS cryptography.

    Communication Layer

    Node-to-node communication and discovery.

    libcomms - Core Communications

    Communication Management

    Transport Carriers

    Addresses

    Protocol

    Couriers

    Courier Sets

    Blob Transfer

    BlobCourier does all blob transfer. It cuts a blob into chunks, acknowledges and retransmits them, and verifies the signature of the complete blob. It keeps the send and receive state of each transfer internally, and identifies a transfer by the blob ID that sendBlob() returns. The former Blob, SendingBlob, ReceivingBlob, chunk handle and BlobFuture classes were removed with the legacy blob courier.

    Sync

    Messages

    Utilities

    libpair - Discovery and Pairing

    Address Book

    Discovery

    Pairing UI

    Delivery Activities

    Connection

    libzooclient - Zoo Client

    Client for Zoo cloud discovery services.

    Node Infrastructure

    Common node base classes and client management.

    libnode - Base Node

    libclient - Client Management

    libservice - Service Lifecycle

    Service wrapper templates for managing subsystem lifecycles.

    Node Implementations

    The four main node types.

    libagent - Agent Node

    Robot node that controls actuators and sensors.

    libremote - Remote Node

    Thin client for controlling agents.

    libhub - Hub Node

    Coordination server with LLM services.

    libzoo - Zoo Server

    Cloud discovery and NAT traversal services.

    Client Libraries

    libagentclient

    libremoteclient

    libhubclient

    UI Framework

    User interface widgets and activities.

    libwidgets - Core Widgets

    Activity Framework

    Activities

    Trust & Verification

    Peer & Network

    Input Widgets

    Visual Widgets

    Layout & Navigation

    Node Control

    Flight Instruments (HUD)

    Hex Editor

    libstyle - Styling

    Custom Qt styling.

    libsplash - Splash Screen

    Startup splash screen.

    libsplitter - Split Panes

    Split-pane interface framework.

    libscreen - Screen Management

    Multi-monitor display management.

    libres - Resources

    Qt resource management.

    libdebug - Debug Widgets

    Development debugging widgets.

    Hardware Layer

    Robot hardware control and sensors.

    libhardware - Hardware Abstraction

    Core

    Controllers

    Controller UI

    Templates

    Actuators

    Serial Ports

    Lobes - Locomotion

    A lobe changes control intent into actuator output. The liblobe library and its per-type lobe and widget classes were removed. A lobe is now a firmware component in libfixo, and the Controller compiles the lobes of a Preset into the firmware.

    libnumex - Controller Serial Protocol

    The serial protocol between the host and the controller firmware. It replaced the ArduMY protocol, and the libardumy library was removed. The host does not send the actuator configuration at run time: the Controller compiles it into the firmware. Only actuator values travel on the link, each batch led by its actuator enable bits.

    Board Pins

    Protocol

    libpuppet - Robot Animation

    Robot animation and pose control.

    Poses

    Name Mapping

    Gait Control

    Expression

    Stanza

    Sensing & Perception

    Camera, audio, and sensor processing.

    libvideo - Video/Camera

    Camera and media handling.

    libaudio - Audio

    Audio synthesis and utilities.

    libvoice - Voice

    Text-to-speech synthesis.

    libgps - GPS

    GPS encoding and location services.

    libhaar - Face Detection

    Haar cascade object detection.

    libqr - QR Codes

    QR code generation.

    libzbar - Barcode Scanning

    Barcode scanning support.

    Behavior & Planning

    Robot behavior scripting and automation.

    libplan - OPAL Language

    Robot behavior plans.

    Core

    Editor

    Book

    libeval - Expression Evaluation

    Mathematical expression evaluator.

    libtrigger - Event System

    Event-driven automation system.

    Core

    Conditions

    Actions

    A trigger has no action classes. When its conditions hold, it runs its TaskPlan (libopal). The former action hierarchy, with its action factory and action context, was removed, and a stored action list is changed into an equivalent task plan when it loads.

    Testing & Automation

    Testing infrastructure and UI automation.

    libuiautomation - UI Automation

    UI automation and testing tools.

    Core

    Targets

    Snapshots

    UI

    UI Scripts

    libmocknode - Mock Testing

    Mock node testing infrastructure.

    Core

    Personalities

    Constellations

    libtest - Test Utilities

    Testing utilities and mock objects.

    Communication Testing

    Stress Testing

    Mock Objects

    Graphics & Visualization

    3D rendering and visualization tools.

    libglt - OpenGL Tools

    OpenGL utilities.

    libconstruct - 3D Rendering

    3D rendering framework with Qt RHI.

    libd3 - Node Graph Editor

    3D node graph editor and isosurface visualization.

    Graph

    Isosurface

    libmarkdown - Markdown

    Markdown editing and rendering.

    libmap - Geographic Maps

    Geographic map display (QMapControl).

    Core

    Adapters

    Geometries

    Storage & Persistence

    Data storage and persistence.

    libstore - Data Storage

    Data persistence backends.

    Web & Networking

    HTTP client/server and web services.

    libweb - HTTP

    HTTP client/server and templating.

    libclt - OpenCL

    OpenCL compute with OpenGL interop.

    Miscellaneous

    Additional utilities.

    libgibber - Text Generation

    Placeholder text generation.

    libcommand - Commands

    Command-line interface framework.

    Getting Started

    See the OctoMY Documentation for tutorials and guides.

    Project Information