So, I just got back from robotics and I’ve easily spent over 200 hours implementing this drive system. We wrote and reviewed this spec that had 5 modules.
First module, forward velocity control would return a computed forward velocity in to the second module, angular velocity control. The Angular Velocity control would compute a forward and angular velocity in to our third module, Traction Control Module. This attempted to reduce all the slippage. Then Traction Control Module would return Torque Forward and Torque Differentials in to our fourth module, which was called Motor Steering. It allowed that so when the robot was pedal to the metal, going at the top speed, it would allow the driver to just turn smoothly. The Motor Steering module would return Torque Left and Torque Right to our final module which would apply a constant torque regardless of the current speed.
I had everything implemented and coded up.
Today it was a 14 hour testing session, as well as yesterday’s 8 hour testing session. During these 23 hours, we were able to fine tune Motor Torque module (last one) and we were able to fine tune our Motor Steering algorithm.
The idea is that you should be able to plug in the joystick at any point in the module chains and still have things work, just not be as nicely drivable as it would be with all 5 modules. So we were able to drive with raw tank drive (plug in joysticks right to the motor), we were able to drive a little better with Motor Torque module (so joystick controlled torque not speed) and we were able to drive forward/backward similar but turn way better at high speeds with our Motor Steering module (motor steering automatically chained to motor torque module)
We were plagued with a fried digital side car (we didn’t know it was fried) which took up weeks 1 through week 3 (oh, you wouldn’t know how frustrated i was just wasting those 2 weeks just because we didn’t try swapping out the digital side car… we got “decent” data but way too noisy. We fried it so that it just didn’t give us good data).
However, since it isn’t necessarily easier to drive with the last two modules enabled, we decided to abandon the whole ordeal.
I’m planning on perfecting it during the summer, but I think whoever drives the robot will just have to acquire amazing driving skills. Jack-knifing ftw.
Maybe I should’ve just not been this ambitious and developed a simple acceleration-limiting algorithm that would’ve taken at most an hour. I don’t know what I should’ve aimed for. Anyhow, I was wondering how your team developed traction control.
Thanks,
Keehun
Team 2502
I’m aware of the one thread that has a large discussion about Traction Control. What I want on this thread is more of a “we’re finished, or we’re in the process of finishing a Traction Control System, and here is what we did” instead of back-and-forth discussion about how to do this.
I will see if I can open source that spec soon. It has bugs, for sure, but if some people squash enough bugs, maybe a lot of people can go sleepless for a couple days and implement it.