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