Quote:
Originally Posted by aldaeron
If I read your post correctly - the signal for the Talons is being set via the smart dashboard instead of the controller, therefore you can rule out the controller.
|
That was my thoughts exactly.
Quote:
Originally Posted by aldaeron
I would unhook the gyro and comment out any code that refers to it.
|
In the videos, we commented out the gyro code, but the gyro was still attached. Would that affect the driving?
Quote:
Originally Posted by aldaeron
- Are the transmissions greased properly and equally? Does one have a lot more old yucky grease?
|
They are greased properly.
Quote:
Originally Posted by aldaeron
- Are the gears inside each transmission identical?
|
Yes.
Quote:
Originally Posted by aldaeron
- Can you spin the gearboxes by hand with approximately the same force without motors while on blocks?
|
Yes.
Quote:
Originally Posted by aldaeron
- When on blocks and set to coast - if you go from 100% power to 0% power do the wheels stop at about the same time?
|
In the videos, the Talons were set on break mode, but when set on coast, the wheels do stop at about the same time.
Quote:
Originally Posted by aldaeron
- Are all the motors and controllers the same vintage (i.e. is one motor re-used from 2013)?
|
Unfortunately, we didn't document when we got the motors, so I'm not sure if they are the same vintage. However, the labels on the CIMs are different. There's a picture of it attached.
Quote:
Originally Posted by aldaeron
What encoders are you using?
|
We are using: US Digital E4P-250-250-N-S-D-D-B encoder (am-0174)
Quote:
Originally Posted by aldaeron
Did you calibrate the Talons on blocks on the actual robot or calibrate them on a different electronics setup and then add them to the chassis?
|
We calibrated the Talons on the actual robot.
Quote:
Originally Posted by aldaeron
Are the PWM cables in good shape and making good contact?
|
I've checked the cables, and they seem to be in good shape.
Quote:
Originally Posted by aldaeron
With the robot on blocks - are the Voltages on the outputs of the Talons very close to each other?
|
Yes.
Quote:
Originally Posted by Al Skierkiewicz
Rapta,
We don't really have enough info to pinpoint the exact cause. There are some variables that bite all teams in working on a straight auto mode. the fact that your robot turns one direction in full throttle and the other direction at less that full throttle seems to indicate an issue with the sensors. If you are using the common optical encoders on the transmissions, check that you have the encoder wheels matched and in a range for the speed that you expect. If the encoded output is very low in repitition rate, a random single error in count will grow over the distance the robot travels. If the count is too high, when you are at or near full throttle, the count may actually drop out. There is a maximum and minimum specification on these encoders. If both sides are identical and you believe the count (tach) is accurate, then the robot can only drift if there is slippage in the drive system downstream from the sensor. You should be able to get into some form of debug to watch the counts returned by the individual sensors to see if you software is actually trying to correct for the difference. Some transmissions that have a pickoff for a rotary encoder have slippage in the pickoff shaft.
|
The code related to the encoders was also commented out, so I don't think it would be the issue.
Quote:
Originally Posted by tr6scott
Is it a two motor drive base, or a 4 motor drive base?
|
It is a 4 motor drive base.
Quote:
Originally Posted by tr6scott
EDIT: Also make sure you have the correct motor controller in the begin.vi too.
|
We use Java to program the robot, and the talons are initiated via this code:
Code:
Talon flTalon;
Talon frTalon;
Talon blTalon;
Talon brTalon;
/**
* Create a new instance of the Drive class.
*/
public Drive_Simple() {
flTalon = new Talon(RobotMap.DRIVE_MODULE, RobotMap.FL_WHEEL);
frTalon = new Talon(RobotMap.DRIVE_MODULE, RobotMap.FR_WHEEL);
blTalon = new Talon(RobotMap.DRIVE_MODULE, RobotMap.BL_WHEEL);
brTalon = new Talon(RobotMap.DRIVE_MODULE, RobotMap.BR_WHEEL);
System.out.println("Module: "+ RobotMap.DRIVE_MODULE +" used for drive.");
System.out.println("FL wheel at: "+ RobotMap.FL_WHEEL +" FR wheel at: "+ RobotMap.FR_WHEEL);
System.out.println("BL wheel at: "+ RobotMap.BL_WHEEL +" BR wheel at: "+ RobotMap.BR_WHEEL);
robotDrive = new RobotDrive(flTalon, blTalon, frTalon, brTalon);
(etc...)
Edit: Forgot to mention that we have tried using a PID that uses the gyro. Well, the P part of the PID acronym. Anyways, using the PID, the robot drives mostly straight. The P value isn't exact yet, though.