How to get my plane to turn tighter in auto mode

Hoping someone can help here: I cannot get my My Skywalker EVE-2000 to turn tight enough such that it enters each leg of a grid in a parallel fashion. Rather, each leg has a “bulb” at the end which is around 50 to 60m in diameter. I have LIM_ROLL_CD set to 60 degrees and I WP_RADIUS is set to 20. I also tried to reduce NAVL1_PERIOD from 20 to 16 but that does not seem to help.

The aircraft is a pretty large twin (2.2m span) and fairly heavy at over 5.7Kg fully laden but I can turn it quite easily in a 30m diameter turn in manual mode or FBWA without any sign of a deep stall or other issues. With the camera I am using and 120m flight height and 70% overlap, I really need a turn diameter of less than 40m.

Any thoughts?

It sounds like you’ve found some of the main factors already… so perhaps just the right combination of those will solve it? Or for other ideas, here’s something I found with my plane that I didn’t expect: If my airspeed is too close to my FBWA minimum airspeed, my plane refuses to turn sharply. It prioritizes not stalling (low airspeed) and maintaining altitude over turning tightly. Thus despite everything else requesting a sharp turn, the actual turn is very gentle.

If you enable Throttle Nudging, you can try boosting your throttle during the turn and see if it executes a sharper turn?

Thanks for your reply, I’ll try some speed variation. I also posted in the FB page for Pixhawk 2.1 and Ardupilot and have some suggestions from there too.


note that planes typically turn more sharply at low speed. Same as a car - you slow down to turn corners. Or at least we do in Australia :slight_smile:

one more suggestion apart from the ones on facebook. As your plane is a twin-motor setup, if you use the 3.8.0 firmware set the two motors as separate outputs (setting them as ThrottleLeft and ThrottleRight) then you can turn more sharply using differential thrust for yaw.
Just set:
SERVO3_FUNCTION = 73 # meaning left throttle
SERVO5_FUNCTION = 74 # meaning right throttle

then set RUDD_DT_GAIN to the differential thrust gain. It defaults to 10, which means full rudder leads to a 10% differential thrust.

Thanks Tridge, that’s a neat feature, will have to give that a try.

One question on your suggestion of increasing WP_RADIUS: I can understand that it allows the plane to start turning earlier, but does it actually help in making the turn any tighter? Do I also need to stretch the waypoints beyond the survey area (and/or allow overshoot in the Mission Planner settings) to ensure that by the time it re-enters the survey area it has completed the turn and is on track?

Thanks again for all your help!


it doesn’t make the turn tighter, no.

if the other suggestion options aren’t enough, then yes, you would need to do that.

We always use a minimum of 100 meter overshoot and 100 lead in and then we tyically fly every other row. This should alleviate the need for tight turns.

yes, this is a good idea, especially the flying every 2nd row
If you try too hard to do really tight turns then you risk stalling if the airspeed estimate is a bit off.

Hi guys… i’m having a problem with turns to left (only in auto)… because my plane is turning sharp to right and it’s hard to turn left… It works fine in fbwa but in auto mode i got this issue…

most likely your trims are off, or you have a real asymmetry in the plane (eg. your aileron throws are not large enough on one side).
A flight log from 3.8.x would tell us whats wrong

The trims in manual modeare ok…(both in center)
The trims in FBWA (checked too and tooked the correct actions on pitch, roll and yaw)
Assymetry (is possible but i’ve check just in visual and everything looks fine)
Ailerons (checked and both are working fine with 2cm from trim 1500pwm)
Rudder (checked and works fine in fbwa mode)
Skywalker 1880 and a windy day… The mission was planned to turns against the wind (suppose to help the turns)…

the log you requested!AuZdm3ViuhMPpSrIJhzgdc5YuoZp

ahh, sorry, I really need the dataflash log (the one from the microSD card, or via log download over USB)


It’s amazing how differential thrust showed up just about when I decided I wanted the feature for ground steering :slight_smile:

I have a couple of questions about differential thrust:

  1. Does yaw control input to throttle output mixing occur in all modes (specifically in manual and FBW-A) as well as during the auto modes.

  2. How is the gain from the rudder channel applied to the two throttle channels. E.g., at the default of 10%, does that add 10% to one throttle channel at full rudder stick throw. Or does it add 5% to one throttle and subtract 5% from the other. Or does it subtract 10% from one channel. I’m mostly curious to know if this can result in the throttle going below zero thrust and potentially into reverse thrust territory.


yes, all modes where rudder is active

It adds 5% to one and subtracts 5% from the other
It also constrains it not to cross the zero point. So if you are in fwd thrust then it won’t go below zero. If you are in reverse thrust it won’t go above zero.

I’ve been reading about ground steering. The documentation says that (once set up by making GROUND_STEER_ALT nonzero), the steering on the ground is done using a wheel (nose or tail).

I see a SERVO FUNCTION for ground steering (26). But I suspect that many aircraft use the normal rudder channel to control their steering wheel.

Does the ground steering function use the rudder function to accomplish ground steering?

As i mentioned above, I want to use differential thrust for ground steering. If ground steering uses the rudder function, I would guess that it will be coupled into the throttles if RUDD_DT_GAIN is non-zero and the left and right throttles are used.

I’m sure that tuning the PID values for ground steering in this fashion may be exciting and potentially hazardous to the plane…just want to make sure that it’s a reasonable path to embark upon.

When/if I get it working, is there a mechanism for contributing documentation on this topic (“using differential thrust for ground steering”)?

If there is a steering channel assigned it will use that and send normal rudder output to the rudder. Otherwise if no steering channel is assigned it will use the rudder channel for steering when below GROUND_STEER_ALT.
This allows for planes with separate servos for steering, or for planes that have a single servo for both.

yes, you can submit an improvement to the docs. I’m planning on doing a howto video on how to contribute to the docs soon. Watch out for it on the ArduPilot youtube channel.
Cheers, Tridge

It looks like I have basic manual and automatic ground steering working using differential thrust and the rudder. This is on an X-UAV Clouds twin tractor plane with a single axle drop-out wheel pair for the ground roll. There is no nose or tail-wheel. Both wheels are locked to the axle.

The rudder has no effect at very low speeds. But differential thrust under manual control works well for steering at low speeds. I’m on a grass field and the plane can turn as needed even with the locked axle.

Without automatic ground steering enabled, at higher speed, the plane will proceed in a straight line sometimes. But sometimes it will start to turn. I was not able to come up with a strategy to stay ahead of the turns once they started.

But, with automatic ground steering enabled in ArduPlane, the Pixhawk seems to be able to catch the deviations and correct them.

Tuning this was done by trial and error. I started out with a STEER2SRV_P of 4 (twice the default) thinking that the absence of a steering wheel on the ground would require more response. That didn’t work, so started trying other values. 2 was worse. 8 was clearly improved, but the plane still seemed to be reacting a bit too slowly. The final change was to 10 which is the highest allowed value for the P term.

I have not tried adjusting any other values at this point.

Since I have the P value at max, I’m concerned that the controller is may just be on the edge of being able to hold course. Possible areas of improvement:

  • Increasing the mix of rudder to differential throttle from 10% to 15% (increase ability to correct)
  • Increasing STEER2SRV_IMAX
  • Increasing STEER2SRV_D
  • Decreasing STEER2SRV_TCONST

All the above options (except the rudder to differential throttle gain) are the opposite of the changes recommended to reduce weaving.


1 Like

Did some additional ground steer tuning.

The only other parameter that had a noticeable beneficial effect was to increase STEER2SRV_D. For my plane, with a locked axle, steering with rudder and differential thrust only, the best choice was the maximum allowed (.1). I also ended up reducing STEER2SRV_P to 8 (although I couldn’t tell much difference between 8 and 10).

I’ve now used these setting for 5 takeoffs (3 manual in FBW-A and two fully automated). All tracked well, although several of them show no action at all on the part of the controller. However, there is some steering by the controller shown in this takeoff graph: