Please note that this section and the section preceding it are important to read if you are unfamiliar with terms like pitch, roll, yaw, aileron, rudder, throttle, etc. In our details about our design we will assume some level of knowledge and focus on conveying material succintly. This leaves doing the groundwork to the reader. We welcome the reader to start here.
So in theory, if you have a quad that is perfectly balanced with its center of mass centered, then you can hover a quad by turning all four propeller-loaded motors at the same speed. But what happens when there's a breeze? The breeze might produce a torque on the quad causing it rotate forward. To compensate the front motors would need to speed up each the same amount to keep the nose up. Or perhaps the torque rotates diagonally from down a line drawn between two motors. Now the motor at the end would have to speed up to compensate. Or perhaps the torque is something in between... Now you have different motors at different speeds. This sounds hard to control doesn't it? The controls are quite simple - you aren't varying the pitch of the propellers...there's not swash plate like in a helicopter... but minute inputs can lead to a serious case of the wobbles. Imagine a tight rope walker who begins wobbling side to side, overcompensating for the imbalance creating a new imbalance. If he is going side to side that is basically just one rotational degree of freedom. But a quadcopter must balance in all six degrees of freedom.
We won't go into the details of control system engineering here - mostly because we (and you) don't really need to in order to build a quality drone. As we will cover later - our main point of optimization in this project was power efficiency, not building a flight controller from scratch simply to enjoy doing it or even because we thought we could do it better. In order to cover our bases with flight control we don't necessarily have to dig too deep and re-invent the wheel, and in some cases it is best to acknowledge and leverage the successes of others to allow yourself to focus more on your own task at hand. We would advise those seeking to build a quadcopter to focus on building a quadcopter - not building a quadcopter and its flight controller (unless that really is your kind of thing and you know who you are). There really are some great options.
Because you are all asking for slithing more though we will mention that one method of control is PID (Proportional, Integrative, Derivative) control. This type of control receives a desired state as input and applies a response to obtain an output. The response is governed by the error feedback (the difference between output and input). The proportional component applies a response based on the amount of error (It looks at the present.). The integrative portion applie a response based on the amount of error over time (It takes an integral to look at the past basically.). And the derivative portion applies a response based on the rate of change of the error at that instant. (It takes a derivative in order to look into the future basically.). The combination of these three components produces a control signal to some sort of actuator like a drone motor.
Source: JAMES DRYDEN & RYAN BARBACCIA at PSU
One simple example of this in the sense of a drone can be had if we hack off a piece of what is happening. Imagine the input is a desired orientation being 180 degrees from the direction the drone is currently facing. Initially there will be a huge error and nothing to integrate or differentiate. As the drone turns there is still little to integrate but it can begin differentiating. And as it turns more there is more to integrate as well. The drone can then be tuned to have the appropriate amount essentially of P, I, and D.
Remember. The fundamental issue here is that we need some level of assistance in order to make flying a quadcopter even a little bit enjoyable. Otherwise we can just go home because we probably couldn't keep it in the air by sheer determination and thumb dexterity for more than a few seconds.
Flight controllers work by responding to some number of inputs (like from an Inertial Measurement unit with a gyroscope, accelerometer, and perhaps a magnetometer and outputting speed signals for the motors accordingly. Flight controllers come in varying degrees of complexity. One popular flight controller is only $35, the Kiss FC. Other flight controllers like those developed by DJI and 3DR may include autonmous flight features beyond that assistance we all need to just to hover. When flying an RC plane, you can directly control the elevator signal for ascent and descent, the throttle for speed, the aileron for rolls, and the rudder for yaw. These commands would affect the flaps and prop (or jet!) speed of an RC plane. A flight controller must translate these sorts of commands into the appropriate motor speeds to accomplish the maneuver. So instead of you having 4 sticks that move vertically to adjust 4 motor speeds on your controller you can have 2 sticks that travel vertically and horizontally allowing you to send more intuitive commands. The FC will then translate these commands into motor speeds. These commands are then sent to essentially a "smart relay (an electrically actuated, not mechanically actuated, switch)" called an electronic speed controller (ESC for short). ESC's can be quite smart in their own right with their own microprocessors. The bottom line is that the ESC receives commands from the motor and allows direct battery current to the motors accordingly. You may think of an ESC like a doorman. The boss tells the doorman how many people to let through (the electronic signal from an FC) and the doorman lets that number of people through (the electric power straight from the battery). We will cover ESC's and the motors they control in more detail in the quadcopter design treatment. That will do it for the basic flight control lesson.