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.
37 lines
1.3 KiB
Python
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',
|
|
],
|
|
},
|
|
)
|