GoMyRobotRT
GoMyRobotRT is the deterministic flight runtime of the GoMyRobot stack. It remains a separate product from GoMyRobotOS.
GoMyRobotRT executes the robotics workload. GoMyRobotOS controls the execution environment in which that workload runs.
This page documents GoMyRobotRT’s intended integration architecture as
frozen at M0. Nothing on this page is implemented in this repository
(Status: Not implemented for GoMyRobotRT itself; the integration work is
planned research).
Overview and responsibilities
GoMyRobotRT
├── RTEMS
├── nano-ros
├── rcl/rclcpp
├── deterministic executors
├── robotics middleware
├── hardware abstraction
└── flight application interfaces
Responsibility |
What it means |
|---|---|
RTEMS |
the flight RTOS on which the runtime executes |
nano-ros |
embedded robotics middleware support |
rcl / rclcpp |
the ROS 2 client libraries (see below) |
deterministic executors |
executor behavior adapted to flight-grade determinism |
robotics middleware |
the ROS 2 concepts the flight workloads are written in |
hardware abstraction |
the seam between workload code and flight hardware |
flight application interfaces |
the stable interfaces mission software programs against |
Naming note: nano-ros is the legacy name of the embedded robotics
middleware project; in ecosystem usage it is now generally called
Space ROS. This page keeps the legacy name because the integration
work targets that codebase’s API surface.
GoMyRobotOS consumes or hosts GoMyRobotRT inside managed partitions, the hosting mechanics are in the Runtime model.
ROS 2 Rolling integration
The ROS 2 reference for every concept below is the official
ROS 2 Rolling documentation. This page
(and the whole GoMyRobotOS documentation) never duplicates ROS 2
documentation, for each concept we (1) state the standard ROS 2 meaning
briefly, (2) link the Rolling page, (3) state GoMyRobotRT’s planned
integration, and (4) identify GoMyRobot-specific constraints or RTEMS
limitations. Everything in section (3) below is
Status: Not implemented / Research, per the project’s
anti-hallucination policy, no ROS 2 feature is claimed as supported by
GoMyRobotRT before it exists (see
Compatibility).
rcl / rclcpp / rclpy client libraries
Standard ROS 2. rcl, rclcpp (C++) and rclpy (Python) are the client
libraries above the middleware (RMW); they implement nodes, publishers,
subscriptions, services, actions, parameters, timers, and the executor
service patterns. See the
ROS 2 Rolling documentation for the
client-library entry points
(How-to: Basic client
libraries):
GoMyRobotRT. Planned to carry rcl/rclcpp (C/C++) on RTEMS. rclpy
(Python) is not part of the flight-partition profile: the flight domain
is C/C++ on RTEMS, and Python-based development stays in service (Linux)
domains. That split is a GoMyRobotRT profile decision, not a ROS 2
limitation, and GoMyRobotRT does not claim rclpy support on RTEMS.
Executors
Standard ROS 2. An executor drives callbacks for one or more nodes by polling the middleware; callback groups and multi-threaded executors shape when and where callbacks run. See the Rolling ROS 2 Rolling Glossary for the executor and callback-group terms.
GoMyRobotRT. Planned to follow the ROS 2 executor model while imposing
GoMyRobot-specific deterministic constraints (fixed priorities, bounded
callback windows tied to the partition’s contract timing_budget). Those
constraints are not standard ROS 2 behavior and must never be
presented as such.
Publishers, subscriptions, services, actions, parameters
Standard ROS 2. These are the ROS 2 communication and parameter primitives, implemented over the middleware (RMW); type, QoS, and graph semantics are defined by ROS 2. See the Rolling documentation’s ROS 2 middleware and design concepts.
GoMyRobotRT. Planned to support ROS 2 pub/sub + services as the flight
workload primitives. Cross-partition communication is not the ROS 2
topic graph, it is the bounded endpoint declared in the GoMyRobotOS
Partition Contract (communication.endpoints). How ROS 2 traffic maps onto
those contract channels is research work to be documented when implemented.
No ROS 2 feature support is claimed at this time.
QoS
Standard ROS 2. QoS profiles (reliability, durability, history, liveliness) are negotiated between publishers and subscriptions. See the Rolling Quality of Service page.
GoMyRobotRT. Managing QoS inside a deterministically bounded partition is research: which standard profiles make sense under a contract timing budget will be documented when investigated.
Middleware / RMW, DDS
Standard ROS 2. The ROS 2 Middleware (RMW) abstraction decouples client libraries from the wire protocol (a DDS implementation or other middleware). See the Rolling ROS 2 Middleware concepts.
GoMyRobotRT. On RTEMS flight partitions the RMW/DDS stack plays a reduced role compared to desktop Linux. What runs, how transports bind to contract channels, and whether in-process or wire transports are used are research decisions, documented only when chosen and implemented.
Graph and lifecycle
Standard ROS 2. The ROS 2 graph (topics, services, actions and their endpoints) and lifecycle node states are ROS 2 concepts documented in Rolling (e.g., the lifecycle node guide).
GoMyRobotRT. Aligning lifecycle states with partition-level recovery
(contract recovery.*) is an open integration question, not a claimed
feature.
Deterministic execution
Where GoMyRobotRT differs from standard ROS 2 behavior, the documentation
policy applies: (1) state the standard behavior with the Rolling link,
(2) state the GoMyRobotRT behavior separately, (3) label it
(implemented / experimental / planned / research). At M0 every
GoMyRobotRT “deterministic execution” capability is Status: Research -
defined conceptually, not yet built or measured.
Hardware abstraction and health monitoring
Hardware abstraction isolates workload code from flight hardware so the same mission logic runs on x86-64 reference, NG-ULTRA, and future targets.
Status: Not implementedhere.Health monitoring exposes runtime health to the partition-level recovery surfaces GoMyRobotOS defines (Recovery model).
Status: Not implementedhere.
Flight workload integration
The end-state integration is: a GoMyRobotRT ROS 2 (Rolling-based) flight workload runs inside a GoMyRobotOS-managed partition on RTEMS, with its resources, timing, devices, and recovery declared in the partition’s contract, demonstrated first on NG-ULTRA (M2), with the same conceptual flight partition booting on x86-64 (M1) before that. This is the ServiceReady proof path: the workload is invariant; the execution environment changes per target.