Compare commits

...

3 Commits

Author SHA1 Message Date
Spencer
ee4e05f28d added configuration 2021-12-02 20:32:39 -06:00
Spencer
7332fe8a72 started working on configuration 2021-12-02 20:29:11 -06:00
Spencer
6136b0a3b5 made auto draft, and started on vuforia/tensorflow state
(:
2021-12-02 19:28:03 -06:00
8 changed files with 171 additions and 8 deletions

View File

@@ -0,0 +1 @@
{"config":{"created_at":"2021-12-02 19:33:56 -0600","updated_at":"2021-12-02 20:11:14 -0600","spec_version":2,"revision":38},"data":{"groups":[{"name":"autonomous","actions":[{"name":"01_0","comment":"turret rotation (;","enabled":true,"variables":[{"name":"power","value":"Dx1"},{"name":"time","value":"Lx3"}]},{"name":"02_0","comment":"Turret Arm Extension","enabled":true,"variables":[{"name":"power","value":"Dx0.75"},{"name":"targetPosition","value":"Ix3000"},{"name":"tolerance","value":"Ix150"}]},{"name":"03_0","comment":"Depositor Door","enabled":true,"variables":[{"name":"TargetPosition","value":"Dx0.5"},{"name":"time","value":"Lx1"}]},{"name":"04_0","comment":"Depositor Door","enabled":true,"variables":[{"name":"TargetPosition","value":"Dx0"},{"name":"time","value":"Lx0"}]},{"name":"05_0","comment":"Turret Arm Extension","enabled":true,"variables":[{"name":"power","value":"Dx1"},{"name":"targetPosition","value":"Ix0"},{"name":"tolerance","value":"Ix150"}]},{"name":"06_0","comment":"turret rotation (;","enabled":true,"variables":[{"name":"power","value":"Dx-1"},{"name":"time","value":"Lx3"}]},{"name":"07_0","comment":"Drive State","enabled":true,"variables":[{"name":"distanceLeft","value":"Ix1500"},{"name":"distanceRight","value":"Ix1500"},{"name":"powerLeft","value":"Dx1"},{"name":"powerRight","value":"Dx1"}]},{"name":"08_0","comment":"Drive State","enabled":true,"variables":[{"name":"distanceLeft","value":"Ix1500"},{"name":"distanceRight","value":"Ix500"},{"name":"powerLeft","value":"Dx1"},{"name":"powerRight","value":"Dx0.75"}]}]}],"presets":{"groups":[],"actions":[{"name":"DepositorDoor","comment":"Depositor Door","enabled":true,"variables":[{"name":"TargetPosition","value":"Dx0.5"},{"name":"time","value":"Lx1"}]},{"name":"DriveState","comment":"Drive State","enabled":true,"variables":[{"name":"distanceLeft","value":"Ix1500"},{"name":"distanceRight","value":"Ix500"},{"name":"powerLeft","value":"Dx1"},{"name":"powerRight","value":"Dx0.75"}]},{"name":"TurretArmExtension","comment":"Turret Arm Extension","enabled":true,"variables":[{"name":"power","value":"Dx0.75"},{"name":"targetPosition","value":"Ix3000"},{"name":"tolerance","value":"Ix150"}]},{"name":"TurretOrbit","comment":"turret rotation (;","enabled":true,"variables":[{"name":"power","value":"Dx1"},{"name":"time","value":"Lx3"}]}]}}}

View File

@@ -1,7 +1,10 @@
package org.timecrafters.FreightFrenzy.Competition.Autonomous.Engines; package org.timecrafters.FreightFrenzy.Competition.Autonomous.Engines;
import org.cyberarm.engine.V2.CyberarmEngine; import org.cyberarm.engine.V2.CyberarmEngine;
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.DepositorDoor;
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.DriveState; import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.DriveState;
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TurretArmExtension;
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TurretOrbit;
import org.timecrafters.FreightFrenzy.Competition.Common.Robot; import org.timecrafters.FreightFrenzy.Competition.Common.Robot;
public class RedWarehouseEngine extends CyberarmEngine { public class RedWarehouseEngine extends CyberarmEngine {
@@ -9,6 +12,14 @@ public class RedWarehouseEngine extends CyberarmEngine {
public void setup() { public void setup() {
Robot robot = new Robot(this); Robot robot = new Robot(this);
addState(new DriveState(robot, 2000, 2000,1,1)); addState(new TurretOrbit(robot, robot.turretServoWhite, "autonomous", "01_0"));
addState(new TurretArmExtension(robot, robot.whiteArmBobbin, "autonomous", "02_0"));
addState(new DepositorDoor(robot, robot.whiteDispenser, "autonomous", "03_0"));
addState(new DepositorDoor(robot, robot.whiteDispenser, "autonomous", "04_0"));
addState(new TurretArmExtension(robot, robot.whiteArmBobbin, "autonomous", "05_0"));
addState(new TurretOrbit(robot, robot.turretServoWhite, "autonomous", "01_0"));
addState(new DriveState(robot, 1500, 500, 1, .75));
addState(new DriveState(robot, 1500, 1500, 1, 1));
} }
} }

View File

@@ -0,0 +1,35 @@
package org.timecrafters.FreightFrenzy.Competition.Autonomous.States;
import com.qualcomm.robotcore.hardware.CRServo;
import com.qualcomm.robotcore.hardware.Servo;
import org.cyberarm.engine.V2.CyberarmState;
public class CollectorToggle extends CyberarmState {
final static public int MODE_REVERSE = -1;
final static public int MODE_COLLECT = 1;
final static public int MODE_STOPPED = 0;
CRServo servo;
int mode;
public CollectorToggle(CRServo servo, int mode) {
this.servo = servo;
this.mode = mode;
}
@Override
public void exec() {
if (mode == MODE_REVERSE){
servo.setPower(-1);
}
else if (mode == MODE_COLLECT){
servo.setPower(1);
}
else {
servo.setPower(0);
}
}
}

View File

@@ -0,0 +1,30 @@
package org.timecrafters.FreightFrenzy.Competition.Autonomous.States;
import com.qualcomm.robotcore.hardware.Servo;
import org.cyberarm.engine.V2.CyberarmState;
import org.timecrafters.FreightFrenzy.Competition.Common.Robot;
public class DepositorDoor extends CyberarmState {
Servo servo;
double targetPosition;
long time;
public DepositorDoor(Robot robot, Servo servo, String groupName, String actionName) {
this.servo = servo;
this.targetPosition = robot.configuration.variable(groupName, actionName, "targetPosition").value();
this.time = robot.configuration.variable(groupName, actionName, "time").value();
}
@Override
public void exec() {
if (runTime() < time) {
servo.setPosition(targetPosition);
}
else {
setHasFinished(true);
}
}
}

View File

@@ -9,18 +9,29 @@ public class TurretArmExtension extends CyberarmState {
private Robot robot; private Robot robot;
private DcMotor motor; private DcMotor motor;
private int position; private int targetPosition, tolerance;
private double power; private double power;
public TurretArmExtension(Robot robot, DcMotor motor, int position, double power) { public TurretArmExtension(Robot robot, DcMotor motor, String groupName, String actionName) {
this.robot = robot; this.robot = robot;
this.motor = motor; this.motor = motor;
this.position = position; this.targetPosition = robot.configuration.variable(groupName, actionName, "targetPosition").value();
this.power = power; this.power = robot.configuration.variable(groupName, actionName, "power").value();
this.tolerance = robot.configuration.variable(groupName, actionName, "tolerance").value();
} }
@Override @Override
public void exec() { public void exec() {
if (motor.getCurrentPosition() < targetPosition + tolerance){
motor.setPower(power);
}
else if (motor.getCurrentPosition() > targetPosition - tolerance){
motor.setPower(-power);
}
else {
setHasFinished(true);
motor.setPower(0);
}
} }
} }

View File

@@ -0,0 +1,37 @@
package org.timecrafters.FreightFrenzy.Competition.Autonomous.States;
import com.qualcomm.robotcore.hardware.DcMotor;
import org.cyberarm.engine.V2.CyberarmState;
import org.timecrafters.FreightFrenzy.Competition.Common.Robot;
public class TurretArmRiser extends CyberarmState {
private Robot robot;
private DcMotor motor;
private int targetPosition, tolerance;
private double power;
public TurretArmRiser(Robot robot, DcMotor motor, int targetPosition, double power, int tolerance) {
this.robot = robot;
this.motor = motor;
this.targetPosition = targetPosition;
this.power = power;
this.tolerance = tolerance;
}
@Override
public void exec() {
if (motor.getCurrentPosition() < targetPosition + tolerance){
motor.setPower(power);
}
else if (motor.getCurrentPosition() > targetPosition - tolerance){
motor.setPower(-power);
}
else {
setHasFinished(true);
motor.setPower(0);
}
}
}

View File

@@ -4,6 +4,8 @@ import com.qualcomm.robotcore.hardware.CRServo;
import org.cyberarm.engine.V2.CyberarmState; import org.cyberarm.engine.V2.CyberarmState;
import org.timecrafters.FreightFrenzy.Competition.Common.Robot; import org.timecrafters.FreightFrenzy.Competition.Common.Robot;
import org.timecrafters.TimeCraftersConfigurationTool.library.TimeCraftersConfiguration;
import org.timecrafters.TimeCraftersConfigurationTool.library.backend.config.Action;
public class TurretOrbit extends CyberarmState { public class TurretOrbit extends CyberarmState {
private Robot robot; private Robot robot;
@@ -11,11 +13,11 @@ public class TurretOrbit extends CyberarmState {
private long time; private long time;
private double power; private double power;
public TurretOrbit(Robot robot, CRServo servo, long time, double power) { public TurretOrbit(Robot robot, CRServo servo, String groupName, String actionName) {
this.robot = robot; this.robot = robot;
this.servo = servo; this.servo = servo;
this.time = time; this.time = robot.configuration.variable(groupName, actionName, "time").value();
this. power = power; this. power = robot.configuration.variable(groupName, actionName, "power").value();
} }
@Override @Override

View File

@@ -0,0 +1,36 @@
package org.timecrafters.FreightFrenzy.Competition.Autonomous.States;
import org.cyberarm.engine.V2.CyberarmState;
import org.firstinspires.ftc.robotcore.external.tfod.Recognition;
import org.timecrafters.FreightFrenzy.Competition.Common.Robot;
public class VuforiaState extends CyberarmState {
Robot robot;
public VuforiaState(Robot robot) {
this.robot = robot;
}
@Override
public void start() {
robot.activateVuforia();
robot.activateTensorflow();
}
@Override
public void exec() {
for (Recognition recognition : robot.tensorflowDetections()) {
}
}
@Override
public void telemetry() {
for (Recognition recognition : robot.tensorflowDetections()) {
engine.telemetry.addData("Label", recognition.getLabel());
engine.telemetry.addData("Left", recognition.getLeft());
engine.telemetry.addData("Top", recognition.getTop());
engine.telemetry.addData("Confidence", recognition.getConfidence());
}
}
}