Repository navigation
Closed-loop Goby runs of MOOS-IvP missions, with goby test - #7
Merged
tsaubergine merged 9 commits intoNov 4, 2026
Conversation
ivpico_mission_check pokes a mission and checks the helm's postings and state while goby_helm_ivp flies the mission's recorded .bhv against Goby's basic frontseat simulator (time warp 10). run.sh brings up gobyd, the simulator, the frontseat interface and the helm for one mission. ctest closed_loop_<mission> covers s1_alpha, s2_bravo, s3_charlie and s4_delta. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
The goby_helm_ivp smoke test and the closed-loop mission runs are now declarative 'goby test' files: fixtures start gobyd, the simulator, the frontseat interface and the helm, and the runs publish the pokes and expect the helm's postings and state. This replaces ivpico_mission_check, run.sh and test_goby_helm_ivp.sh. 'goby test' is newer than Goby 3.6.1, so init.sh installs Goby from the continuous repository, and the Goby tests are only added when find_package(GOBY) sets GOBY_EXECUTABLE. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
--no-goby leaves Goby3 out (build.sh then skips the Goby app); the "Record missions" workflow uses it, since it only builds MOOS-IvP. The packages.gobysoft.org continuous source and its key are only added when apt has no candidate for libgoby3-dev. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
openocean-messages, MOOS-IvP's helm libraries and IvPico are installed into BUILD_DIR/usr, so build/usr/bin can go on PATH. IvPico installs its libraries, and installed programs find them through an $ORIGIN/../lib RPATH. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
The vehicle is served as an AIS target on TCP port 54000 for OpenCPN. launch/goby/alpha/README.md covers running the mission and connecting OpenCPN; the top-level README points to it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
viewer.launch runs a MOOS community (alpha.moos, with pNodeReporter and pMarineViewer set up as in MOOS-IvP's s1_alpha) and goby_moos_gateway with a new IvPico plugin. The plugin posts what pHelmIvP and its navigation would (NAV_*, the helm's postings and IVPHELM_*), and gives configured MOOS variables, such as pMarineViewer's buttons, back to the helm. allstop_string() moves from the replay test into the helm library, beside modes_string(), for IVPHELM_ALLSTOP and IVPHELM_SUMMARY. The alpha launch's Goby platform is now "alpha", so the behaviors' labels match the MOOS mission's. init.sh installs Goby's MOOS support and the MOOS-IvP apps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
set_datum_warp.sh sets the datum and time warp in every configuration and alpha.moos, starts the simulated vehicle at the datum, and picks the MOOS-IvP image covering the datum for pMarineViewer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
…ynamics config/alpha.bhv is now MOOS-IvP's s1_alpha mission's, so the Goby and MOOS missions fly the same survey (1.2 m/s) and return (2 m/s). The simulator's turn rate (4 deg/s) and acceleration (0.25 m/s^2) are those measured from uSimMarineV22 in the recorded s1_alpha mission. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #6. This finishes Phase 2 of the plan: four MOOS-IvP missions run end to end under Goby. The Goby tests are declarative
goby testfiles.What's here
goby testis newer than Goby 3.6.1, so the sourceinit.shadds is packages.gobysoft.org'scontinuousrepository.libgoby3-dev.init.sh --no-gobyleaves Goby out, andbuild.shthen skips the Goby app. The "Record missions" workflow uses it.find_package(GOBY)setsGOBY_EXECUTABLE, which is only true for builds that havegoby test. Older installs still buildgoby_helm_ivpand skip the tests with a status message.closed_loop_{s1_alpha,s2_bravo,s3_charlie,s4_delta}):src/test/missions/goby/closed_loop.ymlholds the fixtures (gobyd,goby_basic_frontseat_simulator, the frontseat interface andgoby_helm_ivp, with time warp 10) and the startup check;<mission>/test.ymlincludes it, publishes the pokes (DEPLOY=true,MOOS_MANUAL_OVERRIDE=false) and expects the helm's postings by a deadline;goby test visualizedraws the plan, and a failed run's report names each fixture's log.goby_helm_ivp):src/test/goby/helm_ivp/test.ymlchecks the frontseat bridge. One NodeStatus goes in; a DesiredCourse with heading 90,HELM_DRIVEand a Status of DRIVE come out.ivpico_mission_check,run.shandtest_goby_helm_ivp.sh, which the test files replace.build/usr:build.shinstalls openocean-messages, MOOS-IvP's helm libraries and IvPico intobuild/usr, sobuild/usr/bincan go onPATH.$ORIGIN/../libRPATH.goby_opencpn_interface, which serves the vehicle as an AIS target on TCP port 54000.launch/goby/alpha/README.mdcovers running the mission and connecting OpenCPN.src/test/missions/README.mdnow describes the test files, and the top-level README points to the alpha launch's README.RETURN=truebefore 460 s (recorded at 370 s)MODE=ACTIVE:SURVEYINGbefore 10 s;RETURN=truebefore 270 sMODE=ACTIVE:LOITERINGbefore 10 s; still in DRIVE at 200 sMODE=ACTIVE:LOITERINGbefore 10 s;TIME_AT_SURFACE=1before 180 sTesting
goby test validatepasses on all five files.init.sh: the continuous source is added, all 15 tests pass, andbuild/usr/bin/goby_helm_ivpis installed.init.sh --no-goby: no Goby source or packages, and all 10 tests pass.goby_helm_ivpfromPATH: every library resolves frombuild/usr/lib.goby_opencpn_interface: AIS sentences for the vehicle arrive on port 54000.🤖 Generated with Claude Code
https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp