I've just released ArduPlane 2.69 [UPDATE: revised to version 2.70 after bug fix (see comments). This release includes a lot of internal changes, principally the AP_HAL changes, which is why it took so long. I've also been doing a lot of test flights to try to ensure that all these large changes haven't broken anything.
As has been discussed previously, the biggest change in this release is the move to the new AP_HAL hardware abstraction layer. This was a large internal change, that by itself didn't change the behaviour of ArduPlane, but did allow us to make ArduPlane much more portable. As a result, this is the first release of ArduPlane that works on the new PX4 autopilot board. Unfortunately the documentation on how to setup ArduPlane on PX4 is still lacking, so if you have a PX4 and want to run the 2.69 release then you will either have to dive into things a bit yourself to get it to work or wait a bit longer for the documentation updates. Sorry about that!
Of course we still support the APM1 and APM2 and I plan on keeping ArduPlane working on both those boards as long as possible. What I expect to happen is that some new features in future releases will only be enabled on the PX4, but for now ArduPlane on the PX4 works just the same as it does on the APM1 and APM2.
As you might expect from the fact that it has been over 2 months since the last ArduPlane release, there have also been quite a few changes not related to the AP_HAL and PX4 work. Many thanks to everyone who has contributed patches and ideas that made it into this release! I know not every requested feature made it in, but I thought it was better to get the new release out now.
Some of the key changes in this release are:
One of the changes I am most pleased with is the addition of a new flight mode called TRAINING mode. This mode was developed in cooperation with a MAAA flight instructor, and is designed to help people to learn R/C manual flying. When you are in TRAINING mode you have manual control over roll until you reach the LIM_ROLL_CD roll limit, at which point the plane won't roll over any more. The same applies to pitch - you have manual pitch control until you reach LIM_PITCH_MIN or LIM_PITCH_MAX, at which point the plane won't pitch beyond those limits. This means that as long as you stay within the configured limits you are flying the plane manually, and you can quickly learn to fly an R/C plane manually, knowing that the APM will prevent the plane from going upside down. I'll do a separate blog post about how we are using TRAINING mode to teach new pilots good R/C manual piloting skills.
Another significant change in mode behaviour is that CIRCLE mode now holds altitude. This is important because CIRCLE is used in the first stage of failsafe conditions, and if your plane is badly trimmed it could lose quite a lot of altitude before the RTL stage of failsafe kicks in. Note that this doesn't mean that CIRCLE is now the same as LOITER - in a LOITER the plane will adjust its roll to keep going around the target position, whereas in CIRCLE the position of the plane isn't considered - it just holds a small roll angle, which results in a large circle that drifts with the wind. This is deliberate as we want CIRCLE to not be dependent on the GPS, and to involve no sharp turns.
The other change that is probably worth expanding on is the ability to mount the APM in many possible orientations. This has been an open request for a long time as for certain types of airframes it is very useful. Just set the AHRS_ORIENTATION parameter to one of the supported orientations and your APM will quite happily work upside down or sideways.
I'm expecting it won't be 2 months till the next release, as I have a bunch of other changes pending that I held off for this release (for example, the AP_Mission code from Brandon, and the new AP_Scheduler code), but meanwhile I'm very happy with how this release is flying, and I hope you all will be too!
I was testing today with V2.70 and it works great. One think that I need advice about is Way Point turns. The airplane rolls abruptly as soon as it hits a point. It navigates ok but it would be nice if the turn was a little gentler. What do I adjust to have smoother Way Point turns?
Hi, that is not a new 2.70 thing, right?
You can decrease the max. bank angle. The abrupt behavior is normal, there was nothing done so far to smoothen it. The waypoint to fly towards is changed to the next one as soon as one waypoint is reached, and the control algorithm then "discovers" that the plane is going in a totally wrong direction..
You can also avoid waypoints having sharp corners, and insteal use multiple waypoints to make the turn, so that the change in direction from on waypoint to the next is not so dramatic.
It may be worth mentioning that I have no pitot tube (airspeed measurment) on the swift. Could it be that on take-off it detects the too slow speed and overrides the takeoff pitch and makes the plane dive to gain speed ?
I think that a much better solution would be a roll rate limiter. That would go a long way in smoothing out waypoint missions and could be tuned to suit the needs of everyone. I was thinking that about 1 second for a 30 or 45 degree roll would be nice. Make the parameter degrees per second and a value of 30 would be a good starting place. What do you all think?
I found a roll rate limiter in the code, but it's commented out. I suspect because it would apply always and you don't really want if in a bad situation where the plane has to recover immediately. Also in gusty wind, the limiter would also limit how fast roll can correct being thrown off. So some more thought is needed.
I think it is the servo roll controller that stabilizes the plane, and the navigation roll controller that applies control from the navigation system to a virtual control of the plane...
You might look at the Jon Challinger controllers since one goal of that development was smoother control. There's also a built in rate limiter for pitch and roll. This is documented here:
Make sure to read the tuning guide:
I've been using these controllers exclusively since 2.60 with really good results. Another advantage is that pitch and roll rate process variables are used for feedback. I think the D part of the stock contoller is synthesized.
I may have had to modify the units on rate feedback for HIL. I can go back and check if anybody is interested.
Larry D. Grater
So many issues about this release... did you recommend 2.69 or not?
I had problems with 2.69 but 2.70 is flying well for me. I have found no bugs. I have an AMP2 and a small airplane (no ailerons, no airspeed sensor).
I want to use any channel other than channel 8 for mode switching on PX4. I am running APM2.7 on PX4 and everything is working fine except that my radio receiver PPM signal gives on 7 working channels (verified on MissionPlanner) while channel 8 is always zero.
I've been using GCS to change mode up until now for HILS but on the field I want to be able to switch modes using remote. Is there a neat way of doing it ? (I could change the ArduPlane code and switch channel 8 with 6 or 7, but I guess there might be a better way...)
Also, running APM on PX4, is there onboard data logging available as of now ?