QuadCopter Balancing & Controlling Separation
This topic discusses how to separate between balancing
quadcopter and controlling it.
First let us discuss the balancing control techniques in
different quadcopter modes. Quadcopter can fly in (+) configuration and (X)
configuration. The only difference between these modes is where the front of
the quad is.
Quadcopter Configuration "X & Plus" |
Plus (+) Configuration Control
In this configuration the control as follows:
// Pitch Control
M1 = M1 + RX(Elevator);
M4 = M4 - RX(Elevator);
M1 = M1 + RX(Elevator);
M4 = M4 - RX(Elevator);
// Roll Control
M2 = M2 + RX(Aileron);
M3 = M3 - RX(Aileron);
M2 = M2 + RX(Aileron);
M3 = M3 - RX(Aileron);
This is very simple control and is found in all quadcopter
code. Sure there are some checks here and there to avoid motor stopping or
saturating. But the flying logic is
always as above. There is also a scaling factor that is used to determine the
sensitivity of the sticks and a Divide factor that limits the value range.
X Configuration Control
In this configuration the control as follows:
// Pitch Control
M1 = M1 + RX(Elevator) /2;
M3 = M3 + RX(Elevator) /2;
M4 = M4 - RX(Elevator) /2;
M2 = M2 - RX(Elevator) /2;
M1 = M1 + RX(Elevator) /2;
M3 = M3 + RX(Elevator) /2;
M4 = M4 - RX(Elevator) /2;
M2 = M2 - RX(Elevator) /2;
// Roll Control
M1 = M1 + RX(Aileron)/2;
M2 = M2 + RX(Aileron) /2;
M3 = M3 - RX(Aileron) /2;
M4 = M4 - RX(Aileron) /2;
M1 = M1 + RX(Aileron)/2;
M2 = M2 + RX(Aileron) /2;
M3 = M3 - RX(Aileron) /2;
M4 = M4 - RX(Aileron) /2;
As we can see this is the same logic, we only assumes that
M1 & M3 together acts as a single virtual motor in the front, and M2 &
M4 together acts as a virtual motor in the rear. Other than that it is the very
same logic.
Same considerations and factors applied in the PLUS configuration
go here as well.
Stabilization System
Now let us see the stabilization system. The idea is simple,
if the quad is falling to the right then speed up the right motor and slow the
left one with the same amount and vice versa. Also if the quad is falling down
from the front arm then speed up the M1 motor and slow down M4. The rule is written as follows.
M1 = M1 + PitchAmount * PitchGain
M4 = M4 - PitchAmount * PitchGain
M4 = M4 - PitchAmount * PitchGain
M2 = M2 + RollAmount * RollGain
M3 = M3 - RollAmount * RollGain
M3 = M3 - RollAmount * RollGain
This is the basic rule that should be found in all
quadcopter programs. The main difference between the different firmware approaches is how to calculate PitchAmount and RollAmount. This can simply be read from a
Gyro sensor and multiply it by a constant factor to adjust the range, or we can
use PID approach or even Kalman filter and combine Gyro with Acc sensors to get
the exact degree.
The Gain factor is used to determine the sensitivity. Other checks
such as trimming are common in quadcopter code.
Do we need Different Stabilization for X-Configuration?
Well in almost all quadcopter programs you will find that
stabilization and control calculation follows the same concept. i.e. if we use
X-Quadcopter then we add the PitchAmount to both motors M1 & M2. Also
RollAmount is added to motors M1 & M3. This is valid approach but in fact
it is not necessary at all, also there is a major drawback here.
It is not necessary because the stabilization control of
Plus configuration can stabilize quadcopter if there is a simultaneous picth
& roll forces, that means if the Control System is Plus of X the Stabilization
System can stabilize both using the same PLUS configuration.
The main drawback is that Stabilization control requires the
orient the control board so that its onboard gyro and acc are in the right
directions, so you cannot switch between PLUS configuration to X-Configuration
without reorient the board. So if we can keep the Stabilization System and only
change the Control System we don’t need to reorient the board as Control System
has nothing to do with the board sensors it only change the signal values sent
to different motors.
HefnyCopter has implemented this idea successfully as in the
below video.
See newest article Quadcopter Flight-Control Framework
A new topic about quadcopter stabilization and different roles of sensors on http://hefnycopter.net/index.php/developing-source-code/22-quadcopter-control-function-layers.html
ReplyDeleteWhich one is better, plus or x configuration?
ReplyDeleteWell if motors and ESC are all identical then there should be no difference -based on my knowledge-.
ReplyDeleteHowever this is not the case, so using all four motors to navigate in X config instead of using 2 for each direction in Plus config helps to average individual motors response so X should be smoother.
In my own experience I found no major difference but X is a bit smoother.
So it is better to make an X config especially if you'll mount a camera on your quadcopter because of its smoothness. Thank you sir for the info.
ReplyDeleteI agree with ur opinion.
Deleteu welcome :)
This comment has been removed by the author.
Deleteif u mount cam on top of quad then X is almost a must to avoid facing the front propeller.
DeleteWhat is pitch/roll amount and pitch/roll gain? and how to identify them in our sensor? I used wii motion plus and nunchuk.
ReplyDeleteThis is only a white paper ... no specific quadcopter or system -although the snippets is taken from HefnyCopter for KKv2.1 code.
Deleterule...set I=0, increase P till it starts to osc. then reduce it again till stops osc.
then try to inc I....
asl mohammad am yassin from kenya and am interested in doing a quadrocopter project am pretty new to it and was looking for some advice am planning to use an arduino board any help will be appreciated reply to my email akliyobarre@gmail.com thanks brother
ReplyDeletecheck this video
Deletehttp://www.youtube.com/watch?v=uaAb88W5P20
if u can get sensor GY-85 it will be a piece of cake
Hello, I'm writing my own code for a PID controller. I want to do it like Aeroquad using rate mode and stable mode. I'm just confused about how do we use the gyro data in the rate mode? I mean they're so unreliable
ReplyDeleteOffering great deald and discounts on Quadcopters in UK.
ReplyDeleteDJI Phantom 3 Professional for sale in London
Hi dear Mohammed;
ReplyDeleteI am writing from turkey my name is hakan, firstly i am so sory for my bad language i am a university student in turkey and we are trying to build a quadcopter, we watched your some videos and readed your article on your website but we have some problem about our quadcopter stabilisation and move algorithm. we configured X QUAD. can you tell me which one is more better then ohter, plus or x configuration?
could you hep us please
our controller unit containers
PS3 gamepad
arduino uno
nf24l01 tx
and quadcopter
using 12x4.5 propellers
motors are 880kv
arduino nano
mpu6050 accel
nrf24l01 rx
we connected this units, we are getting throtle and xy angles from ps3 gamepad but we could not success stabilisation and move.
please tell us how can we do that.
thanks alot... see you soon