6.1.3. Generated Plan Per Drone

Once the list from previous section is sent to the Planner, this is in charge of solving the task assignment problem computing a plan fulfilling with time and battery constraints. Shooting actions with several shooting roles, i.e., multi-drone shots, are decomposed into several tasks with the same starting time, one per drone. With the location and timing information from all tasks, as well as the position and battery for the available drones, the Planner computes a schedule solving the task allocation problem. Different planners could be used and its implementation is not the focus of this paper (see [19] for more information). In our example, at least three drones are necessary to implement the shooting mission. One drone could perform two consecutive tasks (corresponding to SA1 and SA2), while the other two drones perform one single task each (corresponding to each of the shooting roles in SA3). The final plan could consist of the following list of DRONE ACTION objects per drone.

Drone 1: DA1-1: action\_type: TAKE-OFF action\_id: start\_event: GET\_READY shooting\_action: path: - DA1-2: action\_type: GOTOWAYPOINT action\_id: A1 start\_event: shooting\_action: path: (planned path to SA1 start position) DA1-3: action\_type: SHOOTING action\_id: A1 start\_event: START\_RACE shooting\_action: SA1 path: - DA1-4: action\_type: GOTOWAYPOINT action\_id: A2 start\_event: shooting\_action: path: (planned path to SA2 start position) DA1-5: action\_type: SHOOTING action\_id: A2 start\_event: shooting\_action: SA2 path: - DA1-6: action\_type: GOTOWAYPOINT action\_id: start\_event: shooting\_action: -

path: (planned path to landing station) DA1-7: action\_type: LAND action\_id: start\_event: shooting\_action: path: - Drone 2: DA2-1: action\_type: TAKE-OFF action\_id: start\_event: GET\_READY shooting\_action: path: - DA2-2: action\_type: GOTOWAYPOINT action\_id: A3 start\_event: shooting\_action: path: (planned path to SA3 start position) DA2-3: action\_type: SHOOTING action\_id: A3 start\_event: START\_RACE shooting\_action: SA3' (as SA3 but only with SR1) path: - DA2-4: action\_type: GOTOWAYPOINT action\_id: start\_event: shooting\_action: path: (planned path to landing station) DA2-5: action\_type: LAND action\_id: start\_event: shooting\_action: path: - Drone 3: DA3-1: action\_type: TAKE-OFF action\_id: start\_event: GET\_READY shooting\_action: path: - DA3-2:

```
action_type: GOTOWAYPOINT
action_id: A3
start_event: -
shooting_action: -
path: (planned path to SA3
start position)
DA3-3:
action_type: SHOOTING
action_id: A3
start_event: START_RACE
shooting_action: SA3'' (as SA3 but
only with SR2)
path: -
DA3-4:
action_type: GOTOWAYPOINT
action_id: -
start_event: -
shooting_action: -
path: (planned path to landing
station)
DA3-5:
action_type: LAND
action_id: -
start_event: -
shooting_action: -
path: -
```
These lists of DRONE ACTION objects are sent to the respective drones. Shooting actions are interleaved with navigation actions. A GET\_READY event has been included. This is generated manually by the director at the beginning of the mission to get the system started and take off the drones. Thus, each drone takes off and navigates to its starting position in its associated shooting action. Then, it waits there for the start event of that shooting action, to trigger the shooting action itself. This process is repeated sequentially until the drone is commanded to land. In other missions, there may be landing operations in between shooting actions to recharge batteries, depending on the drones maximum flight time.
