Thursday, January 20, 2011

Scooba gives birth to a ... Roomba!

So given that I was reasonably impressed with our Scooba floor washing robot, I used the simple breeding technique of placing an order for a Roomba at and lo and behold several days later a stork arrived with another bundle of joy. Well, I say stork, okay, okay, so it was a guy in a van, but the Roomba is pretty much a bundle of joy.

While I was assembling the new toy storage unit from Ikea my 3 helpers had a great time disassembling the polystyreen packaging that came with it, to the cries of "Snow! Snow!" and so although the Ikea unit was ready, the boys bedroom needed a thorough hoovering before the unit could be installed. To my wife's annoyance I had purchased the Roomba, but not a vacuum cleaner. However the Roomba proved pretty adept at picking up the polystyrene, as well as keeping the children entertained during the process.

This Roomba comes with its own charging station; although I have yet to test its supposed ability to get to the charing station by itself. It was very helpful and it felt like much less effort to use than the Scooba. No need to fill it with water and cleaning solution; no cryptic warnings about overnight charging. Just charge and go. It also seemed to cope with rough terrain better than the Scooba, and was pretty effective at telling me (via recorded audio) when it got indigestion from scooping up the odd child's toy. Emptying it was pretty easy, although I made a few more messes before I completely understood the process, which I reccommend performing inside a plastic bag. Fortunately the Roomba was there to clean up those messes, and I think it avoided falling down the stairs, although I didn't actually see that bit ...

Anyhow, lots more testing (and ultimately pimping) to do here, but now I am fully equipped to do a couple of weeks Roomba hacking as part of the my online AI course that starts next week.

Wednesday, January 19, 2011

Comparing iOS, Android, Windows Mobile 7

So as part of the preparation for the online mobile programming and mobile design courses I am about to teach I re-created a simple iPhone calculator app in Android and WindowsMobile7.

The interface design was definitely the easiest for the iPhone, with Apple's "Inteface Builder" making it very easy to get a good layout of keys without too much fuss, and the only one to support direct editing of the labels on the keys themselves. Having linked up the first calculator key so that copied and pasted ones had the same code linkage meant that associating key presses with actions was simpler for iPhone, but the Objective C code did seem to end up a little more convoluted than either Java or C#.

The windows mobile interface construction, strongly remeniscent of Visual Basic, was second best. Not quite as good as for the iPhone, but definitely better than Android. Unsurprsingly the C# and Java code was nearly identical.

The up side for Android was that the refactoring tools (part of the Eclipse IDE) are definitely the best. There is some support for refactoring in VisualStudio, but I believe it is more fully featured in Eclipse, and practically non-existant in Xcode for the iPhone.

Thursday, January 13, 2011

Can a Machine win at Jeopardy?

So it turns out that on Valentines day this year that Watson, a computer system designed by IBM will be taking part as a contestant in a special televised edition of Jeopardy during which Watson will compete against two Jeopardy champions.

IBM has some very excited videos and website. I think the video I've embedded below is a great teaser video. It took me a while to find their slightly calmer FAQ that reveals more about the background of Watson than is in most of videos, including the open source framework that is Watson's principal infrastructure for assembling, scaling-out and deploying its analytic components. This special Jeopardy challenge event takes place just three weeks into the Artificial Intelligence course I'm teaching this semester and you can bet I'll spend a week on it and some of the open source components behind it!

Tuesday, January 11, 2011

Pimp my robot!

So I was having ideas about how I could improve my Scooba and whether I could hack it up, and I stumbled across this very very cool book/website. Now I am not a big fan of the new Battlestar Gallactica but a Cylon Roomba is just awesome!

In Hacking Roomba, Tod Kurt apparently shows us how to drive a Roomba, make it sing, turn it into a painter, put it on your Wifi network, add webcams and install Linux, amongst other things. I am totally adding this to the textbook list for the AI course I am teaching online this semester. Would love to see some students doing AI Roomba projects!

Hacked up Roomba Obeys your commands via XBox Kinect

I love this video of the KinectBot that my friend Wilson Tang sent me on Facebook. An MIT robotics student has hacked up a Roomba and added an Xbox Kinect sensor so that the Roomba can obey gestural commands from humans and put together a 3D model of the environment. If I can get more details we'll certainly include them in my online AI course this semester.

Living with a Robot

So we've used floor washing Scooba robot a few nights in a row now. In fact we've used up all the free cleaner that came with the robot and are now planning to switch to the alternative "60ml of vinegar". Some issues have come up in that it often gets stuck on an uneven portion of our kitchen floor. When this happens it makes a childish "uh-oh" sound, and you have to go free it. Not such a big deal although when it does that three times in a row it's a bit of a pain.

Part of the issue for me is that I run it at the end of day, so I want to go off and watch some comedy on telly and fold the laundry and try to relax, and it's irritating to have to go help the robot, and even more irritating if I don't hear it getting stuck and then come to find it hasn't finished cleaning and I have to reset it and can't go to bed at the time I want because I have to wait for it to finish so that I can drain the tanks and leave all the different parts out to try. I imagine this is a particular issue for the Scooba that the Roomba vacuum cleaning robot owners don't encounter; will have to get a Roomba and report back!

Also I am having trouble working out a good charging cycle for the battery. The first overnight charge gave fine performance for the first clean, but the second clean the following day failed half way through due to lack of battery power. The manual says don't leave it charging over night except the first time, which is fair enough, but then when should I charge it and for how long? The most convenient for me would be to leave it charging when the tanks are drying, which based on how long I sleep is about 7 hours. Too long? I tried an hour charge previously and that wasn't enough. My options appear to be either to remember to start a charge before supper each day, or just give it an overnight 7 hour charge each day. Having the Scooba run out of power is just as irritating as it getting stuck un-noticed; means I have to stay up, or throw away half a tank of cleaning solution.

I have resolved the getting stuck on raised tiling problem by leaving a heavy box (of beer) on the place where the Scooba often runs aground. Interesting that before coming up with that solution that I might have argued that the Robot should learn a map of the kitchen and work out to avoid the sticking point, but now I could almost argue that would be wasted effort on the part of the engineers. To the extent that I have a good model of what the robot is doing (spinning, wall following and room crossing), I can adjust its behaviour effectively by small changes to the environment. The Scooba/Roomba really is an a very interesting intersection point between the two of the courses I am teaching this semester. Mobile Design at least partially inspired by Don Norman's "Design of Everyday Things" for which understanding users conceptual models is very important, and Artificial Intelligence, which covers the ongoing fight between high level mental models and low-level behaviour based robots and AI systems.

Friday, January 7, 2011

Scooba robot cleans my kitchen floor, fairly well ...

So I went out and bought the iRobot Scooba, floor washing robot. Well I say went out and bought, I got it online, so no going out needed. I had been thinking about this for a while since I seemed to spend at least five minutes a night on my hands and knees clearing up food debris by my five year old and two year old twins. The Scooba cost me 400GBP, which is a chunk, but if it works well it will pay for itself in terms of my time in about a month and a half; based on my consulting fee of approx 100GBP an hour.

It did a reasonable job last night, although it did miss a few hard to reach spots such as just next to where the washing machine sticks out from the other shelving, but overall I'm pretty pleased. There was some good ground in food debris, most of which came up. It will be interesting to see how clean it can get things if we use it daily.

We didn't save much time last night as we spent a good half an hour watching the Scooba move around the kitchen. We saw all the behaviours described in the instructions including spiraling, wall following and room crossing. This is a great example of behaviour-based robotics which we'll be covering in the Artificial Intelligence course I'm teaching online at Hawaii Pacific University this Spring.