# High-Fidelity Drone Simulation with Depth Camera Noise and Improved Air Drag Force Models
## 1 Introduction  
Autonomous drones, also known as unmanned aerial vehicles (UAVs), hold tremendous potential across various domains due to their high-speed flight capabilities and capacity to perform missions without human intervention [1]. These applications include reconnaissance [2, 3], security [4], transportation [5], agriculture [6], construction [7, 8], and mapping [9, 10]. However, deploying and testing autonomous drones in real-world environments poses challenges, including safety concerns [11, 12], as well as the costs and time required. Consequently, many studies on autonomous drones opt for simulation-based experimentation over real-world scenarios [13]. Among numerous drone simulators, Airsim stands as a widely adopted environment for autonomous drone testing, offering comprehensive components such as environment models, vehicle models, physics engines, sensor models, and a rendering interface. It harnesses the high-speed processing capabilities of the NVIDIA PhysX engine, performing kinematic computations at 1000 Hz using state values, including position, orientation, linear velocity, linear acceleration, angular velocity, and angular acceleration [14]. Airsim can also simulate the standard temperature and pressure using the 1976 U.S. standard atmosphere model. As seen in Figure 1, Unreal Engine, known for its exceptional rendering quality, powers the simulation environment. Unreal Engine's robust collision detection system provides detailed information about collision impact positions, impact normals, and penetration depths. This synergy enables Airsim to simulate camera sensors with high-quality rendering when coupled with Unreal Engine. Regarding sensor models, Airsimfeatures realistic representations of a barometer (MEAS MS5611-01 BA), magnetometer (Honeywell HMC5883), and IMU (InvenSense MPU 6000), complete with Gaussian noise modeling. Additionally, Airsim includes GPS models with simulated vertical and horizontal error, along with a 200 ms latency. Although Airsim with Unreal Engine simulator has many advantages, it still has some disadvantages that need to be improved. In fact, for drones, the high-resolution rendering does not replicate the sensing and control in the same way between a real-world environment and in a simulation environment [15; 16]. Compared to high-resolution rendering, the accurate implementation of depth camera and air drag force models is more important to make the simulation environment close to the real-life environment [17]. However, those models in Airsim simulation are unrealistic for accurately evaluating the control and estimation algorithms of a drone flight [18; 19]. Specifically, the depth camera model is overly idealistic in the simulation since it provides the exact value without any errors [20]. In contrast, the aerodynamic model is too simplified, so the external force caused by air drag when the drone flies is unrealistic [21]. As a result, the algorithms for filtering the noise from the depth sensor [22], one of the most common sensors in drones to sense the surrounding environments [23], which are developed to test the drone in a real-world environment, cannot be adequately verified through simulations. The control algorithms tested in simulations, which aim to counter external forces like air drag, can lead to significant issues when applied in real-world scenarios. Therefore, in order to align the performance of autonomous drone algorithms developed in simulations with real-world operation, enhancements to the simulation are required. These enhancements should include a more realistic depth camera sensor and a dynamic air drag force model. In this paper, our objective is to enhance the realism and accuracy of the drone simulation environment in Airsim with Unreal Engine. We propose two novel models: one for stereo IR depth camera noise and the other for air drag force, known as the rotor drag force model. As previously mentioned, Airsim lacks a depth camera noise model, which we address by introducing our own.