Red Robot Code: could not instantiate robot

Hello everybody! We switched all of our code from C++ to Java last week and consequently have little experience with Java. Basically when we deploy our Java code we get the error, “ERROR: Could not instantiate robot org.usfirst.frc.team2637.robot.Robot!” followed by a lot of gibberish. We know that the error is in our code and not the roboRio because the example code that FRC provides does not give us this error. Here is our code:

package Steamworks;

import edu.wpi.first.wpilibj.*;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;

public class Robot
{
XboxController xboxDrive;
XboxController xboxAux;
Joystick joystickTemp;
Hardware hardware;
Drive driver;
double kickerSpeed;
double flapSpeed;
boolean notFinished;
double circumference;
double lFlapOpen,rFlapOpen,lFlapClosed,rFlapClosed;

Robot()
{
	xboxDrive = new XboxController(0);
	xboxAux = new XboxController(1);
	joystickTemp = new Joystick(2);
	hardware= new Hardware();
	driver= new Drive();              //initiates robot components
	kickerSpeed = 0.6;
	flapSpeed = 0.5;
	notFinished = true;
	circumference = 8;
	lFlapOpen =.31;
	rFlapOpen =.54;
	lFlapClosed = .424;
	rFlapClosed = .42;
}
public void resetCounters()
{
	hardware.OLScounter.reset();
	hardware.ORScounter.reset();
	hardware.CLScounter.reset();
	hardware.CRScounter.reset();
	hardware.KKLScounter.reset();
	hardware.KNKLScounter.reset();
}
public boolean isSwitchSetOLSC()
{
	int value = hardware.OLScounter.get();
	hardware.OLScounter.reset();
	return value > 0;
}
public boolean isSwitchSetORSC()
{
	int value = hardware.ORScounter.get();
	hardware.ORScounter.reset();
	return value > 0;
}
public boolean isSwitchSetCLSC ()
{
	int value = hardware.CLScounter.get();
	hardware.CLScounter.reset();
	return value > 0;
}
public 	boolean isSwitchSetCRSC ()
{
	int value = hardware.CRScounter.get();
	hardware.CRScounter.reset();
	return value > 0;
}
public 	boolean isSwitchSetKKLSC ()
{
	int value = hardware.KKLScounter.get();
	hardware.KKLScounter.reset();
	return value > 0;
}
public 	boolean isSwitchSetKNKLSC ()
{
	int value = hardware.KNKLScounter.get();
	hardware.KNKLScounter.reset();
	return value > 0;
}
public void kick ()
{
	//if (hardware.gearOpenLS.Get() == true && hardware.gearOpenRS.Get() == true)
	//{

	//hardware.kicker.Set(kickerSpeed); // start kicking
	hardware.KKLScounter.reset();
	hardware.kickerTimer.reset();
	while (!isSwitchSetKKLSC()/*hardware.kickerKickedLS.Get() == 0*/) // wait until you hit the max kick limit switch
	{
		hardware.kicker.set(kickerSpeed);
	}
	hardware.kicker.set(0);
	hardware.KNKLScounter.reset(); // make sure that the bottom limit switch is reset so you can move again
	kickerSpeed = .2;
	hardware.kickerTimer.start();
	//hardware.kicker.Set(-kickerSpeed); // move the kicker back to the original position
	while (hardware.kickerTimer.get() < 3/*!isSwitchSetKNKLSC()hardware.kickerNotKickedLS.Get() == 0*/) // wait until you hit the original position of the kicker
	{
		hardware.kicker.set(-kickerSpeed);
	}

	hardware.kickerTimer.reset();
	hardware.KKLScounter.reset(); // reset the top limit switch so it can be used again
	hardware.kicker.set(0); // stop the kicker
	kickerSpeed = .6;
	//}

}
public void releaseGear()
{
	notFinished = true;
	while(notFinished)
	{
		if (!hardware.gearCloseLS.get() && hardware.gearCloseRS.get())
		{
			closeFlaps();
		}

		openFlaps();

		if (isKickReady())
		{
			kick();
			notFinished = false;
		}
	}

	while (!hardware.gearButton.get())
	{

	}
	closeFlaps();
	notFinished = true;
}
public void gearSequence()
{
	openFlaps();
	kick();
	closeFlaps();	
}

public boolean gearButtonPressed ()
{
	//return ((hardware.gearOpenLS.GetChannel() == 1) && (hardware.gearOpenRS.GetChannel() == 1));
	//return (isSwitchSetOLSC() && isSwitchSetORSC());
	//return ((hardware.gearOpenLS.Get() == true) && (hardware.gearOpenRS.Get() == true));
	return (hardware.gearOpenLS.get() && hardware.gearOpenRS.get());
}
public boolean isKickReady ()
{
	//return ((hardware.gearOpenLS.GetChannel() == 1) && (hardware.gearOpenRS.GetChannel() == 1));
	//return (isSwitchSetOLSC() && isSwitchSetORSC());
	//return ((hardware.gearOpenLS.Get() == true) && (hardware.gearOpenRS.Get() == true));
	return (hardware.gearOpenLS.get() && hardware.gearOpenRS.get());
}
public boolean isKickReadyL ()
{
	//return ((hardware.gearOpenLS.GetChannel() == 1) && (hardware.gearOpenRS.GetChannel() == 1));
	//return (isSwitchSetOLSC() && isSwitchSetORSC());
	return (hardware.gearOpenLS.get() == true);
}
public boolean isKickReadyR ()
{
	//return ((hardware.gearOpenLS.GetChannel() == 1) && (hardware.gearOpenRS.GetChannel() == 1));
	//return (isSwitchSetOLSC() && isSwitchSetORSC());
	return (hardware.gearOpenRS.get() == true);
}
public boolean isGearReady ()
{
	//return ((hardware.gearCloseLS.kDigitalChannels() == 1) && (hardware.gearCloseRS.GetChannel() == 1));
	//return (isSwitchSetCLSC() && isSwitchSetCRSC());
	//return ((hardware.gearCloseLS.Get() == true) && (hardware.gearCloseRS.Get() == true));
	return (hardware.gearCloseLS.get() && hardware.gearCloseRS.get());
}
public boolean isGearReadyL ()
{
	//return ((hardware.gearCloseLS.kDigitalChannels() == 1) && (hardware.gearCloseRS.GetChannel() == 1));
	//return (isSwitchSetCLSC() && isSwitchSetCRSC());
	return (hardware.gearCloseLS.get() == true);
}

public boolean isGearReadyR ()
{
	//return ((hardware.gearCloseLS.kDigitalChannels() == 1) && (hardware.gearCloseRS.GetChannel() == 1));
	//return (isSwitchSetCLSC() && isSwitchSetCRSC());
	return (hardware.gearCloseRS.get() == true);
}
public 	void openFlaps()
{
	while(!isKickReady())
	{
		if (!isKickReadyL())
		{
			hardware.gearL.set(-flapSpeed);
		}
		else
		{
			hardware.gearL.set(0);
		}
		if (!isKickReadyR())
		{
			hardware.gearR.set(flapSpeed);
		}
		else
		{
			hardware.gearR.set(0);
		}
	}

	hardware.gearL.set(0);
	hardware.gearR.set(0);
}
public 	void closeFlaps()
{
	while(!isGearReady())
	{
		if (!isGearReadyL())
		{
			hardware.gearL.set(flapSpeed);
		}
		else
		{
			hardware.gearL.set(0);
		}
		if (!isGearReadyR())
		{
			hardware.gearR.set(-flapSpeed);
		}
		else
		{
			hardware.gearR.set(0);
		}
	}

	hardware.gearL.set(0);
	hardware.gearR.set(0);
}

double PID(int taget_spd)
{
	int deltaT = 2;
	double kP = SmartDashboard.getNumber("kP", 0.8);
	double kI = SmartDashboard.getNumber("kI", 0.45);
	double kD = SmartDashboard.getNumber("kD", 0.1);
	double P,I,D;
	double targetSpd = SmartDashboard.getNumber("Target Speed", 200);
	double power, currentSpd = 0,deltaspd; //might need to add old speed
	double error = 0,oldError = 0,integralErr = 0;
	double derivative;
	double errThreshhold = 1;
	currentSpd = hardware.shooterEncoder.getRate(); ///  get current velocity or whatever the velocity function is not an error
	
	error = targetSpd-currentSpd;                                     //calculate error
	
	integralErr += error;                                            //calculate integral error
	
	if(integralErr>errThreshhold)
	{
		integralErr = errThreshhold;
	}
	else  if(integralErr<-errThreshhold)
	{
		integralErr = -errThreshhold;
	}
	
	deltaspd = error-oldError;
	derivative = deltaspd/deltaT;
	
	P = kP*error;        // PID constant scaling
	I = kI*integralErr;
	D = kD*derivative;
	
	power = P + I + D;
	
	oldError = error;
	
	return power;
}
public void turnRight (double d)
{
	Timer.delay(.3); //pause code for a time in seconds
	hardware.navx.reset();
	double startingAngle = hardware.navx.getAngle(),power = 1;

	while (startingAngle+d-0.5 > hardware.navx.getAngle() && power >= 0.35)
	{
		double currAngle = hardware.navx.getAngle();
		power = 1/(0.03115*currAngle+1);
		driver.autoDrive(power,-power);

		SmartDashboard.putNumber("Navx reading",hardware.navx.getAngle());
	}
	while(startingAngle+d-0.5 > hardware.navx.getAngle())
	{
		driver.autoDrive(power,-power);
	}
	driver.autoDrive(0,0);
	Timer.delay(.3);
}
public void turnLeft (double turnDegrees)
{
	Timer.delay(.3); //wait for a time in milliseconds
	hardware.navx.reset();
	double startingAngle = hardware.navx.getAngle(),power = 1;

	while (startingAngle+turnDegrees-0.5 > Math.abs(hardware.navx.getAngle()) && power >= 0.35)
	{
		double currAngle = Math.abs(hardware.navx.getAngle());
		power = 1/(0.03115*currAngle+1);
		driver.autoDrive(-power,power);

		SmartDashboard.putNumber("Navx reading",hardware.navx.getAngle());
	}
	while(startingAngle+turnDegrees-0.5 > Math.abs(hardware.navx.getAngle()))
	{
		driver.autoDrive(-power,power);
	}
	driver.autoDrive(0,0);
	Timer.delay(.3);
}
public void PDStraightDrive(double speed, double distance, int TReset)
{
	double kP = -SmartDashboard.getNumber("kP", .45);
	double kD = -SmartDashboard.getNumber("kD", .25);

	int deltaTime = TReset; //milliseconds
	hardware.navx.reset();
	hardware.wheelEncoder.reset();

	double error = 0;
	double errornew;
	double change;
	double derivitive;

	while(hardware.wheelEncoder.getDistance() <= distance)
	{
		SmartDashboard.putNumber("Encoder Reading",hardware.wheelEncoder.getDistance());
		errornew = hardware.navx.getAngle();

		change = errornew-error;

		derivitive = change/(double)deltaTime;

		driver.autoArcade(-speed, (kP*errornew + kD*derivitive));

		error = errornew;
		SmartDashboard.putNumber("CURRENT ANGLE", hardware.navx.getAngle());
	}
	driver.autoArcade(0,0);
}
public void toggleHopperServo()
{
	if(SmartDashboard.getNumber("Hopper servo position", 1) == 1)
	{
		if(xboxAux.getBButton())
		{
			hardware.hopper.set(1);
			SmartDashboard.putNumber("Hopper servo position", 0);
		}
	}
	else if(SmartDashboard.getNumber("Hopper servo position", 0) == 0)
	{
		if(xboxAux.getBButton())
		{
			hardware.hopper.set(0);
			SmartDashboard.putNumber("Hopper servo position", 1);
		}
	}
}
public 	void RobotInit()
{
	//autonomous variables

	SmartDashboard.putNumber("kP", .45);
	SmartDashboard.putNumber("kD", .25);
	SmartDashboard.putNumber("Wheel Diameter (in inches)", 8);
	SmartDashboard.putNumber("starting position",1);
	SmartDashboard.putString("alliance color", "blue");
	hardware.Fleft.setExpiration(30);
	hardware.Rleft.setExpiration(30);
	hardware.Fright.setExpiration(30);
	hardware.Rright.setExpiration(30);
}
public 	void AutonomousInit()
{
	int Treset = 4;
	double normalSpeed = 0.6;
	circumference = Math.PI*SmartDashboard.getNumber("Wheel Diameter (in inches)", 8);
	hardware.wheelEncoder.setDistancePerPulse(circumference/(180*4.74));     //prepares encoder for autonomous

	int startPos = (int) SmartDashboard.getNumber("starting position", 1);
	PDStraightDrive(normalSpeed,72,Treset);
	//turnRight(90);
	//turnLeft(90);
	//squirrels gearSequence();

	/*if (SmartDashboard.getString("alliance color","blue")=="blue")
	{
		switch(startPos)
		{
		case 1:// left blue
			PDStraightDrive(normalSpeed,72.4,Treset);
			turnRight(60);
			PDStraightDrive(normalSpeed,52.8,Treset);
			gear;//Gear
			PDStraightDrive(-normalSpeed,69.6,Treset);
			turnRight(90);
			PDStraightDrive(normalSpeed,25.2,Treset);
			turnRight(77.6);
			PDStraightDrive(normalSpeed,47.2,Treset);
			shoot;//shoot
			break;
		case 2:// middle blue
			PDStraightDrive(normalSpeed,72,Treset);
			gear;
			PDStraightDrive(-normalSpeed,31.52,Treset);
			turnLeft(90);
			PDStraightDrive(normalSpeed,95.2,Treset);
			turnLeft(44.2);
			PDStraightDrive(normalSpeed,47.2,Treset);
			shoot;//shoot
			break;
		case 3: // right blue
			PDStraightDrive(normalSpeed,69.6,Treset);
			turnLeft(60);
			PDStraightDrive(normalSpeed,58.4,Treset);
			gear;//put on gear
			break;
		default:
			 break;
		}
	}
	else if (SmartDashboard.getString("alliance color","blue")=="red")
	{
		switch(startPos)
		{
		case 1: // left red
			PDStraightDrive(normalSpeed,69.6,Treset);
			turnRight(60);
			PDStraightDrive(normalSpeed,52.8,Treset);
			gear;//put on gear
			break;
		case 2:// middle red
			PDStraightDrive(normalSpeed,72,Treset);
			gear;//put on gear
			PDStraightDrive(-normalSpeed,31.52,Treset);
			turnRight(90);
			PDStraightDrive(normalSpeed,58.2,Treset);
			turnRight(44.7);
			PDStraightDrive(normalSpeed,47.2,Treset);
			shoot;//shoot
			break;
		case 3:// right red
			PDStraightDrive(normalSpeed,72.4,Treset);
			gear;//put on gear
			turnLeft(60);
			PDStraightDrive(normalSpeed,52.8,Treset);
			PDStraightDrive(-normalSpeed,69.6,Treset);
			turnLeft(90);
			PDStraightDrive(normalSpeed,25.2,Treset);
			turnLeft(77.6);
			PDStraightDrive(normalSpeed,47.2 ,Treset);
			shoot;//shoot
			break;
		default:
			break;
		}
	}*/
}
public 	void TeleopPeriodic()
{
	driver.setDriveControl(xboxDrive);        							

	hardware.intake.set(xboxDrive.getRawAxis(3/*right trigger*/));
	hardware.climber.set(xboxDrive.getRawAxis(4/*left trigger*/));
	hardware.flywheel.set(xboxAux.getRawAxis(3/*right trigger*/));
	hardware.feeder.set(xboxAux.getRawAxis(4/*left trigger*/));
	
	if (xboxDrive.getRawButton(5)/*right bumper*/)
	{
		gearSequence();//gear mechanism code
	}
	else if (xboxDrive.getRawButton(4)/*left bumper*/)
	{
		//hopperToggle;//hopper flap code
	}
	/*else if (xboxDrive.getRawButton(button))
	{
		//shooterPID; //shooter code
	}*/
	
		
		
	
	if (xboxDrive.getAButton())
	{
		xboxDrive.setRumble(GenericHID.RumbleType.kLeftRumble, 1.0);
		xboxDrive.setRumble(GenericHID.RumbleType.kRightRumble, 1.0);
	}

	if (xboxDrive.getBButton())
	{
		xboxDrive.setRumble(GenericHID.RumbleType.kLeftRumble, 0);
		xboxDrive.setRumble(GenericHID.RumbleType.kRightRumble, 0);
	}
	
	



	if (joystickTemp.getRawButton(1))	{
		openFlaps();
		//hardware.gearL.Set(-flapSpeed);
		//hardware.gearR.Set(flapSpeed);
	}
	else if (joystickTemp.getRawButton(2)){
		closeFlaps();
		//hardware.gearL.Set(flapSpeed);
		//hardware.gearR.Set(-flapSpeed);
	}
	else if (joystickTemp.getRawButton(7)){
		//closeFlaps();
		hardware.gearL.set(flapSpeed);
		//hardware.gearR.Set(-.5);
	}
	else if (joystickTemp.getRawButton(8)){
		//closeFlaps();
		hardware.gearL.set(-flapSpeed);
		//hardware.gearR.Set(-.5);
	}
	else if (joystickTemp.getRawButton(9)){
		//closeFlaps();
		//hardware.gearL.Set(.5);
		hardware.gearR.set(flapSpeed);
	}
	else if (joystickTemp.getRawButton(10)){
		//closeFlaps();
		//hardware.gearL.Set(.5);
		hardware.gearR.set(-flapSpeed);
	}
	else{
		hardware.gearL.set(0);
		hardware.gearR.set(0);
	}

	if(joystickTemp.getRawButton(3)){
		//releaseGear();
		hardware.kicker.set(kickerSpeed);
		//kick();
	}
	else if (joystickTemp.getRawButton(5)){
		releaseGear();
	}
	else if(joystickTemp.getRawButton(11)){
		kick();
	}
	else if(joystickTemp.getRawButton(4)){
		hardware.kicker.set(-kickerSpeed);
	}
	else{
		hardware.kicker.set(0);
	}
}

}

Constructive criticism is welcome and appreciated! Thanks!

  • team2637 programming

“ERROR: Could not instantiate robot org.usfirst.frc.team2637.robot.Robot!” followed by a lot of gibberish

That gibberish is useful information. Please share it.

You may also want to include the code for your Hardware and Drive classes as you are instantiating them in the constructor of Robot and the rest of your Robot constructor looks to be ok.

Usually happens to me when I’m initializing a component (TalonSRX, encoder, etc.) on a wrong port (It’s in port 1 and I init it in port 2), check the http://roborio-xxxx-frc.local/ (change xxxx to your team number) for the ports.
Either that or you initialize 2 components on the same port.