Lately, I attended a team meeting where we tested our off-season drivetrain. We noticed that there was significant drift when driving forward. We assumed that most of the drift was because of a manufacturing problem (the axel holes weren’t very precise), this could mean that one side of the drivebase was touching the ground more than the other. And the impreciseness of the axel holes could also explain the different tensioning of the chains on either side of the drive base. I was curious if the different tensioning of the chains could cause significant drift when driving forward?
For the record the drivebase configuration is currently WCD TexasTube using 6wd 6" wheels (omni on the outside and traction in the middle) (the middle wheel diameter is 1/4" more than the omni wheels).
Thanks for the new term. Without knowing how you guys have assembled your drive train, we can’t be sure what’s causing the problem, but I’ll put in my experiences. From what I’ve seen, the one reason for drift is slight misalignment of the bearing holes causing uneven pressure perpendicular to the shaft. This makes one side of the robot need more power to get to the same speed. Thus, if you don’t have an encoder monitoring both sides, they get the same power from the CIMs and the more misaligned side travels slower. Very tight chains could contribute to a binding axle. This can also happen from improperly assembled gearboxes.
An easy way to figure out the location of the problem is to turn both sides of the drive train by hand to see whether one has more friction than the other. Then you can take the gearboxes off and see of they feel different. If so, carefully reassemble the gearboxes (including adequate lube). If not, then the problem most likely lies in the axles of the chained or belted wheels.
One time, we couldn’t discern a notable difference in the friction of either side, but eventually found out that on one side of the drive train were a set of practically new CIMs, while the other gearbox had old CIMs. One of them in particular produced a noticeably smaller output at the same power input, so we switched it out with a newer one and that mostly fixed the problem.
At the core of the problem, however, it can be very hard to effectively control for all of the variables that can cause drift in a drive train. The only surefire way you’ll get great results on a regular basis is using encoders and PID to close the information loop and allow the system to correct for drift itself. PID can’t make up for serious problems with the mechanical side of the drive train, but it works wonders for small symptoms with no discernable cause.
Assuming you’re talking about drift over driving straight for a long period of time, and not “drift” in the form of the robot jerking slightly in one direction as it starts to accelerate. The latter is a direct result of varying chain tension in a way. If you’ve ever seen powerhouse teams set up their robot in autonomous, you’ll sometimes see them push the robot forward and backward a few times as they are lining up their autonomous routines. I believe part of the reason for this is to ensure that both sides of the robot drive base are on the leading “side” of the chain backlash before the match starts, in order to try and eliminate any immediate jerking in one direction at the beginning of autonomous mode.
Drift can occur for a variety of reasons. If your speed controllers are not calibrated correctly, you may actually be outputting different signals to both controllers at full forward / reverse, which would also cause drift. I know back in the days of the Victor 884 this was a leading cause of this drift. Varying mechanical inefficiency is one of them, and chain tension can be a factor there, but if the robot is continuously running in one direction and the chain isn’t over-tensioned it probably won’t play a HUGE part. Differences in gearbox machining / assembly, bearing efficiency, chassis rigidity (this is very important), CG distribution, etc. can all play a role.
All in all, if your chassis drifts about a robot length in one direction across the length of a field, without corrective software, you’re doing very well.
Thanks for all the feedback! I think our problem is a mix of lots of problems. I think we maybe using a mix of new and old motors, that’s probably not a huge issue though. As I expected, the holes for the axel’s are probably causing an issue, this issue has been fixed lately. And I believe that the team plans to use the encoders soon as they are already fixed on the gearboxes, just not programmed yet. We have also purchased half links for the chain to correct the tensioning problem. In the future we will be using the WCP Chain calculator to get the correct length.
Even a lot of slack only gives a small amount of rotational wheel slop. Going steady state in one direction the slop gets taken up almost immediately. If anything, I see a small amount of slack useful for smoothing out imperfections in the drive line.