Hello, sorry to be posting yet again, but this time it’s another problem. I’m trying to get autonomous to simply just drive, not in a straight line, but just drive in general. The rio doesn’t throw me any errors or anything, just nothing happens when I run my autonomous command. Here’s my code
Drive subsystem
package org.usfirst.frc.team219.robot.subsystems;
import edu.wpi.first.wpilibj.CANTalon;
import edu.wpi.first.wpilibj.command.Subsystem;
public class Drive extends Subsystem{
private final int MOTOR_PORT_FL = 1;
private final int MOTOR_PORT_BL = 2;
private final int MOTOR_PORT_FR = 4;
private final int MOTOR_PORT_BR = 3;
CANTalon talonFL = new CANTalon(MOTOR_PORT_FL);
CANTalon talonBL = new CANTalon(MOTOR_PORT_BL);
CANTalon talonFR = new CANTalon(MOTOR_PORT_FR);
CANTalon talonBR = new CANTalon(MOTOR_PORT_BR);
//RobotDrive robotDrive = new RobotDrive(talonFL,talonBL,talonFR,talonBR);
@Override
protected void initDefaultCommand() {
// TODO Auto-generated method stub
}
//command for auton drive
public void driveLR(double leftSpeed, double rightSpeed){
setTalonSpeed(leftSpeed,rightSpeed);
}
public void setTalonSpeed(double leftSpeed, double rightSpeed){
talonFL.set(leftSpeed);
talonBL.set(leftSpeed);
talonFR.set(rightSpeed);
talonBR.set(rightSpeed);
}
}
autonomous drive command
package org.usfirst.frc.team219.robot.commands;
import org.usfirst.frc.team219.robot.Robot;
import edu.wpi.first.wpilibj.command.Command;
public class AutonDrive extends Command{
@Override
protected void initialize() {
// TODO Auto-generated method stub
}
@Override
protected void execute() {
Robot.drive.driveLR(.25, .25);
}
@Override
protected boolean isFinished() {
// TODO Auto-generated method stub
return true;
}
@Override
protected void end() {
// TODO Auto-generated method stub
}
@Override
protected void interrupted() {
// TODO Auto-generated method stub
}
}
Robot Class
package org.usfirst.frc.team219.robot;
import edu.wpi.first.wpilibj.IterativeRobot;
import edu.wpi.first.wpilibj.command.Command;
import edu.wpi.first.wpilibj.command.Scheduler;
import edu.wpi.first.wpilibj.livewindow.LiveWindow;
import org.usfirst.frc.team219.robot.commands.AutonDrive;
import org.usfirst.frc.team219.robot.subsystems.Drive;
import edu.wpi.first.wpilibj.smartdashboard.SendableChooser;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
/**
* The VM is configured to automatically run this class, and to call the
* functions corresponding to each mode, as described in the IterativeRobot
* documentation. If you change the name of this class or the package after
* creating this project, you must also update the manifest file in the resource
* directory.
*/
public class Robot extends IterativeRobot {
public static OI oi;
public static final Drive drive = new Drive();
Command autonomousCommand;
SendableChooser chooser;
/**
* This function is run when the robot is first started up and should be
* used for any initialization code.
*/
public void robotInit() {
oi = new OI();
chooser = new SendableChooser();
chooser.addDefault("Auton Drive", new AutonDrive());
// chooser.addObject("My Auto", new MyAutoCommand());
SmartDashboard.putData("Auto mode", chooser);
}
/**
* This function is called once each time the robot enters Disabled mode.
* You can use it to reset any subsystem information you want to clear when
* the robot is disabled.
*/
public void disabledInit(){
}
public void disabledPeriodic() {
Scheduler.getInstance().run();
}
/**
* This autonomous (along with the chooser code above) shows how to select between different autonomous modes
* using the dashboard. The sendable chooser code works with the Java SmartDashboard. If you prefer the LabVIEW
* Dashboard, remove all of the chooser code and uncomment the getString code to get the auto name from the text box
* below the Gyro
*
* You can add additional auto modes by adding additional commands to the chooser code above (like the commented example)
* or additional comparisons to the switch structure below with additional strings & commands.
*/
public void autonomousInit() {
autonomousCommand = (Command) chooser.getSelected();
/* String autoSelected = SmartDashboard.getString("Auto Selector", "Default");
switch(autoSelected) {
case "My Auto":
autonomousCommand = new MyAutoCommand();
break;
case "Default Auto":
default:
autonomousCommand = new ExampleCommand();
break;
} */
// schedule the autonomous command (example)
if (autonomousCommand != null) autonomousCommand.start();
}
/**
* This function is called periodically during autonomous
*/
public void autonomousPeriodic() {
Scheduler.getInstance().run();
}
public void teleopInit() {
// This makes sure that the autonomous stops running when
// teleop starts running. If you want the autonomous to
// continue until interrupted by another command, remove
// this line or comment it out.
if (autonomousCommand != null) autonomousCommand.cancel();
}
/**
* This function is called periodically during operator control
*/
public void teleopPeriodic() {
Scheduler.getInstance().run();
}
/**
* This function is called periodically during test mode
*/
public void testPeriodic() {
LiveWindow.run();
}
}