4.2) Vehicle Control Software

Overview


The full software stack for Vehicle Control is shown in the figure to the right. AERPAW recommends that the Experimenters either use (or modify) some of the sample applications AERPAW provides, or write their own applications using the AERPAW Vehicle Library. However, this being said, the Experimenters can write Vehicle Control Applications using any software they desire, as long as it produces MAVLink message that can pass the checks in the MAVLink Filter.

Below are several options for writing AERPAW valid Vehicle Control Applications in an increasing order of difficulty and flexibility:


The AERPAW vehicle library provides a framework for controlling vehicles in AERPAW in a flexible, yet safe manner. The library provides support for both synchronous, and well as asynchronous code execution, with the option of using a finite state machine in the vehicle scripts.

The full documentation for the vehicle control library is available.

The documentation walks the user through running a simple script, synchronous and asynchronous programming, as well as implementing a finite state machine. The documentation also clarifies how AERPAW uses coordinates (only uses absolute coordinates), as well as vectors as a way to implement relative movement.

The library automatically handles the arming protocol in AERPAW. The AERPAW user should assume that their script is called immediately after the AERPAW safety pilot armed the vehicle. Note that the vehicle arming command is not available to the AERPAW user (or even the AERPAW lib): only the safety pilot has the ability to arm the vehicle in the testbed, and the Experimenter, while wearing the Operator hat in development mode.

Additionally, the library provides a few vehicle utility functions in aerpawlib.utils such as a computing distances between two coordinates, adding a relative displacement to an absolute location, etc.