The Tracer and the Orbiter

Overview

This is a sample application employing the the multiple-vehicle coordination framework available in AERPAW. In this example, two vehicles (called the Tracer and the Orbiter) are being coordinated by a ground coordinator. The coordinator commands a simultaneous take-off of the two vehicles (the Tracer takes off at 10m altitude, while the Obiter, for safety reasons, takes off at 15m altitude). Once both vehicles completed the take-off stage (which does take different amounts of time), they are both commanded by the coordinator to fly to a waypoint specified  in a .plan file. Once they both arrive, the Tracers stays put, while the Orbiter draws a square around it. Once the orbiting is done, they both repeat the transition to the next waypoint and the orbit until the .plan file is done. After the last waypoint in the .plan file, they first return to their initial launch positions, and then they finally land.

The figure on the right shows the traces for the Tracer (in red) and the Orbiter (in yellow) for a simple .plan file with two waypoints.

State Diagram

The state diagram shown above may seem daunting at the first glance, while in fact is is a relatively simple repetition of the simple coordination pattern shown in the multiple vehicle coordination page. At the highest level the simple coordination mechanism is applied four times: for coordinated take-off, for moving to the next waypoint, for returning to launch (rtl), and, finally, for landing. In each case, at the beginning of the action, the two vehicles first report to the ground coordinator that they are armed, and then enter the wait_loop state, waiting for the signal (a remotely triggered state transition) to start the action, then, upon completing the action informing the coordinator. The coordinator first waits for both drones to confirm that they are armed, then it reads the the .plan file and commands next_waypoint transitions for each waypoint in the .plan file (when the file is done, an rtl is commanded). The Orbiter has extra states, as, once at the next_waypoint, it needs to orbit, while the Tracer simply stays put (in the wait_loop) until the next command from the coordinator. The script exercises all three coordination mechanisms documented on the multiple vehicles coordination page. 

Note that the movements of the two vehicles at the next point are safe, as both vehicles are given the same vector of movement (leading to parallel trajectories): even if the two vehicles would move at different speeds, they would still avoid collisions. The difference in altitude (5m in the sample experiment) provides an additional layer of safety.