I would like to automatically control my ROV's (underwater Remotely Operated Vehicle's) heading, pitch (and possibly roll).  Since GPS doesn't work underwater, I'll need to use a compass that outputs heading, pitch and roll such as this one:  http://www.sparkfun.com/commerce/product_info.php?products_id=8960 .  Communications to the ROV will be by either serial or ethernet.  The vehicle will be stationary when auto head, pitch, roll are engaged, and I plan on using 4 thrusters for maneuvering.

I initially thought to use a Pico ITX motherboard onboard the ROV and some code that talks to a serial servo controller.  Then I started to look at using an Arduino and then wondered if this might be done with an ArduPilot?

So is this possible?  If so how difficult will it be to achieve and where do I start?

Views: 986

Reply to This

Replies to This Discussion

You will able to do that with ArduPilot Mega or ArduIMU+ and our new magnetometer. You'll have to tweak the code a bit yourself for ROV purposes, of course.
Is the system just for stabilisation?

Be careful of magnetometers if you are going to be near wrecks and shipping.

When you say heading do you mean so that it points or travels in a particular direction - or both?

Have you seen the Homebuilt ROV site? They have a lot of useful links and you might find something there.
Does your magnetometer send compass heading data? I was thinking that since the Ocean Server compass module outputs NMEA sentences (similar to a GPS, just different sentences) then I could use it instead of a GPS with ArduPilot and just change the sentence structure in the ArduPilot code. I'll have to do some homework on ArduPilot Mega and ArduIMU+. Any projects out there that might be similar to what I want to do?
The system would have two modes: manual driving and automated "attitudinal control". When manually driving, the system would essentially be a servo controller (I'm using RC type brushless motors and ESC's). In automatic attitude, the system would use thrusters to keep the vehicle's heading and pitch. This is similar to "hovering" a helicopter except we can't hold a fixed position since we don't have a GPS and we aren't effected by gravity (the vehicle will be neutrally buoyant). Yes, by "heading" I mean the compass direction that the vehicle is pointing.
Why doesn't GPS work underwater, the signal should reach or how deep are you planning to go?
A bit off topic but simply put, all radio signals (except VLF) almost entirely bounce off the water's surface. The higher the frequency, the more signal is bounced. Higher frequency signals, like those used for GPS, are worthless underwater. You can get a GPS signal down to a submerged vehicle by using an extended antenna that reaches the surface of the water, but that only tells you where the antenna is, not the vehicle.

What we really need to know is vehicle heading, pitch and roll, not it's position (latitude/longitude), and then use thrusters to maintain that atitude (not unlike how the space shuttle uses small thrusters to adjust its orbit or orientation).
There may be some interesting options to consider for a project of this type. GPS is based on a time signal from sattelites to a handheld real time clock. The shift in this signal between three points is what gives you your coordinates. What you may be able to do is to reference this signal to your own support boat and then send this data to your submersible with hydrophone technology. Since the signal in the water is also a constant (barring thermoclines and salinity changes) you could use this data with an onboard digital compass to give position estimates based on GPS. This data could be reduced to a vector equation which should be fairly easy to program into your source code.

Just an idea but I have often thought that many signals could be multiplexed with this process. Even impressing Video signals in the sonar wave. You have to consider this as a similar medium to air. Both can resonate the sum, difference and the original waves. It is quite possible that you could develope a system for underwater similar to the Ardupilot or adapt those features to your own use. What it comes down to are the types of sensors you use to collect data about your surroundings. From there the brain of the craft is identicle. I would go with the Arduino Mega. You need more memory capacity to dicern underwater signals and you may want to expand in the future. Unless, of course, you are limited by size.
Thanks Skip. The way ROV's keep track of their position underwater is not unlike what you're suggesting: A support ship on the surface drops (at least 3) audio transponders to the ocean's bottom and marks their positions. The ROV then triangulates its position using passive sonar.

I remember reading about a modem that works underwater, extremely pricey but the fact that such a thing exists at least means it should be possible. From my experience though, it doesn't work nearly as well in reality as it does in theory. Besides fluctuating salinity and temperature, you also have to deal with ambient noise (fish, whales, breaking waves, boat propellers, engine noises... even helicopters hovering close to the water's surface can all be heard underwater. Because water is so much more dense than air sound travels very long distances, so it can get pretty noisy underwater.

A bit off topic but a subject that interests me so I don't mind the diversion. I think what I may end up doing is to get the biggest Arduino that will fit inside my robot and play with that a while. I may at some point replace it with an ArduPilot, but I think I probably should become familiar with a standard Arduino first.
My thinking is that if you go with a bit code that uses check bits you could filter out most of the ambient noise. You could feed the background noise into the input of an op-amp to filter out this element and time the decoding to a set frequency pulse. Similar to the way they decode PCM radio control channels. Just some thoughts.
bigkahuna, this might be a dumb question, but if GPS signals are bounced off the water's surface, how are you going to get a signal down to your radio RX or X-Bee or whatever to control your ArduPilot? Serial or Ethernet across what? A wire?

I realize this post is a few months old, I'm just wondering if you've had any headway.
No GPS involved. I'm using a compass to determine heading, pitch and roll.
How does that work???

Reply to Discussion


© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service