Friday, February 18, 2005

Possibly one of the funniest things I've ever seen...

and simultaneously most ridiculous! A parent's primer to computer slang

Tuesday, February 15, 2005

Go Racers!

I should have really posted this yesterday, but.. on Sunday night the London Racers beat Hull Stingrays a massive 8-0!

Here's Maxwell in action (he scored twice !)


Monday, February 14, 2005

P/Invoke fun

So on the weekend I was trying to work on the next step in my vision project (really must get around to putting up a web page about it) and struck a wee problem with P/Invoke and marshalling using Mono on linux.

Actually it was two wee problems.

I was getting a run time exception saying that Mono couldn't find the library I was trying to use via DllImport. I thought this was strange because the library was definitely in my ld.so.cache and I was pretty sure I had my C# code correct.

I decided to try a different approach and use an example I knew should work to test if it was in fact my code/c library combination that was causing it to fail, or if it was a problem with my Mono environment. So I tried the ncurses example from Mono: A Developer's Notebook (excellent book by the way) and what do you know? It didn't work :-(

Well, after a bunch of emails traded with some very helpful guys on the Mono-List I was getting close to working out the problem. After turning on logging and info using the MONO_INFO and MONO_LOG enviroment settings (see "man mono" for more details) I was able to see that Mono was infact finding the assembly but not loading it for some reason. Another guy suggested it might be something to do with gmodule. Well, I'd had some problems with a few other apps after I had changed to gcc 3.4.3 from gcc 3.3.4 recently so I switched back to gcc 3.3.4 recompiled gmodule and hey! it works.... kinda

So, now the ncurses example was working but I still couldn't use P/Invoke with my target C library (the opencv library). Another helpful soul had suggested that if I use ldd to examine libopencv.so I would see that there was no reference to libstdc++ which was causing my problem. This was indeed the case, and after hacking a few linker steps in the opencv makefiles I was happily creating CvImage objects and loading highgui windows from my C# app!


Ahhhh... I just love it when I learn something new, and this time round I learnt a whole lot!

Well to be honest I thought I'd do better...

Tuesday, February 08, 2005

A useful .NET library to know about

I recently discovered Mapack for .NET by Lutz Roeder of Reflector fame. If you haven't heard of Reflector I don't know what rock you've been hiding under...

Anyway Mapack is a great library of math functions you're likely to need at some stage but aren't built into the .Net framework. I was looking for a Matrix class for doing matrix math, and also an example of a least squares implementation in C#. Mapack has both of these and a bunch more.

Check it out at http://www.aisto.com/roeder/dotnet/

Friday, February 04, 2005

I should have paid more attention in class!

So it turns out that all that matrix math I learnt at Uni is actually useful. Unfortunately I can't remember most of it now so I am going through the very painful process of relearning it all.

I am trying to estimate what the image coordinates of an object will be after I perform a translation and rotation of the camera viewpoint. I think I've got the real world coordinates of the object relative to the new camera position. Now its just a matter of turning that into an image reference (pixel location).

Once I have this working I should be able to match features between frames. This will then enable me to estimate camera ego motion. Then I'll be well on my way to my SLAM goal :-)

Thursday, February 03, 2005

I'm in mourning

It's offical - UPN has cancelled Enterprise.

I know what your thinking and I don't care... I really liked that show and I'm gonna miss my weekly trekkie fix.

Wednesday, February 02, 2005

So who's not setting their objects to null?

Some thing I had always assumed but never bothered to verify is explained here.

Even with all of .NET's garbage collection trickery, you should still set objects to null as soon as you have finished with them to tell the GC to clean them up at next opportunity.

Tuesday, February 01, 2005

G.O.D, the Grand Oral Disseminator

So I'm listening to Faithless and thinking I should do a blog entry...

I made a bit more progress with the vision system last night. I think I've worked out how to calculate the 3D position of a feature from the intrinsic camera properties and the feature location disparity between the stereo images. I haven't tested it yet, but if it works I'll be pretty pleased.

Of course I've still got some pretty major challenges ahead of me such as estimating camera ego motion by matching features between frames....