Publisher Member Function

This module implements a ROS 2 node for publishing drone state vectors to a dedicated topic. Features include: - Queue-based message buffering - Thread-safe MultiThreadedExecutor - Drone-specific topic namespacing - Graceful shutdown handling

Classes

StateVectorPublisher

ROS 2 node managing state vector publication

Functions

main

Node initialization and lifecycle management

class publisher_member_function.StateVectorPublisher(*args: Any, **kwargs: Any)[source]

Bases: Node

ROS 2 node for publishing drone state vectors to a dedicated topic.

Parameters:
  • drone_id (int) – Unique drone identifier for namespacing

  • drone_logger (logging.Logger) – Configured logger instance

  • topic_queue (queue.Queue) – Input queue for state vector updates

Variables:
  • publisher (rclpy.publisher.Publisher) – ROS 2 publisher instance

  • timer (rclpy.timer.Timer) – Periodic publication timer

__init__(drone_id, drone_logger, topic_queue)[source]

Initialize publisher node with drone-specific configuration.

timer_callback()[source]

Timer-driven publication callback with queue processing.

Processes all available messages in the queue, retaining only the most recent state. Publishes the latest available state vector at each timer interval.

Note

Uses non-blocking queue retrieval to prevent executor starvation

publisher_member_function.main(args=None, drone_id=0, drone_logger=None, topic_queue=None)[source]

Main execution flow for ROS 2 node lifecycle management.

Parameters:
  • args (list | None) – ROS 2 initialization arguments

  • drone_id (int) – Drone identifier for node configuration

  • drone_logger (logging.Logger) – Configured logger instance

  • topic_queue (queue.Queue) – Shared state vector queue

Raises:

KeyboardInterrupt – Handles graceful shutdown on SIGINT