Init Drone Manager

This module implements the core functionality for a ROS 2-based drone control system, featuring: - Multi-threaded ROS 2 node execution - Concurrent command action server - State vector publication - Rotating log management - Graceful shutdown handling

Note

Requires ROS 2 Humble or newer with rclpy installation Uses custom interface definitions from commands_action_interface

init_drone.main(drone_id)[source]

Main drone control system initialization and execution flow.

Orchestrates: 1. Logger configuration 2. Queue initialization 3. State vector subsystem startup 4. ROS 2 node creation and lifecycle management 5. Multi-threaded executor operation

Parameters:

drone_id (int) – Unique numeric identifier for the drone

Raises:
  • SystemExit – On critical initialization failure

  • KeyboardInterrupt – On user-initiated shutdown

Example

Start drone 5:

$ python drone_control.py --drone_id 5
init_drone.create_logger(logger_name: str, log_file: str) Logger[source]

Configure concurrent-safe logger with rotating file handler.

Parameters:
  • logger_name (str) – Namespace for logger instance

  • log_file (str) – Path for log file storage

Returns:

Configured logger instance

Return type:

logging.Logger

Raises:

IOError – If log file initialization fails

Configuration Details: - 1MB log rotation with 5 backups - Concurrent write safety - Unified console/file formatting - UTC timestamp formatting