RTI UMAA Python SDK

User Guide

  • Getting Started
    • Prerequisites
    • Installation
      • 1. Clone the repository
      • 2. Create a virtual environment
      • 3. Install the SDK in editable mode
      • 4. Set the QoS environment variable
    • Verify installation
      • 1. Run the tests
      • 2. Run the autopilot example
    • Minimal Example — Report Publisher
    • Minimal Example — Report Subscriber
    • Minimal Example — Command Provider
    • Command Provider with Execution Status
    • Minimal Example — Command Consumer
    • What’s Next
  • Building a Component
    • Architecture Overview
    • Step 1: Define Your Component
    • Step 2: Add a Command Provider
      • Command Provider Hooks
      • Failing a Command
    • Step 3: Add a Report Provider
    • Step 4: Add a Report Consumer
    • Step 5: Implement the Run Loop
    • Step 6: Create the Entry Point
    • Component Lifecycle
    • Using Pre-Wired Services
  • QoS Configuration
    • How It Works
    • QoS Profiles
    • Topic Filter Rules
    • Environment Variable
    • Customizing QoS
      • Modify the XML directly
      • USTM Tool Compatibility
      • Cyclone DDS Interoperability
    • Verifying QoS Assignment
  • Vendor Interoperability
    • All Vendors — XTYPES Compliance Mask
    • Cyclone DDS
      • Data Representation
      • Serialize Key with Dispose
      • Type Extensibility Kind
    • Using CycloneInterop in Python
  • Testing with the USTM Tool
    • 1. Load the Docker images
    • 2. Run the Docker containers
    • 3. Enable the USTM QoS profile
    • 4. Configure USTM to match your component
    • 5. Run the examples
    • 6. Verify in the USTM web UI
  • Troubleshooting
    • Environment & Setup
      • EnvironmentError: UMAA_QOS_FILE environment variable is not set
      • RuntimeError: A DDSContext already exists
      • ModuleNotFoundError: No module named 'rti'
    • DDS Connectivity
      • No data received — subscriber sees nothing
      • Command provider never receives commands
      • Discovery takes too long
    • Command Lifecycle
      • Command stuck in EXECUTING
      • RuntimeError: Consumer already has an active session
      • Validation failure — CommandHookError(VALIDATION_FAILED)
    • Shutdown & Cleanup
      • PRESPsReader warnings on exit
      • Services not closing properly
    • Testing
      • Tests fail with ValueError: Service already registered
      • Tests hang indefinitely
      • Running tests

API Reference

  • DDSContext
    • DDSContext
      • DDSContext.__init__()
      • DDSContext.current()
      • DDSContext.participant
      • DDSContext.publisher
      • DDSContext.subscriber
      • DDSContext.qos_provider
      • DDSContext.domain_id
      • DDSContext.source_id
      • DDSContext.source_guid
      • DDSContext.get_topic()
      • DDSContext.register_service()
      • DDSContext.unregister_service()
      • DDSContext.get_service()
      • DDSContext.registered_service_keys()
      • DDSContext.create_writer()
      • DDSContext.create_reader()
      • DDSContext.create_filtered_reader()
      • DDSContext.run_until_shutdown()
      • DDSContext.shutdown()
    • Usage
    • Shutdown Order
  • BaseService
    • BaseService
      • BaseService.__init__()
      • BaseService.ctx
      • BaseService.service_name
      • BaseService.close()
    • Usage
  • BaseComponent
    • BaseComponent
      • BaseComponent.__init__()
      • BaseComponent.ctx
      • BaseComponent.component_name
      • BaseComponent.on_start()
      • BaseComponent.close()
    • Usage
  • CommandProvider
    • CommandProvider
      • CommandProvider.validate_command()
      • CommandProvider.on_updated()
      • CommandProvider.on_commanded()
      • CommandProvider.on_executing()
      • CommandProvider.on_complete()
      • CommandProvider.on_failed()
      • CommandProvider.on_terminal()
      • CommandProvider.start()
      • CommandProvider.close()
    • State Machine
    • Hooks
    • Example
    • Signaling Failures
  • CommandConsumer
    • CommandConsumer
      • CommandConsumer.on_status()
      • CommandConsumer.on_ack()
      • CommandConsumer.on_exec_status()
      • CommandConsumer.on_terminal()
      • CommandConsumer.has_matched_provider
      • CommandConsumer.wait_for_discovery()
      • CommandConsumer.send()
      • CommandConsumer.cancel()
      • CommandConsumer.start()
      • CommandConsumer.close()
    • Sending Commands
    • Hooks
    • Example
    • Canceling
    • Updating
  • CommandProviderSession
    • CommandProviderSession
      • CommandProviderSession.command
      • CommandProviderSession.session_id
      • CommandProviderSession.current_state
      • CommandProviderSession.cancel()
      • CommandProviderSession.fail()
      • CommandProviderSession.set_new_command()
      • CommandProviderSession.run()
    • Overview
    • Properties
    • State Transitions
    • Enums
  • ReportProvider
    • ReportProvider
      • ReportProvider.writer
      • ReportProvider.report_topic
      • ReportProvider.write()
      • ReportProvider.close()
    • Usage
    • Instance Lifecycle
    • Validation
    • Using Pre-Wired Classes
  • ReportConsumer
    • ReportConsumer
      • ReportConsumer.reader
      • ReportConsumer.report_topic
      • ReportConsumer.start()
      • ReportConsumer.on_report()
      • ReportConsumer.close()
    • Usage
    • Event Loop
    • Using Pre-Wired Classes
  • Errors & Result Types
    • CommandHookError
      • CommandHookError.reason_enum
      • CommandHookError.message
    • CommandFailedError
      • CommandFailedError.session_id
      • CommandFailedError.status
      • CommandFailedError.reason_enum
      • CommandFailedError.message
    • AssemblyError
      • AssemblyError.root_type
      • AssemblyError.slot_name
    • CommandResult
      • CommandResult.session_id
      • CommandResult.status
      • CommandResult.data
    • Exception Hierarchy
    • CommandHookError
    • CommandFailedError
    • CommandResult
  • Utilities
    • GUIDUtil
      • GUIDUtil
    • UmaaTimestamp
      • UmaaTimestamp
    • Building Source Identities
  • Pre-Wired Service Library
    • Import Pattern
    • Naming Convention
    • Constructor Patterns
    • Domain Catalog
      • Common Operations (CO) — 42 classes
      • Engineering Operations (EO) — 58 classes
      • Mission Management (MM) — 70 classes
      • Maritime Operations (MO) — 18 classes
      • Situational Awareness (SA) — 66 classes
      • Sensors (SEM) — 26 classes
      • System Operations (SO) — 70 classes

Project

  • Changelog
    • v0.1.0 (2026-03-27) — Preliminary Release
      • SDK Core
      • Utilities
      • Pre-Wired Service Library
      • Generated Data Model
      • Examples
      • QoS
      • Testing
      • Not Yet Implemented
  • Exception and Cleanup Findings (2026-05-18)
    • Scope
    • Findings Already Handled
      • 1. Consumer hook exception isolation is robust
      • 2. Shutdown is idempotent
      • 3. Shutdown order is correct for dispatcher safety
      • 4. Context-level service close failures are contained
    • Open Findings (Not Yet Fully Handled)
      • 1. Provider on_terminal exceptions can skip provider session cleanup
      • 2. run_until_shutdown() can double-start already-started services
      • 3. Provider close() can abort early on non-cancel exception from _run task await
    • Suggested Fixes
      • A. Harden provider session finalization
      • B. Prevent double-start in run_until_shutdown()
      • C. Make provider close() resilient to non-cancel task failures
    • Test Gaps to Add
    • Priority
    • Notes
RTI UMAA Python SDK
  • Overview: module code

All modules for which code is available

  • rtiumaapy.base_component
  • rtiumaapy.base_service
  • rtiumaapy.command_consumer
  • rtiumaapy.command_provider
  • rtiumaapy.command_provider_session
  • rtiumaapy.dds_context
  • rtiumaapy.errors
  • rtiumaapy.guid_util
  • rtiumaapy.report_consumer
  • rtiumaapy.report_provider
  • rtiumaapy.timestamp

© Copyright 2025-2026, Real-Time Innovations, Inc..

Built with Sphinx using a theme provided by Read the Docs.