We used an ASUS WL-520gu router (which will fit nicely inside a 6" PVC pipe). You're going to need a third party firmware, which will allow you to run a serial to network gateway on the router. Just follow the directions Here:
http://todbot.com/blog/2010/12/16/wifi- ... -wl-520gu/ to get the software working on the router.
Then get yourself an antenna extension cable from amazon, like this one:
http://www.amazon.com/Wireless-Router-A ... sion+cable We used a 15' extension and didn't have any problems. If you're adventurous, you could try the 25 foot one and see what happens.
Add the extension between the router and the antenna, then put the antenna on a buoy and you should be good to go.
Note: Having to unscrew the antenna extension from the router every time you take your vehicle apart can be a real pain in the ass, so plan ahead.
You're going to want to duct all your thrusters, that way your antenna doesn't get caught in a prop. (And you should do it anyway, since it increases efficiency).
Other lessons learned: Be careful with the power going to the router/arduino. The router takes 5 volts, while the arduino takes 12. Putting 12 volts through the router and plugging in the arduino will destroy your arduino (ask me how I know).
On the software side of things, you may want a virtual serial port on your base station, so the arduino will look like it's plugged directly into the computer.
We never found a good solution for windows, but on a linux or mac you should be able to use the following:
socat -d -d pty,raw,echo=0 TCP:192.168.1.1:3001 (or whatever IP and port the arduino is connected to)
sudo ln -s /dev/pts/12 /dev/ttyS4 (The values that go in this line are determined by the output of the first command, so be sure to read it).
But unless you have a compelling reason to make it look like a USB device, I'd stick to just opening up a socket and sending it commands through a network interface.
For our robots we just sent a string of comma separated motor values with unique start and end characters. (#255,255,1$ for example). The arduino parsed the string and sent the right PWM values to the motor controller. It also sent back information from the IMU and distance sensors in a similar format.
I may have some of the arduino source code still, if that would be helpful. (It's nice for prototyping, since you can sent motor commands via matlab).
There are a few pictures of our robots in the AUV section.