Autonomous Thermaling with an Android drone


Hi folks,

Time for an update on my Android-powered fixed-wing drone project, which I’ve just picked up again after 1.5 years of neglect.  After trying a few different approaches, I’ve come up with a fairly simple auto-thermaling algorithm which works very well. The glider flies itself up to 200 meters AGL, then cuts power and drifts around within a 200 m geofence until it finds lift (or gets too low).  On finding lift it calculates the approximate core of the thermal and attempts to follow it as it drifts with the wind.  Provided the thermal is strong enough to keep my heavy junk afloat, it generally succeeds and keeps going up until the thermal drifts away and it hits the edge of its geofence.

I fine-tuned it on virtual x-plane thermals before testing it on real ones.  Some real-world results are shown above.


If I let it keep going, it would probably continue climbing until the thermal topped out.  Maybe one day, in the middle of no-where, with telemetry and a camera or two.


While the android setup does work well and has novelty value, it is heavy, clunky, not a real-time OS, and involves a potentially flakey Bluetooth link.  So I’m looking at moving to either an Ardupilot or the Matrixpilot/UDB, and porting my thermaling code over.  If anyone else out there is working on similar systems on either of these platforms, I’d like to bounce some ideas around. 

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • Hi John. Can You give some information about your code, to contribute somehow for everyone?  

    Many thanx in advance.

    IMO the core of our adventure in opensource country is working togheter. And actually I do not approve the policy of not revealing the code of ThermoPilot (unless is completely faulty ?)


  • I think this project is excecionally interesting for me. I would like to have updates and possibly see if I can contribute somehow...please email me

  • Nice! How does the code calculate the position of the core of the thermal? I've been testing an Extended Kalman Filter based centring algorithm in FlightGear, no real world tests yet though.

    Well done,


  • Hi John,

    Nice stuff.

    I'm working on this too. I'm using UDB with MatrixPilot. I use the LOGO scripting language to do most of the logic for thermalling and geofencing. Also I use that to position the glider mostly upwind until a thermal is found. Then I let it drift along the thermal downwind. I'm writing some custom code for that.

    Find my project here:

    I chose MP for it has wind- and airspeed estimation, so no airpressure sensors are needed. I'm not shure what Ardupilot can do, so I am curious to hear what direction you will go.


    Kees Guijt

  • Developer

    nice work :)

    you should definitely check out Jean Louis Naudin's work on "Thermo Pilot".

This reply was deleted.