Friday, June 30, 2006

Psi Ops

Many months ago I bought a game called Psi Ops. I liked it. I liked it a lot! It's true that the copy protection system is the second most frustrating one I've ever had to use, (after the Half-Life 2 fiasco, that REALLY should have resulted in developers being shot) but I liked the game.

Sadly, shortly after completing the game, my ancient PC decided that it was giving up the gaming world, and has recently not even been able to play simple 3D games without the graphics card going into "low performance mode". This is probably a cooling issue or a power issue.

I recently acquired a nice shiny laptop, and decided to have a bash at playing some of my old games on it. It was fun, Splinter Cell Pandora Tomorrow worked really well, so I then moved to Psi Ops. It was a disaster! The install went off without a hitch, but the controls went nuts and the game was unplayable. I looked on the FAQ for the game on Zoo Digital Publishing's website, and found that there is a known bug that certain hardware types cause the game to behave in this way or even lock up. Their fix? Unplug the offending hardware!!!!!! Small problem... it's a fucking laptop you retards! For all the known bugs with Psi Ops, there are NO patches. NO fixes, in fact other than a pathetic FAQ, there's not much of anything!!

I know that Psi Ops didn't sell too well on the PC, (though I thought it was excellent, and it could only have been down to a marketing fiasco) but you would of thought that Zoo would at least TRY to release a patch?

So readers beware. If you buy a game released by Zoo, there is no guarantee that it will work with your hardware, and if it doesn't - don't hold your breath looking for support.

Rant ends..

Wednesday, June 21, 2006

The Microsoft Robotics Architecture - First Impressions

Yesterday Microsoft released their Robotics Studio. See http://msdn.microsoft.com/robotics/
A friend of mine asked me to take a look at it and share what I thought. Here are my first impressions, which could turn out to be misinformed, or opinions that are subject to change!

The premise is simple, a common SDK, debugger and simulator for all of your robotic needs. Now - I'm happy to admit that I can be a little anti-Microsoft, so to say that I was sceptical on my first viewing, would be a slight understatement.

Let's look at first impressions. Before even seeing the web page I had one chief concern - Windows. Windows is NOT a real-time OS, it doesn't pretend to be, it wasn't designed to be, and it simply cannot be. The message system offers no guarantees that information from one source will reach another within a specific amount of time. This isn't a problem for a lot of applications, but in mobile robotics, it most certainly is a problem, especially if that information is sensor data telling you about the wall that you're accelerating towards at several meters per second, per second. This concern has not really been addressed properly in my mind yet. If it is possible to write code that compiles into the debugger and the simulator, and then recompiles to a different OS that is better equipped to handle real-time applications, (mentioning no Penguins in particular) then I salute MS and all of their little minions. If not, the only saving grace is that despite MS offering no guarantees that the messages will get to the controller in a specific amount of time, they will generally get through eventually, so by driving your robot around slowly and making sure that the environment that it's in, isn't moving too quickly, you will at least be able to write functional code. I may be being overly cautious, but taking a hit in sensor bandwidth, is a big price to pay.

So I did my review of the website and all seemed well. Then I moved on to glancing at the tutorials, and hit upon the second blow. The only published examples are in VB and C#. Now I know that these are the darlings of MS developers at the moment, but they're writing a product aimed at the robotics community. A community that comprises largely C and C++ developers. C++ is a .NET language, (though my experience is that it generally isn't as well supported as C#) at best this is a marketing oversight, at worst, the C++ support is going to suck, big time!

Philosophically speaking I believe the MS coming to the robotics industry is probably a good thing. MS has shown us that often "good enough and fast enough" are the best way to develop working code in a hurry (I know that as you read this, the Linuxphiles and Macphiles sitting at the back will be sniggering away and coughing "security", but that's a whole different rant.) This is an important shift from "the best and the fastest" paradigm, which doesn't really serve you in the world of robotics. It's all very well and good writing some algorithm that assumes perfect sensor data at infinite resolution, but waiting for a physicist to ride in on a white horse, and deliver hardware that can even approximate that, just for your algorithm to be usable is pointless and counter-productive. Being able to write algorithms quickly, that work well-enough given the current hardware constraints, is the most important issue at the moment, and that is traditionally the forte of a Windows SDK.

The head of the team behind the SDK, one Tandy Trower, claims that "the evolution of robot applications is held back by many factors, including the fragmentation of hardware, lack of portability of code, lack of good development tools, and lack of needed support libraries and algorithms". Well, Tandy, I could be misunderstanding your management jargon, but the "fragmentation of hardware" is likely to be one of the saving graces of robotics, research into non-heterogeneous robotic groups, (i.e. groups of robots where some or all of the robots have totally different hardware configurations) is yielding impressive results, and should not be ignored. However I agree with him on the other points. The closest that the robotics sector has to a standard is the infamous Player/Stage project. In this architecture Player is a standard way of writing control code for a robot. Many configuration files exist for player that allow the same code to be used on many different robot platforms, from many different manufacturers. The Stage part of the project is a 2D simulator that can seamlessly replace robotic hardware. There is a project called Gazebo, which is a 3D simulator, but I'm not that keen on it. To be honest I'm not that keen on any of them. I've found that installing them on a Linux distro to be frustrating to say the least when it comes to locating the correct libraries etc, and in the end I ditched them for the manufacture's software, because that was guaranteed to support all of the hardware on the robot and was, in my opinion, far nicer to code in. Of course, if everyone did that, it would make it difficult to share libraries of useful algorithms across platforms. I generally separate out my control algorithms, but in the ARIA API from MobileRobots, (my development tool of choice) the subsumption architecture is essentially precoded for you, so I lock myself in to my API, to save on reinventing the wheel.

So what's good about this? The thing that started to win me over was looking at the information about the simulator. Mr Trower hits the nail on the head when he criticises the development tools available to the roboticist. The simulators in particular are thorn in my side. The average industrial robotics engineer has little need for a fast, accurate simulator. However, an academic R&D researcher has slightly different needs. If I want to develop an intelligent control algorithm, say using genetic algorithms or reinforcement learning, I could die of old age waiting for a real-time simulator to run the number of iterations I need, and with a poor handle on the physics, the final controller may need another decade or so of running on an actual robot before it adapts to real-world physics! I know that many robotics engineers are averse to simulators, as they never fully capture how crappy the sensor data that you get back is and they go against Brooks' physically-grounded "reactive" paradigm, but for a GA there is very little choice! The prospect of a well-written, (stop sniggering at the back), 3D, physically realistic simulator that can potentially run faster than real-time, is making me salivate as I type!

From a purely selfish point of view, the robot used in the simulation demos, is the type of robot that I work with, which means some other poor bugger has had to calculate all of the relevant information about size, weight and centre of mass! So the thought that some other bugger has done work for me appeals to my naturally lazy side and makes me far more open minded about the whole experience!

Tomorrow, I may try to actually use some of the tools that have already been released, (I hope that the SDK works with the version of .NET that the university has, otherwise I shall be most upset!) At the very least I want to get the simulation working and see exactly how good it is!
Till then, loyal readers!


----- Addendum -----
I've been passed another review since I wrote this, and received some feedback from someone who actually attended the conference where it was launched.
More later.

Monday, June 19, 2006

America and Stuff

Most of my blogs have recently started with words along the line of "sorry I haven't blogged for a while". This is no different! I do intend to improve, as soon as my life returns to something resembling normality!

Important events of note include going to Keiren and Cathryn's wedding, (congrats guys!) Which was a lot of fun, though I had to leave early so I could fly to the States the next day.

This of course leads me to the next event of import - my trip to the states! I was staying in a little town called Nashua, in New Hampshire. From a social perspective, I had a really good time. The bar in the hotel was GREAT, as was the food from the hotel restaurant. I met a lot of very cool people, and many of those cool people bought be beer, and for that I am truly grateful! I had a swim in the hotel pool, and a steam in the hotel sauna and all was right with the world! I also had three, highly-attractive women tell me how sexy my accent was - result!

From a work perspective, things went really well. The staff were all really friendly and I think that I may well have knocked a month or so of head-banging off my agenda in one week! I even got to play with their cool new robot, the Seekur (click the word Seekur for a link, I know - my page formatting sucks!)

The next paragraph has been read and re-read several times to ensure that I only talk about things that have been released to the public on the website!

For those of you who don't know what "holomonic" means, it basically means that it can move in any direction (actually - I think that they do define that on the website), because all of the wheels turn and steer independently of each other. There is a video demonstrating this on the website, but it doesn't really do it justice, and you need to download quicktime to see it, (which thanks to a large, evil, fruit-based company that produces poorly spec'd mp3 players, is now needlessly bundled together with iTunes so comes with a few meg of extra bloat that you don't need, so I wouldn't bother downloading the damn thing for a few seconds of a robot moving diagonally - just use your imagination!) Also, as the website suggests, it runs Linux, so, like the robots that I use, can be made to do pretty much whatever you want.

My plan is to in the near future produce some shiny maps of my department, by driving the robots around and converting the sensor data using a very cool piece of software from MobileRobots. I'll add "forbidden zones" to stop the robot going into people's offices and falling down the stairs, and possibly publish the end result on either this website, or on my robot lab's website (the word website is another hard-to-see link!) I apologise in advance that the site is hacked and edited on a frighteningly regular basis, so I can't guarantee that link will contain information about robots, as last week it contained an advert for lingerie! But at the time of posting it was ok!

Anyway - that's me done - I'm off to have a little nap, (curse you jet lag!)