I recently figured out a way to use GPS 3-dimensional velocity data and the direction-cosine-matrix information in real time as a plane flies along, to estimate the 3 dimensional wind vector, and the 3 dimensional air speed vector, without a pitot tube or any other sort of airspeed sensor. It has been tested, and it works quite well.
The core of the theory for estimating wind speed is described here.
The basic idea is to first estimate the airspeed vector by relying on the fact that the determinant of the direction cosine matrix is equal to one. Therefore, when a plane rotates, the magnitude of the change in the GPS velocity is equal to the magnitude of the airspeed, times the magnitude of the change of the appropriate column of the direction cosine matrix. Then, once you know the airspeed vector, you can compute wind vector. Built into the algorithm is an immunity to any yaw error in the matrix.
The algorithm only works when the plane is rotating around the yaw or pitch axis, but not much rotation is needed, and once the wind vector is measured, it can be locked in during straight flights, and used to compute the airspeed even if the plane no longer yaws or pitches. However, when the plane is yawing and pitching, the algorithm produces a steady stream of up-to-date wind estimates, so it will work in situations (like the field where I fly) in which the wind varies in time and space.
As a bonus, the algorithm includes the vertical component of the wind, which of course is the slope or thermal lift, so we plan to develop a lift-seeking algorithm for sailplanes.
I want to thank Peter Hollands, who contributed a great deal to the development of the algorithm. He implemented the wind-compensation portion of the computations, made a lot of test flights, and wrote scripts to convert the raw telemetry to spreadsheets for analysis, and to kmz files for display in Google Earth.

Here is a jpg file, a spreadsheet, and a Goolge Earth kmz file, from one of Peter's flights.
Note in the kmz file that Peter has a plane icon to indicate which way the plane is heading, as determined by the direction-cosine matrix. Note that there is a very clear indication of the crab angle of the plane, so the firmware knows which way the plane is pointing, which way it is moving and which way the wind is blowing.
Peter's tests were successful, he was able to fly comfortably in heavy winds, including landing the plane in RTL mode.
Wind compensation is presently an option in the MatrixPilot code under the Source tab in the project repository, and will be available in the next release of the download code.
Once again, thanks to Peter Hollands and the rest of the UAV DevBoard team.
Best regards,
Bill Premerlani

Views: 14020


Reply to This

Replies to This Discussion

Hi Rana,

You are welcome, and thank you very much. I always enjoy hearing from you. What have you been up to these days?

Best regards,
Billu Bhaiya
Very interesting as usual Bill and Peter. I look forward to digesting it in more detail. It seems like a much more elegant derivative of the old brute force fly in a circle at a constant throttle while measuring the heading and min, max ground speed to estimate wind speed and direction. My nemesis here is extremely gusty wind. I'm waiting for your wind gust prediction algorithm.

Ooooh vertical componant, thats very cool, well done. Upto what surface wind speed have you tested this???

I would have thought keeping the pitot and adding that data to the mix would make for a very airspeed aware platform.
Gary, the maximum tested so far it 14 mph of wind (7 meters / second) which is shown in the test results of this post. My plane (a Twinstar 2) normally flies at around 10 to 15 meters / second.

At that speed, the rate of turn of the plane becomes the crucial factor in determining the accuracy of tracking a course. So in the jpeg picture enclosed in the post above, the route from waypoint 3 to waypoint 4 (turning from downwind run to an upwind run), is a long curve, because the speed of the plane's turn is slow compared to the strength of the wind.

The tracks from waypoint 1 to 2, and waypoint 3 to 4 show the improvement using wind navigation. (wp 2 to wp 3 is straight into the wind).

Hi Gary,

The UAV DevBoard never had a pitot, that is why I developed this algorithm. The algorithm works rather well, especially if you have a GPS with fast transient response.

The idea from the start was to see how much performance we could squeeze out of a minimal hardware design using only GPS, gyros, and accelerometers. The result was a small, lightweight, inexpensive AP. We've made a lot of progress, the performance is excellent, and we still have plenty more ideas for more improvements.

If we had pitot data to integrate into this algorithm, we could even handle gusty conditions, which gives me an idea.....

Best regards,
A fantastic result, well done!

Now that the airspeed is being computed as an intermediate result in the windspeed calculations, are there any plans afoot to add this to the Ardupilot telemetry output?

It must be terribly annoying to achieve such greatness, only to have people like me ask for even more.

This is more a question about agreeing on the Ardustation Telemetry standard. I need to get together with the good folks behind the Telemetry for ArduPilot. It would be nice to agree a superset of fields now that can be used both by the UAV DevBoard and the ArduPilot - so we could share one telemetry downlink standard.

Adding some fields is a 5 minute job.

Hi Pete,

I think there is an "ASP" field already defined in the high rate string:



Thanks. Of course !.

I'll fix that up shortly.

Andrew, as a matter of general interest do you have a UAV DevBoard ?
Hi Pete,

No, but I really should.

I think the DCM is a tremendous innovation, I like the way useful things drop out of the matrix, and the fact that there is a solid, published mathematical foundation underpinning it all.

And I like direction the UDB is heading in - you and the rest of the development team are doing a fantastic job.

And surprisingly quickly, too.

I'm scared of flying without a pitot ;-) it does not seem to sit right.

How do you chaps manage APT PAT flying??

My personal surface wind speed limit with my Atto is 20knots I know from real flying that very often we have 35 knots of wind at 500' over the farm here in the mornings. I can just imagine without the throttle increasing to keep the groundspeed up, like the Atto does, my airframes would just be holding heading going backwards.

But hopefully you guys can now convince me very gently that everything will be all right.

If you can workout airspeed from the data you have, you are inventing a new sort of Pitot for real flying, stacks less fuss than plumbing it all into the aeroplane, fantastic for experimental aircraft.

Over at the google group I see talk of soaring, very cool, my credit card is beginning to get nervous.

Reply to Discussion


© 2020   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service