D5NYEL / arducopter

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

Change entry conditions to Loiter to allow for user input to prevent pitch/roll changes #361

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
As I understand it at the moment, there are entry conditions for Loiter such 
that if there is any user input, the invoke of Loiter does not work. In other 
words, you have to let go of the sticks and have no trim before invoking 
Loiter. The effect is that in any kind of wind, the copter gets blown downwind 
and a distance variation of say 10m is incurred before the copter starts to 
react to try and regain the Hold Waypoint. This makes it more difficult for the 
copter to achieve a smooth, stable and tight loiter position.
If I was designing this from scratch, I would expect users to get the copter 
more or less static before invoking loiter. In wind, that would involve holding 
the copter in an attitude and with sufficient power to reduce movement to be 
nearly static. Those conditions should be the initial inputs for loiter, i.e. 
there should be no pitch/roll changes unless the driving wind changes.
If entry conditions are necessary as a test for loiter, then perhaps the 
conditions should be around how static the copter is i.e. that there is not 
absolute movement i.e. that the copter is not in full flight. Perhaps the 
conditions should be for the copter to have been within a 1m box for 2 seconds, 
or similar. My understanding is that such conditions are already in place for 
when the users are flying around in Loiter mode, although it is unclear to me 
whether the loiter re-invoke is for the original Hold Waypoint, or a new one. 
If those conditions are there, then it should be easy to modify the code so 
that they apply to initial invoke rather than just while in Loiter mode.

Original issue reported on code.google.com by b...@themojos.net on 23 Feb 2012 at 3:31

GoogleCodeExporter commented 9 years ago
I am not confident in how the current loiter entry is processed, and if there 
are any conditions. But I do have an opinion;
1) If Loiter is invoked while copter is close to stationary position holding 
(low ground speed), then the exact position at point of activation should 
constitute the loiter target point. Furthermore, the "georef" attitude of the 
copter, when entering loiter should be used as a reference attitude to start 
out from, since it just proved it was capable of maintaining manually 
controlled position hold. I.e. the transition should be seamless and take 
advantage of the given attitude.

2) If loiter is invoke during significant lateral and vertical movement, then 
loiter mode should engage immediately, without hesitation, starting by firm 
(but not violent) braking laterally and vertically. As soon as the respective 
velocity (lat / vert) approaches zero (let´s say <1m/s) the new loiter target 
is set. This provides a predictable response for the pilot and in allows the 
loiter function to be engaged as a "panic"-button, freezing laterally and 
vertically, ASAP without oscillations.

3) When traversing (using right stick to move laterally) while in loiter the 
stick input should invoke a ground speed proportional to stick input (maybe it 
works like that today?) Once returned to neutral it should brake and hold (like 
in 2).

Original comment by tomas.so...@gmail.com on 26 Feb 2012 at 10:37

GoogleCodeExporter commented 9 years ago
Tomas - that comment is starting to look like a set of requirements! 
Actually, thanks for the support and I agree with and support those 
requirements.
Regards, Bill

Original comment by b...@themojos.net on 26 Feb 2012 at 10:57

GoogleCodeExporter commented 9 years ago
I think this issue is outdated now we are in the 2.9 days

Original comment by Benny.Si...@gmail.com on 20 Jan 2013 at 10:58

GoogleCodeExporter commented 9 years ago
Issue closed. 
If you find this is an error please report it in the new issues list
https://github.com/diydrones/ardupilot/issues?labels=ArduCopter&page=1&state=ope
n

Original comment by Benny.Si...@gmail.com on 20 Jan 2013 at 10:58