In this post I am going to roughly describe what the robot was able to do just before it was abandoned.
As mentioned in a previous post, the aim of the robot was to display the technology developed by ITI. Thanks to that technology the robot was able to perform several tasks related to speech recognition, speech synthesis, computer vision, biometry and navigation. But there was no specific task to be solved by the robot, it was just an exotic platform to display new technology.
The most basic task was to move around, this robot is a differential vehicle; it means that it has two wheels set in the same axis and powered by independent motors. So, if both motors are set to the same speed and the same direction the robot will move straight forward (or backward depending on the direction of the motors). But, if both motors are set to the same speed and opposite directions then the robot will spin over itself. This vehicle configuration has been widely studied and its control is very simple. Based on this configuration I implemented a very simple layer of software to control the movements of the robot.
To complement the moving task, the robot had a series of bumpers and infrared beams that allowed it to detect collisions.
Mounted on the top of the robot's head there was a camera pointing to an hyperbolic mirror. This mirror allowed the robot to see a 360 degrees picture of the scene. The purpose of this camera was to detect movements and then follow them.
In order to detect movements, first the image was flattened by using the Bresenham's algorithm. After that, the motion was detected by simple image subtraction (yeah, it is naive, but it was good enough).
This is the result of flattening the image and motion detection (you can see a vertical white line pointing out that I was moving in front of the robot)
Then there was the stereo camera. It was meant to be used to extract 3D information, but in fact only one of the images (eyes) was used. That eye was used to locate and identify faces, that means that the robot was able to know the identity of the person standing in front of it and track it.
Almost all the interaction with the robot was performed using a voice interface. That interface was implemented using ATROS (Automatically Trainable Recognition of Speech), a software developed by the PRHLT group of ITI. Thanks to this software (maybe someday ITI will release it under GPL license) it was easy to define a list of commands to be understood by the robot and associate an action to perform, for example:
- move forward, move backward, move left, move right
follow me, who am I?
- tell me the weather forecast, tell something funny
- ....
The ability to speak was given by the Festival Speech Synthesizer. The Spanish voice was quite depressive but that made it funnier when you asked the robot's name and it answered I tell you if you rub my hard drive
All the funny sentences and jokes came from Unix Fortune, a program that displays a random sentence from a database.
1 comment:
Have you put your code up anywhere for the bot? I am interesting getting something unified. I don't know if ROS is the answer. here is what I have been doing (using some of your examples :)):
http://subgroup-ash.blogspot.de/. The raspberry pi makes its easy for many people to start using.
Post a Comment