## 4 Language for Cinematography Mission Description  
There are professional drones for filming in the market, and many of them include autonomous capabilities to implement certain specific shots, for example, a panoramic view or tracking a moving target. However, there is no general framework to specify complete missions for autonomous cinematography. In this section, we present a novel language to describe aerial cinematography missions for multiple drones. We use a vocabulary that the editorial team can understand and define an XML-based dialect to write shooting missions. In the following, we explain the structure of the XML files and how  
Figure 1: General scheme of the system architecture. The director defines shooting missions with the Dashboard and sends them to the Mission Controller. This Mission Controller uses a Planner to compute plans that are then sent to the drones. During the execution of the plan, the Mission Controller sends events to the drones to trigger actions and reports periodically to the Dashboard about the execution/system status. they can be converted into lists of tasks for autonomous drones. The complete XML schema is also publicly available ([[https://grvc.us.es/downloads/docs/multidrone_schema.xsd](https://grvc.us.es/downloads/docs/multidrone_schema.xsd)]([https://grvc.us.es/downloads/docs/multidrone_schema.xsd](https://grvc.us.es/downloads/docs/multidrone_schema.xsd))). Our XML schema to describe shooting missions has the following main information entities:  
* _Event_: This is the central entity of information. An event represents a real-world occurrence with a spatial and temporal localization that is going to be filmed. For instance, a sport event like a rowing/cycling race. An event can have child events, i.e., events that occur relatively to the timeline of their parent. For example, different stages of a cycling race or different parts of a particular stage. Thus, there can be a tree-like structure of events where each of them can have a _planned start time_ and _duration_. * _Mission_: This describes the aerial shots designed by the editorial team for a given event. Missions can only be associated with leaf events, i.e., events with no children. A leaf event may contain an arbitrary number of missions, each of which has a specific _role_. This is because the director could design different missions for the occurrence of the same event, depending on contextual conditions. For example, the director might plan to have two distinct (and mutually exclusive) missions, in case of sunny or cloudy weather, respectively. Each mission can have associated a specific _drone team_, made up of several drones. This choice has been made to foresee settings in which more than one multi-drone team are available, so the corresponding team for each mission needs to be specified. Moreover, a mission can have associated an _editorial team_, i.e., a group of Dashboard users, each with their own role, who will be granted permission to manage and modify the mission data. * _Shooting Action Sequence_: A mission consists of one or more shooting action sequences (SASs), which can also have different _roles_. Thus, the director can plan different actions within the mission depending on contextual circumstances. For example, if the associated event is a race finish line, the director may decide to have two possible shooting action sequences: one in case of arrival in the sprint, another in case of a solo attack. All shooting action sequences with the same role within a mission will happen concurrently as the associated event occurs. * _Shooting Action_: A shooting action sequence is made up of an ordered sequence of shooting actions (SAs). Therefore, shooting action sequences with the same role within a mission are aimed to run in parallel, whereas the shooting actions within each of them occur sequentially. A shooting action represents an aerial visual shot to be performed with one or several drones.