Goby3 3.2.3
2025.05.13
|
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:
interprocess.platform
. This configuration variable exists here exists for iFrontSeat support.app.geodesy.lat/lon_origin
. This configuration variable exists here for iFrontSeat support.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:
[goby.middleware.frontseat.protobuf.basic_simulator_config]
: Configuration when running the basic simulator plugin.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:
[goby.middleware.frontseat.protobuf.bluefin_config]
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:
[goby.middleware.frontseat.protobuf.iver_config]
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:
[goby.middleware.frontseat.protobuf.waveglider_sv2_config]
: