Freesteel Blog » Hang-glide

Saturday, August 31st, 2019 at 3:13 pm - - Canyon, Hang-glide

The dates were set by Becka planning to spend one night in Interlaken on Friday 2 August between four weeks on the CUCC caving expedition in Austria and a one week caving expedition up a hill called the Sagistal to the east of the city, followed by a weekend at Sinterlaken the Swiss Caving Congress. This was then intended to lead into two separate week-long caving expeditions back in Austria (Plankamira and Datchstein), capped by a caving holiday down in the Ardeche in early September. However, I said: “Could we do something together that’s fun for me, because you ought to have got enough caving done by then?” and so, at great sacrifice, a canyoning holiday was scheduled.

I drove out to Interlaken on my own with my hang-glider on the 30 July, booked into Manor Farm 1 at £28/night for a narrow slot, and showed up the next morning at the Landplatz Lehn where I knew there was an english professional tandem pilot employed by hang-gliding interlaken to fly tourists off the hill at the rate of up to six flights a day, which is a heck of a lot of work.

Their van took me up to their favourite Amisbuhl takeoff between the trees (the taxi rate is 7Fr), helped me over the tedious 15 minute carry up a private road, and took three complete rounds of passengers airborn in the time it took me to set up and stand on the edge gibbering about doing a nil-wind takeoff. I have an experience of completely screwing these up with two crashes on take-off at Ager last year.

They say they have 300 flyable days at Interlaken, which is true because there’s enough shelter that they can fly in almost any condition, between bands of rain and cloud. They’re not all good flyable days.

(more…)

Monday, August 12th, 2019 at 3:58 pm - - Flightlogger, Hang-glide

I thought I had published this long form article in the blog until I looked for it. Turned out I’d accidentally left it on github here. Text is below the fold.

(more…)

Monday, August 12th, 2019 at 3:32 pm - - Hang-glide

After many days at Interlaken, generally flying down from various takeoffs and ramps, I got the opportunity and nerve to finally fly at Fiesch, where I got to see over the glaciers.

Flight 1 was easy; up and across the ridge into the Goms valley, thus saving me from the landing field at the bottom of takeoff. At the end of the flight I was caught in the convergence in the middle of the valley that took me back to 2800m. The only way down was to go to the edge of the valley and circle down.

Flight 2 was harder as I had to get really high first and then there was no lift for miles along the side of the valley until I was saved by a very slow climb on a particular ground collapse. There were some moments of zero-G on that flight. No matter how high I got, there were still always rocks above me.

Wednesday, May 29th, 2019 at 11:57 am - - Flightlogger, Hang-glide

I think I’ve not been blogging ongoing projects are not working. A long running one that I have failed to report here is this dabbling with the RTK GPS system, which I learnt about by researching precision agriculture, having been tipped off about it by a guy from sixty-5 when I was working out of farset labs in Belfast earlier this year.

Anyway, in theory one can log the raw data from these ublox M8T GPS chips, use the open source RTKLIB software to process the rover GPS against a base station GPS to get a 2cm accurate time series (with a lot of help from the rtklibexplorer blog, and then plan to put one of these rover stations in each wingtip of a glider.

And this would have all been fine if one of the wingtips ESP32 devices that receives and transmits the UBX data from the GPS to my phone through wifi didn’t keep failing. I finally found out what it was: the tiny sheet metal antenna had snapped off so cleanly that you couldn’t tell it was missing.

Here is a picture of my three devices. The 2 rovers go into pouches with their own batteries and get tied into the wingtips.

Anyway, it was a rubbish and rough flight that I did last Tuesday, never getting higher than 2600 feet. Meanwhile, Becka was doing her Welsh 3000s walk across 15 peaks all of which were higher than I managed to fly, and got a photo of this Brocken spectre on the peak of Snowdon at 8am, having set off at 5am from the car.

I was tasked with being a few kilometres further down the road to provide the second breakfast and some sandwiches for her further journey.

No I wasn’t going to do that walk, after my experience with the Lakeland 3000s. Walking too far in one day is annoying, especially when you are constantly being told you’re not going fast enough.

The logical consequence of having more strength and always wanting to do more than anyone else is… that other people will want to do less, and this is going to be a disappointment.

So I went flying, and RTKLIB processed my one working GPS track, like so:


(Blue is the phone GPS and orange is the RTK gps.)

I was going to show some correspondences between the RTK GPS altitude and the barometric altitude when suitably filtered, but my interacting plotting system broke down. There are a lot of oscillations in the GPS, which I don’t understand. Will get back to it.

Wednesday, May 8th, 2019 at 7:00 pm - - Hang-glide

Lots of adventures that have gone unreported on the blog for the last few months, including a month long stay in the city of Belfast, including a couple of dives in Strangford Lough. I’ve been putting stuff in twitter/goatchurch instead.

I haven’t finished writing up my logbook, but anyway I was on a hang-gliding competition last week where I got 12th place in spite of levels of fear before takeoff that made me question whether it was all worth it.

It turned out it was. There were some lovely flights from Builth Wells, Hay Bluff. And then there was Merthyr. Becka was there to pick me up from where I landed, and I sometimes made enough of a distance for this to be worth it.

Here are some quick pics.


Acting as a wireman to put off the fateful moment when it’s going to be my turn.


Getting low on Merthyr Hill in the grey after an hour and a half of flying in the rough air.


Finally getting up to cloud-base, at which point I decided I was done with this place and went straight off downwind.


I landed two hills back with some curious cows. Not such a result that day.

The gopro failed on the other two days, so no in-air photos are available.

I got a lot of stuff to write about, like RTK GPS, ESP32s with MQTT asyncronous mDNS capabilities, Sonoff POWs, differentiating time-series values by curve fitting polynomials. The trouble is none of it is working too well, so I’m preferring to work on it rather than report it. I’ll force myself to hammer some stuff out in the next few days whatever.

Tuesday, November 6th, 2018 at 6:51 pm - - Hang-glide

Quite a lot of work in the last week (especially at the weekend) reading a big book called Tailless Aircraft: Their Design and Characteristics, published 1994, translated from German.

The blurb on the inside cover reads:

The authors are uniquely placed to compile the first practical and comprehensive treatment of this fascinating branch of aeronautics. They have for many years collaborated on the practical and theoretical development of flying wings, applying themselves to sailplanes and powered designs ranging from models to full-size craft. In 1988, together with Klaus R, they received the “Berblinger Award” from the City of Ulm for their investivation into the design for an optimum tailless hangglider.

What the heck is the “Berblinger Award”?

The winner of the 100,000 Euro Berblinger Flight Competition was declared on Sunday 17 April, in the Ulm town hall. In all, 36 participants competed for the prize, which focussed on the use of innovative, ecological and resource-saving technologies. Of the 36 applications received, 24 aircraft were initially admitted to the competition. 13 aircraft started successfully; due to insufficient financial backing, technical difficulties or the absence of the appropriate flying licenses the remaining competitors were not able to take part in the practical phases of the competition, which was carried out at the AERO global for general aviation, in Friedrichshafen. Eight participants successfully completed the exercise of flying from Friedrichshafen to Ulm.

Two anniversaries were celebrated with an extensive programme of events during this weekend in Friedrichsau Park and the Adlerbastei: 200 years ago, King Friedrich 1st gave the Friedrichsau Park to the people of Ulm. In honour of his visit, Berblinger performed his attempt to fly across the Danube.

Who the heck is Albrecht Berblinger?

One of Berblinger’s inventions was what appears to be a hang gliderKing Frederick I of Württemberg became interested in his work and sponsored him with 20 Louis. He tried to demonstrate the glider on the evening of 30 May 1811 in the presence of the king, his three sons and the crown prince of Bavaria. The king and a large number of citizens waited for the flight but Berblinger cancelled it, claiming that his glider was damaged. The next day he made a second attempt. The King had left by this time, but his brother Duke Heinrich and the princes stayed to watch. Berblinger waited so long for a good wind that a policeman finally gave him a push and Berblinger fell into the Donau (Danube).

It sounds like the experience on some of my takeoffs.

But enough of that rabbit-hole.

I’ve been attempting to replicate some of these graphs and diagrams from the book, like these ones:

After many days and many attempts, I got to this matching version:

This was not helped by the mistake in Formula (2.7.5)!

I could not replicate the other four lines for the “neutral point” (some details about dc_l/d(alpha) has been left out).

In the process of this I have wasted no pencil and paper, and proved the power of SymPy, which I think all mathematics should be written using.

The details are all on the Horten sailplanes Jupyter notebook. It’s probably a good thing I don’t have the technology to inline mathematics into this blog.

Tuesday, July 3rd, 2018 at 7:50 pm - - Flightlogger, Hang-glide

We had a go, where I rigged my U2 hang-glider in the front garden with the VG full on to make it rigid, and then standing it on its nose so that JR could take lots of nice high definition photos of it from a variety of angles with a proper camera with a big lens.

The Agisoft Photoscan thing initially got it right, with a good looking 3D image:

But then I started doing things with the point scan — in particular finding its symmetry so as to compare the left wing with the right wing.

The code is here.

Basically, I loaded the 9653216 points from the csv file with this one Python command:

k = pandas.read_csv("hg1a1b.txt", sep=" ", names=["x","y","z","r","g","b","nx","ny","nz"])

And then worked out that I could perform vector calculations on the columns of coordinates, like this

# Reflect about the plane through x=2 parallel to the YZ plane
mv = pandas.Series({"x":2, "y":0, "z":0})
mvsq = sum(mv**2) # (scalar)
mvfac = (k.x*mv.x + k.y*mv.y + k.z*mv.z)*2/mvsq - 2  # 9million value column
kmirr = pandas.DataFrame({"x":k.x-mv.x*mvfac, "y":k.y-mv.y*mvfac, "z":k.z-mv.z*mvfac})

The alternative more memory efficient calculation method, performed row by row runs many, many times slower:

kmirr = k.apply(lambda R:R[["x","y","z"]] - mv*((R.x*mv.x+R.y*mv.y+R.z*mv.z)*2/mvsq - 2), axis=1)

There’s something curious about this column mathematics and how it applies to computational geometry.

In any case, have produced an animation melting through from one wing tip to the other, like so:

It seems that one wing is much fatter in depth than the other.

I think this is a photogrammetry error in its understanding of how far apart to put both sides of the wing. The gap at the leading edge on the fatter wing gives it away.

As is my observation in freeform CAD/CAM: you can get away with a lot of deviation from the required surface because no one can tell when it’s wrong. They can measure the flatness of the square edges, but errors in the middle of the freeform surface (so long as they are smooth) pass without notice. I suspect a lot of photogrammetry works on that principle. It’s only when we scanned something with two sides that was supposed to be symmetrical could I tell there was a big a problem.

(To be fair, the Agisoft failed when we reran it to get a better fit. It is better to

Well, so much for that. I had hoped I’d have something good enough to trace up and enter into XFLR5 as a series of contours, but it’s not quite.

However, I should just make up a series of contours based on this anyway (since it has things like the washout/twist approaching the wingtips) so that when we get good data (eg from a laser scanner) we are all ready for it.

Thursday, April 12th, 2018 at 4:29 pm - - Flightlogger, Hang-glide

Okay, so that last flying day at Meduno wasn’t very adventurous on the scale of the top pilots, but I was extremely pleased with it; I did just as well as anyone else in our xtc-paragliding (hang-gliding week) group and felt perfectly up with it.

Often you come down disappointed, and can watch everyone else from the landing field going higher and further and having more fun, and you’re down wholly because of your lack the skill and competence. But this wasn’t one of those days.


Here is the page of everyone’s tracklogs.

I was particularly happy with the part of the flight where I maintained my altitude over the flat lands at about 700m for 11 minutes before finally the air currents strengthened enough to carry me up. I had a sense of calm and flow rather than panic and disappointment this time.


It doesn’t look particularly low in the picture, but it felt like it.

I thought it was rising air from a pig farm I could see below and towards the dry river bed (because it smelled as such) but it couldn’t be as this as it was about 700m cross wind. I had consistently the wrong idea of the wind direction. It shows that even with totally mistaken ideas, I was still able to stay with the weakly rising air.

At one point I was passed high over a rifle range. The pops of the guns were like tap-taps on my breastbone.

I overflew the takeoff at the end of the day and took a photo of this cute pink training glider on the ramp beside the wood pile in the car park.

Then I tried to narrate part of my glide down to landing to the camera, which doesn’t work at all with my full face helmet.

One of the folks on the hill was SashaZ whose long blogpost about surfskis is what caused me to book my Tarifa trip with Becka.

Here are some other pics from previous days.

We had some long drives there and back in someone else’s car. Becka spent the whole time at SpeleoCamp caving, and so this shouldn’t count as a hang-gliding holiday.

Oh, I might as well put down my notion of the physics of flight here, while I have it worked out. It goes like this:

A heavier than air object with a mass of 100kg wishes to avoid accelerating downwards to the ground under a gravitational force amounting to 10 metres per second per second.

As each second that passes there is 100×10 = 1000 kg m/s of momentum that must be accounted for by blowing a volume air downwards at a speed k m/s.

Suppose the craft encloses a horizontal area a square metres within which it blows the air downwards at k m/s. In one second this would be ak cubic metres, which, with a density of about 1 kg per cubic metres, is ak kilograms, sent downwards with a momentum of ak2 kg m/s.

If the area a was circular, then you could cover it with a circular propellor like a helicopter, and maintain your altitude by blowing the air at sqrt(1000/a) metres per second downwards to counteract the gravity.

But imagine the shape of a is rectangular, and instead of a rotating blade, the blade moves horizontally on rails of length v and has a width w. This is somewhat like a wing with a span w flying at a velocity v.

My glider has a wingspan of the order of 10m, and an airspeed of 16 m/s, so the air needs to be blown downwards at a speed of sqrt(1000/(10*16)) = 10/4 = 2.5 m/s.

The kinetic energy embodied in this is 1/2 * mv2 = 0.5*160*2.5*2.5*2.5 = 1250 Joules/second.

If I weigh 100kg I can generate 1250 Joules from potential energy if I sink at 1.2 m/s — which is about the rate that my glider sinks on a steady glide.

This is a story of what needs to happen to the air to keep you up, not how it is done with aerofoils, vortices, induced drag or any stuff like that. And it also suggests that our lovely gliders have already hit certain limits of what they could physically achieve for their size and speed.

One way to get them to go up will be to add an electric motor to give you that extra to get off the ground, or to find a thermal when you’re going down.

That ad says they have 24 Ah in their 57.8V battery, which equates to 24*57.8*60*60=5Megajoules. This can maintain a horizontal flight for 27 minutes, which means it’s at the rate of 3000 Watts. That’s about a 50% conversion rate from the battery to powered energy, which is plausible.

It also gives a “max summit height” of 750m, which is a budget of 6660 Joules per metre. I need to give it 1000 Joules per metre in potential energy, so suppose my climb rate is k m/s then it will take me 750/k seconds to get up there, consuming 3000*750/k + 750*1000 = 5Megajoules which computes to a climb rate of 0.53 m/s over 23 minutes.

I can’t afford this stuff. I should be happy with the massive amount that I’ve already got.

Thursday, April 5th, 2018 at 10:02 pm - - Flightlogger, Hang-glide

I’ve been deeply not keeping up with blogging on this Slovenia hang-gliding trip. Telegram and Twitter seem to take the wind out of such activities. So maybe this thing is for mainly technical reports. There are a lot of dead blogs out there that only have such things. This blog was started for technical content, and then I began putting all my own activities into it.

I’ve been working on this technical thing to do with gliding and tracklogs for so long without any breakthrough that I finally decided I had to start reporting negative results.

My latest failure was attempting to use a Hough transform to derive wind speed and direction from the 2second interval GPS sample point of a glider flying around in the air mass.

There are many made up algorithms for doing this, but I wanted something mathematical. This time I based it on the assumption that the glider is mostly flying at a constant speed, so that changes in its GPS/ground speed were entirely due to flying with or against the wind. In particular, given three consecutive positions p0, p1, p2 with td seconds between them, then the correct wind velocity w would satisfy the following equation:

|p1 - p0 - wtd| = |p2 - p1 - wtd|

There is no unique solution for w in this equation; the solutions all lie along a line. So if we add some spread and combine the probability fields of solutions for every sequence of three points in the track, then the peak probability will be the best guess at the wind direction.

It’s all explained here in this jupyter notebook.

After so many failures, I’m much pleased with this result. The actual wind was blowing towards the northeast, and the bad guesses are when the glider was on glide and not doing any circles.

That was from a four hour mega flight all round the three ridges near Gorzia where at one point I got lifted smoothly one thousand metres into the blue sky at the rate of 5m/s. I could see from the capital city inland to the container ships on the Adriatic.

Here’s a picture after landing from a lesser flight today where the clouds were pretty low on the ridge.

I need to grab some self-portraits from the other folks some point real soon of me taking off, and me landing quite properly on my feet. I’m starting to hanker after a new glider, one that’s sleeker and goes faster. This one’s beginning to feel sluggish all of a sudden. I can’t afford anything else now, and it would be quite naughty. And after my spectacular failure of an XC last week on Bradwell, I don’t deserve an upgrade.

Friday, December 15th, 2017 at 6:48 pm - - Hang-glide

If I don’t blog it, it hasn’t happened. I have been forgetting this fact.

Yesterday I had a minor breakthrough.

For years I’d been seeing beautiful videos of simulated cloud convection online, but was never able to run them myself in order to look at the data.

The structure of thermals has been a long-term mystery to me, and I’ve noticed that some pilots seem to be able to navigate through and climb these invisible things quite reliably, yet are not able to explain how they do it. They are in the dark just as much as I am, yet they have — probably by luck (plus the necessary skill to recognize and lock it in) — struck upon the combinations of responses to inputs and gut senses that just happens to pay off spectacularly.

My gut feelings and responses to inputs don’t always work out so well because my imaginations of the air are probably too logical, incorrect and counter-productive and they require resetting and retraining to break free from their false notions.

So I’ve decided that it has got to help me if I can see what is going on, and not carry on wondering whether thermals are columns or vortex donuts, are surrounded by sinking air or tailwind incoming air, are observably warmer than their surroundings or mere upward kinetic energy.

So this time I tried harder to get to the simulation code when I had the time.

I am now pretty sure that the code for the GPU-resident Atmospheric Large-Eddy Simulation (GALES) is unpublished.

However, I did eventually establish from one of the papers that GALES is based on DALES — the Dutch Atmospheric Large-Eddy Simulation where it said the code was to be found at the broken link dales.ablresearch.org. Fortunately it does exist at github.com/dalesteam/dales.

This divulged a pile of Fortran90 code and a CMake script, and I was able to build it and run it against the cblstrong case example.

This eventually (after heating up my computer’s CPU) dumped out a file called initd03h00mx000y000.001 written by the function modstartup.f90 writerestartfiles with lines like:

write(ifoutput) (((u0 (i,j,k),i=2-ih,i1+ih),j=2-jh,j1+jh),k=1,k1)
write(ifoutput)  (((v0 (i,j,k),i=2-ih,i1+ih),j=2-jh,j1+jh),k=1,k1)
write(ifoutput)  (((w0    (i,j,k),i=2-ih,i1+ih),j=2-jh,j1+jh),k=1,k1)
write(ifoutput) (((thl0 (i,j,k),i=2-ih,i1+ih),j=2-jh,j1+jh),k=1,k1)

By the power of Python I used the module scipy.io.FortranFile to read the velocity component records like so:

ku = f.read_record(dtype="f8")
kv = f.read_record(dtype="f8")
kw = f.read_record(dtype="f8")

and determine that the number of double-float values in each array record came to 475300. Of course you can immediately tell that this factorizes into 50*70*70, so that the 3-dimensional array of vertical components of air velocity can be stated as:

kkw = numpy.resize(kw, (50,70,70))

Thus this is plotted slice-wise at a constant altitude by:

plt.imshow(kkw[16,:,:])
plt.colorbar()

to make a familiar image of computer generated thermals seen in past papers:

I didn’t stop there, and generated the following video of a melt through from the bottom to the top with black arrows denoting the horizontal wind components:

using the code:

cmdstring = ('ffmpeg','-r', '5','-f','image2pipe','-vcodec', 'png', 
             '-i', 'pipe:', "testA.avi")
p = subprocess.Popen(cmdstring, stdin=subprocess.PIPE)
X, Y = numpy.mgrid[0:70, 0:70]
for ik in range(1,50,1):
    print(ik)
    plt.figure(figsize=(11,11), frameon=False)
    Q = plt.quiver(X, Y, kku[ik,:,:], kkv[ik,:,:], color="black", headlength=4, headwidth=2)
    plt.imshow(kkw[ik,:,:], cmap=plt.get_cmap("coolwarm"), vmin=-5, vmax=5, interpolation="bilinear")
    plt.title("zslice %d" % ik)
    plt.savefig(p.stdin, format='png', pad_inches=0.0, bbox_inches='tight')
    plt.close()
p.stdin.close()

Boy have I wasted a lot of time on this so far, and I’ve got to do some other things while I catch up on some Basic Lessons on CFD (Computational Fluid Dynamics). It can only help to have some background knowledge of the field.

The next step will be to investigate how to program the initial boundary conditions and setup to create a single idealized thermal, which is an evolutionary structure in time and space that a glider like mine might encounter. And while a glider is flying and circling and climbing in it, the thermal is evolving, so your experience can only be expressed as a slice that runs like a diagonal corkscrew through the spacetime continuum fluid in four dimensions.

There’s no way this is ever going to make sense, but if it challenges my intuition to break out into another state where the flight of my wings flows through the air better, then it will have certainly worked for me.