rov-autonomy/src/rov_mission/setup.py
Grant du Toit 4e48dc2c53 feat(mode): operating-mode profile system
Add ModeProfile.msg (atomic resolved flag set) to rov_interfaces.
Add mode_profile_loader node + config/mode_profiles.yaml to rov_mission:
ROV/AUV profiles plus custom/hybrid Save As, published latched on
/rov/mode/profile, reloadable via /rov/mode/reload service.
cockpit_bridge subscribes and surfaces flags to the Cockpit data lake
as external/rov-*. Single source of truth; widgets read flags, not modes.
Verified end-to-end: ROV and AUV resolve correctly and live reload works.

Refs DIR-1/2 (ROV/AUV duality), DIR-9 (amended: ARM-bounded recording), DIR-10.
2026-07-07 11:15:35 +00:00

37 lines
1.3 KiB
Python

from setuptools import setup
import os
from glob import glob
package_name = 'rov_mission'
setup(
name=package_name,
version='0.1.0',
packages=[package_name],
data_files=[
('share/ament_index/resource_index/packages', ['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
(os.path.join('share', package_name, 'launch'), glob('launch/*.py')),
(os.path.join('share', package_name, 'config'), glob('config/*.yaml')),
],
install_requires=['setuptools'],
zip_safe=True,
entry_points={
'console_scripts': [
# Mission state machine — waypoint sequencing, failsafe integration
'mission_executor = rov_mission.mission_executor:main',
# Cockpit data bridge — ROS2 topics -> WebSocket -> Cockpit data lake
'cockpit_bridge = rov_mission.cockpit_bridge:main',
# Continuous MCAP recorder — DIR-9 foundational node
# Must be active before any mission can start (no-go gate)
'recording_manager = rov_mission.recording_manager:main',
# Mode profile loader — reads mode_profiles.yaml, publishes the
# resolved active profile (ROV/AUV/hybrid) on /rov/mode/profile
'mode_profile_loader = rov_mission.mode_profile_loader:main',
],
},
)