Electronic – arduino – System design for python driven autonomous vehicle (boat)

arduinoautonomousdesignmicrocontroller

I've very recently started a project (with a few friends) where I will be building an autonomous boat. From a high level, it will be solar powered with a relatively simple motor driven propeller, and some on board sensors and such. It will be GPS guided in that navigational coordinates will be uploaded to the boat and it will then "go there" (I'll leave path-finding out of it).

My background is computer science and I'm more or less just "getting into" the hardware aspect of things. My primary question is regarding design/layout of the control system for the boat itself.

At first pass my intent is to have a main on-board computer (Raspberry Pi perhaps), which talks to several on board micro-controllers (maybe Arduinos). The micro-controllers would report sensor data back to the main computer, which would make decisions and issue instructions to the controllers to drive physical operations (e.g. stop motor, turn camera, activate self destruct).

Is this general paradigm reasonable? or is it fundamentally flawed in some way that I haven't thought of yet?

If anyone would like more information just let me know, I didn't want to rant too much. Thanks in advance!

Best Answer

You are designing a mobile robot. Forget about Asimov, the real three laws of mobile robotics are:

  1. Everything in it goes wrong all the time.
  2. There's a battery in the way.
  3. It broke down.

Whatever else you do, bear these fundamental truths in mind.

  1. Everything will go wrong all the time. This is especially true for a robot that's at sea, or even in the middle of a lake. Every technical component in the robot is something which can go wrong, and the more you have, the more things will go wrong. Even if you make them all 99% reliable and you have 70 things in there, then you have a 50% chance of one of them failing. "Aha" you say, then I'll add a safety system which detects when something goes wrong and, say, stops the motor. Well, now you have another thing which can go wrong, and you've given it the power to stop the motor. The take away lesson is to reduce the number of components in the robot as much as possible. You mentioned "several on board micro-controllers". Why, how big is this boat? Maybe you can get away with just one?

  2. There's a battery in the way. This is really two truths. Firstly you may find yourself stuck for space. Maybe not, boats can be pretty big and don't have many actuators, so this may be one of the few robots not to suffer this problem. Secondly, mobile robots just never have enough battery capacity. I'm sure you've thought about this, but I'll mention it for completeness. Carefully measure how much power the various parts of the robot consume, and calculate how much running time you're likely to get out of them.

  3. It broke down. Your background is in Computer Science, something will fail. Unless you select very good connectors and don't assemble them yourself, they will fail. Probably solder joints will fail if you do them all yourself. The boat will leak, and blow the electronics. When you're assembling the boat, you need to imagine you have 20 years' bitter experience of robots breaking down when they're almost inaccessible (I have). Every piece you make, imagine how it's going to go wrong. What's to stop the connectors just disconnecting themselves? What's to stop water getting into the electronics? You sealed them? What's to stop them overheating now? Did you take ESD precautions? If not then you've probably half blown a pin on a chip which will only start showing faults when the boat is 100 miles from land.