Transition from AR2.42 to AR2.43 - NAV_L1 challenges


I’ve been away from my rover for a little while and am trying to catch up on the latest developments. Using AR2.41 I had the rover navigating a course quite well and started to focus on getting a better GPS setup. Coming back to it a few weeks ago I migrated to 2.43 and found that I could not get the rover to navigate at all… it just headed off in all sorts of directions with no apparent pattern. As both 2.44 and 2.45 came along I tried those as well and found the same.

I went back 2.41 to verify that my rover is set up correctly and then moved on to 2.42 and, again found that it is OK. The move from 2.42 to 2.43 is where the challenge arises and, obviously, was the change which introduced NAV_L1 so I figured i needed to focus on that. I worked through the suggested routine in the Tuning guide but found that, because I can’t the rover to follow a course, I don’t get the chance to tune it: If it doesn’t follow a path in a wayward manner, it’s impossible to refine it or determine what needs to be changed.

With 2.42 I could disable the drive motor and put the rover on a swivel chair to test the steering response. By setting a waypoint I could move the rover around and track the behaviour of the steering as the required heading changed. I don’t seem to be able to do this with 2.43-45. Thinking it was because of the zero speed I set the STEER2SRV_MINSPD to 0 but that didn’t help.

Has anyone had a similar experience? Got any clues as to a solution?


If you are using the aileron joystick for steering, then you might want to check the “reverse” box next to the aileron bar to get your rover to steer correctly in the Auto Mode. Some configurations need to have the steering direction reversed in the Auto Mode compared to the Manual Mode.
TCIII ArduRover2 Developer


Thanks for the quick reply. I’ve tried as you suggested with no real improvement. There was a slight change in the behaviour so I’ll work through various changes in the NAV_L1 settings to see if I can find values which improve the response.

Forgive me for asking but if the steering setup (Aileron - reverse/not reverse) was OK in AR2.42, is it unreasonable to think that it should be the same with AR2.43?


No, it is not unreasonable. I have not had to use the “reverse” box on my Slash rovers from the early versions up through the v2.4x and with a change to a Pixhawk.
What value is your waypoint radius in meters. It should be either 1 or 2. Also, the waypoint circles should not be touching each other.
What value is your Cruise_Speed and Cruise_Throttle?
What value is your Steer2srv_Tconst?
What value are you using for NavL1_Period? 6 - 8 is best
Damping should be the default
What are your Flight Modes: Auto, Auto, Learn, Learn, Manual, Manual?
What are your Steer2Srv P, D, and I values?
Trying to help here.
TCIII ArduRover2 Developer


I appreciate the help!

Waypoint Radius: 2
Waypoints are well separated. Indeed, for bench testing I use just one waypoint with the drive motor disconnected. This allows me (with AR2.42) to rotate the rover and watch the behaviour of the steering.
Cruise_Speed: 2
Cruise_Throttle: 25% (Cruise values work fine in AR2.42)
Steer2srv_Tconst: 0.75
NavL1_Period: 7
NavL1-Damping; 0.75
Flight Modes: Auto, Auto, Learn, Learn, Manual, Manual
Steer2Srv_P: 3 (Turning diameter is about 3m)
Steer2Srv_D: 0
Steer2Srv_I: 0.2
Steer2srv_MinSpd: 0 (this so that I can disable the motor to focus on steering)

I’ve attached a copy of the parameters file for your reference. If you seem anything wayward, please let me know.

Thanks again,


Unless it is a misprint, STEER2SRV D s/b 0.05 (default) and I have mine set to 0.2. Remember this is L1 code and not the older code where STEER2SRV D was set to 0.0.
Also, your STEER2SRV P is very large in relation to other values I have used for my rovers. For instance, my Traxxas Slash (1/10 scale) has a turning radius of around 1.3 m, but I found that 1.0 m was a much better value.
The STEER2SRV_MINSPD is for steering navigation and not for the throttle and should be kept at 2 or more.
TCIII ArduRover2 Developer


You’re right: I set Steer2Srv_D to zero because of my experiences with Hdng2Steer in versions prior to AR2.43. I’ve reset this to the default value.

My Steer2Srv_P value was set to 3 as the diameter of my turning circle is about 3m. My Trailblazer 1/5th scale has a wheelbase of 480mm, a bit longer than the Slash (335mm) so the greater turning circle is to be expected. However, I understand the point and will vary it the _P parameter to see what improvements I can get.

From the description of the parameter STEER2SRV_MINSPD I understood that valid values are 0 to 5 with the speed being used in the steering calculations. As I’ve been working with the drive motor disabled (to focus on steering as in previous versions) I set the value to zero. Re-reading the parameter description, I see now that maybe your suggested value would be better even if the vehicle is stationary. I’ll give it a go.

Thanks again for your help. While I won’t be able to join in the fun at AVC, I’d like to be able to emulate your success around a track.