vision changes

This commit is contained in:
Adam Long 2016-10-08 22:51:11 +00:00
parent f0ea150fac
commit 7745c589ae
3 changed files with 37 additions and 10 deletions

View File

@ -21,7 +21,7 @@ public class Robot extends IterativeRobot {
// cameraServer.setQuality(50); // cameraServer.setQuality(50);
// cameraServer.startAutomaticCapture("cam0"); // cameraServer.startAutomaticCapture("cam0");
try { try {
Process grip = Runtime.getRuntime().exec(new String[] {"/usr/local/frc/JRE/bin/java", "-jar", "grip.jar", "project.grip"}); new ProcessBuilder("/home/lvuser/grip").inheritIO().start();
} catch (Exception e) { } catch (Exception e) {
System.out.println("Error starting GRIP"); System.out.println("Error starting GRIP");
} }
@ -75,10 +75,11 @@ public class Robot extends IterativeRobot {
SmartDashboard.putNumber("ArmAngleRaw", CommandBase.mainArm.getRaw()); SmartDashboard.putNumber("ArmAngleRaw", CommandBase.mainArm.getRaw());
SmartDashboard.putNumber("ArmAngleDegrees", CommandBase.mainArm.getDegrees()); SmartDashboard.putNumber("ArmAngleDegrees", CommandBase.mainArm.getDegrees());
SmartDashboard.putNumber("tmpRotations", CommandBase.driveBase.getLeftRotations()); SmartDashboard.putNumber("tmpRotations", CommandBase.driveBase.getLeftRotations());
SmartDashboard.putNumber("centerX", CommandBase.visionHelper.getCenterX());
SmartDashboard.putNumber("horizontalError", CommandBase.visionHelper.getHorizontalError()); SmartDashboard.putNumber("horizontalError", CommandBase.visionHelper.getHorizontalError());
SmartDashboard.putNumber("verticalError", CommandBase.visionHelper.getVerticalError()); SmartDashboard.putNumber("verticalError", CommandBase.visionHelper.getVerticalError());
SmartDashboard.putNumber("horizontalErrorCorrected", CommandBase.visionHelper.getHorizontalError() + 5); SmartDashboard.putNumber("horizontalErrorCorrected", CommandBase.visionHelper.getHorizontalError() + 5);
SmartDashboard.putNumber("goalDistance", 71 / Math.tan((52.7 - CommandBase.visionHelper.getVerticalError()))); SmartDashboard.putNumber("goalDistance", 55 / Math.tan((Math.PI/180) * (64 - CommandBase.visionHelper.getVerticalError())));
if (Robot.oi.getJoysticks()[1].getRawButton(3)) { if (Robot.oi.getJoysticks()[1].getRawButton(3)) {
CommandBase.pneumatics.setArmStopState(true); CommandBase.pneumatics.setArmStopState(true);
} else { } else {

View File

@ -80,11 +80,12 @@ public class MainArm extends PIDSubsystem {
System.out.println("Calibrating bottom to: " + getRaw()); System.out.println("Calibrating bottom to: " + getRaw());
min = getRaw(); min = getRaw();
return true; return true;
} else if (getTopPressed()) {
System.out.println("Calibrating top to: " + getRaw());
max = getRaw();
return true;
} }
// } else if (getTopPressed()) {
// System.out.println("Calibrating top to: " + getRaw());
// max = getRaw();
// return true;
// }
return false; return false;
} }
} }

View File

@ -7,28 +7,53 @@ import edu.wpi.first.wpilibj.DigitalInput;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
import edu.wpi.first.wpilibj.networktables.NetworkTable; import edu.wpi.first.wpilibj.networktables.NetworkTable;
public class VisionHelper { public class VisionHelper {
NetworkTable contoursTable; NetworkTable linesTable, contoursTable;
double imageWidth = 640; double imageWidth = 640;
double imageHeight = 480; double imageHeight = 480;
public VisionHelper() { public VisionHelper() {
linesTable = NetworkTable.getTable("GRIP/lines");
contoursTable = NetworkTable.getTable("GRIP/contours"); contoursTable = NetworkTable.getTable("GRIP/contours");
} }
public double getCenterX() { public double getCenterX() {
int highestLengthIndex = 0;
int index = 0;
double lengths[] = linesTable.getNumberArray("length", new double[0]);
double x1s[] = linesTable.getNumberArray("x1", new double[0]);
double x2s[] = linesTable.getNumberArray("x2", new double[0]);
for(double length : lengths){
if(length >= lengths[highestLengthIndex]){
highestLengthIndex=index;
}
index++;
}
System.out.println("Highest Length Index:"+ highestLengthIndex);
try { try {
return contoursTable.getNumberArray("centerX", new double[0])[0]; return (x1s[highestLengthIndex]+x2s[highestLengthIndex])/2;
} catch (Exception e) { } catch (Exception e) {
return 0; return 0;
} }
} }
public double getCenterY() { public double getCenterY() {
int highestLengthIndex = 0;
int index = 0;
double lengths[] = linesTable.getNumberArray("length", new double[0]);
double y1s[] = linesTable.getNumberArray("y1", new double[0]);
double y2s[] = linesTable.getNumberArray("y2", new double[0]);
for(double length : lengths){
if(length >= lengths[highestLengthIndex]){
highestLengthIndex=index;
}
index++;
}
System.out.println("Highest Length Index:"+ highestLengthIndex);
try { try {
return contoursTable.getNumberArray("centerY", new double[0])[0]; return (y1s[highestLengthIndex]+y2s[highestLengthIndex])/2;
} catch (Exception e) { } catch (Exception e) {
return 0; return 0;
} }
} }
public double getHorizontalError() { public double getHorizontalError() {
return (180/Math.PI) * (Math.atan((getCenterX() - (RobotMap.imageWidth / 2)) / RobotMap.fWidth)); return (180/Math.PI) * (Math.atan((getCenterX()-20 - (RobotMap.imageWidth / 2)) / RobotMap.fWidth));
} }
public double getVerticalError() { public double getVerticalError() {
return (180/Math.PI) * (Math.atan((getCenterY() - (RobotMap.imageHeight / 2)) / RobotMap.fHeight)); return (180/Math.PI) * (Math.atan((getCenterY() - (RobotMap.imageHeight / 2)) / RobotMap.fHeight));