vehicle_common.mode_manager#

Attributes#

Classes#

ModeManager

Shared mission manager plumbing for a single bound vehicle.

Module Contents#

MISSION_STARTED_MARKER_ENV = 'PENNAIR_MISSION_STARTED_MARKER_PATH'#
class ModeManager(node_name: str, *, vehicle_name: str = '', auto_launch: bool = True, peer_heartbeat_hz: float = 10.0, peer_stale_timeout_s: float = 0.5)#

Bases: rclpy.node.Node, abc.ABC

Shared mission manager plumbing for a single bound vehicle.

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#
_vision_clients#
timer = None#
auto_launch = True#
_auto_launch_timer = None#
_runtime_vehicle_name#
peer_heartbeat_hz#
peer_stale_timeout_s#
_shared_mode_state#
_current_comm_builder = None#
_runtime_closed = False#
start_mission_service#
abstractmethod spin_once() None#

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

get_active_mode() vehicle_common.mode.Mode#
_now_seconds() float#
_mission_started_marker_path() pathlib.Path#
_write_mission_started_marker() None#
_clear_mission_started_marker() None#
setup_vision(vision_nodes: list[str]) None#
property vision_clients: dict#
_connect_vision_client(vision_class)#
get_vision_client(vision_node)#
_mode_peer_names(mode_or_class: object) tuple[str, ...]#
initialize_mode(mode_id: str, params: pydantic.BaseModel) vehicle_common.mode.Mode#
setup_modes(runtime_mission: vehicle_common.runtime.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#