# On Unmanned Aerial Vehicles Light Show Systems: Algorithms, Software and Hardware
## 1 Introduction  
Unmanned aerial vehicle (UAV) light shows (UAV-LS) are an emerging technology for festivals and company promotions. Compared with traditional fireworks, UAV-LS are environmentally friendly and more flexible to present animations. With the rapid advancement of UAVs and their control technologies, successful UAV-LS cases can be found, manufactured by various companies such as Intel and Ehang [1, 2]. As a result, studies of swarm control, communication, planning, and software and hardware design are becoming increasingly popular for more intelligent, energy-efficient, and beautiful light shows. There are many ways to control a group of UAVs, e.g., using a brain-computer interface (BCI) [3] or a ground control station (GCS). In most UAV-LS systems, a ground control station, e.g., a high-performance computer or mobile device, is responsible for managing and controlling the UAVs [4]. Depending on the degree of intervention from the GCS, UAV-LS systems can be operated under three modes, i.e., man-in-the-loop, semi-autonomous, and autonomous [5, 6]. In the man-in-the-loop mode, UAVs are completely controlled by the GCS during the light show. In the semi-autonomous mode, the onboard flight controller, which maintains the flight stability and avoids collisions, cooperates with the GCS. In the autonomous mode, UAVs can autonomously make decisions and plan their paths. In the context of a light show, there is a necessary trade-off between thecost of hundreds or even thousands of UAVs and the control performance. Indeed, the success of the autonomous mode heavily relies on powerful onboard computing units and sensors, which are extremely expensive for a large-scale UAV group. As a result, the semi-autonomous mode is considered in this paper as an affordable and competitive solution. In such mode, the GCS sends way-point information to UAVs and the onboard flight controller tracks the way-point and then sends back the status of the UAVs. Since UAV-LS systems usually perform in fixed and limited airspace, the increasing demand of communications among UAVs and the GCS in the semi-autonomous mode would not result in significant expense growth. One of the key steps in the process of a UAV-LS is formation transformation, where UAVs move from an initial formation to a target one in order to switch light graphics in the air. To do so, the task assignment problem (TAP) must first be tackled, which in essence states that each node in the target formation should be assigned to a UAV in order to satisfy a pre-defined criteria, e.g., minimum total flight distance. Then, the trajectory planning problem must be considered to generate smooth and collision-free trajectories for safety concerns. Studies on these problems have been reported by many researchers. In [7; 8; 9], path planning and obstacle avoidance algorithms for a single UAV have been reviewed. In [10; 11], the particle swarm optimization (PSO) algorithm has been employed to solve the TAP without collision avoidance. In [12], a discrete wolf pack algorithm is proposed to solve the multi-UAV task assignment with fast convergence speed. In [13], [PERSON] et al. present a multi-UAV formation reconfiguration algorithm based on the hybrid PSO and genetic algorithm (HPSOGA) to achieve formation transformation while satisfying various formation constraints. In [14; 15], a distributed cooperative control method is proposed to realize the desired formation without task assignment and collision avoidance. In [16], a UAVs-LS system is realized to achieve precise formation and coordination control using multi-UAV teaming technologies. However, in the aforementioned works, the TAP and the trajectory planning problem are decoupled, such that the TAP generates straight-line trajectories from the initial node to the target one. Yet in practice, UAVs often deviate from the straight-line trajectories due to mutual collision avoidance and external disturbances, leading to a mismatch between the actual task execution cost and the desired one.