In Sect. 2.1, we will introduce the UAV platform as well as the wind sensor used in our flight experiments. Then, in Sect. 2.2, we will introduce a working hypothesis regarding the wind distribution, which provides the necessary rationale to our experiment design. Finally, in Sect. 2.3, we will provide the details on how our flight experiment is conducted and how the data on both the UAV and the wind are collected.
Hardware description
The multirotor UAV used in our experiments is a retrofitted octocopter, of which the main body is built from a DJI Spreading Wings S1000+. The Pixhawk Cube is selected as the flight controller due to its fully programmable capability. A FrySky X8R receiver and a Taranis X9D Plus transmitter are used as the RC pair. A Here+ RTK GPS is used to provide precise position and velocity estimation of the UAV and a telemetry radio is installed to monitor the real-time flight status. Each propeller of the octocopter has a diameter of 38.1 cm and a maximum thrust of 2.8 kg. The octocopter has a motor-to-motor distance of 104.5 cm and a takeoff weight of 7.0 kg. A 16,000 mAh 6S lithium battery is used, which can provide a flight duration of around 20 minutes. A photo of our multirotor UAV is provided in Fig. 1.
The wind sensor used in our experiments is a Model 91000 ResponseONE ultrasonic anemometer, which can measure horizontal winds. Winds in the vertical direction are less significant than the horizontal winds and thus neglected in our study. The sensor is mounted on top of a telescopic antenna mast and has a distance of 4.6 m (15 ft) above the ground.
Working hypothesis on wind distribution
Figure 2 shows the setup of our outdoor flight experiments, which will be explained in detail in the next sub-section. Since the goal of this paper is to study the wind effects on multirotor UAVs, ideally we would like to measure the wind at the location of the UAV, which unfortunately cannot be realized in practice. Therefore, one working hypothesis that we are making in this paper is that after considering transport delay, the wind at the location of the UAV is roughly the same as the wind at the location of the wind sensor, as long as the UAV and the wind sensor are at the same height and not far away from each other. Such a hypothesis is in accordance with the Taylor’s hypothesis, which states that an eddy, satisfying \(\sigma _M < 0.5 M\) with M being the wind speed and \(\sigma _M\) being the standard deviation of the wind speed, has negligible change as it advects past a sensor Stull (2012).
Table 1 The RMSEs of two sensor readings in the two scenarios shown in Fig. 3 In order to test our hypothesis, we use two identical wind sensors and compare their wind measurements in two different scenarios (as shown in Fig. 3): (i) the sensors are positioned along the wind direction and (ii) they are positioned perpendicular to the wind direction. The sensors are placed at the same height (4.6 m) above the ground. The wind speed and direction measurements from the two sensors are plotted in Fig. 4. A transport delay has been considered in scenario i) to account for the wind traveling time. The root mean square errors (RMSEs) between the two wind sensor readings are calculated for both scenarios and the results are provided in Table 1. It can be observed that the RMSEs are very small compared to the mean wind speed and the mean direction. Moreover, the difference along the wind direction is smaller than the one perpendicular to the wind direction.
Based on these observations, in our flight experiments, we decide to command the UAV to hover at a position a distance of 4.6 m away from a single wind sensor and along the wind direction. The measured wind speed and direction by the wind sensor will be regarded as wind data at the location of the UAV after taking a transport delay into consideration. The wind sensor is placed upstream of the UAV so that the downwash from UAV propellers does not affect the wind measurements. Moreover, the UAV is commanded to fly at the same height as the wind sensor so that we can ignore the vertical distribution of the wind.
Comment We would like to point out that, even though our hypothesis is still not ideal (ideally we would hope to directly measure the wind at the exact location of the UAV), it does reflect the fact that winds change more rapidly temporally than spatially (Stull 2012). Furthermore, our treatment of winds, whereas we only assume winds to be spatially uniform, is far more sophisticated than state of the art (Lusardi 2004; Juhasz et al. 2017), where winds are assumed to be uniform both spatially and temporally.
Flight Experiments
The goal of our modeling (system identification) effort is to identify the bare-airframe model under the effects of wind. What we meant by “bare-airframe model” is simply a model consisting of the mixer, the actuators, and the vehicle, as shown in Fig. 5. The mixer generates the command for each motor based on the controller output. The commands are then executed by actuators which include the ESCs, motors, and rotors, resulting in different forces and torques and eventually change the state of the vehicle. The bare-airframe is known to be unstable, therefore we must have the control system (see Fig. 5) active during our flight experiments. The pilot command \(\delta _{pilot}\) and the computer-generated command \(\delta _{auto}\) (to be described later) are injected into the control system, resulting in four inputs to the mixer: \(\delta _{lat}\), the roll control, \(\delta _{lon}\), the pitch control, \(\delta _{yaw}\), the yaw control, and \(\delta _{thr}\), the throttle control. Our control system is customized in order to provide a position feedback to keep the UAV roughly a 4.6 m clearance above the ground (to ensure that the ground effects do not contribute to the identified model (Wei et al. 2019). The measured wind is used as described in Sect. 2.2 and treated as an additional input, \(\delta _{wind}\), into the bare-airframe model.
The onboard inertial measurement unit (IMU) measures the translational accelerations and the angular rates of the UAV, while the RTK GPS and the magnetic compass measure the global position and the heading angle of the UAV, respectively. All these measurements pass through an extended Kalman filter, resulting the follow set of estimated states: (1) the roll, pitch, yaw Euler angles \(\{\phi ,~\theta ,~\psi \}\), (2) the roll, pitch, yaw angular velocities \(\{p,~q,~r\}\) in the body frame, (3) the linear velocities \(\{v_n,~v_e,~v_d\}\) in the inertial frame where the subscripts n, e, d represent for the north, east, downward directions, and (4) the linear accelerations \(\{a_x,~a_y,~a_z\}\) in the UAV body frame where the subscripts x, y, z align with the vehicle’s body axes. All these states, together with the mixer inputs \(\{\delta _{lat},~\delta _{lon},~\delta _{yaw},~\delta _{thr}\}\) which are the magnitudes of latitude, longitude, yaw, and throttle commands normalized to 0~100%, are logged at 100 Hz. On the other hand, the horizontal wind speeds (\(v^w_n\), \(v^w_e\)) in north and east directions are recorded at 20 Hz by the wind sensor, where the superscript w represents for the variable related to wind. They are resampled to 100 Hz through the fourth-order spline interpolation to be consistent with the estimated states. Moreover, the airspeed in the body frame can be calculated by using \({\mathbf {V_b}} = {\mathbf {R^b_i}} ({\mathbf {V_{i}}} -{\mathbf {V_{i,~wind}}})\), where \({\mathbf {V_b}}=[\)u, v, w\(]^T\) is the body translational velocity vector and \(\{u,~v,~w\}\) are three velocities aligning with the vehicle’s body axes. \({\mathbf {V_{i}}}=[v_n,~v_e,~v_d]^T\) and \({\mathbf {V_{i,~wind}}}=[v^w_n,~v^w_e,~0]^T\) are the inertial velocity and the inertial wind speed vectors, respectively, and \({\mathbf {R^b_i}}\) is the rotation matrix from the inertial frame to the body frame.
We apply two different types of computer-generated commands (signals) in our flight experiments: (1) a frequency sweep signal for the frequency-domain identification purpose, and (2) a doublet signal for the time-domain model validation purpose. A frequency sweep signal spans a frequency range of 0.1–10 Hz with a fade-in added in the low frequency portion to avoid sharp inputs to the motors (Tischler and Remple 2012), while a doublet signal is a two-sided pulse with the same magnitude in both the positive and the negative directions. Two sets of sample flight data, one for a longitudinal sweep and the other one for a longitudinal doublet, are shown in Figs. 6 and 13, respectively.
We call one of our data collection sessions a “trial”. Each trial corresponds to one particular signal (frequency-sweep or doublet), one particular axis (longitudinal, lateral, directional, or throttle), and one particular wind condition (calm, light, and strong, more details will be provided later). Each trial starts and ends at the same trim condition and lasts 34 s [the duration is selected to capture enough spectral contents and ensure the vehicle’s attitude controls do not degrade as the battery weakens (Michel et al. 2019)]. Before each trial, the magnitudes of the to-be-injected signal, whether frequency-sweep or doublet, is determined to sufficiently and effectively excite the multirotor UAV dynamics, e.g., ensuring a good signal-to-noise ratio. We have conducted 5 trials for each signal-axis-wind combination, therefore, the total trial number is \(5 \times 2 \times 4 \times 3=120\). To allow us to capture the effects of wind on UAV dynamics, we select three days with quite different wind conditions: a calm wind day (with an average wind speed of 0.9 m/s), a light wind day (with an average wind speed of 2.7 m/s) and a strong wind day (with an average wind speed of 5.4 m/s) and conduct a total of \(5 \times 2 \times 4=40\) trials on each day. Use the Beaufort Scale to categorize the wind conditions, the three wind speeds fall into force 0, force 2, and force 4, respectively. It is noted that even though we only selected three wind conditions here, the proposed method can be extended to different wind conditions. The three wind conditions we surveyed in this manuscript are the wind speeds common in the area we lived in. Higher wind speeds are possible but can rarely be seen during our data collection season, so we temporarily don’t have the data for them.