Friday 12 February 2016

MOHOC: A snag free camera option for extreme s(p)orts.

Entanglement - the ever present nightmare for anyone involved in canopy sports and runs with a helmet cam. Early efforts in skydiving tried to address the issue by encasing the camera in a snag resistant (or in the case of 2K Composites with the FF* series - snag free) helmet solution. But as camera form factors evolved, the helmet designs stagnated - trying to become a good enough for everyone rather than a perfect for some.

Some newer camera designs lent themselves to a better set up than others (top mount Contour vs. front mount GoPro) - but even those never quite addressed the root problem -> the lines, the mount, and the chinstrap are stronger than the human neck.

Attempts to address involved introducing a weaker link than that of the neck. The mount. Mounting using velcro or magnets retains the camera under normal operation but allows it to break free of the pilot in the event of an entanglement. Only one catch, in saving our neck, we potentially sacrifice a $600+ camera. Small price to pay many of us would admit - well, up until we have to fork over the cash for a replacement.

Another option - address the entanglement issue at the camera itself.

So enters the MOHOC (Military Optimized Helmet Camera - not sure how the second 'O' fits in). Designed with the needs of military special forces in mind, the unit is water proof, shock resistant, and (most importantly) almost completely snag proof (the base is curved to sit flush on a helmet).

Looking forward to getting this puppy in the air.

Update: First Flight Video
Update: First Photos



A lot small than originally thought.

Rotate-able lens.

Glove operable power/record.
The unit indicates record state via vibration - no selfie shot while looking for the red record light.

Top opened to expose battery, status screen, HDMI/microUSB, and microSD card.

Video: Paragliding Pico Da Ibituruna, Governador Valadares, Brazil with Dean Crosby (ActiveEdge) + Steve Barton (XCBrazil): Part 2

Video: Paragliding Pico Da Ibituruna, Governador Valadares, Brazil with Dean Crosby (ActiveEdge) + Steve Barton (XCBrazil): Part 1

Sunday 7 February 2016

It's all in the application: Recon Instruments Snow 2 vs Paragliding: Part 6

Progressing along - next up, thermal core location - using GPS positioning coupled with variometer readings to determine the most likely position of the thermal core in relation to the pilot.

The most correct version would probably entail a least fit squares/orthogonal linear regression ala Eberly. Two challenges emerge if one goes this route:

  1. Implementation Complexity - the operations involved (including a descending Eigen vector sort) are complex and would be a nightmare to debug.
  2. Execution Complexity - the operations are math intensive. Either reduce the frequency of execution (and the accuracy of the result) or shuttle off to the GPU via shader computation.
The decision -> implement first, optimize second. Find a simpler implementation to begin with, evaluate, then decide if a more robust solution is needed.

That said, it doesn't mean one needs to completely ignore how the OLR solution goes about accomplishing its goal. In particular, the use of a centroid that acts as the point through which the best fit vector passes. 

The centroid is just the average of the points. Unmodified it would simply demarcate the middle of the sample set. But it we were to weight it with, oh, the vario data we could bias the position towards the side of the sample set with the strongest climb values. 

Weighting is a matter of determining the strongest vario value in the set:

for (ThermalSample sample : mSamples.values()) {
    if(sample.mVario > mVario)
        mVario = sample.mVario;
}


... and then reducing the weight of all other points by a geometric factor based on the difference. Samples with a vario reading equal to or less than zero are ignored and not added to the sample set.

Double weight = 1.0 - (mVario - sample.mVario) / mVario;
weight *= weight;

The resulting centroid calculation:
for(ThermalSample sample: mSamples.values()) {
    Double weight = 1.0 - (mVario - sample.mVario) / mVario;
    weight *= weight;
    weightSum += weight;
    altitudeSum += weight * sample.mLocation.getAltitude();
    latitudeSum += weight * sample.mLocation.getLatitude();
    longitudeSum += weight * sample.mLocation.getLongitude();
}

altitudeSum /= weightSum;
latitudeSum /= weightSum;
longitudeSum /= weightSum;

This calculation is done frequently as the sample dataset continually updates. To prevent data from going stale, pruning is done as new elements are added - currently based on age (> 60 s) and distance (> 200 m):


for(Iterator<Map.Entry<Double, ThermalSample>> it = mSamples.entrySet().iterator(); it.hasNext(); ) {
    Map.Entry<Double, ThermalSample> entry = it.next();
    Location location = entry.getValue().mLocation;
    if(location.distanceTo(currentLoc) > MAX_SAMPLE_DISTANCE || time - location.getTime() > MAX_SAMPLE_AGE) {
        it.remove();
    }

A far less complex solution vs. OLR and appears to give reasonable results with the test data. Displaying the result is done where the MFD used to sit. This new 'map' display is rendered using simple Android Canvas operations and can be purposed beyond simply displaying the current core guesstimate. The glide ratio and vario reading now have a permanent display just above the old MFD location - though smaller in size.

Thermal core is just ahead and to the right. Green means core strength is less than 2x current climb rate. Battery remaining in lower right corner.
Core further away. Red means core strength is more than 4x current climb rate. Yellow is used for 2 to 4 x. Vario is just above (currently reading 0.0 m/s).

The Refactor begins...

Saturday 6 February 2016

Final Day, Trip Home, and a Parting Gift.

Friday, final day.

As fate would have it, the sky is clearing and the winds dropping off. Just in time for us to pack up and head for home. Word has it next week will bring some great XC opportunities. Go figure.

But next week might as well be a lifetime away as we will be unable to capitalize upon it. So we will make do with what we have, today.

0930 hrs - everything is packed up and awaiting the crew. I must admit, upgrading to the posada has certainly helped to make the best of the less than ideal conditions. The Everest would have been alright if we were flying every day, but to be trapped in it most of the day with rain filled skies would be depressing at best.

Neighbour #2 bids adieu.
Neighbour #1 was too busy trying to escape (again) to pay me much heed.

0945 hrs - the crew has arrived and Steve gets the bill sorted out. We are heading back up the hill for a final go.

Up top, the winds are still gusting somewhat and cloud base is low. We wait.

The Norwegians arrive followed by Slovenians - giving the day some hope. The Norwegians are here on a extended flying trip giving them the option of being somewhat picky about flying days. To see them means there is a reasonable chance of at least some airtime.

Sometime later the bus load of Poles arrives and the bar magically opens. One has to give the Poles credit, they are full on when it comes to trips like this - either flying or partying. No compromise. It doesn't take long before cheers and singing can be heard from the direction of the bar.

Winds are still somewhat gusty, but Eric tries to give it a go - launching and subsequently sinking out. No one appears to be in a rush to follow his lead.

An hour passes. Talk of a low airtime pilot ending up the river the day prior dominates conversation. Word has it he tried crossing the river far to the east and came up short on the LZ - ending in chest deep water while the wing luckily ended up on the shore in a tree. Had it been the opposite, there would have been a body recovery underway. My preference has been to set up over 'Jurassic Park' as the go/no go point. If the winds or the altitude look questionable, take the Park LZ directly below.

Dean suggests we start to get ready ... slowly. I suspect he thinks there might be a flyable (and stay 'up-able') window coming. Watching the breaks in the cloud approaching, I think I see what he means.

As the first of the breaks arrive, the gusts on launch start to die down - thermals out front starting to block the meteo wind?

Launch fills with folk getting ready. In an unhurried manner, a slow trickle of wings make their way out front to test the waters.

Dean launches and climbs out. The only other wing able to stay up with him is a purple Mantra 6. Everyone else is stuck at launch height or sinking out.

I give it a try and abort, the wing rolling too much to the left for my liking. The Norwegians kindly lend me a hand getting everything reset.

While getting ready for a second go, Simon launches and joins the fray out front.

Second launch is good and I immediately push north. The winds are still cooking up top and are from the north east. I suspect a decent amount of the plateau directly in front of launch to be under the influence of rotor from the raised ground to the east. Last day is not the time to throw caution to the wind (pardon the pun) - so I stick to the lip to the northwest just before the drop off into the Cauldron.

I find lift but whatever core exists is fragmented, shifting with the gusting winds. So starts likely the hardest I have ever worked for a climb - 30 minutes of rodeo for a mere 400m. I approach cloudbase and Dean comes on the radio informing me he sees where I am and suggests we move along the ridge. I gather this to mean go east - > upwind (one certainly would not want to go downwind into the Cauldron with this stuff). Start heading eastward and subseqently get drilled. At this rate I'll be in the lee in no time. Attempt to relocate the climb I was in mere minutes before proves futile. Push out, maximizing options (aka altitude). Not much out here either, just sink.

Arrive over the Park with some spare height - though with these winds the Main LZ across the river doesn't look particularly appealing.

On the radio to Steve to let him know my intentions. Steve immediately replies asking if I want another go.

Sure, why not?

Land, pack, into the truck for round 2. Highlights:

1) My only reverse launch of the trip. Have to admit, I like how the Plus has been retrimmed (and re-risered) when it comes to stronger wind launches vs the original Carrera. Very easy to manage with the 'A's-n-C's (the original Carrera being a right PITA in comparison).

2) One of the speedbag closing lines hooking under my leg. A somewhat uncomfortable flight brought to a quick end. The gusty conditions were not going to allow me the chance to go hands off to untie, free leg, and reattach. Steve mentioned afterwards he normally give the tours the last day talk about complacency. In our case, we had flown so little, he figured we hadn't fallen into that trap. Surprise! Still getting used to the nuances of the RangeAir.

Landed and packed up. Thus ends the flying and now time to start heading home.

Given the SNAFU that Azul proved for the trip inbound, option to bus it back to Rio in the overnight Executivo.

6AM arrival at GIG, flight out at 9PM. A lot of time to kill.

If you need to recharge, have your 'N' power socket adapter.
The ghost town of Terminal 2.
I was warned about Bobs. I now understand why.
Olympics attendees, hope you don't have high expectations for the food options at GIG.
Flights back are uneventful aside from experiencing the new High Density 777 AC has decided to place into service. Business Class wasn't thrilling and from what I saw of the Economy I am pretty sure Air Canada is fully embracing its unofficial motto of 'We're not happy until you're not happy' ->  Economy is now Steerage Class with 10 pax wide seating in a 3+4+3.

New Business class 'Studio Pods'.
Brought to you by the 'new' Air Canada -> pay more, get less.
Over the Rockies.
Sunday: Home safe and sound.

Wednesday: wake up feeling bleah -> joint + muscle aches, fever, fatigue, headache, red eyes, and dizzy. Spend day working at home.

Thursday: exhausted. Remain home. Symptoms passing. Little red spots start appearing.

Uh oh. Wife makes an appointment with the doc for the next day.

Friday: Doc highly suspects I have Zika (symptoms are not severe enough to be dengue). Health Canada is only recommending testing for pregnant women at this point. So rest and fluids are the marching orders - return immediately if any weakness or numbness is experienced in extremities for referral to Neurologist. Parting gift from a skeeter unfazed by the 30% DEET, I guess.

That all said, I've since booked and put down a deposit to return for Tour #3 in March of next year.