vehicle_common.mode_manager#

Attributes#

Classes#

ModeManagerParams

Parameters every ModeManager subclass's schema must define.

ModeManager

Shared mission manager plumbing for a single bound vehicle.

Module Contents#

MISSION_STARTED_MARKER_ENV = 'PENNAIR_MISSION_STARTED_MARKER_PATH'#
class ModeManagerParams#

Bases: Protocol

Parameters every ModeManager subclass’s schema must define.

generate_parameter_library schemas can’t be composed, so each package’s *_mission_parameters.yaml repeats these fields. Keep them in sync.

vehicle_name: str#
auto_launch: bool#
class ModeManager(node_name: str)#

Bases: rclpy.node.Node, abc.ABC

Shared mission manager plumbing for a single bound vehicle.

params#
vehicle: vehicle_common.vehicle.Vehicle | None = None#
modes: dict[str, vehicle_common.mode.Mode]#
transitions: dict[str, dict[str, str]]#
active_mode: str | None = None#
last_update_time#
timer = None#
auto_launch#
_auto_launch_timer = None#
_runtime_vehicle_name = ''#
start_mission_service#
abstractmethod load_params() → ModeManagerParams#

Declare, validate, and return this manager’s ROS parameters.

abstractmethod spin_once() → None#

Execute one iteration of the mode manager’s control loop.

get_active_mode() → vehicle_common.mode.Mode#
_mission_started_marker_path() → pathlib.Path#
_write_mission_started_marker() → None#
_clear_mission_started_marker() → None#
initialize_mode(mode_id: str, params: pydantic.BaseModel) → vehicle_common.mode.Mode#
setup_modes(runtime_mission: vehicle_common.mission_loader.RuntimeMission) → None#
transition(state: str) → str#
switch_mode(mode_name: str) → None#
run_active_mode(current_time: float) → None#
_deactivate_active_mode() → None#
_stop_vehicle() → None#
_start_mission_callback(request, response)#
start_mission() → bool#
_cancel_auto_launch_timer() → None#
_auto_launch_ready() → bool#
_maybe_auto_launch() → None#
handle_mode_state(state: str) → None#