|
Goby3 3.5.1
2026.06.04
|
The goby_frontseat_interface application provides a common application for handling plugins for different vehicle control computers (Bluefin, Iver, WaveGlider, etc.). The goal is to reduce the duplication of effort required to support a new vehicle platform with an autonomy system written in Goby3.
This is the Goby version of the MOOS iFrontSeat. The two applications share the same drivers and motivation, so it is worth reading the iFrontSeat documentation as well.
goby_frontseat_interface is effectively a mediator between two interfaces: the Helm Interface (providing desired setpoints of heading, speed, depth, etc.) and the Vehicle Interface (carrying out the desired setpoints and providing low-level data).
The groups are defined in
and the Protobuf messages are in goby/src/middleware/protobuf/frontseat.proto and can be included using:

The Helm Interface must provide the following publications:
It must also subscribe to:
goby_frontseat_interface has built-in support for the pHelmIvP application from MOOS-IvP or alternatively the user can provide this interface with a custom app.
To use the MOOS-IvP interface, complete the [goby.moos.protobuf.moos_helm] configuration block:
and at a minimum run MOOSDB and pHelmIvP.
The Vehicle Interface connects the vehicle API to Goby3. It is a subclass of goby::middleware::frontseat::InterfaceBase which is defined in
See the MOOS iFrontSeat document on writing this interface.
The Vehicle Interface must be compiled as a shared library that exposes a C function "frontseat_driver_load" which must have the signature:
This shared library is then loaded at runtime by goby_frontseat_interface using the environmental variable FRONTSEAT_DRIVER_LIBRARY, which is a path to a shared library containing the desired interface to run. This path must be fully qualified or on the ld library path (e.g. environmental variable LD_LIBRARY_PATH).
For example:
The goby_frontseat_interface has one required configuration block:
You can set [goby.moos.protobuf.moos_helm] if using MOOS-IvP; see above.
This driver shows how to use goby_frontseat_interface and provides an example for creating your own plugins. It can also be used for simple vehicle simulations.
This is run with the goby_basic_frontseat_simulator application which provides the vehicle interface and a basic motion model.
Additional configuration:
See the goby_frontseat_interface configuration from the Goby3 course for a simple working example: https://github.com/GobySoft/goby3-course/blob/master/launch/alpha/usv_config/frontseat.pb.cfg, launched from https://github.com/GobySoft/goby3-course/blob/master/launch/alpha/usv.launch.
The goby_frontseat_interface_bluefin shell script runs goby_frontseat_interface with the plugin for the General Dynamics Bluefin Standard Payload Interface (SPI). This public SPI is not complete, so request a copy from Bluefin if possible.
Key additional configuration variables:
See goby_frontseat_interface_bluefin -e for more configuration options.
The goby_frontseat_interface_iver shell script runs goby_frontseat_interface with the plugin for the L3Harris Iver AUV using the Iver "Remote Helm" interface.
Key additional configuration variables:
See goby_frontseat_interface_iver -e for more configuration options.
This is largely obsolete at this point given the end of life for the WaveGlider SV2, but the goby_frontseat_interface_waveglider shell script runs a plugin for the LiquidRobotics WaveGlider SV2.
Key additional configuration variables: