So let me just start by saying that we’re using spark motor controllers for the motors they are the motors are regular cim motors working with the drive train so the problem we are having is that one side is going faster then the other please help us
Chances are it’s not the motor controller’s fault, unless one side is drastically slower than the other. Like your robot turns in small circles, not just drifts slowly off of straight. Even then, it’s more likely to be wiring or mechanical.
Options:
- The slower side is mechanically bound up some how. power off your robot and turn both sides by hand and see if one is easier than the other.
- If you’re using more than 1 CIM per side, maybe you’re not driving one of them because of a bad motor controller, bad motor, or bad wiring.
- You may not be driving both sides equally. Wire has resistance, resistance reduces voltages, voltage drives the speed of a motor. (It’s like that Mentat chant from Dune.) Anyways, if you have more wire from the PDP to the motor controller and from the motor controller to the motor, that motor will run slower. So check and make sure you have the same amount of wire running to your left and right side motors.
It’s usually a good idea to calibrate your speed controllers, and to make sure your software matches the characteristics of the device you’re using. For example, Victors and Jaguars have different responses to the same PWM signal, and if you try to control a Victor with a Jaguar object you’ll see a bias in one direction.
A couple of other thoughts on this, in addition to the calibration suggestion which is the place to start.
Talons and Victors have “brake/coast” jumper selections, so if yours also have something like that you should make sure they are both set to the same setting.
Also, we found that Victor controllers don’t have quite the same speed curve if you drive one side with reversed polarity, i.e. SetInvertedMotor() or something like that. For most drive systems the motors are oriented in the opposite direction (left/right) on the robot so one side must be inverted. You could try swapping wiring polarity on one side and invert in software so both controllers output the same polarity, and see if the speeds match up better.
If mechanical friction is mismatched, then about all you can do is compensate somehow using either encoders or maybe a gyro to keep the robot moving straight.