From 5fa32fa1d890d075d30b5d167259bf837f8ae7de Mon Sep 17 00:00:00 2001 From: Robin Woodby Date: Fri, 29 May 2026 13:45:09 -0700 Subject: [PATCH 1/8] feat: add MissionStatus msg and GetMissionStatus srv New message and service types for the Mission Executor node. --- brain_box_msgs/CMakeLists.txt | 2 ++ brain_box_msgs/msg/MissionStatus.msg | 16 ++++++++++++++++ brain_box_msgs/srv/GetMissionStatus.srv | 4 ++++ 3 files changed, 22 insertions(+) create mode 100644 brain_box_msgs/msg/MissionStatus.msg create mode 100644 brain_box_msgs/srv/GetMissionStatus.srv diff --git a/brain_box_msgs/CMakeLists.txt b/brain_box_msgs/CMakeLists.txt index ef78d75..3103e27 100644 --- a/brain_box_msgs/CMakeLists.txt +++ b/brain_box_msgs/CMakeLists.txt @@ -116,6 +116,7 @@ rosidl_generate_interfaces(${PROJECT_NAME} msg/MarkerType.msg msg/MaxMinAve.msg msg/MissionIdArray.msg + msg/MissionStatus.msg msg/NodeStatus.msg msg/NormalsStamped.msg msg/NormalWithPoint.msg @@ -210,6 +211,7 @@ rosidl_generate_interfaces(${PROJECT_NAME} srv/SDKPermissionControl.srv srv/SegmentSearch.srv srv/VelocityControl.srv + srv/GetMissionStatus.srv srv/VxFlightPlan.srv srv/VxMissionExec.srv diff --git a/brain_box_msgs/msg/MissionStatus.msg b/brain_box_msgs/msg/MissionStatus.msg new file mode 100644 index 0000000..69a0027 --- /dev/null +++ b/brain_box_msgs/msg/MissionStatus.msg @@ -0,0 +1,16 @@ +builtin_interfaces/Time stamp + +# Mission executor states +uint8 NO_PLAN=0 +uint8 PLAN_LOADED=1 +uint8 VALIDATED=2 +uint8 PREFLIGHT_READY=3 +uint8 RUNNING=4 +uint8 PAUSED=5 +uint8 COMPLETED=6 +uint8 ABORTED=7 +uint8 ERROR=8 + +uint8 state +string plan_id +string message diff --git a/brain_box_msgs/srv/GetMissionStatus.srv b/brain_box_msgs/srv/GetMissionStatus.srv new file mode 100644 index 0000000..0cb8520 --- /dev/null +++ b/brain_box_msgs/srv/GetMissionStatus.srv @@ -0,0 +1,4 @@ +--- +brain_box_msgs/MissionStatus status +bool success +string reason From ddddaf129bde9b1aa40eb0289e5bebb99770dd67 Mon Sep 17 00:00:00 2001 From: Robin Woodby Date: Fri, 29 May 2026 14:27:27 -0700 Subject: [PATCH 2/8] feat: add LoadFlightPlan and ValidateFlightPlan services New service types for the Mission Executor's flight plan loading and validation interface. LoadFlightPlan accepts raw XML content from remote clients; ValidateFlightPlan re-parses a stored plan before execution. --- brain_box_msgs/CMakeLists.txt | 2 ++ brain_box_msgs/srv/LoadFlightPlan.srv | 7 +++++++ brain_box_msgs/srv/ValidateFlightPlan.srv | 4 ++++ 3 files changed, 13 insertions(+) create mode 100644 brain_box_msgs/srv/LoadFlightPlan.srv create mode 100644 brain_box_msgs/srv/ValidateFlightPlan.srv diff --git a/brain_box_msgs/CMakeLists.txt b/brain_box_msgs/CMakeLists.txt index 3103e27..c991a74 100644 --- a/brain_box_msgs/CMakeLists.txt +++ b/brain_box_msgs/CMakeLists.txt @@ -212,6 +212,8 @@ rosidl_generate_interfaces(${PROJECT_NAME} srv/SegmentSearch.srv srv/VelocityControl.srv srv/GetMissionStatus.srv + srv/LoadFlightPlan.srv + srv/ValidateFlightPlan.srv srv/VxFlightPlan.srv srv/VxMissionExec.srv diff --git a/brain_box_msgs/srv/LoadFlightPlan.srv b/brain_box_msgs/srv/LoadFlightPlan.srv new file mode 100644 index 0000000..b001bb0 --- /dev/null +++ b/brain_box_msgs/srv/LoadFlightPlan.srv @@ -0,0 +1,7 @@ +string plan_id_hint # optional filename base; empty = derived from XML content +string plan_content # raw XML +--- +bool success +string reason +string plan_id +brain_box_msgs/MissionStatus status diff --git a/brain_box_msgs/srv/ValidateFlightPlan.srv b/brain_box_msgs/srv/ValidateFlightPlan.srv new file mode 100644 index 0000000..deb5aed --- /dev/null +++ b/brain_box_msgs/srv/ValidateFlightPlan.srv @@ -0,0 +1,4 @@ +--- +bool success +string reason +brain_box_msgs/MissionStatus status From e7a41923c02a6f8e2a113c8aecddbec7023fa98c Mon Sep 17 00:00:00 2001 From: Robin Woodby Date: Fri, 29 May 2026 14:46:51 -0700 Subject: [PATCH 3/8] feat: add preflight message and service types MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PreflightCheckResult/PreflightStatus msgs for per-check and overall results - PreflightRun.srv — am_preflight's check runner interface - MissionPreflight.srv — Mission Executor's preflight gate interface --- brain_box_msgs/CMakeLists.txt | 4 ++++ brain_box_msgs/msg/PreflightCheckResult.msg | 3 +++ brain_box_msgs/msg/PreflightStatus.msg | 3 +++ brain_box_msgs/srv/MissionPreflight.srv | 5 +++++ brain_box_msgs/srv/PreflightRun.srv | 3 +++ 5 files changed, 18 insertions(+) create mode 100644 brain_box_msgs/msg/PreflightCheckResult.msg create mode 100644 brain_box_msgs/msg/PreflightStatus.msg create mode 100644 brain_box_msgs/srv/MissionPreflight.srv create mode 100644 brain_box_msgs/srv/PreflightRun.srv diff --git a/brain_box_msgs/CMakeLists.txt b/brain_box_msgs/CMakeLists.txt index c991a74..b7a458d 100644 --- a/brain_box_msgs/CMakeLists.txt +++ b/brain_box_msgs/CMakeLists.txt @@ -117,6 +117,8 @@ rosidl_generate_interfaces(${PROJECT_NAME} msg/MaxMinAve.msg msg/MissionIdArray.msg msg/MissionStatus.msg + msg/PreflightCheckResult.msg + msg/PreflightStatus.msg msg/NodeStatus.msg msg/NormalsStamped.msg msg/NormalWithPoint.msg @@ -212,6 +214,8 @@ rosidl_generate_interfaces(${PROJECT_NAME} srv/SegmentSearch.srv srv/VelocityControl.srv srv/GetMissionStatus.srv + srv/MissionPreflight.srv + srv/PreflightRun.srv srv/LoadFlightPlan.srv srv/ValidateFlightPlan.srv srv/VxFlightPlan.srv diff --git a/brain_box_msgs/msg/PreflightCheckResult.msg b/brain_box_msgs/msg/PreflightCheckResult.msg new file mode 100644 index 0000000..15ca8af --- /dev/null +++ b/brain_box_msgs/msg/PreflightCheckResult.msg @@ -0,0 +1,3 @@ +string check_name +bool passed +string reason diff --git a/brain_box_msgs/msg/PreflightStatus.msg b/brain_box_msgs/msg/PreflightStatus.msg new file mode 100644 index 0000000..8501c5f --- /dev/null +++ b/brain_box_msgs/msg/PreflightStatus.msg @@ -0,0 +1,3 @@ +builtin_interfaces/Time stamp +bool overall_pass +brain_box_msgs/PreflightCheckResult[] checks diff --git a/brain_box_msgs/srv/MissionPreflight.srv b/brain_box_msgs/srv/MissionPreflight.srv new file mode 100644 index 0000000..aa71256 --- /dev/null +++ b/brain_box_msgs/srv/MissionPreflight.srv @@ -0,0 +1,5 @@ +--- +bool success +string reason +brain_box_msgs/PreflightStatus preflight_status +brain_box_msgs/MissionStatus mission_status diff --git a/brain_box_msgs/srv/PreflightRun.srv b/brain_box_msgs/srv/PreflightRun.srv new file mode 100644 index 0000000..b5ee833 --- /dev/null +++ b/brain_box_msgs/srv/PreflightRun.srv @@ -0,0 +1,3 @@ +string[] checks_to_skip +--- +brain_box_msgs/PreflightStatus result From 151180f2883abb5c498b52df2e9434705bf8d36c Mon Sep 17 00:00:00 2001 From: Robin Woodby Date: Fri, 29 May 2026 15:22:13 -0700 Subject: [PATCH 4/8] feat: add launch, abort, and event message types - MissionEvent.msg for state transition events on the events topic - LaunchMission.srv and AbortMission.srv for the ME launch/abort services --- brain_box_msgs/CMakeLists.txt | 3 +++ brain_box_msgs/msg/MissionEvent.msg | 4 ++++ brain_box_msgs/srv/AbortMission.srv | 4 ++++ brain_box_msgs/srv/LaunchMission.srv | 4 ++++ 4 files changed, 15 insertions(+) create mode 100644 brain_box_msgs/msg/MissionEvent.msg create mode 100644 brain_box_msgs/srv/AbortMission.srv create mode 100644 brain_box_msgs/srv/LaunchMission.srv diff --git a/brain_box_msgs/CMakeLists.txt b/brain_box_msgs/CMakeLists.txt index b7a458d..890e7f1 100644 --- a/brain_box_msgs/CMakeLists.txt +++ b/brain_box_msgs/CMakeLists.txt @@ -116,6 +116,7 @@ rosidl_generate_interfaces(${PROJECT_NAME} msg/MarkerType.msg msg/MaxMinAve.msg msg/MissionIdArray.msg + msg/MissionEvent.msg msg/MissionStatus.msg msg/PreflightCheckResult.msg msg/PreflightStatus.msg @@ -213,7 +214,9 @@ rosidl_generate_interfaces(${PROJECT_NAME} srv/SDKPermissionControl.srv srv/SegmentSearch.srv srv/VelocityControl.srv + srv/AbortMission.srv srv/GetMissionStatus.srv + srv/LaunchMission.srv srv/MissionPreflight.srv srv/PreflightRun.srv srv/LoadFlightPlan.srv diff --git a/brain_box_msgs/msg/MissionEvent.msg b/brain_box_msgs/msg/MissionEvent.msg new file mode 100644 index 0000000..199a83f --- /dev/null +++ b/brain_box_msgs/msg/MissionEvent.msg @@ -0,0 +1,4 @@ +builtin_interfaces/Time stamp +string event # PLAN_LOADED, VALIDATED, PREFLIGHT_READY, LAUNCHED, COMPLETED, ABORTED, ERROR +string plan_id +string message diff --git a/brain_box_msgs/srv/AbortMission.srv b/brain_box_msgs/srv/AbortMission.srv new file mode 100644 index 0000000..deb5aed --- /dev/null +++ b/brain_box_msgs/srv/AbortMission.srv @@ -0,0 +1,4 @@ +--- +bool success +string reason +brain_box_msgs/MissionStatus status diff --git a/brain_box_msgs/srv/LaunchMission.srv b/brain_box_msgs/srv/LaunchMission.srv new file mode 100644 index 0000000..deb5aed --- /dev/null +++ b/brain_box_msgs/srv/LaunchMission.srv @@ -0,0 +1,4 @@ +--- +bool success +string reason +brain_box_msgs/MissionStatus status From ca91c389b72df44eb10bc279562cf0b5129c410e Mon Sep 17 00:00:00 2001 From: Robin Woodby Date: Wed, 24 Jun 2026 15:04:22 -0700 Subject: [PATCH 5/8] feat: add pause and resume support as well as preflight check categories --- brain_box_msgs/CMakeLists.txt | 2 ++ brain_box_msgs/action/VxFlightExec.action | 1 + brain_box_msgs/msg/PreflightCheckResult.msg | 1 + brain_box_msgs/srv/PauseMission.srv | 4 ++++ brain_box_msgs/srv/ResumeMission.srv | 4 ++++ 5 files changed, 12 insertions(+) create mode 100644 brain_box_msgs/srv/PauseMission.srv create mode 100644 brain_box_msgs/srv/ResumeMission.srv diff --git a/brain_box_msgs/CMakeLists.txt b/brain_box_msgs/CMakeLists.txt index 890e7f1..bd59515 100644 --- a/brain_box_msgs/CMakeLists.txt +++ b/brain_box_msgs/CMakeLists.txt @@ -218,8 +218,10 @@ rosidl_generate_interfaces(${PROJECT_NAME} srv/GetMissionStatus.srv srv/LaunchMission.srv srv/MissionPreflight.srv + srv/PauseMission.srv srv/PreflightRun.srv srv/LoadFlightPlan.srv + srv/ResumeMission.srv srv/ValidateFlightPlan.srv srv/VxFlightPlan.srv srv/VxMissionExec.srv diff --git a/brain_box_msgs/action/VxFlightExec.action b/brain_box_msgs/action/VxFlightExec.action index 5577776..426b4d1 100644 --- a/brain_box_msgs/action/VxFlightExec.action +++ b/brain_box_msgs/action/VxFlightExec.action @@ -7,6 +7,7 @@ # key="FP_START" value="id" start flight plan with id # key="FP_ABORT" value="" abort currently executing flight plan # key="FP_PAUSE" value="" pause currently executing flight plan +# key="FP_RESUME" value="" resume currently paused flight plan brain_box_msgs/KeyValue command diff --git a/brain_box_msgs/msg/PreflightCheckResult.msg b/brain_box_msgs/msg/PreflightCheckResult.msg index 15ca8af..c5cb92e 100644 --- a/brain_box_msgs/msg/PreflightCheckResult.msg +++ b/brain_box_msgs/msg/PreflightCheckResult.msg @@ -1,3 +1,4 @@ string check_name +string category bool passed string reason diff --git a/brain_box_msgs/srv/PauseMission.srv b/brain_box_msgs/srv/PauseMission.srv new file mode 100644 index 0000000..deb5aed --- /dev/null +++ b/brain_box_msgs/srv/PauseMission.srv @@ -0,0 +1,4 @@ +--- +bool success +string reason +brain_box_msgs/MissionStatus status diff --git a/brain_box_msgs/srv/ResumeMission.srv b/brain_box_msgs/srv/ResumeMission.srv new file mode 100644 index 0000000..deb5aed --- /dev/null +++ b/brain_box_msgs/srv/ResumeMission.srv @@ -0,0 +1,4 @@ +--- +bool success +string reason +brain_box_msgs/MissionStatus status From 8878f9dd53999ca0add74eed3e108daf1ab3566d Mon Sep 17 00:00:00 2001 From: Robin Woodby Date: Thu, 25 Jun 2026 10:43:50 -0700 Subject: [PATCH 6/8] Add in progress bool to preflight status --- brain_box_msgs/msg/PreflightStatus.msg | 1 + 1 file changed, 1 insertion(+) diff --git a/brain_box_msgs/msg/PreflightStatus.msg b/brain_box_msgs/msg/PreflightStatus.msg index 8501c5f..0610ed4 100644 --- a/brain_box_msgs/msg/PreflightStatus.msg +++ b/brain_box_msgs/msg/PreflightStatus.msg @@ -1,3 +1,4 @@ builtin_interfaces/Time stamp +bool in_progress bool overall_pass brain_box_msgs/PreflightCheckResult[] checks From 188e51b66b47f3a664ded879eeb3e87c28679c0e Mon Sep 17 00:00:00 2001 From: Robin Woodby Date: Thu, 25 Jun 2026 11:34:17 -0700 Subject: [PATCH 7/8] Move boolean preflight statuses into single state variable --- brain_box_msgs/msg/PreflightStatus.msg | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/brain_box_msgs/msg/PreflightStatus.msg b/brain_box_msgs/msg/PreflightStatus.msg index 0610ed4..9e876cd 100644 --- a/brain_box_msgs/msg/PreflightStatus.msg +++ b/brain_box_msgs/msg/PreflightStatus.msg @@ -1,4 +1,10 @@ builtin_interfaces/Time stamp -bool in_progress + +uint8 UNKNOWN=0 +uint8 IN_PROGRESS=1 +uint8 PASSED=2 +uint8 FAILED=3 + +uint8 state bool overall_pass brain_box_msgs/PreflightCheckResult[] checks From 8a536ff78cef60776f62e77ef02c60941c15beaa Mon Sep 17 00:00:00 2001 From: Robin Woodby Date: Thu, 25 Jun 2026 15:45:56 -0700 Subject: [PATCH 8/8] feat: support for forcing launch regardless of preflight status --- brain_box_msgs/srv/LaunchMission.srv | 1 + 1 file changed, 1 insertion(+) diff --git a/brain_box_msgs/srv/LaunchMission.srv b/brain_box_msgs/srv/LaunchMission.srv index deb5aed..117fbfa 100644 --- a/brain_box_msgs/srv/LaunchMission.srv +++ b/brain_box_msgs/srv/LaunchMission.srv @@ -1,3 +1,4 @@ +bool force --- bool success string reason