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:
NodeROS 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