How to perform transects at constant speed?

Hello everyone,

I want to configure my BlueROV2 so that it can perform transects at a constant speed, i.e. I would like to be able to fix the depth, heading and speed.
I see that the autopilot modes can fix the depth or the heading, but not the speed. Do you know if that is possible to do? If so, what would be the best solution? Is there a way to send such a command directly from QGroundControl, or do I need to “create” a new autopilot mode from the ArduSub code?

Thanks a lot for your help,


You can set up a joystick button for input hold to maintain a constant input on any of the axes. If you want an exact speed, adjusted for things like going with or against a current, then you will need an external source of position information like a DVL or USBL.


I have the same need. Seems like the same problem that UAVs have when tracking ground speed.

I wonder if we could use a down-looking optical flow system when near the bottom to detect ground-relative direction and speed.

Any thoughts?

I’d love to try it. The concerns that come to mind are debris in the water being interpreted as ground movement, and optical effects throwing off the hardware calibration of an optical flow sensor that was designed for operation in air.

There is a $49 variant of the pix4flow without the sonar module which wouldn’t work in the housing anyways that I am thinking of trying out. I’ll have room in my longer than stock battery tube. Well see if it works. It may be a strictly situational module though.

@piercet Hey, I was looking into optical flow sensors recently and was wondering how far you’ve come with your test. Would you please share?

I actually just finished moving and am getting my rov workshop set up in my new shed so not very much further, but I do expect progress again soon.