This project aims to create lightweight applications for the IvP solver from MOOS-IvP.
Rather than using "bridges" or "gateways" to connect middlewares, this project creates first-class applications for IvP and the maritime behaviors in the middleware of choice (Goby, ROS, etc.).
One way to think of this project is as a generator for the equivalent of the MOOS-based pHelmIvP in your pub/sub middleware of choice.
- src: Source code
- lib: Library source
- interface: Interface messages (Protobuf)
- helm: The helm, pHelmIvP without MOOS (
ivpico::helm::Helm)
- bin: Binary source
- goby: Goby middleware app (
goby_helm_ivp) - ros: ROS middleware node
- goby: Goby middleware app (
- test: Tests, including replays of MOOS-IvP missions (
test/missions)
- lib: Library source
- launch: Example missions
- external: Submodules
- openocean-messages: openocean-messages, for the
NavigationandControlSetpointmessages - moos-ivp: MOOS-IvP, for the IvP solver and behaviors
- openocean-messages: openocean-messages, for the
This section was written by Claude.
init.sh checks out the submodules and installs the Ubuntu packages needed to build them and IvPico. These include Goby3, for the Goby app, adding packages.gobysoft.org's continuous builds if apt doesn't already have it; init.sh --no-goby leaves Goby3 out, and build.sh then skips the Goby app. build.sh then builds, all in build/, and installs each into build/usr:
- openocean-messages, into
build/external/openocean-messages; - MOOS-IvP's helm libraries (
IVP_BUILD_HELM_LIBS_ONLY, as shared libraries, without MOOS or its apps), intobuild/external/moos-ivp, installed first so that IvPico canfind_package(IVP); - IvPico, against both.
./init.sh
./build.sh
ctest --test-dir build
build.sh passes any arguments on to IvPico's CMake, and BUILD_DIR overrides the build directory. Add build/usr/bin to your PATH to run the installed apps.
To update a submodule, check out the commit you want in it and commit the new pointer, e.g. git -C external/openocean-messages pull origin main && git add external/openocean-messages.
This section was written by Claude.
goby_helm_ivp runs the helm in Goby3. It publishes and subscribes the ivp.interface messages on the ivpico::helm::* groups (src/bin/goby/groups.h), and can stand in for the MOOS helm behind goby_frontseat_interface (frontseat { enable: true }). goby_helm_ivp -e prints an example configuration.
launch/goby/alpha runs the alpha mission against Goby's basic frontseat simulator, with OpenCPN as a chart display: see its README.