JCP1 - A Java based DIY automaton!

HomeProgress BlogHardware and SoftwareWhat can it do?Random Ideas

What can it do?

So it wont wash your clothes or take out the trash... yet! :) JCP1 is all about getting there and not really about what it can do, although my goals for this project is much more ambitious than the average remote controlled tin box on wheels. So the important thing here is to give it some autonomous operation as well as some remote control in addition to being an information servant. Naturally, the practical things it can do is quite limited simply because it cannot reach out and grab anything yet. A hand might be added at a later stage, and in thats first iteration I dont expect it to do much more than grabbing and holding light weight objects. However, there is still a number of things that it can do in its present state, and this will grow with every software update I do.

Specifications
ModelJCP1 - aka David
Height50 cm
Weight8 kg
BrainSamsung Q1P - 1 GHz Pentium M - 1 MB ram - 60 GB hd
Drive2 wheel differential drive with encoders, 1 caster wheel in back
Sensors1 ultrasonic front sensor, 1 magnetic compass
Power12 volt 10 Ah SLA battery - approx 4 hour runtime between recharges
VisionMonoscopic camera - 320x240 24bit color - face detection/tracking, object identification/tracking
Sensors1 ultrasonic front sensor, 1 magnetic compass
Sound1 dual element speaker - speech synthesis using voice from Cepstral
Hearing1 microphone on head - speech recognition with context switching grammars
Wireless54 Mbit/s WLAN - uses internet through home network and runs VNC to view GUI
Actuators2 servos for head pan/tilt
SoftwareOS: Windows XP. Code: Java and JNI to OpenCV. - Modular system with i/o processors and behaviours, using an event driven engine. I2C bus communication with devices. Connects to remote RoboRealm server for vision processing. Wii game controller support for remote control.
Features
  • Detects faces and moves head servos to look at closest face (cannot identify face owner yet)
  • Greets people when it detects a face after a period of being idle
  • Reports battery state - more frequently when battery needs to be recharged
  • Does not move wheels or servos when battery voltage is too low
  • Moves around according to commands: forward, backward, turning, adjusting speed, stopping - dancing
  • Automatically stops if it is about to crash into an obstacle (and speaks about it)
  • You can ask it about the current time and date
  • It can also say quotes from fameous people
  • Ask it about how far away an obstacle is in front of it
  • Has a user interface with information about every module - connect screen or use vnc/remote desktop
  • Ask it about CPU load and battery state
  • Can play back wav files for sound effects - ask it to imitate an animal and it will play the animal sound
  • Ask it about the current weather or a forecast for the day after (using Yahoo Weather RSS)
  • Tell it to shutdown to OS desktop or total shutdown (use main switch to power robot off completely)
  • Speech recognition uses grammars with variations so you can e.g say an optional "please" before sentences etc.
  • Speech output is randomized between a number of sentence structures to have a more varied dialogue
  • Ask it how it feels and get an average status based on several parameters
  • Have some fun dialogue where you can ask it about its favourite color and other chit chat
  • You can ask it about currencies (in relation to the Norwegian Crown) and it will tell you the one you want
  • Has a simple roaming mode where it just explores the area in a random fashion
  • It will check and announce happily whenever there is a new version of the software installed
  • Ask it about shapes drawn on a white piece of paper (square, circle, rectangle, triangle, star, moon)
  • Ask it to follow a tennis ball and it will rotate its head according to the ball you are holding in front of it
  • Scans 360 degrees and draws a simple sonar range map in the robot GUI
  • You can control the robot with a Wii game controller as well!
  • Checks your email from a pop3 server when you ask about it.
  • Can operate the TV using an Uirt module. Turn on/off, change channels, mute, etc.
Planned Future Features
  • Ask it which way is north and it will rotate toward that direction and tell you (compass is still a bit flaky)
  • Alarm timer - tell it to sound an alarm after some time or at a particular time
  • Face identification - differentiate between 3 people (first iteration)
  • Record a message for playback later and if face identification works locate the person the message is for
  • Hand gesture recognition - gestures can be used to input data when sound input is disabled/difficult (with RoboRealm this will be easier)
  • Have its own email address - send email to it with commands or messages to be given to people around it
  • More ultrasonic sensors to give it better obstacle avoidance
  • Auto-mapping feature using ultrasonic rangers and free roaming to explore a place
  • Labelling of places - give a place a name and later use that for navigation
  • Operate Media Server - tell it to play music or show a picture on the tv/monitor (at first want to control a remote Winamp player, later MediaPortal)
  • Adjust volume of remote media server based on hand gestures. Generally find solutions to communicate with robot when room is filled with sound/music.
  • Telling jokes - have a small database of jokes it can say
  • Conversation - the robot can ask a person some questions to learn about him/her - stored and later retrieved/used for conversation
  • Auto recharging by inserting recharger power plug into wall socket
  • Detect objects based on SIRF/SURF algorithms
  • Distributed Vision Server - for faster processing of vision data (face detection, object recognition, etc). Will work as a gateway so that robot only has to send image to one server. Now uses one RoboRealm remote server.
  • Ask it to follow a colored ball you are holding, and it will move head and wheels accordingly so that its a certain size in its vision (follows a tennis ball now, want to make it follow any colored ball you tell it to, and also have it move wheels when following)
  • Correlate face detector with skin detector for higher accuracy
  • Ask it to follow you and it will detect color of your shirt (after face has been seen) and use that as basis for tracking.
  • In idle mode it should scan for motion and look upwards at highest motion area and see if can locate a head.
  • Give robot its own mail account which it can receive commands and messages from. For example it can locate a person at home and speak out a message loud!
  • Experimental and simple relation learning - tell it "a dog is a pet" and "a pet is an animal", robot can say "a dog is an animal"

All text and images are Copyright John Christian Lønningdal - March 2008