Heading Hold


I have built a towed subsea vehicle for subsea wreck surveys. The operation is very basic and is currently controlled by an Arduino Mega.

The vehicle weighs around 300kg when fully ballasted with lead. The vessel then deploys the towed vehicle over the stern using an A frame. The vessel then steers a survey run line and the towed vehicle is lowered to the required depth from the seabed. The towed vehicle is fit with 2 thrusters which are solely used for heading hold and not for forward thrust.

The Arduino uses a simple PID sketch to compare the survey grade gyro heading to the heading determined by the user (very crudely set with an LCD top end and a variable resistor to choose a compass value between 0 and 360).

I am now playing with the APM as the heading control as this is so far beyond my very simple original design and allows upgrading, tuning and viewing of all sorts of sensor data real time. Years and years ahead of the original control board that took me months to build!

Anyway, my question is what would be the simplest configuration of the APM board to allow use of only the heading hold.

There wouldn’t be any GPS or other sensor data other than pitch, roll and yaw although all I need is a compass heading (which doesn’t have to be that accurate as drift can be corrected visually real time if it is there).

At present the Arduino sends out a PWM signal to each motor which increases the further away from the desired heading the vehicle is.

How can I set up the APM to just utilise the heading hold to output a PWM for a rudder and nothing else?

I am thinking that the Rover isn’t the best choice. Should I be thinking of using Plane firmware or Copter firmware for the heading hold?

Also, where can I see the heading value that the vehicle is trying to hold to once the heading lock has been activated?

Although this is a simple ask compared to what this software and hardware is capable of I am strill struggling with how to implement it as it is a big step from the basic Arduino code I originally wrote for this one task.

Many thanks for any help with this.