/// @mainpage


Tethys-class Long-Range Autonomous Vehicle (LRAUV) Backseat API
================================================================

Introduction
-------------
The Tethys backseat interface extends [LRAUV][LRAUV]’s control architecture for interoperability between the LRAUV’s main vehicle application (MVA) and other custom applications that run onboard LRAUV, either on the main vehicle computer (MVC) or a secondary backseat computer (BSC). The API makes use of the Lightweight Communication and Marshalling ([LCM][LCM]) middleware model for message passing, and provides backseat control of the vehicle by sending commands and telemetry datagrams to and from the MVA using a publish/subscribe communication architecture. The LCM-based implementation allows users to develop new sensor interfaces, behaviors, and processing applications in an environment of their choice and with little risk to the safety of the LRAUV, which remains under the primary control of the MVA.

This package defines generic LCM message-types for broadcasting data and tools that extend LCM’s built-in marshaling capabilities for this specific application (C++).

Building
---------

```shell
# build examples and Doxygen docs
cd lrauv-lcmtypes;
make all docs

```

Documentation
-------------

Access the project's documentation at: ./docs/docs.html

* Review the [Tethys LCM type specification][TETHYS_LCM_TYPE].
* Get started with the [Tethys LCM API C++ Tutorial][TETHYS_LCM].
* Documentation for the [C++ Tethys LCM API][TETHYS_LCM_API].


@note Internal LRAUV variable definitions will use [CF standard names] and canonical units where possible.

© [Monterey Bay Aquarium Research Institute (MBARI)][MBARI], 2020

-------------
[CF standard names]: http://cfconventions.org/standard-names.html
[LCM]: http://lcm-proj.github.io/
[LRAUV]: https://www.mbari.org/at-sea/vehicles/autonomous-underwater-vehicles/long-range-auv-tethys/
[MBARI]: https://www.mbari.org/
[TETHYS_LCM]: @ref resources/Tethys_LCM_CPP_Tutorial.md
[TETHYS_LCM_API]: @ref lrauv_lcm_tools
[TETHYS_LCM_TYPE]: @ref TethysLcmTypes::LrauvLcmMessage
