How to Make the Robot Drive Forward in Autonomous

This may seem like a simple question but I can’t get it to work. I am using commandbase java.

I have a chassis subsystem here:

package edu.wpi.first.LFRobot2014.subsystems;

import edu.wpi.first.LFRobot2014.RobotMap;
import edu.wpi.first.LFRobot2014.commands.DriveTele;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.RobotDrive;
import edu.wpi.first.wpilibj.command.Subsystem;

/**
 *
 * @author Developer
 */
public class Chassis extends Subsystem {
    // Put methods for controlling this subsystem
    // here. Call these from Commands.
    RobotDrive drive;

    public void initDefaultCommand() {
        // Set the default command for a subsystem here.
        setDefaultCommand(new DriveTele());
    }
    
    public Chassis(){
        drive = new RobotDrive(RobotMap.leftMotorPort, RobotMap.rightMotorPort);
        drive.setSafetyEnabled(false);
    }
    
    public void driveTele(Joystick leftStick, Joystick rightStick){
       drive.tankDrive(leftStick, rightStick);
    }
    
    public void setSpeed(double speed){
        drive.setMaxOutput(speed);
    }

    
}

Do I use this same subsystem(which is the one that I base my TankDrive off of) to write a command that will run the motors for a certain time or do I write up a new subsystem? And what do I have to do code-wise to make this work?

THANKS!

You use the same subsystem.

Add the following method:


public void driveAuton(double speed, double turnRate)
{
	drive.arcadeDrive(speed, turnRate);
}

You can then call this method in a command that you make for autonomous. Feel free to use the turning feature too, although don’t expect to get much accuracy with it (actually, don’t expect to get much accuracy with this method at all).

To implement timing is also pretty simple. In the init of your command, type: setTimeout(timeToRun); (replace timeToRun with the amount of time you want to drive forward. Then, in the isFinished of your command, type: return isTimedOut();

I think this should work…

Add this method to Chassis.java


public void driveAuto(double speed) {
     drive.setLeftRightMotorOutputs(speed, -speed); //The - may be wrong
}

Then make a new command which requires chassis and calls this method. If your auton needs to be more sophisticated than drive forward, you can always add the command to a command group. Anyway, this is just one solution of the many out there.

Okay - THANKS guys!