For your (enforced bedtime - John, enforced away-from-project time - Will) reading.
I've finally drafted the first of several messages I want to post at the Roboteq forums. Before I do so, however, I'd appreciate if you'd look this over to see if it makes the case with reasonable clarity.
**********************************************************************************************************************************************************************
Acceleration/deceleration with mixing
I am helping two friends with scripting their Roboteq HDC2450 and HBL2360 controllers. In both cases they are using Throttle and Steering joystick outputs that are mixed by the controller to get Motor 1 and Motor 2 command values and both of them reported a serious controllability problem when decelerating from a forward-moving turn. Indeed, there is a problem and it applies to acceleration while turning as well as deceleration, though it was first noticed during deceleration. It derives from the fact that although the motor commands are the result of mixing the Throttle and Steering values, the mixing algorithm is not in any way applied to acceleration and deceleration rates.
It is easier to see this graphically than to explain it with words, so I have attached several graphs. The first illustrates the "normal" result of centering the stick after being in a steady forward turn. The graph contains four curves; two correspond to Motor 1(red) and Motor 2 (yellow) power as one would see them in the Roborun Run tab, and two show what the vehicle does as the result of these - these are just the result of un-mixing the motor power values to get fore/aft (green) and left/right (blue) motion. (BTW, These graphs were made in a spreadsheet, but I think it would be very useful, and rather trivial, to add the fore/aft and left/right curves to the Roborun graph choices as they give a fairly intuitive picture of the effective results under mixing.)

- No mix decel.jpg (19.68 KiB) Viewed 5927 times
At the start of this graph, we are in an 18% turn with M2 power less than M1 power. When the stick is centered, both power curves decline at the same rate, and forward motion decays in parallel. Notice, however, what happens to turning motion. Turning does not stop, nor decay at all, until M2 power has gone to zero - when forward motion has already largely ceased, and fore/aft deceleration rate is halved because one motor is already stopped. If this were an automobile, I think I'd describe this as severe torque oversteer during deceleration. As these are actually high-performance wheelchairs, the result is busted doorways and perhaps busted legs.
The second graph shows that, if instead of just applying constant deceleration values to both motors, we use the un-mixed fore/aft and left/right results to bias the deceleration rates, we can get rid of this problem. Here, deceleration rate of the inside wheel is reduced and that of the outside wheel is increase, but because the turn rate decays over time, so does this bias.

- Mixing decel.jpg (17.23 KiB) Viewed 5927 times
Now, the power curves are not parallel straight lines but converge, and fore/aft motion declines linearly even at the end. Most importantly, instead of continuing to turn at a constant rate until forward motion has nearly stopped, the vehicle also straightens out.
As shown in the next two graphs, we can get an even snappier steering response by over-weighting the biasing of deceleration rates.

- Mix weight 200.jpg (16.16 KiB) Viewed 5927 times
(Continued in next post because no more than 3 files can be attached per post.)