Need help with Auto Chooser ASAP!!!

We are attempting to program our Sendable Chooser but cannot seem to get it in working order. Could you please take a look and see if you can find anything?

Github:https://github.com/Phred7/SentinelSteamworks/blob/master/src/org/usfirst/frc2906/SentinelSteamworks/Robot.java

Please Help ASAP!

I don’t really understand what you tried to do there, you created the function to put the stuff in the smartDashboard but you never called it. That’s not really the way to do it.

Try this:


// RobotBuilder Version: 2.0
//
// This file was generated by RobotBuilder. It contains sections of
// code that are automatically generated and assigned by robotbuilder.
// These sections will be updated in the future when you export to
// Java from RobotBuilder. Do not put any code or make any change in
// the blocks indicating autogenerated code or it will be lost on an
// update. Deleting the comments indicating the section will prevent
// it from being updated in the future.

package org.usfirst.frc2906.SentinelSteamworks;

import edu.wpi.first.wpilibj.CameraServer;
import edu.wpi.first.wpilibj.Encoder;
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 edu.wpi.first.wpilibj.networktables.NetworkTable;
import edu.wpi.first.wpilibj.smartdashboard.SendableChooser;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;

import org.usfirst.frc2906.SentinelSteamworks.commands.*;
import org.usfirst.frc2906.SentinelSteamworks.subsystems.*;

/**
 * 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 {

	Command autonomousCommand;
	Command AutoNone;
	Command AutoGearOnLeft;
	Command AutoGearOnRight;
	Command AutoGearStrait;

	public static OI oi;
	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
	public static DriveTrain driveTrain;
	public static GearMech gearMech;
	public static BallPickup ballPickup;
	public static Lift lift;
	public static Encoder leftDrive;
	public static Encoder rightDrive;

	SendableChooser<Command> auto = new SendableChooser<>();

	final String autoNone = "No Auto";
	final String autoGearOnLeft = "GearOnLeft";
	final String autoGearOnRight = "GearOnRight";
	final String autoGearOnStraight = "GearOnAhead";

	public static CameraServer cameraServer;

	// END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS

	/**
	 * This function is run when the robot is first started up and should be
	 * used for any initialization code.
	 */
	public void robotInit() {
		RobotMap.init();
		// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=CONSTRUCTORS
		driveTrain = new DriveTrain();
		gearMech = new GearMech();
		ballPickup = new BallPickup();
		lift = new Lift();

		NetworkTable table = NetworkTable.getTable("SmartDashboard");
		table.putStringArray("Auto List", autoList);

		auto = new SendableChooser();
		auto.addDefault(autoNone, new AutoNone());
		auto.addObject(autoGearOnLeft, new AutoGearOnLeft());
		auto.addObject(autoGearOnRight, new AutoGearOnRight());
		auto.addObject(autoGearOnStraight, new AutoGearStrait());
		SmartDashboard.putData("Auto modes", auto);

		// 
		

		// END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=CONSTRUCTORS
		// OI must be constructed after subsystems. If the OI creates Commands
		// (which it very likely will), subsystems are not guaranteed to be
		// constructed yet. Thus, their requires() statements may grab null
		// pointers. Bad news. Don't move it.
		oi = new OI();

		// instantiate the command used for the autonomous period
		// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=AUTONOMOUS

		// autonomousCommand = new AutonomousCommand();

		// END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=AUTONOMOUS
	}
	
	/**
	 * This function is called when the disabled button is hit. You can use it
	 * to reset subsystems before shutting down.
	 */

	public void disabledInit() {

	}

	public void disabledPeriodic() {
		Scheduler.getInstance().run();
	}

	public void autonomousInit() {
		autonomousCommand = (Command) auto.getSelected();
		// schedule the autonomous command (example)
		Robot.driveTrain.ResetEncoders();

		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();
		SmartDashboard.putNumber("encoder value right", RobotMap.encoderRight.get());
		SmartDashboard.putNumber("encoder value left", RobotMap.encoderLeft.get());
	}

	/**
	 * This function is called periodically during test mode
	 */
	public void testPeriodic() {
		LiveWindow.run();
	}

}


Alright Thank you, It appears to be working properly but I can’t be sure until I test it on this years robot. If you could please double check our code to assure the commands and auto chooser are working properly?

Can’t you test it on last year’s robot?

It doesnt have encoders or anywhere near the systems that ar required in our auto

You can test the sendable chooser. You just need it to do something (display on the Driver Station) that it is executing option 1, 2, 3, etc.