The above diagram illustrates the basic flight behavior of a landing using reverse throttle.
Here at Event 38 we have been working on implementing reverse throttle into the automatic landing algorithm in order to create shorter and more accurate landings. So far it has been successful, and although it is still a bit of a work in progress we know that some people are interested in getting started right away. For anyone who would like to see the code, they can do so by downloading or cloning from our public repository here.
In general, when you are performing an automatic landing with our latest code it will behave in the following way:
- First you will set up an approach pattern for your plane similar to how you would for normal automatic landings. However, rather than having a shallow gradient such as 15% from your last approach point to your NAV_LAND point, you can have something much steeper, such as 45%.
- When the plane reaches its last approach point, it will dive steeply and turn on reverse throttle to reduce speed and maintain its glide slope. Adding more reverse throttle if it is above its glide slope and using less reverse throttle if it is below its glide slope.
- There is a configurable pre-flare altitude at which the plane will set the throttle to a configurable value (usually a small amount of reverse) in preparation for flaring.
- When the plane reaches its flare altitude it will lock its heading, limit its pitch and roll, and set the throttle to a specific value (usually off) while it gets ready to touch down.
- If the plane is still in the air during the flare and flies past its NAV_LAND point it will slowly turn on reverse throttle to lose speed, but only if it is allowed to in the parameters.
This code is modified on top of a very recent master of the main ArduPlane repo, so it will have the latest major updates to the ardupilot code as well as our changes to the landing code. With this new code there also comes a significant number of new parameters that MUST be tuned properly for successful landings. You can follow the guide here for a thorough description on how to set each of these parameters properly.
Remember that this is still a work in progress and while it has been successful and reliable so far, we cannot guarantee the flight behavior of this code quite yet. Also it is important to note that this code has only been tested thoroughly on a Skywalker frame. Other frame types may behave VASTLY different so caution is highly recommended when flying with this code.
Useful information from our experience
- It is important to note that most, if not all reverse throttle capable ESCs are designed for use in RC cars, which usually only have one or two servos that need powered from the ESC’s BEC. In our experience several of the ESC’s BECs were unable to properly power the five or so servos on our plane and we had to use a separate BEC connected to our battery to power our servo rail on the Pixhawk.
We tried a few different ESCs before settling on the Mamba Max Pro. It seemed to work the best for consistent throttle response and the software to adjust the settings was useful and easy to use.
- We have done most of our flying using a Lidar range finder, specifically the Lightware SF02, with great success. While it is very nice to have the rangefinder it is not absolutely necessary. However, if you don’t use a rangefinder then be sure to let your Pixhawk heat up and calibrate your barometer before flight for accurate altitude measurements.
- It is important that you start with your flare altitude parameter set very high. When you are landing this steep the plane seems to take an extra second or so to actually register it has hit its flare altitude and perform its flare behavior. So if you are trying to flare at 2 or 3 meters above the ground, you may need to set the parameter for something closer to 10 meters to be safe and avoid nosediving into the ground.
Please post any questions or feedback from your flight tests here and I'll try my best to help. Good luck!
Thanks!
Daniel Cironi
Flight Software Engineer at Event 38 Unmanned Systems
Comments
I thought of trying that 3 years ago on my DIY composite APM pusher as it was far too good a glider with no flaps.
Here is my first flight and LONG landing. The crash noise at the end is a passing tractor and not the plane.
Later flights with wheels but still difficult to land. All the advice then was dont use a car ESC on a plane but I cant remember the main argument against.
@Thomas I agree. There are too many params. Namely, the LAND_SLOPE param rubs me the wrong way, I'd really like to have that computed as a function of the mission approach slope instead of a fixed slope which we *hope* lines up with whatever the mission is. Same goes for pre_flare_alt. That is very slope dependent. if it was pre_flare_sec then the mission coudl adjust from 30, 45, 60degs and it would still work.
btw, there is a REQUEST FOR COMMENTS in the form of a Pull-Request here: https://github.com/diydrones/ardupilot/pull/3355
If the dive-to-flare transition is somewhat predictable as a function of vertical speed, it might be more user-friendly if we were able to set the desired flare location and have the code figure out how much extra altitude to add for the transition. This adds complexity to the code but would (hopefully) result in fewer incidents of operator error as pilots switch back and forth between traditional approach and reverse-throttle approach.
Cool, I can't wait to try this. I'll have to order an ESC with simonk firmware and wait for it to arrive first. It would be great in the future to have reverse throttle for planes with landing gears to be used as a brake when the plane touches down, one step at a time though, this is a great start.
This is really great!
Great addition Daniel!
What do you think about using "BLHeli" firmware with some ESC?
There's great option, "bidirection motor direction", with zero throttle at mid pwm.
For precision landings you want the flare to be as late as possible, otherwise the plane will just keep gliding for a long way (especially small foamies). But it's a trade off with the reaction time. Lidar should help a lot with timing as the alt is accurate. Another tip is to do a preflight calibration must before takeoff (preferably while standing at the land point). This will zero the barometer based altitude and airspeed sensor.
Landing in to the wind is also critical as you can maintain much lower ground speeds which gives the system more time to react, plus you don't need to be as aggressive with the reverse thrust.
Thanks Tom. I see it now
@Craig, it's already there pending review
Thanks guys. We should plan to get this into the main wiki too.