Greetings fellow programmers,
We have been trying for a while to get this nice Talon SRX to work in closed loop without any success. Any help will be appreciated!
We have a Talon SRX connected to a motor and magnetic analog encoder (thought a voltage divider).
Here’s what we got to work:
- WHen control mode is set to PercentVbus everything seems fine.
- Raw Analog input seems to be good as well, ranging from 0 to around 1023 depending on the actual encoder position.
But when FeedbackDevice is set to AnalogPot or AnalogEncoder and…
-
ControlMode set to “Position”: motor doesnt stop when position reach setpoin. Speed varies occasionaly, direction changes occasionnaly.
-
ControlMode set tp “Speed”: Speed is not constant and changing setpoints to 20-40-20 does not actually change speed.
Here is a code snippet:
public Robot() {
motor = new CANTalon(1); // Initialize the CanTalonSRX on device 1.
motor.changeControlMode(CANTalon.ControlMode.Position);
motor.setFeedbackDevice(CANTalon.FeedbackDevice.AnalogPot);
motor.setPID(0.1, 0.001, 1.0, 0.0001, 1024, 5, 0);
motor.reverseSensor(true);
motor.reverseOutput(false);
motor.ClearIaccum();
//motor.clearStickyFaults();
motor.enableLimitSwitch(false, false);
motor.enableControl();
}
public void operatorControl() {
while (isOperatorControl() && isEnabled()) {
System.out.println("***************************************");
motor.set(10);
waitAndPrintValues(10);
System.out.println("***************************************");
motor.set(800);
waitAndPrintValues(10);
System.out.println("***************************************");
motor.set(400);
waitAndPrintValues(10);
}
}
And the output looks like:
Analog in position: 825 Analog raw: 825 Setpoint: 10.0 Position: -824.0 Encoder pos: 0 Error: 834
Analog in position: 743 Analog raw: 743 Setpoint: 10.0 Position: -734.0 Encoder pos: 0 Error: 742
Analog in position: 507 Analog raw: 507 Setpoint: 10.0 Position: -484.0 Encoder pos: 0 Error: 498
Analog in position: 154 Analog raw: 154 Setpoint: 10.0 Position: -133.0 Encoder pos: 0 Error: 147
Analog in position: 762 Analog raw: 762 Setpoint: 10.0 Position: -740.0 Encoder pos: 0 Error: 752
Analog in position: 333 Analog raw: 333 Setpoint: 10.0 Position: -311.0 Encoder pos: 0 Error: 321
Analog in position: 909 Analog raw: 909 Setpoint: 10.0 Position: -889.0 Encoder pos: 0 Error: 897
Analog in position: 484 Analog raw: 484 Setpoint: 10.0 Position: -464.0 Encoder pos: 0 Error: 481
Analog in position: 48 Analog raw: 48 Setpoint: 10.0 Position: -28.0 Encoder pos: 0 Error: 43
Analog in position: 633 Analog raw: 633 Setpoint: 10.0 Position: -614.0 Encoder pos: 0 Error: 627
Analog in position: 196 Analog raw: 196 Setpoint: 10.0 Position: -180.0 Encoder pos: 0 Error: 190
Analog in position: -249 Analog raw: 775 Setpoint: 10.0 Position: 264.0 Encoder pos: 0 Error: -254
Analog in position: -678 Analog raw: 346 Setpoint: 10.0 Position: 695.0 Encoder pos: 0 Error: -677
Analog in position: -103 Analog raw: 921 Setpoint: 10.0 Position: 119.0 Encoder pos: 0 Error: -103
Analog in position: -532 Analog raw: 492 Setpoint: 10.0 Position: 530.0 Encoder pos: 0 Error: -533
Analog in position: -970 Analog raw: 54 Setpoint: 10.0 Position: 984.0 Encoder pos: 0 Error: -972
Analog in position: -1011 Analog raw: 13 Setpoint: 10.0 Position: 1011.0 Encoder pos: 0 Error: -998
Analog in position: -835 Analog raw: 189 Setpoint: 10.0 Position: 838.0 Encoder pos: 0 Error: -823
Analog in position: -488 Analog raw: 536 Setpoint: 10.0 Position: 495.0 Encoder pos: 0 Error: -473
Analog in position: -70 Analog raw: 954 Setpoint: 10.0 Position: 78.0 Encoder pos: 0 Error: -55
Analog in position: -648 Analog raw: 376 Setpoint: 800.0 Position: 656.0 Encoder pos: 0 Error: -630
Analog in position: -220 Analog raw: 804 Setpoint: 800.0 Position: 230.0 Encoder pos: 0 Error: 578
Analog in position: -802 Analog raw: 222 Setpoint: 800.0 Position: 813.0 Encoder pos: 0 Error: -4
Analog in position: -371 Analog raw: 653 Setpoint: 800.0 Position: 381.0 Encoder pos: 0 Error: 428
Analog in position: -91 Analog raw: 986 Setpoint: 800.0 Position: 44.0 Encoder pos: 0 Error: 762
Analog in position: -820 Analog raw: 204 Setpoint: 800.0 Position: 769.0 Encoder pos: 0 Error: 34
Analog in position: -538 Analog raw: 486 Setpoint: 800.0 Position: 496.0 Encoder pos: 0 Error: 308
Analog in position: -328 Analog raw: 696 Setpoint: 800.0 Position: 297.0 Encoder pos: 0 Error: 501
Analog in position: -218 Analog raw: 806 Setpoint: 800.0 Position: 220.0 Encoder pos: 0 Error: 582
Analog in position: -227 Analog raw: 797 Setpoint: 800.0 Position: 235.0 Encoder pos: 0 Error: 565
Analog in position: -331 Analog raw: 693 Setpoint: 800.0 Position: 358.0 Encoder pos: 0 Error: 440
Analog in position: -535 Analog raw: 489 Setpoint: 800.0 Position: 574.0 Encoder pos: 0 Error: 223
Analog in position: -793 Analog raw: 231 Setpoint: 800.0 Position: 833.0 Encoder pos: 0 Error: -31
Analog in position: -1058 Analog raw: 990 Setpoint: 800.0 Position: 1089.0 Encoder pos: 0 Error: -289
Analog in position: -1240 Analog raw: 808 Setpoint: 800.0 Position: 1260.0 Encoder pos: 0 Error: -455
Analog in position: -1324 Analog raw: 724 Setpoint: 800.0 Position: 1328.0 Encoder pos: 0 Error: -528
Analog in position: -1321 Analog raw: 727 Setpoint: 800.0 Position: 1313.0 Encoder pos: 0 Error: -513
Analog in position: -1219 Analog raw: 829 Setpoint: 800.0 Position: 1198.0 Encoder pos: 0 Error: -399
Analog in position: -2046 Analog raw: 2 Setpoint: 800.0 Position: 2032.0 Encoder pos: 0 Error: -1232
Analog in position: -2001 Analog raw: 47 Setpoint: 800.0 Position: 1996.0 Encoder pos: 0 Error: -1196
Analog in position: -1966 Analog raw: 82 Setpoint: 400.0 Position: 1961.0 Encoder pos: 0 Error: -1161
Analog in position: -1918 Analog raw: 130 Setpoint: 400.0 Position: 1911.0 Encoder pos: 0 Error: -1511
Analog in position: -1870 Analog raw: 178 Setpoint: 400.0 Position: 1863.0 Encoder pos: 0 Error: -1463
Analog in position: -1824 Analog raw: 224 Setpoint: 400.0 Position: 1818.0 Encoder pos: 0 Error: -1418
Analog in position: -1779 Analog raw: 269 Setpoint: 400.0 Position: 1773.0 Encoder pos: 0 Error: -1374
Analog in position: -1737 Analog raw: 311 Setpoint: 400.0 Position: 1731.0 Encoder pos: 0 Error: -1329
Analog in position: -1696 Analog raw: 352 Setpoint: 400.0 Position: 1689.0 Encoder pos: 0 Error: -1290
Analog in position: -1656 Analog raw: 392 Setpoint: 400.0 Position: 1650.0 Encoder pos: 0 Error: -1250
Analog in position: -1617 Analog raw: 431 Setpoint: 400.0 Position: 1614.0 Encoder pos: 0 Error: -1213
Analog in position: -1606 Analog raw: 442 Setpoint: 400.0 Position: 1606.0 Encoder pos: 0 Error: -1207
Analog in position: -1605 Analog raw: 443 Setpoint: 400.0 Position: 1605.0 Encoder pos: 0 Error: -1207
Analog in position: -1605 Analog raw: 443 Setpoint: 400.0 Position: 1605.0 Encoder pos: 0 Error: -1207
Analog in position: -1605 Analog raw: 443 Setpoint: 400.0 Position: 1605.0 Encoder pos: 0 Error: -1207
Any idea someone?
- Eric