mageshms / arducopter

Automatically exported from code.google.com/p/arducopter
0 stars 0 forks source link

Configurable max throttle #95

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
My quad is way overpowered as I designed it to carry large loads later on. 

However, this can cause instability as the quad can change attitude or altitude 
faster than the controller can correct.

In Motors.pde, the literal value 2000 is used as a constraint. Please consider 
providing a #define or an EEPROM setting to set a maximum throttle value.

Original issue reported on code.google.com by patrick....@gmail.com on 19 Dec 2010 at 11:04

GoogleCodeExporter commented 8 years ago
So you would like to limit maximum throttle value with CLI or some other way? 
Why not just limit it on your radio?

Using Configurator makes it a bit hard due Configurator maps min+max values to 
be as 1000 - 2000. But we can look to add absolute maximum value for people who 
want to have it. 

Original comment by jphelirc on 21 Dec 2010 at 3:31

GoogleCodeExporter commented 8 years ago
Limiting the throttle on the radio is no issue. That can indeed be programmed, 
or the operator can use some self-restraint :)

The purpose of this parameter is to impose a global limit on the output of the 
control algorithms to the motors, over which there is no direct control from 
the radio. I know there are individual (smaller) limits on corrections for 
roll, pitch, yaw, altitude etc in the code but all these can add up to produce 
high throttle values sent to the motors.

Original comment by patrick....@gmail.com on 21 Dec 2010 at 8:51

GoogleCodeExporter commented 8 years ago
I should have titled the subject more clearly 'Configure max motor output' 
instead.

Original comment by patrick....@gmail.com on 21 Dec 2010 at 8:57

GoogleCodeExporter commented 8 years ago
I think the original suggestion to cap the throttle is actually better than 
capping the motor values.  The problem with capping a motor value is that once 
a motor hits it's cap, it's no longer able to provide stability in one 
direction.  

At the moment of course we have a motor cap (2000!).  At the moment, if you put 
on full throttle what you may find is that one of the engines (say the left 
engine) is a little weaker than the rest...perhaps it needs to operate at 5% 
higher speed than the other engines...it will essentially hit the global cap 
first and the quad will flip over.

I think it's better to limit the throttle (either through the code or through 
your controller) so that you never get near the top of the engine's range.

Original comment by rmackay...@gmail.com on 21 Dec 2010 at 10:32

GoogleCodeExporter commented 8 years ago
You are right: a cap on the throttle would ensure that sufficient margin for 
control authority remains at all times. Capping the motor outputs would not.

The following relation should hold at all times:

throttle_output <= motor_power_limit - control_margin

where
- throttle output is to be constrained; it is the total output throttle 
resulting from radio input and/or control algorithms.
- control_margin (for yaw/roll/pitch) should be sufficiently high to maintain 
control authority. It could be equal to or a fraction of the maximum total 
control output, which depends on the output mix and is max_yaw + max(max_pitch, 
max_roll) for the current output mix, where max_yaw, max_pitch, max_roll are 
again constrained individually in the code. 
- motor_power_limit would be 2000 by default or a lower value if desired.

Sorry if this sounds more complicated than intended...

Original comment by patrick....@gmail.com on 21 Dec 2010 at 1:36

GoogleCodeExporter commented 8 years ago

Original comment by jasonshort on 8 May 2011 at 7:25