« « Adding a Class for Current Page in Force.com Visualforce Header | Improving Shapeoko Precision » »

Android Controlled Roomba – Telepresence Robot Demo

Feb 16, 2013 by     18 Comments    Posted under: Android, Python, Roomba Hacking

Android Telepresence Robot

Today I wanted to share a project I’ve been working on for the last couple months. At the company I work for, our main office is in Chicago, but the director of development lives and works in Toronto. We decided he needed a telepresence robot so he could attend meetings and interact with everyone in Chicago.

I used a Nexus 10 and a Roomba Create for the robot. The robot is controlled by a Python program with a graphical joystick that interprets movement commands and sends them over the internet to the Android. The Python interface also has a text input field where you can type in what you want the robot to say, and the robot will say it in a robo-voice.

Here’s a video of me taking it for a test drive around the office. (If this link doesn’t work for you, click here to watch it on Vimeo)

The Android tablet runs a service that listens for new messages and parses them into commands for the Roomba. It then sends the commands over it’s USB connection to the Roomba’s serial port. Most Roomba hacking projects use a Bluetooth receiver to relay messages to the Roomba. I like this way better because it saves you the cost of a Bluetooth receiver, and eliminates connection issues. As soon as the Roomba’s USB cable is connected to the Android (by way of a USB OTG cable), the Android recognizes the device and launches the telepresence app.

The video chat part is done over Skype. The Android tablet is set to auto-answer Skype video calls, and when it receives a call it notifies the telepresence app so it can make sure all the connections are ready to go.

We are working on welding up an aluminum body for the robot, but for the time being it’s body is an Amazon box. Further enhancements to the robot might include a Nerf gun attachment or beer launcher. I’ll post more pictures as it evolves.

Special thanks to Kerry McCrory for the awesome video!

18 Comments + Add Comment

  • GREAT work !!! That’s what i’ve searched for… Where can i purchase the Roomba USB Cable / serial-USB-converter for my Roomba 530 ?


  • Hi there;

    First I’d like to thank you for your post & congratulate you for your great work;
    I have a question: is there any communication between your app and Skype? For example, when Roomba receives a call, does your app receive any notification from Skype?

    • Yes, the app does receive a notification from Skype. I extended the AccessibilityService class, which listens for AccessibilityEvents. When you receive a Skype call, the app receives an event from com.skype.raider. When that happens, it makes sure everything is connected and ready to go.

      • Hi liz;

        Thank you very match for your reply; it helps me a lot in my project,
        In fact, I’d like to start my application after receiving a Skype Call, and I haven’t any idea about how to do it except by extending BroadCastReceir and this last, it didnt work for me.
        I will try it now 🙂
        Thank you again.

  • Those Godless bastards stole your idea.


    • They totally did! At least they didn’t steal my patented cardboard box technology.

  • Hello!
    Great Job!
    I am working on something similar, but without the roomba. I built a custom platform. My question to you is how did you get skype to auto answer video calls? As far as I can tell through messing with the application, and researching, this is not possible. Do you have a hacked version of skype?
    I would love to see your source. any chance you could put it up on git hub or something similar?

    • No, it’s not a hacked version. There’s an option in Skype’s settings to auto answer video calls. I’m not sure why you’re not seeing it. Do you have the newest version of Skype?

      • Liz,
        I do have the latest version of skype. It will answer voice calls, but I’m required to push the camera soft key to get the video on. Perhaps the Nexus 10 has a customized version of skype like my droid pro has.

        I would still like to get a look at your command source code. If you can post it.


  • I would like to do the same thing with my roomba and tablet, where can I get your python program to make this happen?

  • I’m super interested in building a telepresence Androomba, because I’ll be working remotely from Boston to San Diego next year!

    Any way to share the source? Github?

  • Yes,Please share the source code. I’m trying to build one now.
    Thank you!!!

  • Will you please share the python code? I am working with a group of students and we are building this project with a Raspberry Pi. Thanks and awesome job!

  • This is an awesome project.
    Please share on GitHub. This needs to become a thing. I’m seriously dissapointed this has not caught on.

  • Please share the code source on GitHub.

  • Will you please share the python code?

  • Interesting article, thank you

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>