Vision Drone Motor Calibration Guide
This explains how the motor coefficients were obtained experimentally.
Data Collection
We used the RC Benchmark 1520, mounted with the desired prop, motor and esc. In this document we used
- prop: 5045 triblade
- motor: Emax RS2205S 2300kV
- ESC: HAKRC 45A 2-6S BLHeli_S 4-in-1 ESC
After downloading the RCBenchmark tool on a windows computer (Linux and MacOS didnt work), we did the following:
- set the correct number of poles (in this case, 14, since it is a 12N14P motor)
- calibrate the load cell
- tare the thrust
- maximize all the settings of the safety cutoffs
- ensure the esc is calibrated (see below)
- check the esc is responding correctly using the manual control sliders
- put on the props
- run the discrete steps script
- run the rise time script
Calibrating the ESC
After removing the props, we first checked that the esc was calibrated correctly. This means that 1000μs should correspond to min-throttle, and 2000μs corresponds to max throttle. To calibrate the ESC, follow the following steps:
- disconnect esc battery power
- in the manual control tab, ensure the check boxes are off.
- drag the slider to the max value of 2000
- power on the esc
- after hearing the correct beeps, lower the throttle to the min value of 1000 us
- after hearing the correct beeps, disconnect power from the esc.
The “beeps” are an auditory signal that tells you what the esc is thinking. This diagram (from this link) explains what you should hear:
Collected Data
The data collected has been included in this repository. Find it here: https://github.com/dasc-lab/robot-framework/tree/master/docs/vision_drone
System Model
We will model the motor output as
\[T = k_T \omega^2\]and
\[u = (1 - \alpha) \frac{\omega}{\omega_{max}} + \alpha \left(\frac{\omega}{\omega_{max}}\right)^2\]where
- \(T\) is the thrust in N
- \(\omega\) is the motor speed in kilo-rad/s
- \(u \in [0, 1]\) is the (normalized) PWM command to the motors
with coefficients
- \(\omega_{max}\) is the max motor speed in kilo-rad/s
- \(k_T\) is the thrust coefficient in N / ( kilo-rad/s)^2
- \(\alpha \in [0, 1]\) is the ESC nonlinearity coefficient
The \(\omega_{max}\) depends on the battery voltage, and therefore this model will not capture all the effects.
Data Analysis
From the data, we can plot the following relationships. In each plot, the marker color is based on the measured voltage.
Thrust Curve
Speed Curve:
Power Curve:
Efficiency Curve:
Clearly, the thrust curve is independent of the battery voltage, as expected. The speed curve has some battery voltage dependency.
After running the datafits, we get the following table of results:
Parameter | Value | units |
---|---|---|
QUAD_KTHRUST | 1.4238 | N / (krad/s)^2 |
QUAD_OMEGA_MAX (high battery) | 2.60232 | krad/s |
QUAD_OMEGA_MAX (nominal) | 2.45426 | krad/s |
QUAD_OMEGA_MAX (low battery) | 2.16703 | krad/s |
QUAD_ESC_NONLIN (high battery) | 0.568215 | - |
QUAD_ESC_NONLIN (nominal) | 0.429347 | - |
QUAD_ESC_NONLIN (low battery) | 0.467502 | - |