Desired depth and heading commands in a manual mode (e.g. depth hold mode)

For depth hold, you can use set_attitude_target to select the desired attitude of the vehicle, for the depth, you’ll need to use rc_channels_override_send with thrust set points until you hit the desired position.

This is probably because your GPS information is not a real system that can give position error information to the ROV, without a real position information (or something close to it), the vehicle will do weird things.