A Constrained Thrust Allocation Algorithm for Remotely Operated Vehicles