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

ROS 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