Drag constant
In this section, you will experimentally determine the propeller drag constant \(k_d\).
Theoretical background
The propellers of a quadcopter act as aerodynamic surfaces, accelerating the airflow through them. This process consumes energy from the batteries and generates both thrust forces and drag torques on the quadcopter. As previously derived, the drag torque \({\color{var(--c2)}\tau}\) produced by a propeller is proportional to the square of its angular velocity \({\color{var(--c1)}\omega}\).
Where \(k_d\) is the drag constant (\(\text{N·m·s}^2\)).
Experimental procedure
You will measure the drag torque \({\color{var(--c2)}\tau}\) generated by the propellers using the yaw rotation rig, a test fixture that constrains every degree of freedom of the quadcopter(1) except rotation \({\color{var(--c1)}\psi}\) around its vertical axis.
- To secure the quadcopter, slide it in from the side and fasten it using two screws.

By measuring the yaw angle \({\color{var(--c1)}\psi}\) as a function of time and knowing the quadcopter vertical moment of inertia \(I_{zz}\), which was derived in Exercise 3.2, it is possible to determine the total drag torque generated by the propellers through a dynamic analysis. To record the yaw angle over time, you should record the experiment using the slow-motion mode of your smartphone, with a stopwatch visible in the field of view.

You must upload to the drone a program that spins propellers \(1\) and \(3\) at \(1000~\text{rad/s}\), and propellers \(2\) and \(4\) at \(2000~\text{rad/s}\). Since propellers \(1\) and \(3\) rotate clockwise and propellers \(2\) and \(4\) rotate counter-clockwise, a net torque will be produced, causing the drone to rotate in the counter-clockwise direction. For each quarter turn (\(90^{\circ}\)), record the elapsed time. Repeat the experiment three times and compute the average measurement.

To simplify the procedure, you may start and stop the propellers using the Take off and Land buttons in the Command Based Flight Control, located at the bottom-right corner of the Crazyflie Client.

Create a file named drag_constant.c inside the src/identification folder with the following code (1):
- Do not forget to update the motor model coefficients \(a_2\) and \(a_1\) (lines 8–9) with your estimation.
| drag_constant.c | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | |
Follow the steps below to collect the experimental data:
- Ensure that the drone battery is fully charged
- Attach the drone to the fixture and place a stopwatch next to it
- Arm the drone by pressing the Arm button in the Crazyflie Client
- Start recording with your smartphone in slow-motion mode
- Turn on the motors using the Command-Based Flight Control
- Let the drone complete two full rotations and stop recording
After the experiment, extract the data and fill in the table below.
| \({\color{var(--c1)}\psi}~(^{\circ})\) | \({\color{var(--c3)}t}_1~(s)\) | \({\color{var(--c3)}t}_2~(s)\) | \({\color{var(--c3)}t}_3~(s)\) |
|---|---|---|---|
| \(0\) | |||
| \(90\) | |||
| \(180\) | |||
| \(270\) | |||
| \(360\) | |||
| \(450\) | |||
| \(540\) | |||
| \(630\) | |||
| \(720\) |
Data analysis
Using the collected data, you should fit a curve relating the yaw angle \({\color{var(--c1)}\psi}\)(1) with the elapsed time \({\color{var(--c3)}t}\).
- Note that you must convert from degrees (\(^\circ\)) to radians (\(\text{rad}\)).
Under the action of a constant torque, the angular displacement as a function of time is given by:
As already derived, this torque corresponds to the sum of the drag torques produced by each propeller \({\color{var(--c2)}\tau_i}\), which are proportional to the square of their angular velocities \({\color{var(--c1)}\omega_i}\):
Given that \({\color{var(--c1)}\omega_1} = {\color{var(--c1)}\omega_3} = 1000~\text{rad/s}\), \({\color{var(--c1)}\omega_1} = {\color{var(--c1)}\omega_4} = 2000~\text{rad/s}\), and \(I_{zz} = 4 \times 10^{-5}\,\text{kg.m}^2\), substituting into the previous equation yields:
Therefore, the most appropriate fitting model is a second-order polynomial with zero constant and linear terms. You should experimentally identify the drag constant \(k_d\) from this curve fit(1). Record the obtained value, as it will be used in subsequent activities.
- Tip: use MATLAB’s Curve Fitting Toolbox.
Results validation
Compare your experimentally obtained value with the one previously estimated with a ruler in Exercise 1.4. The drag constant \(k_d\) is expected to be on the order of magnitude of \(10^{-10}\,\text{N·s}^2\).