Commands Action Server
This module implements a ROS 2 action server for drone command execution with: - Multi-threaded command processing - Real-time feedback publication - Graceful shutdown handling - Command queue integration
Classes
- CommandsActionServer
ROS 2 node managing command execution lifecycle
Functions
- main
Action server initialization and lifecycle management
- class commands_action_server.CommandsActionServer(*args: Any, **kwargs: Any)[source]
Bases:
NodeROS 2 action server for drone command execution management.
- Parameters:
drone_id (int) – Unique drone identifier for namespacing
drone_logger (logging.Logger) – Configured logger instance
action_queue (queue.Queue) – Command execution status queue
- Variables:
_action_server (rclpy.action.ActionServer) – ROS 2 action server instance
- __init__(drone_id, drone_logger, action_queue)[source]
Initialize action server node with drone-specific configuration.
- execute_callback(goal_handle)[source]
Process incoming command goals and manage execution lifecycle.
- Parameters:
goal_handle (rclpy.action.ServerGoalHandle) – Incoming goal request handle
- Returns:
Final command execution result
- Return type:
Commands.Result
- Raises:
Exception – On critical execution errors
Lifecycle: 1. Process each command in the goal request 2. Publish real-time feedback 3. Update vehicle position state 4. Handle graceful shutdown requests
- commands_action_server.main(args=None, drone_id=0, drone_logger=None)[source]
Main execution flow for action server 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
Execution Flow: 1. Initialize ROS context 2. Configure multi-threaded executor 3. Start executor in background thread 4. Handle shutdown signals