So an issue we were having at competition at the past two competitions is that because of differences in the drive train, both sides don't drive exactly the same way when the same amount of voltage is applied to each side. This not only affects the drivers' ability to drive but also our autonomous reliability, as with this issue unsolved, our simple drive forward auto can barely place a gear because it doesn't drive forward consistently.
The current solution is just applying an arbitrary dampener to the faster side. Not only does this not work well, its just bad code.
What we want to do, hopefully before District Champs, is use PID to set both sides to the same speed. With the practice bot, we're not limited by 6 hours of unbag time/time being used by other subteams to work on it. Given the sheer amount of stuff that we need to do, expect extended programming meetings.
Anyway, back to the issue, what we want to do is:
[x] Create a branch for tuning drive train PID
[ ] Find full speed in native encoder units
[ ] Find PIDf constants that work
[ ] Implement on master by modifying existing DriveProfile class and Drivetrain methods
AIM Robotics does something similar, but they use position instead of speed.
If we can get this to work, we can replace almost all the throttle mode stuff being used with driving by RPM.
So an issue we were having at competition at the past two competitions is that because of differences in the drive train, both sides don't drive exactly the same way when the same amount of voltage is applied to each side. This not only affects the drivers' ability to drive but also our autonomous reliability, as with this issue unsolved, our simple drive forward auto can barely place a gear because it doesn't drive forward consistently.
The current solution is just applying an arbitrary dampener to the faster side. Not only does this not work well, its just bad code.
What we want to do, hopefully before District Champs, is use PID to set both sides to the same speed. With the practice bot, we're not limited by 6 hours of unbag time/time being used by other subteams to work on it. Given the sheer amount of stuff that we need to do, expect extended programming meetings.
Anyway, back to the issue, what we want to do is:
[x] Create a branch for tuning drive train PID
[ ] Find full speed in native encoder units
[ ] Find PIDf constants that work
[ ] Implement on master by modifying existing DriveProfile class and Drivetrain methods
AIM Robotics does something similar, but they use position instead of speed.
If we can get this to work, we can replace almost all the throttle mode stuff being used with driving by RPM.