mirror of
https://github.com/TimeCrafters/FreightFrenzy.git
synced 2025-12-13 05:02:34 +00:00
Compare commits
14 Commits
9532b9e8af
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c31e40d332 | ||
|
|
aafa5cf65d | ||
| b668cd97e3 | |||
| 74486ced09 | |||
| 06c5ede690 | |||
| 23f4fd15a3 | |||
|
|
e025034655 | ||
|
|
aa6ce00f3c | ||
|
|
6eb9c46e59 | ||
| 9b98cf5840 | |||
|
|
99bbfee101 | ||
|
|
12a306965a | ||
|
|
05376d01d5 | ||
|
|
7d3649cb1d |
3
.idea/.gitignore
generated
vendored
Normal file
3
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
6
.idea/compiler.xml
generated
Normal file
6
.idea/compiler.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<bytecodeTargetLevel target="11" />
|
||||
</component>
|
||||
</project>
|
||||
30
.idea/jarRepositories.xml
generated
Normal file
30
.idea/jarRepositories.xml
generated
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RemoteRepositoriesConfiguration">
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Maven Central repository" />
|
||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="jboss.community" />
|
||||
<option name="name" value="JBoss Community repository" />
|
||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="MavenRepo" />
|
||||
<option name="name" value="MavenRepo" />
|
||||
<option name="url" value="https://repo.maven.apache.org/maven2/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="BintrayJCenter" />
|
||||
<option name="name" value="BintrayJCenter" />
|
||||
<option name="url" value="https://jcenter.bintray.com/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="Google" />
|
||||
<option name="name" value="Google" />
|
||||
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
|
||||
</remote-repository>
|
||||
</component>
|
||||
</project>
|
||||
10
.idea/misc.xml
generated
Normal file
10
.idea/misc.xml
generated
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
<option name="id" value="Android" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -49,6 +49,8 @@ import android.preference.PreferenceManager;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.MotionEvent;
|
||||
@@ -410,6 +412,12 @@ public class FtcRobotControllerActivity extends Activity
|
||||
checkPreferredChannel();
|
||||
|
||||
AnnotatedHooksClassFilter.getInstance().callOnCreateMethods(this);
|
||||
|
||||
/* REV CONTROL HUB APPEARS TO PREVENT ANY APP NOT ON ITS WHITELIST FROM USING ON_BOOT_COMPLETED RECEIVERS */
|
||||
/* USING THIS HACK DUE TO THAT... */
|
||||
Intent tacnetIntent = new Intent("org.timecrafters.TimeCraftersConfigurationTool.tacnet.ACTION_START_SERVER");
|
||||
tacnetIntent.setPackage("org.timecrafters.TimeCraftersConfigurationTool");
|
||||
ContextCompat.startForegroundService(context, tacnetIntent);
|
||||
}
|
||||
|
||||
protected UpdateUI createUpdateUI() {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,59 @@
|
||||
package org.timecrafters.FreightFrenzy.Competition.Autonomous.Engines;
|
||||
|
||||
import com.qualcomm.robotcore.eventloop.opmode.Autonomous;
|
||||
|
||||
import org.cyberarm.engine.V2.CyberarmEngine;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.CollectorToggle;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.DriveState;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TensorFlowState;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TurretArmExtension;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TurretOrbit;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Common.Robot;
|
||||
|
||||
@Autonomous (name = "Blue Duck Autonomous", group = "blue")
|
||||
public class BlueDuckEngine extends CyberarmEngine {
|
||||
Robot robot;
|
||||
|
||||
@Override
|
||||
public void setup() {
|
||||
this.robot = new Robot(this);
|
||||
robot.resetEncoders();
|
||||
|
||||
addState(new TurretOrbit(robot, robot.turretServoWhite, robot.whiteMag, "BlueDuckAutonomous", "01_0"));
|
||||
addState(new TensorFlowState(robot, robot.whiteArmRiser, robot.whiteArmBobbin, "BlueDuckAutonomous", "01_1"));
|
||||
// addState(new TurretArmExtension(robot, robot.whiteArmBobbin, "RedWarehouseAutonomous", "02_0"));
|
||||
// addState(new TurretArmRiser(robot, robot.whiteArmRiser, "RedWarehouseAutonomous", "03_0_middle"));
|
||||
// addState(new TurretArmExtension(robot, robot.whiteArmBobbin, "RedWarehouseAutonomous", "04_0"));
|
||||
addState(new CollectorToggle(robot, robot.collectorWhite, "BlueDuckAutonomous", "05_0"));
|
||||
addState(new CollectorToggle(robot, robot.collectorWhite, "BlueDuckAutonomous", "06_0"));
|
||||
addState(new TurretArmExtension(robot, robot.whiteArmBobbin, "BlueDuckAutonomous", "07_0"));
|
||||
addState(new DriveState(robot,"BlueDuckAutonomous", "08_0"));
|
||||
addState(new DriveState(robot, "BlueDuckAutonomous", "09_0"));
|
||||
addState(new TurretOrbit(robot, robot.turretServoWhite, null, "BlueDuckAutonomous", "10_0"));
|
||||
addState(new DriveState(robot, "BlueDuckAutonomous", "10_1"));
|
||||
|
||||
}
|
||||
|
||||
public void loop() {
|
||||
super.loop();
|
||||
|
||||
telemetry.addData("white arm extension", robot.whiteArmBobbin.getCurrentPosition());
|
||||
telemetry.addData("White Riser Arm", robot.whiteArmRiser.getCurrentPosition());
|
||||
telemetry.addData("white Turret Switch", robot.whiteMag.isPressed());
|
||||
telemetry.addData("white Turret orbit Power", robot.turretServoWhite.getPower());
|
||||
telemetry.addData("White Door Position", robot.whiteDispenser.getPosition());
|
||||
telemetry.addLine();
|
||||
|
||||
telemetry.addData("Orange Riser Arm", robot.orangeArmRiser.getCurrentPosition());
|
||||
telemetry.addData("orange arm extension", robot.orangeArmBobbin.getCurrentPosition());
|
||||
telemetry.addData("orange Turret Switch", robot.orangeMag.isPressed());
|
||||
telemetry.addData("orange Turret Orbit Power", robot.turretServoOrange.getPower());
|
||||
telemetry.addData("Orange Door Position", robot.orangeDispenser.getPosition());
|
||||
telemetry.addLine();
|
||||
|
||||
telemetry.addData("driveWarehouseLeft", robot.driveWarehouseLeft.getCurrentPosition());
|
||||
telemetry.addData("driveWarehouseRight", robot.driveWarehouseRight.getCurrentPosition());
|
||||
telemetry.addData("driveGoalLeft", robot.driveGoalLeft.getCurrentPosition());
|
||||
telemetry.addData("driveGoalRight", robot.driveGoalRight.getCurrentPosition());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package org.timecrafters.FreightFrenzy.Competition.Autonomous.Engines;
|
||||
|
||||
import com.qualcomm.robotcore.eventloop.opmode.Autonomous;
|
||||
|
||||
import org.cyberarm.engine.V2.CyberarmEngine;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.CollectorToggle;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.DriveState;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TensorFlowState;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TurretArmExtension;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TurretArmRiser;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TurretOrbit;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Common.Robot;
|
||||
|
||||
@Autonomous (name = "Blue WareHouse", group = "blue")
|
||||
public class BlueWarehouseEngine extends CyberarmEngine {
|
||||
Robot robot;
|
||||
|
||||
@Override
|
||||
public void setup() {
|
||||
this.robot = new Robot(this);
|
||||
robot.resetEncoders();
|
||||
|
||||
addState(new TurretOrbit(robot, robot.turretServoOrange, robot.orangeMag, "BlueWarehouseAutonomous", "01_0"));
|
||||
addState(new TensorFlowState(robot, robot.orangeArmRiser, robot.orangeArmBobbin, "BlueWarehouseAutonomous", "01_1"));
|
||||
// addState(new TurretArmExtension(robot, robot.orangeArmBobbin, "RedWarehouseAutonomous", "02_0"));
|
||||
// addState(new TurretArmRiser(robot, robot.orangeArmRiser, "RedWarehouseAutonomous", "03_0_middle"));
|
||||
// addState(new TurretArmExtension(robot, robot.orangeArmBobbin, "RedWarehouseAutonomous", "04_0"));
|
||||
addState(new CollectorToggle(robot, robot.collectorOrange, "BlueWarehouseAutonomous", "05_0"));
|
||||
addState(new CollectorToggle(robot, robot.collectorOrange, "BlueWarehouseAutonomous", "06_0"));
|
||||
addState(new TurretArmExtension(robot, robot.orangeArmBobbin, "BlueWarehouseAutonomous", "07_0"));
|
||||
addState(new DriveState(robot,"BlueWarehouseAutonomous", "08_0"));
|
||||
addState(new DriveState(robot, "BlueWarehouseAutonomous", "09_0"));
|
||||
addState(new TurretOrbit(robot, robot.turretServoOrange, null, "BlueWarehouseAutonomous", "10_0"));
|
||||
addState(new DriveState(robot, "BlueWarehouseAutonomous", "10_1"));
|
||||
|
||||
}
|
||||
|
||||
public void loop() {
|
||||
super.loop();
|
||||
|
||||
telemetry.addData("white arm extension", robot.whiteArmBobbin.getCurrentPosition());
|
||||
telemetry.addData("White Riser Arm", robot.whiteArmRiser.getCurrentPosition());
|
||||
telemetry.addData("white Turret Switch", robot.whiteMag.isPressed());
|
||||
telemetry.addData("white Turret orbit Power", robot.turretServoWhite.getPower());
|
||||
telemetry.addData("White Door Position", robot.whiteDispenser.getPosition());
|
||||
telemetry.addLine();
|
||||
|
||||
telemetry.addData("Orange Riser Arm", robot.orangeArmRiser.getCurrentPosition());
|
||||
telemetry.addData("orange arm extension", robot.orangeArmBobbin.getCurrentPosition());
|
||||
telemetry.addData("orange Turret Switch", robot.orangeMag.isPressed());
|
||||
telemetry.addData("orange Turret Orbit Power", robot.turretServoOrange.getPower());
|
||||
telemetry.addData("Orange Door Position", robot.orangeDispenser.getPosition());
|
||||
telemetry.addLine();
|
||||
|
||||
telemetry.addData("driveWarehouseLeft", robot.driveWarehouseLeft.getCurrentPosition());
|
||||
telemetry.addData("driveWarehouseRight", robot.driveWarehouseRight.getCurrentPosition());
|
||||
telemetry.addData("driveGoalLeft", robot.driveGoalLeft.getCurrentPosition());
|
||||
telemetry.addData("driveGoalRight", robot.driveGoalRight.getCurrentPosition());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package org.timecrafters.FreightFrenzy.Competition.Autonomous.Engines;
|
||||
|
||||
import com.qualcomm.robotcore.eventloop.opmode.Autonomous;
|
||||
|
||||
import org.cyberarm.engine.V2.CyberarmEngine;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.CollectorToggle;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.DriveState;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TensorFlowState;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TurretArmExtension;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TurretOrbit;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Common.Robot;
|
||||
|
||||
@Autonomous(name = "RedDuckAutonomous", group = "red")
|
||||
|
||||
public class RedDuckEngine extends CyberarmEngine {
|
||||
|
||||
@Override
|
||||
public void setup() {
|
||||
Robot robot = new Robot(this);
|
||||
robot.resetEncoders();
|
||||
|
||||
addState(new TurretOrbit(robot, robot.turretServoOrange, robot.orangeMag, "RedDuckAutonomous", "01_0"));
|
||||
addState(new TensorFlowState(robot, robot.orangeArmRiser, robot.orangeArmBobbin, "RedDuckAutonomous", "01_1"));
|
||||
// addState(new TurretArmExtension(robot, robot.orangeArmBobbin, "RedWarehouseAutonomous", "02_0"));
|
||||
// addState(new TurretArmRiser(robot, robot.orangeArmRiser, "RedWarehouseAutonomous", "03_0_middle"));
|
||||
// addState(new TurretArmExtension(robot, robot.orangeArmBobbin, "RedWarehouseAutonomous", "04_0"));
|
||||
addState(new CollectorToggle(robot, robot.collectorOrange, "RedDuckAutonomous", "05_0"));
|
||||
addState(new CollectorToggle(robot, robot.collectorOrange, "RedDuckAutonomous", "06_0"));
|
||||
addState(new TurretArmExtension(robot, robot.orangeArmBobbin, "RedDuckAutonomous", "07_0"));
|
||||
addState(new DriveState(robot,"RedDuckAutonomous", "08_0"));
|
||||
addState(new DriveState(robot, "RedDuckAutonomous", "09_0"));
|
||||
addState(new TurretOrbit(robot, robot.turretServoOrange, null, "RedDuckAutonomous", "10_0"));
|
||||
addState(new DriveState(robot, "RedDuckAutonomous", "10_1"));
|
||||
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,9 @@ import org.cyberarm.engine.V2.CyberarmEngine;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.CollectorToggle;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.DepositorDoor;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.DriveState;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TensorFlowState;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TurretArmExtension;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TurretArmRiser;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Autonomous.States.TurretOrbit;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Common.Robot;
|
||||
@Autonomous (name = "Red WareHouse", group = "red")
|
||||
@@ -16,15 +18,20 @@ public class RedWarehouseEngine extends CyberarmEngine {
|
||||
@Override
|
||||
public void setup() {
|
||||
this.robot = new Robot(this);
|
||||
robot.resetEncoders();
|
||||
|
||||
addState(new TurretOrbit(robot, robot.turretServoWhite, robot.whiteMag, "RedWarehouseAutonomous", "01_0"));
|
||||
addState(new TurretArmExtension(robot, robot.whiteArmBobbin, "RedWarehouseAutonomous", "02_0"));
|
||||
addState(new CollectorToggle(robot, robot.collectorWhite, "RedWarehouseAutonomous", "03_0"));
|
||||
addState(new CollectorToggle(robot, robot.collectorWhite, "RedWarehouseAutonomous", "04_0"));
|
||||
addState(new TurretArmExtension(robot, robot.whiteArmBobbin, "RedWarehouseAutonomous", "05_0"));
|
||||
addState(new DriveState(robot,"RedWarehouseAutonomous", "07_0"));
|
||||
addState(new DriveState(robot, "RedWarehouseAutonomous", "08_0"));
|
||||
addState(new TensorFlowState(robot, robot.whiteArmRiser, robot.whiteArmBobbin, "RedWarehouseAutonomous", "01_1"));
|
||||
// addState(new TurretArmExtension(robot, robot.whiteArmBobbin, "RedWarehouseAutonomous", "02_0"));
|
||||
// addState(new TurretArmRiser(robot, robot.whiteArmRiser, "RedWarehouseAutonomous", "03_0_middle"));
|
||||
// addState(new TurretArmExtension(robot, robot.whiteArmBobbin, "RedWarehouseAutonomous", "04_0"));
|
||||
addState(new CollectorToggle(robot, robot.collectorWhite, "RedWarehouseAutonomous", "05_0"));
|
||||
addState(new CollectorToggle(robot, robot.collectorWhite, "RedWarehouseAutonomous", "06_0"));
|
||||
addState(new TurretArmExtension(robot, robot.whiteArmBobbin, "RedWarehouseAutonomous", "07_0"));
|
||||
addState(new DriveState(robot,"RedWarehouseAutonomous", "08_0"));
|
||||
addState(new DriveState(robot, "RedWarehouseAutonomous", "09_0"));
|
||||
addState(new TurretOrbit(robot, robot.turretServoWhite, null, "RedWarehouseAutonomous", "10_0"));
|
||||
addState(new DriveState(robot, "RedWarehouseAutonomous", "10_1"));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ public class CollectorToggle extends CyberarmState {
|
||||
final static public int MODE_STOPPED = 0;
|
||||
double time;
|
||||
CRServo servo;
|
||||
int power;
|
||||
double power;
|
||||
|
||||
public CollectorToggle(Robot robot, CRServo servo, String groupName, String actionName) {
|
||||
this.servo = servo;
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
package org.timecrafters.FreightFrenzy.Competition.Autonomous.States;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.qualcomm.robotcore.hardware.DcMotor;
|
||||
|
||||
import org.cyberarm.engine.V2.CyberarmState;
|
||||
import org.firstinspires.ftc.robotcore.external.tfod.Recognition;
|
||||
import org.timecrafters.FreightFrenzy.Competition.Common.Robot;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TensorFlowState extends CyberarmState {
|
||||
|
||||
Robot robot;
|
||||
private List<Recognition> recognitions;
|
||||
private double checkTime;
|
||||
private int manualPath = 0;
|
||||
private int path = 3;
|
||||
private double leftDuck;
|
||||
private double middleDuck;
|
||||
|
||||
private String groupName;
|
||||
private DcMotor armRiser, armExtension;
|
||||
|
||||
public TensorFlowState(Robot robot, DcMotor armRiser, DcMotor armExtension, String groupName, String actionName) {
|
||||
this.robot = robot;
|
||||
this.groupName = groupName;
|
||||
this.armRiser = armRiser;
|
||||
this.armExtension = armExtension;
|
||||
this.leftDuck = robot.configuration.variable(groupName, actionName, "leftDuck").value();
|
||||
this.middleDuck = robot.configuration.variable(groupName, actionName, "middleDuck").value();
|
||||
this.checkTime = robot.configuration.variable(groupName, actionName, "time").value();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
robot.activateVuforia();
|
||||
robot.activateTensorflow();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exec() {
|
||||
recognitions = robot.tensorflowDetections();
|
||||
|
||||
if (runTime() < checkTime) {
|
||||
if (recognitions != null && recognitions.size() != 0) {
|
||||
if (recognitions.size() == 1) {
|
||||
Recognition recognition = recognitions.get(0);
|
||||
|
||||
if (recognition.getLeft() < leftDuck) {
|
||||
path = 0;
|
||||
} else {
|
||||
path = 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
path = 2;
|
||||
}
|
||||
} else {
|
||||
Log.i(TAG, "Choosen path: " + path);
|
||||
|
||||
if (path == 0){
|
||||
addState(new TurretArmExtension(robot, armExtension, groupName, "02_0"));
|
||||
addState(new TurretArmRiser(robot, armRiser, groupName, "03_0_bottom"));
|
||||
addState(new TurretArmExtension(robot, armExtension, groupName, "04_0_bottom"));
|
||||
} else if (path == 1){
|
||||
addState(new TurretArmExtension(robot, armExtension, groupName, "02_0"));
|
||||
addState(new TurretArmRiser(robot, armRiser, groupName, "03_0_middle"));
|
||||
addState(new TurretArmExtension(robot, armExtension, groupName, "04_0_middle"));
|
||||
} else {
|
||||
addState(new TurretArmExtension(robot, armExtension, groupName, "02_0"));
|
||||
addState(new TurretArmRiser(robot, armRiser, groupName, "03_0_top"));
|
||||
addState(new TurretArmExtension(robot, armExtension, groupName, "04_0_top"));
|
||||
}
|
||||
|
||||
setHasFinished(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void telemetry() {
|
||||
engine.telemetry.addData("Runtime", runTime());
|
||||
engine.telemetry.addData("Check Time", checkTime);
|
||||
engine.telemetry.addData("Path", path);
|
||||
engine.telemetry.addLine();
|
||||
|
||||
if (recognitions == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (Recognition recognition : recognitions) {
|
||||
engine.telemetry.addData("Label", recognition.getLabel());
|
||||
engine.telemetry.addData("Left", recognition.getLeft());
|
||||
engine.telemetry.addData("Top", recognition.getTop());
|
||||
engine.telemetry.addData("Confidence", recognition.getConfidence());
|
||||
engine.telemetry.addLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,12 +20,6 @@ public class TurretArmExtension extends CyberarmState {
|
||||
this.tolerance = robot.configuration.variable(groupName, actionName, "tolerance").value();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
motor.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
|
||||
motor.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exec() {
|
||||
if (motor.getCurrentPosition() < targetPosition - tolerance){
|
||||
@@ -40,4 +34,9 @@ public class TurretArmExtension extends CyberarmState {
|
||||
motor.setPower(0);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void telemetry() {
|
||||
engine.telemetry.addData("targetPosition", targetPosition);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,18 +12,12 @@ public class TurretArmRiser extends CyberarmState {
|
||||
private int targetPosition, tolerance;
|
||||
private double power;
|
||||
|
||||
public TurretArmRiser(Robot robot, DcMotor motor, int targetPosition, double power, int tolerance) {
|
||||
public TurretArmRiser(Robot robot, DcMotor motor, String groupName, String actionName) {
|
||||
this.robot = robot;
|
||||
this.motor = motor;
|
||||
this.targetPosition = targetPosition;
|
||||
this.power = power;
|
||||
this.tolerance = tolerance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
motor.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
|
||||
motor.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
|
||||
this.targetPosition = robot.configuration.variable(groupName, actionName, "targetPosition").value();
|
||||
this.power = robot.configuration.variable(groupName, actionName, "power").value();
|
||||
this.tolerance = robot.configuration.variable(groupName, actionName, "tolerance").value();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -24,7 +24,7 @@ public class TurretOrbit extends CyberarmState {
|
||||
|
||||
@Override
|
||||
public void exec() {
|
||||
if (magnetSwitch.isPressed() || runTime() < time ){
|
||||
if ((magnetSwitch != null && magnetSwitch.isPressed()) || runTime() > time ){
|
||||
servo.setPower(0);
|
||||
setHasFinished(true);
|
||||
}
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -101,8 +101,8 @@ public class Robot {
|
||||
initCollector();
|
||||
initDepositor();
|
||||
initCarousel();
|
||||
// initVuforia();
|
||||
// initTensorflow();
|
||||
initVuforia();
|
||||
initTensorflow();
|
||||
}
|
||||
|
||||
private void initMagnetSwitches() {
|
||||
@@ -274,6 +274,18 @@ public class Robot {
|
||||
}
|
||||
}
|
||||
|
||||
public void resetEncoders(){
|
||||
orangeArmBobbin.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
|
||||
whiteArmBobbin.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
|
||||
orangeArmRiser.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
|
||||
whiteArmRiser.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
|
||||
|
||||
orangeArmBobbin.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
|
||||
whiteArmBobbin.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
|
||||
orangeArmRiser.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
|
||||
whiteArmRiser.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
|
||||
}
|
||||
|
||||
private void initTensorflow() {
|
||||
int tfodMonitorViewId = engine.hardwareMap.appContext.getResources().getIdentifier(
|
||||
"tfodMonitorViewId", "id", engine.hardwareMap.appContext.getPackageName());
|
||||
|
||||
@@ -28,7 +28,6 @@ public class TeleOpState extends CyberarmState {
|
||||
@Override
|
||||
public void start() {
|
||||
super.start();
|
||||
// FIXME: Don't reset when doing autonomous stuff
|
||||
robot.whiteArmBobbin.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
|
||||
robot.whiteArmBobbin.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
|
||||
robot.orangeArmBobbin.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
|
||||
@@ -47,7 +46,7 @@ public class TeleOpState extends CyberarmState {
|
||||
robot.driveGoalRight.setPower(-engine.gamepad1.right_stick_y * maxDriveSpeed);
|
||||
|
||||
// dispenser powered
|
||||
if (engine.gamepad1.b){
|
||||
if (engine.gamepad1.a){
|
||||
robot.orangeDispenser.setPosition(0);
|
||||
}
|
||||
// if not pressed dispenser off
|
||||
@@ -74,11 +73,11 @@ public class TeleOpState extends CyberarmState {
|
||||
if (engine.gamepad1.dpad_up || engine.gamepad1.dpad_down) {
|
||||
|
||||
if (engine.gamepad1.dpad_up) {
|
||||
robot.orangeArmRiser.setPower(0.8);
|
||||
robot.orangeArmRiser.setPower(1);
|
||||
}
|
||||
|
||||
if (engine.gamepad1.dpad_down) {
|
||||
robot.orangeArmRiser.setPower(-0.5);
|
||||
robot.orangeArmRiser.setPower(-1);
|
||||
}
|
||||
}
|
||||
// nothing pressed nothing move...
|
||||
@@ -86,12 +85,14 @@ public class TeleOpState extends CyberarmState {
|
||||
robot.orangeArmRiser.setPower(0);
|
||||
}
|
||||
|
||||
// button x pressed carousel wheel move.
|
||||
// button x pressed carousel wheel move, for blue side, if b pressed wheel spins for red side;
|
||||
|
||||
if (engine.gamepad1.x){
|
||||
if (engine.gamepad2.b){
|
||||
robot.carouselWheel.setPower(1);
|
||||
}
|
||||
|
||||
else if (engine.gamepad2.x){
|
||||
robot.carouselWheel.setPower(-1);
|
||||
}
|
||||
else {
|
||||
robot.carouselWheel.setPower(0);
|
||||
}
|
||||
@@ -114,7 +115,7 @@ public class TeleOpState extends CyberarmState {
|
||||
|
||||
|
||||
// if b is pressed then depositor door opens, if not pressed not opening.
|
||||
if (engine.gamepad2.b){
|
||||
if (engine.gamepad2.a){
|
||||
robot.whiteDispenser.setPosition(.5);
|
||||
}
|
||||
|
||||
@@ -128,11 +129,11 @@ public class TeleOpState extends CyberarmState {
|
||||
if (engine.gamepad2.dpad_down || engine.gamepad2.dpad_up) {
|
||||
|
||||
if (engine.gamepad2.dpad_up) {
|
||||
robot.whiteArmRiser.setPower(8);
|
||||
robot.whiteArmRiser.setPower(1);
|
||||
}
|
||||
|
||||
if (engine.gamepad2.dpad_down) {
|
||||
robot.whiteArmRiser.setPower(-0.5);
|
||||
robot.whiteArmRiser.setPower(-1);
|
||||
}
|
||||
}
|
||||
// nothing pressed nothing move...
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package org.timecrafters.FreightFrenzy.MecanumRobot_Spencer;
|
||||
|
||||
import com.qualcomm.robotcore.hardware.DcMotor;
|
||||
import com.qualcomm.robotcore.hardware.DcMotorSimple;
|
||||
|
||||
|
||||
import org.cyberarm.engine.V2.CyberarmEngine;
|
||||
public class MecanumRobot {
|
||||
|
||||
private final CyberarmEngine engine;
|
||||
|
||||
// Drivetrain
|
||||
|
||||
public DcMotor driveFrontLeft, driveFrontRight, driveBackLeft, driveBackRight;
|
||||
|
||||
|
||||
|
||||
public MecanumRobot(CyberarmEngine engine) {
|
||||
this.engine = engine;
|
||||
initDrivetrain();
|
||||
}
|
||||
private void initDrivetrain() {
|
||||
|
||||
driveFrontRight = engine.hardwareMap.dcMotor.get("driveFrontRight");
|
||||
driveFrontLeft = engine.hardwareMap.dcMotor.get("driveFrontLeft");
|
||||
driveBackRight = engine.hardwareMap.dcMotor.get("driveBackRight");
|
||||
driveBackLeft = engine.hardwareMap.dcMotor.get("driveBackLeft");
|
||||
|
||||
driveFrontLeft.setDirection(DcMotorSimple.Direction.FORWARD);
|
||||
driveFrontRight.setDirection(DcMotorSimple.Direction.REVERSE);
|
||||
|
||||
driveBackLeft.setDirection(DcMotorSimple.Direction.FORWARD);
|
||||
driveBackRight.setDirection(DcMotorSimple.Direction.REVERSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.timecrafters.FreightFrenzy.MecanumRobot_Spencer;
|
||||
|
||||
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
|
||||
|
||||
import org.cyberarm.engine.V2.CyberarmEngine;
|
||||
|
||||
@TeleOp(name = "TeleOp Mecanum Robot")
|
||||
|
||||
public class Mecanum_Drive_Engine extends CyberarmEngine {
|
||||
@Override
|
||||
public void setup() { addState(new TeleOpStateMecanumRobot(new MecanumRobot(this)));}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
package org.timecrafters.FreightFrenzy.MecanumRobot_Spencer;
|
||||
|
||||
import org.cyberarm.engine.V2.CyberarmState;
|
||||
import org.timecrafters.FreightFrenzy.MecanumRobot_Spencer.MecanumRobot;
|
||||
|
||||
public class TeleOpStateMecanumRobot extends CyberarmState {
|
||||
|
||||
MecanumRobot robot;
|
||||
|
||||
public TeleOpStateMecanumRobot(MecanumRobot mecanumRobot) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exec() {
|
||||
|
||||
// Slow Mode
|
||||
|
||||
if (engine.gamepad1.left_trigger > 0.5){
|
||||
// TankDrive
|
||||
// Left joystick forward; Left side forward;
|
||||
|
||||
robot.driveFrontLeft.setPower(engine.gamepad1.left_stick_y * 0.5);
|
||||
robot.driveBackLeft.setPower(engine.gamepad1.left_stick_y * 0.5);
|
||||
|
||||
// Right joystick forward; Right side forward;
|
||||
robot.driveFrontRight.setPower(engine.gamepad1.right_stick_y * 0.5);
|
||||
robot.driveBackRight.setPower(engine.gamepad1.right_stick_y * 0.5);
|
||||
|
||||
|
||||
// Strafing left and right
|
||||
|
||||
if (engine.gamepad1.left_bumper) {
|
||||
robot.driveFrontLeft.setPower(0.5);
|
||||
robot.driveBackLeft.setPower(-0.5);
|
||||
robot.driveFrontRight.setPower(-0.5);
|
||||
robot.driveBackRight.setPower(0.5);
|
||||
} else if (engine.gamepad1.right_bumper) {
|
||||
robot.driveFrontLeft.setPower(-0.5);
|
||||
robot.driveBackLeft.setPower(0.5);
|
||||
robot.driveFrontRight.setPower(0.5);
|
||||
robot.driveBackRight.setPower(-0.5);
|
||||
}
|
||||
// else {
|
||||
// robot.driveFrontLeft.setPower(engine.gamepad1.left_stick_y * 0.5);
|
||||
// robot.driveBackLeft.setPower(engine.gamepad1.left_stick_y * 0.5);
|
||||
// robot.driveFrontRight.setPower(engine.gamepad1.right_stick_y * 0.5);
|
||||
// robot.driveBackRight.setPower(engine.gamepad1.right_stick_y * 0.5);
|
||||
|
||||
|
||||
// }
|
||||
// Normal Speed
|
||||
|
||||
if (engine.gamepad1.right_stick_button) {
|
||||
|
||||
// left stick forward; right side foward
|
||||
robot.driveFrontLeft.setPower(engine.gamepad1.left_stick_y * 1);
|
||||
robot.driveBackLeft.setPower(engine.gamepad1.left_stick_y * 1);
|
||||
|
||||
// right stick foward; right side foward;
|
||||
robot.driveFrontRight.setPower(engine.gamepad1.right_stick_y * 1);
|
||||
robot.driveBackRight.setPower(engine.gamepad1.right_stick_y * 1);
|
||||
|
||||
}
|
||||
// Strafing left and right
|
||||
|
||||
if (engine.gamepad1.left_bumper) {
|
||||
robot.driveFrontLeft.setPower(1);
|
||||
robot.driveBackLeft.setPower(-1);
|
||||
robot.driveFrontRight.setPower(-1);
|
||||
robot.driveBackRight.setPower(1);
|
||||
} else if (engine.gamepad1.right_bumper) {
|
||||
robot.driveFrontLeft.setPower(-1);
|
||||
robot.driveBackLeft.setPower(1);
|
||||
robot.driveFrontRight.setPower(1);
|
||||
robot.driveBackRight.setPower(-1);
|
||||
} else {
|
||||
robot.driveFrontLeft.setPower(engine.gamepad1.left_stick_y * 1);
|
||||
robot.driveBackLeft.setPower(engine.gamepad1.left_stick_y * 1);
|
||||
robot.driveFrontRight.setPower(engine.gamepad1.right_stick_y * 1);
|
||||
robot.driveBackRight.setPower(engine.gamepad1.right_stick_y * 1);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
// left stick foward; right side foward
|
||||
robot.driveFrontLeft.setPower(engine.gamepad1.left_stick_y * 1);
|
||||
robot.driveBackLeft.setPower(engine.gamepad1.left_stick_y * 1);
|
||||
|
||||
// right stick foward; right side foward;
|
||||
robot.driveFrontRight.setPower(engine.gamepad1.right_stick_y * 1);
|
||||
robot.driveBackRight.setPower(engine.gamepad1.right_stick_y * 1);
|
||||
|
||||
|
||||
// Strafing left and right
|
||||
|
||||
// if (engine.gamepad1.left_bumper) {
|
||||
// robot.driveFrontLeft.setPower(1);
|
||||
// robot.driveBackLeft.setPower(-1);
|
||||
// robot.driveFrontRight.setPower(-1);
|
||||
// robot.driveBackRight.setPower(1);
|
||||
// } else if (engine.gamepad1.right_bumper) {
|
||||
// robot.driveFrontLeft.setPower(-1);
|
||||
// robot.driveBackLeft.setPower(1);
|
||||
// robot.driveFrontRight.setPower(1);
|
||||
// robot.driveBackRight.setPower(-1);
|
||||
// } else {
|
||||
// robot.driveFrontLeft.setPower(engine.gamepad1.left_stick_y * 1);
|
||||
// robot.driveBackLeft.setPower(engine.gamepad1.left_stick_y * 1);
|
||||
// robot.driveFrontRight.setPower(engine.gamepad1.right_stick_y * 1);
|
||||
// robot.driveBackRight.setPower(engine.gamepad1.right_stick_y * 1);
|
||||
//
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -85,8 +85,8 @@ public class TensorFlowCheck extends CyberarmState {
|
||||
|
||||
setHasFinished(true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@Override
|
||||
public void telemetry() {
|
||||
engine.telemetry.addData("Chosen Path", path);
|
||||
|
||||
Reference in New Issue
Block a user