Is there a way I can control my arduino robot from anywhere in the world. The robot goes out of range of my home wifi so my wifi shield can't help. Is there a way to make sure the robot is always on the Internet no matter where it goes?
There are mobile data shields available. Although this won't work absolutely anywhere the robot goes, this solution should provide a way to control the robot at most urban places.
A low tech solution to this problem is to use a dtmf based control. Although this is similar to the previous solution, this solution will enable you to control the robot even in places without a reliable data connection.
Since your robot is already on WiFi, the robot is on the internet. If should theoretically be possible to access the robot from any outside address. However, one of the main problems with this is that most home internet services do not give you a fixed address which makes access difficult.
One way to get around this is to use dynamic domain name service (DDNS). You will need a few things.
A router that supports DDNS. The router handles most of the details of this.
An external DDNS service which forwards any packets from your ip-name to your router.
An ip-name such as myarduinorobot.net. Most of the DDNS services will help you do this. Or you can use any of the common services that register ip-names.
You will need to forward the packets from the router to your robot. If the router supports DDNS, it will support this.
One suggestion I will make is to somehow encrypt your commands to the robot so that some outsider won't be able to use your robot as a security hole.
Another way to do this would be to use the cellular network. Adafruit has several boards that access the cell network including some Arduino shields. Their brand name for these are "Fona" and you will still need a SIM card to use one.
Or you could get a device that uses many different communications systems like the Picom FiPy. This is a processor that runs Python and has WiFi, Bluetooth, and cell data (when I bother to get a SIM card). You could use this as a co-processor to your Arduino.