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.
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.
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.
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.
Areas of research and application: face recognition, voice recognition, speech synthesis, language understanding, AI. Nao hadr.
We can start by simple greeting of course.
Just add yellow paint It can eat ping-pong balls and (evil) spiders from floor.
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.
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.
We have the Roomba. The Asus router, parts for the DCDC converter and the USB audio should arrive in upcoming days. Then:
stty -F /dev/ttyS0 19200 raw -parenb -parodd cs8 -hupcl -cstopb clocal
while true; do echo -ne '\x80\x82\x8e\x0' >/dev/ttyS0; sleep 1; done
echo -e '\x80\x82\x8b\xff\x80\xff' >/dev/ttyS0
echo -e '\x80\x82\x8c\x00\x0e\x40\x20\x40\x10\x40\x10\x3f\x10\x40\x10\x48\x20\x43\x10\x43\x20\x40\x10\x41\x20\x40\x10\x41\x20\x43\x10\x45\x40\x8d\x00' >/dev/ttyS0
echo -e '\x80\x82\x89\x7f\x7f\x01\x01' >/dev/ttyS0
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.
Fun Existing Hacks: