Driving Method

Hi guys,
I am looking for a way to have a better control at our drivetrain. We’re trying to allow better steering and much more accurate driving. I heard quite a lot about Cheesy Drive or CulverDrive by team 33 but never fully understood how it works. Can someone provide more information about the way those driving methods work? is there a way to have the same result with a tank drive?

In addition it seems that when both of the Y axes are sending max value( 1, We’re using tank drive) the robot doesn’t drive straight at full speed

Thanks in advance :slight_smile:

The critical thing in getting auto or a button to drive straight is sensing when you aren’t going straight, and by how much. The most common solution is encoders, one set on each side of the robot. Then, instead of setting a voltage level, you set the same speed using either PID classes on the RIO, or through internal PID controls on the motor controller. Even when used with no additional feedback, this is much better than setting voltage. Even better control is possible by also counting the encoder clicks and adjusting. Note that only Jaguar and Talon SRX support controller-side PID.

The other solution is based on a gyroscope or integrated inertial navigation system such as the NavXP. While I haven’t used these, I believe the integrated systems include enough documentation to get you rolling straight, and probably a lot more.


My team has had a similar problem in past years. We have had a lot of success in combining a PID loop and the use of a gyro to have the robot know when it is not going the right direction and fix itself. A few drawbacks, the gyro had to be reset often, we used mecanum drive so we had to turn this feature off every time we tried to strafe, and the PID loop took quite a bit of tuning, as all PID loops do.

Despite the challenges, we had a lot of success with this, so I would definitely recommend it. It was especially useful in our auto periods.

Hope this advice helps!