Tuesday, December 16, 2008

Finding dolphins and whales

I've covered quite a few kilometres looking for whales and dolphins, and I have decided that I am doing it wrong. The sea is very, very big, and from my deck I can scan only a very limited area. Even worse, the animals that I am trying to find spend much of their time submerged - I should be looking under the water, not over.

I've heard whales and dolphins on hydrophones before, and it was possible to get a sense of range simply from the volume. You can hear them a long way off, too - loud animals, and sound carries very well through water. What I think was missing from the experience was stereo - with stereo, it should be possible to estimate the direction from which the sounds are coming - and so steer closer.

What I would like to do is to trail two hydrophones astern of Briongloid and hook them up to a pair of stereo headphones. Now, sound travels much more quickly through water than through air, which might make it hard for the brain to process the data fast enough - but a simple fix for that would be to increase the spacing between the hydrophones so that the time sound takes to get from one to the other in water matches the time sound takes to get between human ears in air.

Since Briongloid is usually powered by sail (rather than a noisy engine), I imagine it would be possible to trail my pair of hydrophones throughout a voyage, monitoring constantly for cetacean activity. Interesting idea: now how do I actually go about building such a thing?

Tuesday, December 2, 2008

Error Propagation: an unexpected beauty

So, say you have a couple of measurements, x and y, with some associated uncertainty; the true value of x might be, say, 3 units above or below the measured value, and the same for y. The problem I'm currently working on required me to propagate error through several stages - and also to have a maintain a "confidence value" for that error (i.e., a probability that the observed error will not exceed the predicted limit).

It turns out that there is a little mathematical nook crammed full of simple and useful methods for dealing with exactly such a problem; a helpful colleague introduced me to "Error Propagation" (see link for handy formulae). The amount of error expected in x (up to 3 units) is termed dx, and similarly for y. In choosing dx, you are not really saying (contrary to what I first thought) that dx will never exceed 3 units; instead, you first decide how sure you want to be that your error won't be large enough to surprise you - say 95% - and then choose a value for dx that will rarely (1 time in 20) be exceeded. For x + y, the expected error of the result, d(x+y) is given by this very familiar formula:

d(x + y) = (dx^2 + dy^2)^1/2

Seems like that formulat is familar? Yes, Pythagoras all over again - dx and dx are now the first lengths of the first two sides of right-angled "error triangle", and the result is the length of the hypotenuse... wow, we started with probability, and now we have a result that can easily be expressed geometrically. Unexpected and beautiful!

What if you want an error value that will never, ever be exceeded? Then you'll need a much larger dx; to get, say, a confidence of 99.99%) you will need dx to be at the fourth standard deviation (see Wikipedia on "normal distribution"). The trouble with certainty is that it costs - you might have to increase dx quite a lot to reach that level, assuming your error is normally distributed).

The really neat thing, for my particularly application, is that once you've chosen dx and dy with a certain confidence, then d(x + y) will have a matching confidence: set the confidence for the input, and your output - umpteen calculations later - will have the same confidence for its error value. Time to go play with code and see if I really understand all this...

Monday, November 17, 2008

Vision, Orientation

Maybe a multi-axis accelerometer could provide useful extra input for computer vision applications? By sensing up, the direction of g, the acceleration due to gravity, an accelerometer could provide an extra clue for vision algorithms searching for floors and walls: the first should be perpendicular to "up", the second parallel (usually!).

If your sensor isn't stable, or is always upright, this input won't be so useful, of course.

If at first he doesn't succeed...

I watched our Smallest Crew trying to retrieve his own "soother" last night. Very small hands grasped clumsily for it, held it awkwardly, then jerkily moved it mouth-wards, tiny brows furrowed with concentration.

Several times the prize fell; but each time, little hands caught and brought it back. Eventually, it made it right into the waiting mouth, in the correct orientation... but as the hands fell back, a finger caught in a handle, and the soother went flying...

Slow and clumsy, but persistent, and improving. The Captain and I were very impressed.

Friday, November 14, 2008

Difference between Aunty and Mum

One evening, a family birthday part is warming up nicely. Baby son is sitting in his rocking recline, and having fun with Aunty.

Then... (in slow motion)

....a champagne cork starts to ease from the neck of a bottle...

...Aunty dives for cover behind the fridge...

...and Mum does a Secret Service Agent-style dive to save her son...

That is the difference between "Aunty" and "Mum".

Wednesday, November 12, 2008

Playtime on the farm

On a wet and windy Saturday, I sat for the first time at the wheel of a tractor, and tried to figure out how to make it go... lots of levers, but which for gears? Eventually, I located a "high - low - reverse" lever similar to that in a 4WD pickup or a jeep... and after some very surprising results, figured out that the knob was loose, indicated "R" where "L" should be, and vice versa. Later, I got to play with lots of other levers - turns out a tractor hitch has controls for lowering and raising - and also to play with a lifting-arm mechanism at the front. What a versatile machine this is... couldn't help feeling that what all that power really needs is to provide better control inputs and an extra degree or two of freedom. Ultimately, I suppose, something like this...

Next toy: a teleporter, which isn't quite as sci-fi as it sounds. The big feature on this machine is an arm capable of being extended to 40ft or so; the "hand" at the end can also be tilted up or down. The controls were hydraulic, very powerful, very responsive. Out near full extension, the law of the lever makes itself felt at as control inputs to the lifting arm rock the cab. Just as well the outrigger legs were well bedded down - my wife's brother-in-law was perched on that "hand". Interesting machine.

Wednesday, November 5, 2008

On Debugging

Note to future self: there are two ways to debug. Know when to switch.

Alpine Style
The vast majority of debugging can - should - be done this way. When climbing a mountain "Alpine-style", one carries the bare minimum of gear, and moves as quickly as possible to the summit and back; a sort of vertical sprint.

Siege Style
Alpine-style mountaineering works well on the great peaks of Western Europe; conquering the great peaks of the Himalaya required a different approach. Huge teams traveling with equipment loads measured in metric tons treated peaks like K2 and Everest as natural citadels, fixing ropes and ladders up the ramparts, inching a string of camps with infinite care and labour towards the summit.

Everest: a classic "Siege" target. Photo: Pavel Novak

If a day of simply strolling a debugger through suspicious methods doesn't work out, it is time to switch tactics - whatever the behavior of the defect is, it is too complex to be easily followed. Stop expecting easy insights, and instead instrument anything potentially relevant with log files or console output. Keep an open mind: after all, if you haven't spotted the cause already, anything is possible.

p.s. This is also be a good time to improve your unit tests

Tuesday, November 4, 2008

Dry Water

Okay, from a strictly chemical point of view, 3M's Novec 1230 isn't the plain old dihydromonoxide we have known of old... but that is a good thing.

This fascinating liquid (video here) evaporates with incredible speed, does not conduct electricity and is apparently non-toxic. Perfect for, say, filling vulnerable voids in a home-made U(nderwater)AV to pressure proof 'em, or having a weirdly dry water fight.


In shelves, boxes, jacket pockets, I accumulate notebooks, usually small, usually blue. Their pages are sample-bottles filled from my stream-of-conscious and rendered as scribbled text or hasty sketches; fragments of diary or travelogue, shopping lists, recipes, plans for furniture, mechanical devices, algorithms, hasty records of interesting facts.

Notebooks are tough, portable, convenient - but also easy to lose, hard to search, hard to share. So I started another blog.