While the Web User Interface provides a great way to get started quickly with OutdoorNav Software, some users will want programmatic control or may wish to develop their own graphical user interfaces – for those users, the Application Programming Interface (API) provides the flexibility to do so. This is illustrated in the figure below.
The API is, at present, a ROS1 Noetic API, but will soon be extended to a ROS2 API. The API is divided into two sections, whose details are provided below:
Platform API: The set of ROS Topics are used to comminucate with the hardware platform (eg. sensor data, wireless, battery state, command velocity). This API can be used by autonomy software packages to interface with the hardware platform.
Topics Published by UGV: The set of topics that are published by the hardware platform.
Topics Subscribed to by UGV: The set of topics that are subscribed to by the hardware platform.
Autonomy API: The set of ROS Topics that are used for monitoring and controlling the the hardware platform through the OutdoorNav autonomy software.
Topics Published by Autonomy: The set of ROS Topics published by OutdoorNav Software, to be subscribed to by the UGV.
Topics Subscribed to by Autonomy: The set of ROS Topics subscribed to by OutdoorNav Software, typically published by the client for directing OutdoorNav operation.
Services Exported by Autonomy: The set of ROS Services provided by OutdoorNav Software, for use by the client to modify/control the behaviour of the Autonomy.
Actions Exported by Autonomy: The set of ROS Actions provided by OutdoorNav Software, for use by the client to modify/control the behaviour of the Autonomy.
Definitions: The set of custom ROS Message, ROS Service, and ROS Action definitions.
API Examples: Example code to come.