Controlling steerable kort nozzles on a boat with twin motors set-up to use "skid-steering"

First of all apologies if this question has been asked before, I simply want to make sure I get the right answer.

I am building a twin motor autonomous boat using a Pixhawk flight controller using the current version of ArduRover. I set up the boat to use skid-steering but since it has steerable kort nozzles (think of them as rudders), I’d like to use them aswell to steer the boat.

In addition to sending throttle and steering information to the Pixhawk I also intend to send a copy of the steering information on a third RC channel. My understanding is if in addition to connecting the left and right motors to servo outputs 1 and 3 on the Pixhawk, I also send Ground Steering information to a third servo output on the Pixhawk connected to my “rudders”, they will move to assist the skid-steering motors. Do I need to associate the third RC input (the copy of the steering information) with this third servo output on the Pixhawk?

Have I got this right? Thanks in advance.

Hi Nigel,

Sounds like a cool setup.

We don’t perfectly support this kind of setup although I think we will add support for it eventually. Still, you can try to use both “skid steering” and the steering output from “Ackermann steering” by connecting the steering servo to a free servo output on the back of the Pixhawk (like MAIN OUT 2) and then set SERVO2_FUNCTION to “26” (i.e. “GroundSteering”).

I’m not quite sure about the need for any input changes (i.e. sending ground steering info into the pixhawk). It is possible to externally control any of the pixhawk’s servo outputs including by making the output equal the input. So this could be done by setting the SERVO2_FUNCTION to “52” (i.e. “RCIN2”). If that’s done then ArduPilot’s steering controllers don’t know anything about what’s going on with that channel though so it would be completely externally controlled.

Not sure if this helps but…


I updated the firmware to Rover 3.4.1

I have the following output servos connected, servos 1,3, and 5.

I have set the following parameters to configure skid-steering and rudder actuation

SERVO1_FUNCTION = 73 ( Throttle left)
SERVO3_FUNCTION = 74 (Throttle right)
SERVO5_FUNCTION = 26 (Ground steering)

I also set

PILOT_STEER_TYPE = 1 (parameter instructions say to set this to 1 for skid-steering)

The Pixhawk fails to arm with the message “Check steering and throttle config” - I don’t know exactly what parameters I’m supposed to set. Any suggestions?

I’ve attached my parameter file.
MP_Full_Param_List_July4.param (11.7 KB)



With PILOT_STEER_TYPE = 1, the RC input should be setup with two vertical paddles. This method of steering input is really totally separate from the output method setup for the vehicle. So it’s possible to control either a skid-steer vehicle or the regular Ackerman style steering vehicles using two paddle input.

I have only ever used this two-paddle method once as a test. I think to arm the vehicle the left paddle should be pushed forward to it’s extreme while the right paddle is left in the middle.

If you’d rather use RC input where the throttle and steering sticks move perpendicularly to each other (i.e. throttle up and down, steering stick moves left and right) then the PILOT_STEER_TYPE should be set to the default of “0”.

OK I’ll change that variable back to its default (0).

I currently send throttle ( channel 3), steering (1) and a copy of the
steering input on channel 5. Output servos are 1,3, and 5 - set-up as I
described in my earlier email. I think I don’t need that copy of the
steering input on channel 5 and that it might be the source of my problem.
I will investigate that possibility today.

1 Like


I’m sorry to dig this topic, but I have the exact same issue, did you sort this out?
I also have the error message even with PILOT_STEER_TYPE set to 0.

Thanks in advance!

If I remember correctly, the config check looks for valid config pairs: throttle left, throttle right and ground steering, throttle.
If one is missing there will be an error message. So simply configure an output as “throttle” and do not use it.