JCP1 - A Java based DIY robot!
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. In its present state its more of a software agent on wheels than a real robot, but I am constantly experimenting with different ways of making it useful. The idea is to make it a usable assistant in many simple tasks.

Specifications
ModelJCP1 - aka David
Height50 cm
Weight8 kg
BrainIntel D201GLY2 - 1.2 GHz Celeron - 1 GB ram - 20 GB hd
Drive2 wheel differential drive with encoders, 1 caster wheel in back
VisionMonoscopic camera - 320x240 24bit color - face detection, motion detection, object identification, feature mapping
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
DisplayOptimus Mini Three 3xOLED screen buttons for status and mode display with simple user interface
DevicesSlim Slotin DVD RW drive - Multi Card reader w/USB port
Power12 volt 10 Ah SLA battery - approx 3 hour runtime between recharges
Wireless54 Mbit/s WLAN - uses internet through home network and runs VNC server (to see user interface)
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. Can connect to JCPServers to access screen, media and use distributed applications for e.g. vision processing.
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, day, year and date
  • It can also say quotes from fameous people
  • Ask it about how far away an obstacle is in front of it (simple sonar range)
  • Has a simple 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 (and automatically restart)
  • 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 move its head to track 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.
  • 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.
  • Connects to a JCP server to access the screen and can show you pictures, play music and use/run applications on it
  • Ask it "define XYZ" and it will use answers.com to find the definition of the word you uttered
  • Ask it "what is XYZ" or "who is XYZ" and it will use wikipedia and tell you some info about the word/person you asked about
  • Insert a DVD or Music CD and it will ask if you want to make a backup of it to you media server
  • Control the robots idle chat behaviour by telling it to chat more or less
  • Has its own email address - send email to it with commands or messages to be given to people around it
  • Can route any voice output to be displayed as text on a JCPServer screen
  • Turn off and on robot "hearing" by voice command
  • Ask it about the news and it will get RSS news feed from BBC and tell you the daily news
Planned Future Features
  • Support streaming of Audio CD to JCP server, also provide backup feature for these
  • Copy inserted camera memory cards to picture storage repository
  • Add LED headlights and behaviour to turn them on/off (command and autonomous)
  • A general calendar feature where you can add appointments, birthdays, events. Robot will inform a day/hours before event starts.
  • Interface an Optimus Mini Three that can show status and provide simple button user interface
  • Add an arm and experiment with greeting motions as well as picking up objects and holding objects you give it
  • Ask it which way is north and it will rotate toward that direction and tell you (compass is still a bit flaky)
  • A family information storage where you can tell it about your father/mother/brother/etc, give their names, ages, and the robot will have a number of conversation points
  • 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)
  • 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
  • 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 or docking station socket
  • Experimental detection of objects based on SIRF/SURF algorithms (if I can find an appropriate API)
  • 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.

All text and images are Copyright John Christian Lønningdal - September 2007