We’re encountering a problem, we are currently using Rhino drive, with 2 motors per side. Sometimes one set of motors runs faster than the other. When that happens we use a differential modifier on the RobotDrive class.
Example:
Robot Drive(0.8*DIFFERENTIAL, 0.8)
and that makes the robot drive straight. The problem is that the hardware changes slightly between different sessions, so that means the DIFFERENTIAL modifier needs to change. Has anyone experimented with doing this automatically using encoders or anything else? Sorry, if the post isn’t too clear, if you have questions I’m willing to supply answers.
Edit: We are using tank drive style, not arcade style.
Encoders could work, using a PID to compensate the turn. This is complicated but it does work. Using a gyroscope works as well.
I always recommend fixing the problem mechanically though. If it’s such a problem that a driver can’t compensate themselves, you have an issue on your hands that should be physically fixed.
Mostly the first two problems you posted. When we drive in autonomous, sometimes it doesn’t drive straight. Also with the motors being off, the drivers are having to attempt to manually compensate for differing speeds on the left and right set of motors. On the robot we are testing, we are using Jaguars set up in PWM (standard) mode. We have encoders and a gyro. We’ve checked out the gearboxes, and made sure that all the treads are tight. We think it might be an inherent differences in the motors themselves.
We just got our frame assembled, and we were going to disassemble the tracks when we migrated them from the test bot to the real bot. I’ll report back sometime during the weekend when this happens.
We have a similar problem with our robot. One of the gear boxes on one side is tighter. It doesn’t seem to cause problems when manually driving, but long distances in autonomous mode would cause it to veer slightly.
We corrected by designing an algorithm using the gyro which we can set an angle and the PI controller will correct. Unfortunately it isn’t perfect because the gyros drift so bad.
We were having good luck scoring a goal autonomously and we made it to the finals. After turning the robot on the announcers would talk so long that the gyro would start drifting like crazy before the robots started. The reference library takes 5 seconds to calibrate the gyro. I wonder if that could be reduced.
I know reading the gyro doesn’t take that long, the calibration routine takes 5 seconds on the 450 gyro. That is when using the WPI class.
When it drifts it really takes off. I reset the gyro at the very beginning, but if it is already drifting it will be off a few degrees in a matter of a few seconds. Ideally I would like to calibrate the gyro in my autonomous init.
I wonder if it would be better to bring the robot up to the course powered up so all of the electronics are warm. Then toggle the power after placement so the calibration is done while everything is somewhat warm.