That is, if you want to do it -right- and have a real answer - yes, doing things right isn't easy, that's why courses like these on mechanical engineering exist at major universities like MIT. Be glad that they give out such an awesome book for free, though!

One of the biggest problems with your description that you don't mention, though, is how large your wheels are going to be? That will have a bearing on everything; you need to understand how torque works (it's measured in a variety of ways - generally ounce-inch/inch-ounces, pound-inches/inch-pounds, pound-feet/foot-pounds, gram-centimeters, kg-centimeters, etc).

For example, if a motor is rated with a torque of 20 inch-pounds, what that means is that the motor could lift (up-down) a weight of 20 pounds with a lever attached to the shaft that was one inch long - measured from the center of the shaft. Conversely, it also means that if the lever was 20 inches long, it could only lift 1 pound. If the lever was 10 inches long, it could move 10 pounds. See how that works?

Now - a wheel is nothing more than an infinite lever (ie, sweep the lever in a circle - notice how it forms a circular wheel shape). Now, on a level surface, it's not going to take as much torque to move that wheel with the load attached - in a horizontal fashion, as it would in a vertical fashion (which approximates the scenario above with the lever example). That book I referenced above details how it really works, taking into account the forces in both the horizontal axis of travel (which is mainly friction and rest-mass of the robot), and the vertical force of gravity. Some trig comes into play there as well (although you are only working with 90 degrees, but it becomes more important once slopes are involved). What I am trying to get at here, is that there are means to calculate what you want to do.

Now - maybe you don't know, or don't want to calculate it - so what can you do? Well, you can always use the "worst case" scenario I mentioned above - pretend the wheels of the robot need to lift the robot straight up. If you have 6 inch wheels, that's a 3 inch lever (approximately). You want to move 20 lbs (straight up), so a 60 inch-pound (or 320 oz-inch) torque specification for the motor should do the trick (20 x 3 = 60). That will likely be overkill (because your robot won't be moving straight up, obviously - unless you are making a wall climber or something!), and it doesn't take into account a ton of other factors, but it will get you in the ballpark.

Note that you will likely not want to attach the wheels directly to the motor, as the motor's bearing likely can't take the strain in the long run, but that is just my suggestion from an engineering perspective; you are free to do what you want (which includes spend more money when a motor burns out).

One more thing: The above approximation assumes you are only using one motor to move the robot; if you were to use two or more motors, of course you would want to divide and such.

Finally - another crude way to approach the problem is to build your robot frame, and attach the wheels you are going to use in their approximate locations (sans motors), and load up the frame with the amount of weight you intend to move. Then attach a fish scale to one end, and pull it along the ground, noting how many pounds or whatever it took to move it. Let's say it took 10 pounds of pull to move the frame loaded with 20 pounds of weight. You are still using the 6 inch wheels.

So - 10 pounds with a 3 inch lever is 30 inch-pounds of torque needed. Granted, this would only account for level surfaces; you might want to also pull your contraption up a 45 degree slope, and use that measurement of pulling weight to redo your calcs, to give you a better margin...

I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.

Put your robot together enough that you can drag it about. Use a spring scale to determine how hard you have to pull to get it to move the way you want. Multiply by the wheel radius to get the necessary torque. Divide 5 miles by the tire circumference to get revolutions per hour. Convert torque and speed to horsepower or kilowatts. Buy a motor with at least that rating. Gear to get the desired maximum speed.

you need to understand how torque works (it's measured in a variety of ways - generally ounce-inch/inch-ounces, pound-inches/inch-pounds, pound-feet/foot-pounds, gram-centimeters, kg-centimeters, etc).

Arrgh! The scourge of imperial units! its easier to use newton-metres - convert to the SI units immediately and do all yourworking in SI units for a sane life - then the only constants you have to memorise are 2 Pi (and 60 to convert rpm to Hz).

For example, if a motor is rated with a torque of 20 inch-pounds, what that means is that the motor could lift (up-down) a weight of 20 pounds with a lever attached to the shaft that was one inch long - measured from the center of the shaft. Conversely, it also means that if the lever was 20 inches long, it could only lift 1 pound. If the lever was 10 inches long, it could move 10 pounds. See how that works?