MAYA Budget Telepresence Rover





Introduction: MAYA Budget Telepresence Rover

Telepresence Robots are robots which allow you to be somewhere you can't physically be, such as being at school while your sick or being at work while your on vacation. While it is amazing technology, most telepresence robots are in the thousands range. Maya, short for Me And You Anywhere, is here to change that. The entire project can be created for under $250 if you have your own netbook or laptop. Maya has something that most telepresence robots in the thousands range do not: It is easily expanded. Change the webcam, the monitor size, the laptop, or add on an arm. The software, RoboRealm, also allows for easy software upgrades such as object recognition and tracking. How is Maya created so cheap? The base! The base is one of those robotic vacuum cleaners also known as a Roomba. It was picked up from ebay for $50 dollars. If you follow the instructions, just about anyone can make it! 

Note: I plan to have kits available this summer... Stay tuned!

Step 1: Overview

We are using an Acer Aspire One A150-1126 as the computer on board, but any netbook/notebook running XP, or Linux/Mac if Wine is installed, should be fine. (ARM Processor's will not work) If you have trouble setting up Wine, contact me or leave a comment. The Computer will have to do 3 things,

1. Control RoboRealm

2. Control the Roomba via the RooStick 3.

3. Run Skype

RoboRealm ( is an amazing program which is perfect for this project. It enables you, with some work, to control just about any robot. The files needed for RoboRealm to control the Roomba are here: NOTE: You must have a License, or the trial, to use these files.

RooStick: It is the conversion from the SCI (Serial Command Interface) Port, or on newer Roombas, ROI (Roomba Open Interface), to USB. NOTE: Same port, different names. It is possible to create your own cord, by hacking a serial to usb cell phone cable. Drivers for RooStick available here:

Skype: Skype is used to transmit audio. I may switch this up later, but for now it works.

For the webserver to work out of your home network you have to port forward 80, 8080 to your internal IP. (On an Airport Extreme, it's 10.0.1.X. On most other one's it's Webcam used is auto focus which is best for robots. (Rocketfish) If you use a regular webcam, the picture will probably be out of focus a lot. I got it for $20 off of

Any LCD display, as long as it's not too heavy should work. I got an I-Ink 15" Display form Amazon that weighs about 2 pounds, and was 60 dollars.

Step 2: Connecting

 Its just a matter of connecting all the wires...

Connect the speakers, webcam, RooTooth and display to the computer.

Plug the computer and Monitor into an inverter. Connect the inverter to the battery.(If you don't want to open the inverter up, there are parts on amazon which converts it to flat out regular positive and negative.

Connect to Battery.

Solder Wires to the docking pads and then into the 22-12v converter. Just to verify it is converting the voltage, take a multimeter and make sure your getting 12v. 

Connect the Battery to the OUTPUT of the voltage converter. I found that if you don't want to solder it on, you can take aligator clips and turn them side ways for a great fit. (Splice an alligator clip wire in half, solder to those) POLARITY IS IMPORTANT! You could end up blowing the Roomba, the Dock, the Computer, the inverter etc. From experience, check then recheck. If the roomba is upside down on a table, with the bumper towards the top, positive is on the left, negative is on the right.

<Picture to be Inserted>

Plug the RooTooth, or custom made serial cable, to the Roomba. If you are going to create one a schematic is posted below. Like said, you do not need to create your own, but it is much less. You can use the cable from some data sync cords at radioshack. Check out the article mentioned on the previous slide.

Step 3: Software


The WebServer module allows you to view images being processed by RoboRealm over the web using a regular web browser. The webserver within RoboRealm is off by default and needs to be turned on before becoming active. To activate the RoboRealm WebServer select the checkbox in the options dialog as seen below. You can view this interface by clicking on the "Options" button in the main RoboRealm dialog.

Activating the WebServer RoboRealm will transmit images over a TCP/IP network using port 8080. To connect to these images (after activating the webserver) point your browser at http://localhost:8080/ or use your machine name in place of localhost if you are accessing the images remotely.

Images are transmitted using an MJPEG encoding to a Java applet running within your web browser. Alternatively, if you are using FireFox or other MJPEG compliant browser (this does NOT include IE) you can access the image stream directly using http://localhost:8080/mjpeg.cgi This allows you to connect the video stream to other streaming systems that are typically used with Internet WebCams that stream their video also using an MJPEG format.

The webserver is configured to only return a few types of files. Most of those files are located in the RoboRealm/webroot directory that you unzipped RoboRealm into. The following are the files returned and their usage:

* index.html - contains the HTML for the Java applet and is returned on initial contact to the webserver. The page is very simple and only contains the needed Java applet code to configure the browser to contact RoboRealm and start streaming video.
* favicon.ico - the favicon is the icon used when bookmarking or indicating the link type in many web browsers.
* RoboRealm.class - the actual Java applet class returned to the web browser to start streaming.
* mjpeg.cgi - this is a virtual filename that does not exist on the file system but instead signals to the webserver to start streaming.

You can specify different variables to be communicated back to the RoboRealm Webserver based on HTML buttons/checkboxes/etc. If you look at the HTML code for the buttons you will see the onclick specified as


in each of the buttons in the provided index.html file. What that does is call a Javascript routine called setVariable (also in the same HTML page) which will execute a background HTTP call to the RR webserver and tell it to create a variable called 'move' and set the value to 1. In this way any button can be created to set a variable to a specific value back in RoboRealm.

To then react to this variable (for example in driving a robot) you will need to hook that variable into whatever module you are using (typically seen as a variable dropdown). For example, suppose you are using one of the Servo modules (like the SSC) to control a servo. The variable you used in that module's variable dropdown is called "move_servo" and ranges from 0 to 255. You would then ensure that this variable is in the SSC module under the variable dropdown (either select it if already existing or type it in). Then edit your HTML page and add a new HTML button with an onclick attribute in it like:

<input type="button" value="GO" onclick="setVariable('move_servo=255')">

which would set the servo to 255 if that button is pressed. You can add more buttons to stop it, something like

<input type="button" value="STOP" onclick="setVariable('move_servo=128')">

would set the servo back to neutral 128. Using this technique of communicating back values to RoboRealm and interfacing them with various modules can provide a easy way to web enable the control of many devices.

Note that the RoboRealm WebServer is NOT intended as a replacement for industry standard webservers such as Apache or IIS and therefore does not have any additional functionality other than basic video streaming.

For security reasons, RoboRealm does NOT allow access to other folders other than the RoboRealm folder. If you wish to put images into a /images folder you will need to do so using another WebServer with the appropriate reference. Adding images to the RoboRealm installation folder (typically c:\program files\RoboRealm) WILL be accessible to the browser and served by the webserver.

Step 4: Body

The body was the ultimate DYI, IMO. The Body was created from a trash can, an empty hose roll and a spare VCR deck. The Hose Roll was empty and laying in the back of sears, and they let us have it for free. Usually, they throw them out, so you probably can pick some up. It was used to have the laptop ontop and not in a mess of wires, and to wrap the wires around. The trash can was just something laying around, but still available at Big Lots. For exact model info, contact me.

The VCR deck was to used basically like spare sheet metal, to make two long strips that intersect to hold the trashcan which has a slightly larger circumference than the Roomba. It is screwed on to the casters on the back.

Towards the rear of the roomba, (near the dustbin), if you flip it upside-down, there are two screw holes. Got 2 1" casters, and made two brackets. I think the pictures best describe this. Then, an additional 2 brackets were drilled onto the trashcan so it sits on the back wheels and the front goes inside the holders made in front. A hole was also made for the IR sensor so it can still dock normally, and a whole on top for the wires. The monitor was drilled on top. (Pictures in final slide)

Step 5: Charging

Here is a little more in-depth description on charging,<br> <br>The Roomba uses 22v to charge. The Roomba power source gives off 22v at 1.5a I believe. Obviously, that is enough to charge a Roomba, but not a 12v battery and a netbook/laptop. I had a universal laptop power adapter with the interchangeable tips which fit the dock perfectly and gave off 4a. When I tried to draw power from the dock, however, through the 22v to 12v DC converter, the dock would start flickering on and off. While the cause of this is unknown, here is the solution. I took the barrel jack and I disconnected the board's connection to the dock, and went from the barrel jack straight to the docking pads. (Wires go to the circuitry inside and to the docking pads, but not from the circuity to the docking pads.<br> <br>Picture of inside of dock shown, without mod but the one with the black wire is with the mod done. You won't have the feature of the docking pads being 3.5v when its not docked, as it will always be 22v, but its still a relatively safe voltage. So the battery and the netbook is connected to the Meanwell 22v to 12v converter. When the Roomba docks, it starts charging, and the Meanwell converter starts up and provides the 12v needed for both components. The part can be found here:<div id="myEventWatcherDiv" style="display:none;">

Step 6: Complete

Here are the pictures with the trash bin on top, and ultimately just everything put together. The first picture is Rev. 1. The 2nd picture is Rev. 2 with pan+tilt, a door to the computer, and an arm. 

Step 7: Extend: Arm

I'll be putting together a robot arm very soon. If anyone doesn't want to wait for me to do it, or wants to order the parts ahead of time, here are the parts that will work natively with roborealm.<br><br>All the servos get plugged in to the Propeller which in turn is plugged into the computer. I'll be releasing an updated web interface to handle the servos. <br><br>Any questions? Again, just leave a comment. To stay updated, subscribe to<br><br>P.S. I entered this in the contest for the Zing. I'd love to mass produce this for Retirement Homes and small businesses around the world for an extremely low cost. It is too hard to mass produce it now using a friends band saw, as it isn't precise enough. I would also like to add a door in the body for easy access.  <div id="myEventWatcherDiv" style="display:none;"><div id="myEventWatcherDiv" style="display:none;"><div id="myEventWatcherDiv" style="display:none;">

National Robotics Week Robot Contest

Second Prize in the
National Robotics Week Robot Contest



    • Clocks Contest

      Clocks Contest
    • Casting Contest

      Casting Contest
    • Make it Move Contest

      Make it Move Contest

    We have a be nice policy.
    Please be positive and constructive.




    i built your design ,fairly easy for me,and like it
    made so many different types
    looking at you maker fair video interview,i see you are looking at a AI ROBOT DESIGN TYPE ,a great design is the LEAF PROJECT on yahoo groups or,all software is free using LISP and ROBOREALM
    it has face and object recognition,tracking,plus it tell jokes,read stuff off the internet,emotions and so much much more
    has all software and codes,programming is very easy to learn or getting help from the group and can be adapted to your MAYA robot
    keep building alot of robot designs,its alot of fun

    Not to be Ugly. But, I did not understand exactly the Charging mod. could you explain that a little bit. I am kinda dense.

    You connect the 22vdc from the AC Adapter directly to the charging dock pins. All mods for charging are done inside the docking station? That is except the lines going to the 12vdc battery which are hooked directly to the 22-12vdc adapter and then to the docking pins? Where do you disconnect the lines that you talk about? in the charging station or in the roomba? You mentioned that some are hooked and some are disconnected.

    Sorry for being so dense. I can't really tell from the pix. Sorry :-(

    Prompt reply would be appreciated.

    P.S. Since the battery did not explode or catch on fire, it seems like we are good to go. I just have to understand. You have done something that some people say cannot be done because of the nature of the way irobot is wired and the heat sensor, etc. But, the proof is in the pudding. If it works for you, and it evidently has, I am going to try it.

    Thanks, Great project.

    8 replies


    Lets start from the wall outlet. Connected to the wall outlet is a 22v charger which supplies 3A. (The Roomba charger supplies 1.2 so it would take longer to charge. Doable, but longer)

    Its connected to the charger. When I tried to draw extra power the dock would flick on and off. So, without disconnecting the internal circuitry like the IR which the Roomba needs to find the dock, I disconnected the circuit boards connectivity to the docking pads, and added a connection from the barrel jack to the docking pads. So, the docking pads are always 22v.

    Then, connected to the docking pads is a 22-12 DC-DC Converter. Its connected to the docking pads ALSO. (So the roomba still gets power like usual)

    Then, the battery and everything else is connected to the output.



    Thanks for the quick reply. And, congratulations on being a 2nd place winner.

    this robot project, or rather, its Creator, has just become a National Broadcom MASTERS Science Fair finalist -- one of 30 projects nationwide

    Thanks! If you PM me, I'll give you my email if you need any further help.

    One more Question. I am going to run a kinect unit, a speaker system and a notebook all on a 12vdc battery.

    I guess I have to hook the 12dc battery directly to the contacts of the roomba?

    Nope. You hook the 22-12 DC DC converter right to the contacts. (Technically 24-12 but it converts 20 to 28) You hook the input of the dc-dc converter to the docking pads, and the OUTPUT (which should read 12v) to the battery.

    The Roomba charges on 22 volts fyi.

    That's right. But, I mean I connect the dc to dc converter directly to the docking pads. What all does that involve? Do I have to take the whole thing apart. Or, is it easy to get to? And, we are talking about the roomba not the charger. Also, I have it all built up and tall now. It is going to be hard to get to the roomba without totally disassembling the robot.

    Which 12volt battery did you use? I just bought a jetski battery that is very good and high quality. Except that when i put it on, it is too heavy for the roomba. So, that does not work. It works fine on my other heavier duty robot.

    and do you have a model # of i-ink display,all the ones i see at I-INKUSA.COM is over 4 lbs and all 120 volts

    8 replies

    not bad monitor but over 2 lbs ,5.5 lbs
    would be better to use the built in laptop monitor ,because of lower current ,plus lower weight and cost
    check out TURTLEBOT it does use ROS witch is better at navigation and can add many upgrades like SERVO controls ,sensors and so much more
    ROBOREALM IS A GREAT software ,not as good as ROS

    The monitor is under 1 pound, even less without the AC adapter. I've weighed it myself.

    may be the company has the weight wrong,i am getting one to try

    let me know how it goes!

    compusa has it for same price too,might check it out,also 14 inch $49
    instead of IK161 its IK141

    about the servos, look at the last slide. I added an arm.

    There are screws on the back of the dock, and under the rubber feet.