Reconnaissance Robot

If a question is required for this type of post, I'd ask for recommendations for what kind of battery I should use for my project, in terms of capacity (ideally it would be rechargeable). I'd also like to know if I am overlooking any potential pitfalls, I'm tentative on my solution for working with network cameras through the Ethernet shield

I'm working on a robot that can roam around, record info about its surroundings and then return and dump that info to my computer.

The robot loosely knows where it is based on a digital compass and a set of accel/gyros. Eventually I'd like to add in a GPS or interface the robot with an optical mouse so it can track its progress along a smooth floor (anyone know about interfacing an Arduino with a USB device? Could that be done with just plugging in the cord used to program the Arduino into a male/male USB connector and then plugging the mouse into the other end of the male/male plug? I'd presume that would need a USB library of sorts on the Arduino to interpret the distance traveled)

The robot has two cameras and a distance sensor, as well as two sets of motors - the motors orient the cameras and distance sensor to point at different areas from a fixed point. So the robot rolls forward, stops and then moves the camera/dist sensor around taking several measurements. Once done with that node, the robot moves forward again and takes another set of measurements.

I'm using Ethernet based cameras, so I'm looking at taking data off of the Ethernet port. I figure the images I'm taking will be less than a MB, so I could send a request to the cameras via the Ethernet shield and then the returned JPEG could be filtered into a chip like
Once the full image is loaded into the chip, I could then filter it back out to the SD card on the Ethernet shield. I'd include a log file of the distance and position reading at that node.

The robot also has a router with wireless capability on board, so when the robot comes back in range of the computer, I can have my computer reconnect with the router and then download the collected data. With the collected data, I'd like to create a 3D virtual environment with the images collected being projected onto the surfaces measured. I believe I can do this in Java, though it may be a bit processor intensive to actually move the point of view. In effect, this would create a crude virtual environment, a bit like street view on Google maps.

I'm making the chassis out of K'nex, the motors are the standard K'nex type.

The two Ethernet cameras are 5V, 1.2A each
The four motors are 12V, 0.5A each (two for moving the cameras, two for moving the robot's wheels)
The router is 5V, 2.5A
The Arduino Mega 2560 is 12V and 3A? I have a digital compass, a set of accels/gyros, a distance sensor and the code running on it, I doubt that would be 3A.

I'm not leaving this alone anywhere, so I figure it shouldn't need a battery life of more than 16 hours.

I also figure I'll only ever be using one or two devices at any given point in time, so I'd presume something a little over 6 Watts would be sufficient for the draw on a battery, times 16 hours, about 100 Wh. I don't know if there's a standard battery for this type of application that is used by hobbyists

Also, does anyone know where to buy just plain circular headers? I feel like there's a better name for what they are - the header that plugs into the Arduino to supply power

but I don't need the 120V 60Hz part, just the circular header.