Autonomous human transport

The reason for me starting this project is to create a fully autonomous quadcopter that can transport people without any human intervention. In order to be useful for the common public it should fly without requiring a human pilot.

Imagine a customer that calls the quadcopter, takes a seat and enters his desired destination. Without any human intervention the system will takeoff and arrive quickly at the given destination.Before I started this project I gained some experience during my work at a company that produced Unmanned Aerial Systems (UAS). However I am a firmware engineer and to realize my vision I had dive into unfamiliar disciplines like mechanical stress calculations and circuit design. Throughout the process there were a lot of uncertainties and I learned that knowing is only part of what is needed to realize my goal. I stared working on small prototypes in order to get a feeling for the involved technologies.

After building several small prototypes, I focused on questions like; how much electrical power do I need? What type of propellers are appropriate? What materials should I use for the frame? Where can I find a place to test? And many, many more…

Engine thrust and power

So how much thrust is required? There should be enough thrust to lift the quadcopter itself with extra payload (being the person). As a basic estimate I took, 55 Lbs frame, 55 Lbs electrical components plus batteries and 132 Lbs payload. This means that we should have enough thrust to lift 243 Lbs. There are many formulas that calculate static thrust. Equation 1 relates static thrust in pounds with propeller speed and diameter in inch . Equations 2 defines the power in Watts that is required to generate that thrust. In addition the propeller pitch in inch is required.

T = RPM^2 \cdot D^4 \cdot T_c (1)
W=RPM^3 \cdot D^4 P \cdot P_c (2)

The thrust T_c and power P_c constants are empirically measured, they depend on weather conditions propeller and engine design.

T_c = 2.7734\times10^{-12}, P_c = 5\times^{-15} (3)

To determine how many RPM the engine can generate we have to look at the propeller design. It has a diameter of 20 inch and pitch of 13 inch.

D=20,P=13 (4)

Now we need to have a look at the power rating of the engine, which is 3kW. Using equation 2 we can calculate the RPM at 3kW.

 W \leq 3000 \equiv RPM^3 \cdot D^4 \cdot P \cdot P_c \leq 3000 \equiv
RPM \leq {{3000} \over {20^4 \cdot 13 \cdot 5 \times 10^{-15}}}^{1/3} \equiv RPM \leq 6607

Lets define the maximum RPM at 3kW RPM_{max} = 6607 and using equation 1 we can calculate the generated thrust in pounds.

T=RPM^2 \cdot D^4 \cdot T_c=19.37 (6)

So 16 engines will generate 282 pounds of static thrust which should sufficient (e.g. > 243). In order to verify these calculations I created an engine test stand.


To measure the generated static thrust I used a loadcell that was connected to my computer via a microcontroller. The controller communicates with the loadcell, power monitoring device and engine controller. I performed various tests to determine how much static thrust the engine could generate, here are some results.


As a power source for the quadcopter I choose electricity. To be more specific I used lithium-ion polymer (lipo) cells. The advantage of electricity is that I do not have to bother with fuel. lipo cells also have a good weight to power ration and can provide large amounts of power in bursts. A disadvantage however is the amount of total power it can deliver. Gas power systems usually can operate much longer than electrical systems. Also care should be taken when using lipo cells. The voltage they deliver range from 3.6-4.2v and should never go outside these limits. An underpowered cell can get permanently damaged and more serious, an overpowered cell can explode. To prevent this a voltage monitoring system should be used to watch and handle the voltage.
Based on the number of cells and required power we can estimate the expected flight time. For each engine I used a battery pack of 10 Lipo cells. The battery produces 42v (e.g. 4.2v per cell) and was rated to deliver 2.2Ah (thus it can provide 2.2A for one hour before its empty). Furthermore the battery has a discharge rating of 45C. The discharge rating specifies the maximum amount of current that can be delivered by the battery and is defined in equation 7 . The time it can operate before running being empty is show in equation 8. With Maximum current the battery can deliver in amperes I_{max} amperes per hour I_h, discharge rating C, lifetime in hours H and amperes that the battery should deliver I_{load}.

TI_{max}=I_h \cdot c (7)
H={I_h} \over {I_{load}} (8)

If the engines would consume the largest amount of ampere that the battery could provide I_{max}=I_h \cdot c=99 amperes then the battery would be empty in {I_h} \slash {I_{load}} = 0.02 hours. Now, remember that the maximum power rating of the engine was 3kW. Based the battery voltage and equation 9 we can calculate the maximum amount of amperes the engine will use. With current in ampere I, voltage V and power in watts W.

I={W} \over {V} (9)

At 42v an engine 3.3kW consumes {{W} \over {V}} = 71 amperes, meaning that the battery would be empty in {{I_h} \over {I_{load}}} = 0.03 hours. By combining equation 1 and 2 we can relate static thrust to amperes the engine consumes.

T = ({\sqrt[3]{{42 \cdot I}\over{20^4 \cdot 13 \cdot 5 \times 10^{-15}}}})^2 \cdot 20^4 \cdot 2.7734 \times 10^{-12} (10)

We can visualize the operational time of a single engine against the thrust that is generated using equation 10 and 8.


Frame design

For the quad copter frame design I was looking for someone who had experience in mechanical design. I found someone who good experience in metallurgy and together we prototyped a frame that was strong, yet light enough to lift people. In the following section I will briefly describe some basic terminology that is required to perform structural analysis.

All materials have a strength values the represents the toughness. The yield strength represents the maximum stress at which the material will not return to its origin shape or length after removing the load. So if we would put a very heavy object on a beam it will bend, at that moment we exceed the yield strength, because the beam will be bended after removing the object. The ultimate (tensile) strength is the maximum stress a material endures without breaking. The involved forces can be represented in many ways. For calculations I used pound per square inch (psi). In addition to toughness all materials have a mass, which we will represent in pound per cubic foot lb/ft^3. So, a 5 ft^3 beam with 169 lb/ft^3 density will have a mass of 5 ft^3 \cdot 169 lb/ft^3 = 845 lb.

Material Yield strength (psi) Ultimate strength (psi) Density (lb/ft³)
Steel (1090) 35824 121977 473
Steel (2800) 379564 390587 499
Aluminum alloy (2014-T6) 60046 70053 175
Aluminum alloy (6060-T6) 10000-26000 20000-33000 169
Copper 10153 31908 557
Diamond 232060 406106 218
Carbon nanotube N/A 1595415-9137377 2-84

Calculating all the involved forces can be quite cumbersome, these days we fortunately don’t have to do that. In order to validate the design I used a structural analysis tool.


The simulated frame was designed using aluminum alloy type 6060 furthermore 243 Lbs of load was applied in the center. The resulting stress is color-coded, blue for compression and red for expansion. It is important not to exceed 10 ksi as this would surpass the yield strength and permanently deform the frame. Also more than 20 ksi will cause the frame to break, which is of course unacceptable. In the simulation stress never exceeds 2.5 ksi, which is tolerable.

Control system

As control system I used the well-known MultiWii Autopilot. Among others it takes care of the quad copter stabilization. Without a controller the quad copter would flip over and not be able to fly. One of the most common control system implementations is a proportional integral derivative (PID) controller. It is one of the most easy to understand and widely used controllers that receives signals from the system it controls and is known as a closed-loop controller. In our situation sensors provide information about the orientation if the quadcopter. The error is defined based on the difference between the computed orientation and desired orientation (e.g. setpoint). The output to the engines is adapted proportional to the error in order to stabilize the quadcopter.

GainKp: Ki: Kd:

The PID controller has three terms; proportional (P) is equal to the error, integral (I) is the accumulated error over time and derivative (D) is the change in error. Each delta time the controller gets input from the orientation sensor and based on the setpoint computes the error which is used to update the P I D terms.


repeat each  \Delta t
p = error
i = error \cdot \Delta_t
d = {(error - error_{pre}) / {\Delta_t}}
out = K_p \cdot p + K_i \cdot i + K_d \cdot d

The P-I-D values are combined with three preset gain terms. We have the proportional gain (K_p), the integral gain (K_i) and the derivative gain (K_d). Obtaining the appropriate gain values influences the behavior of the controller and is called PID tuning. There are several techniques to tune a PID (like Ziegler-Nichols). However I manually tuned the system by repeatedly adapting the gains based on my observation of the quadcopter. The challenge is to find the right gains, very small values will result in an unresponsive system. On the other hand large values could lead to instability of the system.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>