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