BrmBot Turing

We would like to create autonomous robot with reconnaisance abilities, artificial personality and practical abilities. The codename for the approach and iteration described here is “BrmBot Turing” - we will use Roomba as the robotic platform, Player Project for the software.

We can change the licenses if anyone has problems with it.

Status

The technical setup of this project is work in progress. We can control the Roomba per se, but we had some trouble getting everything required going on the Asus routerboard. Pasky hasn't given up on this project, but prefers spending time on other brmlab affairs and projects for the time being.

Related Projects

We also have a GPS-navigated outdoor robot Brmbot Outdoor. And we also use the Roomba platform for the experiment of BrmRat.

Goals of the Project

We would like to create a working robotic platform with reasonable sensors, computational power and mobility to play with. Pasky has no clear idea about exact practical things he would like to accomplish yet, but we will see that as we go, let's just start tinkering around.

Aside of other things, the robot should be able to somehow try to recognize different people and interact with them. Voice recognition is planned for recognizing people.

Brmlab Gatekeeper

One application is to build a gatekeeper bot who will stand near the Brmlab entrance and be able to recognize people by face, voice and will try to communicate. Inspired by Muaddib. Proposed Arabic name is al-Bwab, which means gatekeeper.

Real Pacman

Just add yellow paint It can eat ping-pong balls and (evil) spiders from floor.

Robotic Platform

We already have iRobot Roomba 505 model (coul be bought in alza.cz with discount in July 2010). It doesn't have large range and RF-navigation (for docking station and lighthouses), but it can still be fairly nifty - it is controlled with black-box ARM processor (encrypted firmware) and has vacuum machine, some IR sensors, bump sensor, and 3000mAh 14-16V battery. Most importantly, it has a TTL-level miniDIN serial port with battery voltage and talking in an openly documented protocol!

We want to glue an Asus WL 500gPv2 wifi router with OpenWRT on top of the Roomba to obtain a wifi-controlled robot! The router has 16M flash, 32M RAM, which is not bad at all; some things can be dealt with directly in the router, more complicated stuff can be outloaded to a more powerful machine at the other side of the wifi. The router has two USB ports; the current plan is to connect a webcam in one and USB audio (in/out jacks) in another to get visual and audio in/out abilities.

How to connect the router to the Roomba? I would like to avoid opening the Roomba and voiding the warranty for now, so we will just connect to the 8-pin MiniDIN connector. On the Asus side, we will use the (conveniently also TTL-driven) serial port, we will just need to solder the connection directly on the PCB since it does not have a connector mounted.

How to power the router? The current idea is to power it from the Roomba battery using a simple circuit based on the LM2576 DCDC-converter; the efficiency should be around 80%, which means 2.5A 5V should be around 1A at 14V, meaning reasonable battery draw and 0.5A per MiniDIN pin, which should be workable. And this is purely a theoretical maximum, in practice the drawn current should be less than that.

A construction consideration is that the Roomba should be still quickly available for “headless” use, and the same holds for the Asus router + DC-DC converter. Later, we can extend the project by buying a dedicated iRobot Create (should be around $120, dock space instead of vacuum, more hacker-friendly) and possibly a separate battery for the router + accessories.

Robotic Software

Details to be decided yet. The Player Project is a well-established robotic software platform and already has Roomba drivers. The client-server architecture fits our design very well. At any rate, the hardware is currently much bigger challenge.

Status and Roadmap

We have the Roomba. The Asus router, parts for the DCDC converter and the USB audio should arrive in upcoming days. Then:

I have received sensor packets (did not verify if they are ok yet) and verified that I'm able to set the Roomba LEDs to arbitrary colors and can do basic motor control. The Asus is still tied by two cables!

[DONE] Wire out the Asus serial tty to the computer instead, using Arduino as TTL serial shifter.

Works beautifully, see photo. Same wiring as to Roomba, just using RX/TX pins of Arduino and connecting RESET to GND on Arduino so the ATmega does not wake up and all communication goes to Roomba instead.

[DONE] Get wifi working on the Asus to get rid of the ethernet wire.

It turns out that with current kamikaze SVN head, wireless works fine in the client mode!

But you need to make sure wifi is configured as real interface instead of being a bridge - in /etc/config/wireless, the 'network' should be 'wifi' instead of 'lan'. This is what I did not realize is neccessary before.

[NOT DONE] Set up some low-power reproductor (or take apart Roomba and connect to its piezo) and audio output streaming.

Hacking Point

All parts are at Letnany, and we have some (limited) space to hack there. Anyone is welcome to visit! Please write a short note to the mailing list if you are interested and we will arrange some hacking sessions.