Freesteel Blog » Hang-glide

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.

Monday, August 28th, 2017 at 4:44 pm - - Hang-glide

Not been getting very many things to conclusion recently. Sitting around in campsites waiting for people to finish caving. Sitting at home waiting for people to come home from caving. Things have been in stasis. And my flying has been somewhat less than epic.

I have been breaking quite a few less bits of glider lately, which is a surprise given the sort of place I chose to park it yesterday.
bradwellbamland

I came round the tree behind the nose of the glider and landed up the slope that I didn’t know was going to be there when I chose this field. If I had aimed any further along the field I’d have gone over the hump and then I don’t know what I’d do on the downslope except crash into a hedge.

It was a close enough landing that I was able to walk back to the top of the hill in an hour and a half. Here is the track drawn over the terrain:

bamford

And this is the altitude trace where I managed to circle for a time less than 200m above the ground in air that was rising not quite fast enough to keep me from going down.
bamfordalti

These diagrams were made in an ipython notebook.

Flying in weak air is a new capability. After the debacle of my previous XC flight on a day when somebody else flew 200kms from Long Mynd to Cambridge, I went back to school and watched some videos which explained how I had to set up my vario so that it makes sounds when it is going down as well as going up, so that I can tell the difference at different rates of going down without having to glance at the number.

I’m also trying to learn now to work OpenFoam, as well as learn some Aerodynamics. And now I’ve got to read a dissertaion on bicycles which involved sensors and a kinematic model of a bike on a treadmill, as this represents ten years of research in the area beyond where I am at with my glider sensors.

This is actual aggregating technical progress, not the latest forgettable choss on spacebook. I just cannot keep up!

Thursday, July 27th, 2017 at 12:45 pm - - Hang-glide

Before I dampened and broke my brand new computer by keeping it overnight in the tent I was trying some simulations of Kalman filters derived from open source implementations in order to get a handle on the overly complex mathematical formulations of this technology in, say, one dimensional filter data.

It appears that the one dimensional kalman filter is a worthless beast that obscures a simple trivial exponential filter behind it.
(more…)

Wednesday, July 19th, 2017 at 10:05 am - - Hang-glide

Sometimes things you’ve always dreamed of happening grab you by pure chance.

beckabefore3

I could have organized this event at great expense in England on some boring ridge soaring ridge, but I got unlucky during a competition, and then got real lucky to do this.

At the start of the day I was mixing it up at cloud-base with all these competition hang-gliders.

beckabefore1

And then 20 minutes later I got found out and scraped down into a wheat field 10kms to the north of take-off.

beckabefore2

Luckily one of the other competition pilots came down near me, and his retrieve driver (who, unlike my retrieve drivers isn’t more often retrieved by the pilot than the correct way round) picked us both up, and I persuaded them to take me up to the top of the hill for one last flight on Monte Cucco at the end of the holiday.

And just then, Becka was about to take off on her tandem flight which we had been rescheduling day after day during the week.

Her tandem flight lasted long enough for me to completely rig my glider, take off, and climb up to them close enough for a wave.

Later, I carried on flying for too long and landed in the field while they were trying to give the prize giving. This was delayed because of me as they needed my tracklog from my crappy flight before they could officially calculate and release the figures.

When I finally showed up I was invited to stand on the winners podium and be humiliated in front of everyone while the contest scorer squirted a water pistol at me.

Becka does not have a photo.