More or less yes. So you're using talons. PWM I assume? if so, the following code should be enough to set up your drive.
using only basic classes:
Code:
Talon leftDrive=new Talon(1);
Talon rightDrive=new Talon(2);
//if using gamepad
Joystick gamepad=new Joystick(1);
//if using two individual joysticks
Joystick leftJoy=new Joystick(1);
Joystick leftJoy=new Joystick(2);
Encoder leftEncoder=new Encoder(1,2);
Encoder rightEncoder=new Encoder(1,2);
PIDController leftPID=new PIDController(0.1,0,0, leftEncoder, leftDrive);
PIDController rightPID=new PIDController(0.1,0,0, rightEncoder, rightDrive);
public void robotInit()
{
leftEncoder.setPIDSourceType(PIDSourceType.kDisplacement);
rightEncoder.setPIDSourceType(PIDSourceType.kDisplacement);
rightEncoder.setReverseDirection(true);
rightDrive.setInverted(true); //only one side needs inversion
leftEncoder.reset();
rightEncoder.reset();
leftPID.setOutputRange(-0.75,0.75); //max speed it can set to motors
rightPID.setOutputRange(-0.75,0.75); //max speed it can set to motors
leftPID.enable();
rightPID.enable();
}
public void autonomousPeriodic()
{
leftPID.setSetpoint(400);
rightPID.setSetpoint(400);
//set distance. you can change distance per tick through the encoder
}
public void teleopInit()
{
leftPID.disable();
rightPID.disable();
}
public void teleopPeriodic()
{
//for two joysticks
leftDrive.set(leftJoy.getY());
rightDrive.set(rightJoy.getY());
//for one gamepad
leftDrive.set(gamepad.getRawAxis(1));
rightDrive.set(gamepad.getRawAxis(2));
//replace 1 and 2 axis with actual axis number.
}