vehicle_common.mode#

Classes#

Mode

Base class for UAV operational modes within a ROS 2 node.

Module Contents#

class Mode[VehicleT: vehicle_common.vehicle.Vehicle, ParamsT: pydantic.BaseModel]#

Bases: abc.ABC

Base class for UAV operational modes within a ROS 2 node. Provides a structured template for implementing autonomous behaviors.

required_vision_nodes: ClassVar[tuple[object, ...]] = ()#
peer_vehicle_names: ClassVar[tuple[str, ...]] = ()#
requires_camera: ClassVar[bool] = False#
transition_labels: ClassVar[tuple[str, ...]] = ()#
active = False#
pending_requests#
abstractmethod initialize(node: rclpy.node.Node, vehicle: VehicleT, params: ParamsT) None#

Abstract method for initializing a mode

Parameters:
  • node – The ROS 2 node that gets passed into the mode

  • vehicle – The vehicle instance that the current mode has control over

  • params – A validated pydantic params model that the mode class has defined

classmethod required_vision_node_paths() tuple[str, ...]#
classmethod declared_transition_labels() tuple[str, ...]#
on_enter() None#

Logic executed when this mode is activated. Should include any initialization required for the mode.

send_request(vision_node: type[vehicle_common.base.VisionNode], request)#

Send a request to a service.

Parameters:
  • request (SrvRequestT) – The request to send.

  • service_name (VIsionNode) – The name of the service.

on_exit() None#

Logic executed when this mode is deactivated. Should include any cleanup required for the mode.

abstractmethod on_update(time_delta: float) None#

Periodic logic executed while the mode is active. This should implement the mode’s core behavior.

Parameters:

time_delta (float) – Time in seconds since the last update.

on_disconnect(time_delta: float, connection_status: Mapping[str, bool]) None#

Periodic logic executed while one or more required peers are disconnected.

Parameters:
  • time_delta (float) – Time in seconds since the last update.

  • connection_status (Mapping[str, bool]) – Current mission peer connection map.

connection_ready(connection_status: Mapping[str, bool]) bool#

Return whether the mode has enough peer connectivity to run on_update().

connection_status contains only this mode’s relevant remote peers. The default implementation treats every provided peer as required.

abstractmethod check_status() str#

Check if the mode should deactivate.

activate() None#

Activate the mode. Calls the on_enter method.

deactivate() None#

Deactivate the mode. Calls the on_exit method.

update(time_delta: float) None#

Update the mode if it is active. Calls the on_update method.

Parameters:

time_delta (float) – Time in seconds since the last update.

disconnect(time_delta: float, connection_status: Mapping[str, bool]) None#

Update the mode’s disconnected behavior if it is active.

Parameters:
  • time_delta (float) – Time in seconds since the last update.

  • connection_status (Mapping[str, bool]) – Current mission peer connection map.

log(message: str) None#

Log a message using the ROS 2 node’s logger.

Parameters:

message (str) – The message to log.