rodrigoenriquez / ardupilot-mega

Automatically exported from code.google.com/p/ardupilot-mega
0 stars 0 forks source link

Enhancement request #362

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
Feature that you'd like us to add or change you'd like us to make:

I like to have an extra flight-mode for speed flying (warthox style) with 
heading hold (avcs) behaviour on roll/pitch and yaw.

Here a good description,

 There are basically two “types” of gyros for R/C helis these days – “proportional” and “heading-hold” (or AVCS).  In both cases the gyro acts as the controller in a closed loop system.  The pilot commands a yaw input to the rudder servo, and the gyro passes that command on to the servo.  The servo changes the pitch of the tail-rotor blades and this results in a yaw rate.  The gyro senses that yaw rate and subtracts a command proportional to that rate from the command to the servo.  This forms a negative-feedback, closed-loop control system.  While it seems counter-intuitive to alter the command to the servo, just because the heli did what you told it to, consider this… Imagine for a moment the pilot issues NO command, but the wind blows the tail to the right.  The gyro will sense this motion and act to either stop the motion (in the case of a proportional gyro), or counteract the motion and return the heli to the desired orientation in the case of a heading-hold gyro.  This will be true whether the undesired motion comes from a wind gust, a change in torque to the main blades, or any other non-commanded source – just what we want! 

So, the gyro seems to counter our commanded input, and also the unintended 
inputs (wind, torque, etc.).  But we can increase the gain on our commanded 
input because we know what the gyro will do to it.  What does this mean?  It 
means we would drive our servo well past the desired mechanical limits when the 
heli doesn’t yaw in response to our commands – such as when it’s sitting 
still on the ground without the blades spinning.  In the old days (just a few 
years ago) we used to have to make a choice - either set the system up to 
overdrive the servo on the ground (and be careful not to give full inputs), or 
drive the servo only to the limits, and live with reduced yaw rate when flying. 
 These days, most gyros have “limit” settings.  These allow us to overdrive 
the servos as far as we want, but tell the gyro where the physical limits are.  
Thus, when we perform a yaw command on the ground we see that the last 1/3 of 
the stick motion has no effect.  The servo reaches the programmed limit by 
about 2/3rds stick, and goes no further.  But this is not a bad thing.  When 
the heli is flying the entire stick deflection will be used, because our 
command will be reduced significantly when the heli is yawing.

The big difference between a proportional gyro and a heading-hold gyro is 
actually a matter of firmware – mechanically, they’re identical.  The 
proportional gyro simply tries to counter the sensed yaw rate.  The heading 
hold gyro integrates the yaw rate over time (to give yaw angle), and thus seeks 
to maintain the commanded yaw angle.

Original issue reported on code.google.com by marioder...@gmail.com on 12 Jun 2011 at 8:05

GoogleCodeExporter commented 8 years ago
Request understood (I fly heli's and have a firm grasp of rate and heading hold 
gyros).  This is an open source program and you are welcome to modify the code 
for your own purposes.

However, I see little value to this as a mainstream feature for APM.  We get 
LOTS of requests to add niche features.  Only those that have sufficient demand 
get included.

Original comment by dewei...@gmail.com on 2 Jul 2011 at 9:31