Setup for differential steering

Hi all,
I’ve been looking at AgOpenGPS for a bit, and it all seems very interesting. I’m trying to research what I would need to get it setup to control a Challenger MT835. So far, everything I’m reading indicates that a wheel angle sensor is needed, but clearly that’s not possible for the 835 since it’s differential steering. It looked like there was some work on using a heading computed from dual-GPS positions, but the last post I saw on that was that there were issues. So, short version is: am I missing documentation somewhere? If this isn’t currently working, then I would love to help make it happen, but I don’t want to start from scratch or step on any toes. Thanks.

Could you describe how the steering wheel behaves on this tractor? Does it have a fixed straight-ahead position like in cars or, like in systems with orbitrol, the straight-ahead position shifts over time?

1 Like

It’s been a bit since I’ve been on that tractor (a different guy runs it for our ground work) but I believe it has a static center position. The issue is that taking an angle from the steering wheel does not translate to taking a wheel angle on a non-differential steer system. It is perfectly happy to spin in place when throttled down and the steering wheel is turned.

Probably this is the identical problem to controlling a swather.

The speed of the changing course depends on the steering angle. Just calculate the rate of angle change with IMU and we have the current angle of the turn. If the driving speed was also taken into account, the steering angle can be calculated analogically to the machine with steered wheels.

ArduMower works almost the same like CAT MT so we can try use it in tractors. ArduMower - DIY Robot Mower System - It's Time For Really Smart Mowing en

Baraki: unfortunately the control dynamics are different, so it is not possible to compute a meaningful wheel angle for a differential steer system. Again, consider the case when the steering wheel is turned but the forward speed of the vehicle is zero. With differential steering the heading continually changes at a rate proportional to the steering wheel angle. With front wheel steering the wheel angle can be at lock and no change of heading occurs. The results could be catastrophic if the steering controller doesn’t account for this difference in dynamics.

Torriem: I haven’t driven a swather, or looked into them past watching them run, but I believe the control dynamics are basically the same. Did I miss information on setting up AgOpenGPS for a swather? I’m concerned that the controller will be expecting feedback that doesn’t exist (wheel angle). If there is a provision for no wheel angle feed back, but AHRS/MARG feedback, then this is much simpler than I feared.

I started something with a differential drive vehicle that could be of interest. I should pick it up again sometime.

Just a thought. Could you use a second microcontroller and fit a speed sensor to both track drive? You could then process that data into a legitimate steer angle figure for AOG.


A minimum speed can be set and the vehicle will not turn at 0 speed. I think that the measurement of the angular speed of rotation of the vehicle takes into account the dynamics of this type of vehicle and is all that is needed. Angular velocity = 0 can be considered 0 of the steering sensor for AOG. I just wonder if it can be measured with IMU.

1 Like

No it’s still an open problem, other than the work @kareldew has done. I have speculated that you could take measured speeds of the two wheels or tracks, and using a virtual wheelbase, calculate what the steering angle would be, allowing stanley or pure pursuit to work.

Does the tractor not turn at all at zero speed? My cousin has a John Deere 9400T and I thought it could move at zero speed but could be wrong. A swather does move at zero speed, and if you adjust the speed into slight reverse, it can turn completely in place.

I’ll take a look at @karaldew has done so far, and the mower project. Using the speed differential of the tracks is probably going to lead to more trouble than it’s worth. The problem is that they should have very similar rates almost always. This will lead to noise, quantization error, and numerical resolution errors impacting the control solution. I think it would be much better to use a MARG sensor suite to obtain a heading and angular rate for control. That may also reduce some of error that has been seen even with the front wheel steer systems.

I’m also not sure that trying to use the control laws that have been derived for front wheel drive on a differential drive is worth the trouble. All of the inputs and outputs will have to be transformed to try and map the one to the other, which is going to be a decent bit of work and may negate the nice properties of the original control scheme. And proving that it would behave as expected is likely as much work as deriving a more appropriate set of controls. I’ll try to start on the kinematics and see where I get. I’m hoping that some adjustments to the Hoffman-Stanley control derivation will make it largely independent of the steering mechanics, and only a transform to the control domain would be needed.

Honestly, as far as the zero speed behavior of the MT, I don’t exactly recall. I would need to play with it and see what it does, what the turning behavior is, and if the angular rate is speed dependent. I don’t normally have a need to make it spin in place, and I always worry about tearing up the ground or wearing the treads, so I don’t tend to do that much. Also, if there’s an implement with a pivot it will absolutely turn to the point that part of the implement frame catches on the tread (ask me how I know…). I brought up the zero-speed behavior because the limits tend to exaggerate the differences, but the fundamental issue (e.g. the Stanley control system was derived for a set of kinematics and dynamics that are meaningfully different, and thus may lead to instability in the solution) exists at all speeds.

I had never worked with a swatter or a tracked tractor.
But I assume that they have a steering wheel that always is in the same position when driving strait?

So I would try to a sensor on the steering wheel and add a correction factor for the counts per degrees according to the speed in the arduino code.
The count per degrees should be higher at low speeds so the steering wheel will move less.

In theses machines if you make a turn at 15km/h and the same turn at 3 km/h you will turn the wheel a lot less at 3km/h?

Maybe the arduino should also have some code to limit the steering angle at high speed.

No, at least the cat Challenger can be a little tricky if you slow down real fast the steering wheel becomes more responsive.