Controlling a Robot From Anywhere

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!

A Robot that is remotely controlled over the internet!

  • Control method: Anything with internet!
  • CPU: Arduino, pcDuino
  • Operating system: Linux
  • Power source: 10000mah LiPo
  • Programming language: C++, Java, C, Python
  • Sensors / input devices: light sensor
  • Target environment: outdoor

This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/controlling-a-robot-from-anywhere

Very nice.

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.

Beautiful job,

Beautiful job, congratulations!

Impressive work.

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.

I actually reprogrammed the

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.

Really nice implementation.

Very nice and clean.  Good job.

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

 

Cheers.

 

Wow amazing job getting on

Wow amazing job getting on TED is a great honor.

Fantastic!
This is brill! Many have already done internet controlled bots here, but this one took it further to greatness!

Source for your Batteries ??

Hello Mohammed,

Excellent robot! I read in your description that you’re using 10000 mAH worth of batteries. Are you using two 5000-ish mAH batteries? If so, do two of them fit side-by-side in one of the “battery compartments” on the Wild Thumper? Or are you using one in each of the compartments?

I’m trying to figure out (and source) what the largest amount of power I can easily shoe-horn into the Wild Thumper chassis. I would prefer to keep the batteries in the compartments to keep the center of gravity as low as I can. Do you (or anybody) have suggestions about batteries?

John

Hi JohnIf you have a look at

Hi John

If you have a look at the photo captioned ‘Heavy Duty Motor Controller’ you can see the two batteries in the one compartment, with the electronics sitting in the back compartment.

 

Hope this helps!

Programing

Hey Mohammad!

We have just build something similar except it runs on the office WiFi and delivers beer around the office on Fridays. It was part of our work hackathon and i seen some great ideas like yours and decided to give it a go for my self… We started using the i2C bus from an ardruino controller to a raspberry pi3 but this ended up being totally unreliable due to some issues with the Pis i2Cbus… Anyway we have reverted to using usb to serial from the Pi to the ardruino motor controller… We cant seem to get it to drive live like yours… we have latancy and are having to loop our commands etc. We have C on the ardruino and python on the pi with a web server then a java web app (about to be android app) for controling it. Would love to see some of your lower level code and how you are actually commanding the robot like that if possible :slight_smile: or any tips would be appreciated

Thanks

From VJ!

Great job…I see a bright future for you in the future…keep up the good work!!