I have an application where it is desired that the plane stays level in auto flight. It should turn with the rudder and not bank at all.
ArduPlane currently cannot do that. It uses ailerons as primary heading change control and the rudder is used at most for achieving coordinated turns, where local lateral acceleration is zero. This is normally done for occupant comfort but hmmm it's a UAV.
Has anybody ever tried to write such a controller, or is anybody else interested in having one?
I can see the L1 controller does have some functionality to hold a heading with the rudder - for when rolling on the ground. Maybe this could be rewritten into flying towards a point instead of just keeping a direction.
Is there a presentation of how the L1 controller works somewhere? Maybe even the APM implementation?
Physics say the aircraft will have to bank after time secondary effect of controls. http://www.bmfa.org/faq/rc/flight_controls.html more here http://www.gliding.co.nz/sites/gliding.co.nz/images/documents/Train...
If you have no dihedral then the secondary effect is really small. The turn radius for a rudder only model without any dihedral would be massive. You could probably keep the wings level with the ailerons. I don't see why anyone would want to do that - the turn radius would be huge.
The stay-level controller will counteract the secondary effect. No bank. I can do it manually too. Radius gets larger but not ridiculously large.
I want to do that because I will have a payload sensor that is a lot simpler to operate when it is always pointing down. No, it's no bomb sight.
What about a roll gimbal for the payload?
That is a viable emergency solution but the thing is rather large..
I can confirm, I can also pilot and airplane like this. It's totally doable. I used to do it just for fun, just to see if you could. Yes, the turn radius is very large.
Depending on plane type, the turn radius doesn't have to be that large.. :)
Yeah that's exactly what I want :) Just around waypoints and at most 1/2 turn around each :)
That has to be doable also with the L1 controller. Except that I don't know how the calculations I find in the implementation are theoretically founded.
Another solution is to revert to pre L1 and basically redirect the navi part of aileron control to the rudder instead. But I do like the L1 and its more elegant rounding of WPs and its fewer configuration parameters.
Have a look at the tuning guides for the L1 controller and the APM controllers. The algorithm descriptions are at the bottom of each guide.
The yaw controller could be easily modified to control to a demanded lateral acceleration, rather than zero as it currently is configured to do, so yes such a mode would be relatively easy to implement. Turn radius would be very dependant on the airframe having enough rudder and fuselage side area to be able to produce a useful level of lateral acceleration and enough aileron power to counteract any rolling moment produced.
I'm not sure what practical use it would be given a simple servo controlled roll stabilised camera mount is relatively easy to set-up and its control supported by the current software, but it would be an interesting experiment.
I am frequently doing perfectly flat turns with my Easystar when flying FPV. Basically, rudder full left and ailerons right as much as needed for flat turn. It wastes energy. It is great way not to loose signal when far with vertically polarized antennas.
Implementation for this type of controller should be relatively simple...
I think it is best done by copying out the navigation roll command to a new variable (for example to nav_yaw_cd), then set the nav_roll_cd to 0. All this is in the function which performs the calculation for the navigation in auto mode ( the function is called update_current_flight_mode(void))
After this all which is left to do is to modify the Attitude.pde file. Therefore instead of having the rudder being actuated in order to do some coordinated turns, the new nav_yaw_cd variable is used to calculate navigational error. After this the error can be stuck into the Rudder PID and you are done.
Does this make any sense to you? I think with this methode you only have to manipulate 10-20 lines of code, and you should be ready to go...