Home        Store        Docs        Blog

Heading hold program question

(Richard) #1

I have written a simple Arduino C program using P.I.D. (proportional, integral, differential) algorithms to control two T100’s to maintain a set compass (LM303 sensor) heading. P.I.D. is a proven method for maintaining a setpoint in a closed-loop system. What I am concerned about is how the potentially large amount of angular/rotational inertia in an ROV will change the effectiveness of P.I.D. as a control method. I can see “overshoot” as a significant problem. If you have experience in this area I would appreciate hearing about it.



(Jacob) #2

I think using a PID control loop is a good idea. What you can do is adjust the parameters of the control loop so that it suits your ROV. This is just a matter of changing some numbers in your program. There are a lot of tutorials and videos describing how to adjust PID coefficients, especially in the context of quadcopters and such.


What would be very useful is if you could change the PID coefficients while your program is running. This could be accomplished by using some potentiometers and converting the analog input to a range for for an individual coefficient. Otherwise, if you decide the control loop is not working well, you will have to pull it out, disassemble, reprogram and test again.

(Rusty) #3


The water actually damps the motion of an underwater vehicle dramatically. Even something with a relatively high amount of inertia will stop pretty quickly. This makes it fairly easy to tune a PID loop and you probably won’t need much D term.


(Richard) #4

Thanks Rusty,

The new T100 just arrived. I am rigging it for WTE rotation only until I get another thruster. Should be out testing the PID by Sunday. You know me, one step at a time. I am fascinated how well my new setup works using the Adafruit Metro Mini and a LSM 303 compass.