Let's Make Robots!

Controlling a Robot From Anywhere

A Robot that is remotely controlled over the internet!

Introduction:

I'm Mohammad Adib, I'm from the US, I'm 17, and this was my summer project. It's a vision I had in mind for a long time; To make a robot that I can control from anywhere. Working as a Roboticist, I make controller software for telepresence robots! So this was the perfect side project for the summer. I wanted to make a capable offroad vehicle that I can control from sitting in my room.

The Robot:

So this was the final outcome after 2 months of work. The chassis is a Wild Thumper by Dagu and I have to say its a great chassis for building robots on, and I look forward to moving the internals of this robot into the TREX chassis that is soon to release. I hope that turns better on grass and carpet.

Shortly after making the robot, I showcased it in my TEDx Talk (first video to the right). 

How it works:

The Robot works by sending and receiving data over the internet using a 4G LTE Hotspot. I won't get into the technicalities here, but it basically has a pcDuino sitting at the heart of it with a Wi-Fi dongle connected to the hotspot. The pcDuino then talks to the WIld Thumper Controller over serial and voila! We have a working Robot. The Nexus 4 mount is a 3D Printed tilt mechanism with an imbedded servo. The only purpose of the phone is additional sensors and ofcourse, Skype.

In terms of using sensors, the Robot uses a photoresistor to automatically switch on the headlights when it's dark, but they can be manually controlled as well.

I did end up hitting it hard on a wheel one time and totally destroyed the axle on the motor. Getting the entire thing taken apart just to replace a motor (which I bought from Polulu; Thank god they exist) was a bit tedious.

Programming:

C - the Arduino on the Wild Thumper Controller needs runs Arduino C which listens for commands over the serial interface.

C++ - on the pcDuino, C++ is used to put the pins in serial mode on boot.

Python - Runs a server internally in the robot on port 8080, listening for commands to forward to the Arduino.

Java - TCP Client running all the time trying to communicate with a server if it's up, then forwarding that data to 127.0.0.1:8080 which is the Python server on the same pcDuino.

Why use 4 different languages at the same time? Because I was feeling lazy and used what I knew, and though I'm sure it can all be done in C or Python just fine, I doubt it would make a difference since LTE itself has ping times exceeding 100ms on average. A few extra milliseconds won't make much of a difference, and it's already flawlessly instant.

Controllers:

The Controller mechanism can be anything with an internet connection. I used a joystick with my laptop (using C#) and also (for the most part) an Android app made specifically for this robot.

Conclusion:

All this was worth it, when I drove it far away from my house while sitting in my room controlling it. One of the coolest things I have done with a Robot yet. 

This is my first LMR post, and I hope to post more of the projects I do here. Thanks to Dagu's Oddbot for posting on LMR to get me inspired to actually showcase this thing. And thanks to Dagu for such an excellent chassis and as I said, I'll be the first to jump on that TREX tank chassis and make that controllable from anywhere too.

 


 

 

AT&T's network has internal NAT, so the robot has to be the client, and me the server. This will change after I replace the pcDuino with a Raspberry Pi. Although not as capable, the Rpi supports VPN and is fast enough to query commands to an Arduino via serial

 


 

Pictures of the finished product:

Love the suspension on the Wild Thumper chassis!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
This is brill! Many have already done internet controlled bots here, but this one took it further to greatness!

Wow amazing job getting on TED is a great honor.

Very nice and clean.  Good job.

I'm looking forward to your replacement with the Raspberry Pi. 

 

Cheers.

 

That is very nice work. I also used the WT 6wd for my project. I found that the 34:1 motors were not good for grass and carpet but the 75:1 worked okay. You still might not be able to pivot in place but they will turn in a tight circle. When pivoting the a wheel would tuck under so far it would not allow the pivot. I rebuilt one of my chassis to tighten the suspension but have yet to try it outside to see if it works better. The chassis is also carrying a lot of weight with a PC, 20Ah of LiPo and some smaller stuff. 

I really like the remote control using the tablet and smart phone. I have R/C control on mine but it is mainly meant for autonomous running so R/C is just a backup. I can sit in my office and run it around outside or in the house which I agree is a lot of fun. 

Good luck and keep up with the good work.

That looks really neat with the 3D printed parts on top.

Thank you! I hope the T'REX is releasing soon so I can get that in my hands as soon as possible. Let me know when, and I'd be happy to be the first customer haha. Love Dagu!

Beautiful job, congratulations!

Hey man, nice job on the robot and nice right up. I like the phone and headlights / mounts you got going. I do see the wild thumper controller tucked in there. Are you controlling the wild thumper via serial or I2C connection? Can you give an example of the serial commands if serial, been having trouble getting mine up and running. Thanks.

I actually reprogrammed the Wild Thumper Controller completely. I used serial commands like "d,0,255,0,255,90" and "l,0". What these commands do is look for the first character, and depending on that, it seperates the strings into commas and then parses the integer value of whatever parameters the values correspond to. I also have a command "b" for getting what the battery is at.