diff --git a/build.gradle b/build.gradle index 57d41ec..4bc7d9f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,28 +1,15 @@ -buildscript { - ext.kotlin_version = '1.9.0' - repositories { - mavenCentral() - google() - } - dependencies { - classpath 'com.android.tools.build:gradle:8.2.2' - } -} - -apply plugin: 'maven-publish' -apply plugin: 'com.android.library' - -group = 'com.github.tearabite' +apply plugin: "com.android.library" +version = "release-SNAPSHOT" android { - namespace = 'com.tearabite.ftctearabits' - compileSdkVersion 29 +// + namespace = 'com.tearabite.ielib' + compileSdkVersion 28 defaultConfig { minSdkVersion 24 //noinspection ExpiredTargetSdkVersion - targetSdkVersion 28 - multiDexEnabled true + targetSdkVersion 26 } compileOptions { @@ -30,36 +17,44 @@ android { targetCompatibility JavaVersion.VERSION_1_8 } - buildTypes { - release { } - debug { } - } testOptions { unitTests.all { useJUnitPlatform() } } + + lintOptions { + abortOnError false + } } repositories { mavenCentral() - maven { - url = 'https://maven.brott.dev/' - } - google() + maven { url = 'https://maven.brott.dev/' } +} + +ext { + dashboard_version = "0.5.6" + min_sdk_version = "9.1.0" } dependencies { - implementation 'org.firstinspires.ftc:RobotCore:9.1.0' - implementation 'org.firstinspires.ftc:Vision:9.1.0' - - implementation 'com.acmerobotics.roadrunner:core:1.0.0-beta6' - implementation 'com.acmerobotics.roadrunner:actions:1.0.0-beta6' - implementation 'com.acmerobotics.dashboard:dashboard:0.4.15' + api "org.firstinspires.ftc:RobotCore:$min_sdk_version" + api "org.firstinspires.ftc:Hardware:$min_sdk_version" + api "org.firstinspires.ftc:RobotServer:$min_sdk_version" + api "org.firstinspires.ftc:FtcCommon:$min_sdk_version" + api "org.firstinspires.ftc:Vision:$min_sdk_version" testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2' //noinspection AnnotationProcessorOnCompilePath compileOnly 'org.projectlombok:lombok:1.18.30' annotationProcessor 'org.projectlombok:lombok:1.18.30' + + implementation 'com.acmerobotics.roadrunner:core:0.5.6' +} + +task androidSourcesJar(type: Jar) { + classifier = "sources" + from android.sourceSets.main.java.srcDirs } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c13a5f7..ca54bdc 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ #Thu Feb 29 12:54:16 CST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index df9553a..2f42365 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -1,10 +1,2 @@ - - - - - - - - + diff --git a/src/main/java/com/tearabite/ftctearabits/common/Alliance.java b/src/main/java/com/tearabite/ielib/common/Alliance.java similarity index 65% rename from src/main/java/com/tearabite/ftctearabits/common/Alliance.java rename to src/main/java/com/tearabite/ielib/common/Alliance.java index bfeb8e9..2d2a509 100644 --- a/src/main/java/com/tearabite/ftctearabits/common/Alliance.java +++ b/src/main/java/com/tearabite/ielib/common/Alliance.java @@ -1,4 +1,4 @@ -package com.tearabite.ftctearabits.common; +package com.tearabite.ielib.common; /** * Enum for the two alliances in FTC diff --git a/src/main/java/com/tearabite/ftctearabits/graphics/LinePaint.java b/src/main/java/com/tearabite/ielib/graphics/LinePaint.java similarity index 92% rename from src/main/java/com/tearabite/ftctearabits/graphics/LinePaint.java rename to src/main/java/com/tearabite/ielib/graphics/LinePaint.java index 1472a89..5273fe4 100644 --- a/src/main/java/com/tearabite/ftctearabits/graphics/LinePaint.java +++ b/src/main/java/com/tearabite/ielib/graphics/LinePaint.java @@ -1,4 +1,4 @@ -package com.tearabite.ftctearabits.graphics; +package com.tearabite.ielib.graphics; import android.graphics.Color; import android.graphics.Paint; diff --git a/src/main/java/com/tearabite/ftctearabits/localization/AprilTagPoseEstimator.java b/src/main/java/com/tearabite/ielib/localization/AprilTagPoseEstimator.java similarity index 94% rename from src/main/java/com/tearabite/ftctearabits/localization/AprilTagPoseEstimator.java rename to src/main/java/com/tearabite/ielib/localization/AprilTagPoseEstimator.java index 2a9e1ee..bd39327 100644 --- a/src/main/java/com/tearabite/ftctearabits/localization/AprilTagPoseEstimator.java +++ b/src/main/java/com/tearabite/ielib/localization/AprilTagPoseEstimator.java @@ -1,4 +1,4 @@ -package com.tearabite.ftctearabits.localization; +package com.tearabite.ielib.localization; import static java.lang.Math.PI; import static java.lang.Math.asin; @@ -7,7 +7,7 @@ import static java.lang.Math.cos; import static java.lang.Math.pow; import static java.lang.Math.sin; -import com.acmerobotics.roadrunner.Pose2d; +import com.acmerobotics.roadrunner.geometry.Pose2d; import org.firstinspires.ftc.robotcore.external.matrices.VectorF; import org.firstinspires.ftc.robotcore.external.navigation.Quaternion; @@ -81,9 +81,9 @@ public class AprilTagPoseEstimator { double cx = Tx + range * cos(bearing) * cos(ch) + range * sin(bearing) * sin(ch); double cy = Ty + range * cos(bearing) * sin(ch) - range * sin(bearing) * cos(ch); - double offsetX = this.robotOffset.position.x; - double offsetY = this.robotOffset.position.y; - double Cyaw = this.robotOffset.heading.toDouble(); + double offsetX = this.robotOffset.getX(); + double offsetY = this.robotOffset.getY(); + double Cyaw = this.robotOffset.getHeading(); double rh = (PI / 2) + Tyaw + yaw - Cyaw; double rx = cx + offsetX * cos(rh) - offsetY * sin(rh); double ry = cy + offsetX * sin(rh) + offsetY * cos(rh); diff --git a/src/main/java/com/tearabite/ftctearabits/vision/BasicColorDetectionVisionProcessor.java b/src/main/java/com/tearabite/ielib/vision/BasicColorDetectionVisionProcessor.java similarity index 91% rename from src/main/java/com/tearabite/ftctearabits/vision/BasicColorDetectionVisionProcessor.java rename to src/main/java/com/tearabite/ielib/vision/BasicColorDetectionVisionProcessor.java index baa5df6..0873ab2 100644 --- a/src/main/java/com/tearabite/ftctearabits/vision/BasicColorDetectionVisionProcessor.java +++ b/src/main/java/com/tearabite/ielib/vision/BasicColorDetectionVisionProcessor.java @@ -1,13 +1,15 @@ -package com.tearabite.ftctearabits.vision; +package com.tearabite.ielib.vision; -import static com.tearabite.ftctearabits.graphics.LinePaint.WHITE; -import static com.tearabite.ftctearabits.vision.FTCColors.FTC_BLUE_RANGE; -import static com.tearabite.ftctearabits.vision.FTCColors.FTC_RED_RANGE_1; -import static com.tearabite.ftctearabits.vision.FTCColors.FTC_RED_RANGE_2; -import static com.tearabite.ftctearabits.vision.OpenCVUtil.getLargestContour; +import static com.tearabite.ielib.graphics.LinePaint.WHITE; +import static com.tearabite.ielib.vision.FTCColors.FTC_BLUE_RANGE; +import static com.tearabite.ielib.vision.FTCColors.FTC_RED_RANGE_1; +import static com.tearabite.ielib.vision.FTCColors.FTC_RED_RANGE_2; +import static com.tearabite.ielib.vision.OpenCVUtil.getLargestContour; import android.graphics.Canvas; +import com.tearabite.ielib.graphics.LinePaint; + import org.firstinspires.ftc.robotcore.internal.camera.calibration.CameraCalibration; import org.firstinspires.ftc.vision.VisionProcessor; import org.opencv.core.Core; @@ -105,7 +107,7 @@ public class BasicColorDetectionVisionProcessor implements VisionProcessor { public void onDrawFrame(Canvas canvas, int onscreenWidth, int onscreenHeight, float scaleBmpPxToCanvasPx, float scaleCanvasDensity, Object userContext) { if (detection != null && detection.isValid()) { Point center = detection.getCenter(); - canvas.drawCircle((float) center.x, (float) center.y, 10, WHITE); + canvas.drawCircle((float) center.x, (float) center.y, 10, LinePaint.WHITE); } } diff --git a/src/main/java/com/tearabite/ftctearabits/vision/Detection.java b/src/main/java/com/tearabite/ielib/vision/Detection.java similarity index 97% rename from src/main/java/com/tearabite/ftctearabits/vision/Detection.java rename to src/main/java/com/tearabite/ielib/vision/Detection.java index 444c9f0..6e5286c 100644 --- a/src/main/java/com/tearabite/ftctearabits/vision/Detection.java +++ b/src/main/java/com/tearabite/ielib/vision/Detection.java @@ -1,6 +1,6 @@ -package com.tearabite.ftctearabits.vision; +package com.tearabite.ielib.vision; -import static com.tearabite.ftctearabits.vision.OpenCVUtil.getCenterOfContour; +import static com.tearabite.ielib.vision.OpenCVUtil.getCenterOfContour; import org.opencv.core.MatOfPoint; import org.opencv.core.Point; @@ -77,7 +77,7 @@ public class Detection { return INVALID_POINT; } - Point centerPx = getCenterOfContour(this.contour); + Point centerPx = OpenCVUtil.getCenterOfContour(this.contour); if (scale == PropertyScale.Pixels) { return centerPx; } diff --git a/src/main/java/com/tearabite/ftctearabits/vision/FTCColors.java b/src/main/java/com/tearabite/ielib/vision/FTCColors.java similarity index 95% rename from src/main/java/com/tearabite/ftctearabits/vision/FTCColors.java rename to src/main/java/com/tearabite/ielib/vision/FTCColors.java index 3c1468c..cd565e8 100644 --- a/src/main/java/com/tearabite/ftctearabits/vision/FTCColors.java +++ b/src/main/java/com/tearabite/ielib/vision/FTCColors.java @@ -1,4 +1,4 @@ -package com.tearabite.ftctearabits.vision; +package com.tearabite.ielib.vision; import org.opencv.core.Scalar; diff --git a/src/main/java/com/tearabite/ftctearabits/vision/OpenCVUtil.java b/src/main/java/com/tearabite/ielib/vision/OpenCVUtil.java similarity index 98% rename from src/main/java/com/tearabite/ftctearabits/vision/OpenCVUtil.java rename to src/main/java/com/tearabite/ielib/vision/OpenCVUtil.java index 51e3fb5..81f0a07 100644 --- a/src/main/java/com/tearabite/ftctearabits/vision/OpenCVUtil.java +++ b/src/main/java/com/tearabite/ielib/vision/OpenCVUtil.java @@ -1,4 +1,4 @@ -package com.tearabite.ftctearabits.vision; +package com.tearabite.ielib.vision; import org.opencv.core.Mat; import org.opencv.core.MatOfInt; diff --git a/src/main/java/com/tearabite/ftctearabits/vision/ScalarRange.java b/src/main/java/com/tearabite/ielib/vision/ScalarRange.java similarity index 86% rename from src/main/java/com/tearabite/ftctearabits/vision/ScalarRange.java rename to src/main/java/com/tearabite/ielib/vision/ScalarRange.java index 42c4f41..90fc991 100644 --- a/src/main/java/com/tearabite/ftctearabits/vision/ScalarRange.java +++ b/src/main/java/com/tearabite/ielib/vision/ScalarRange.java @@ -1,4 +1,4 @@ -package com.tearabite.ftctearabits.vision; +package com.tearabite.ielib.vision; import org.opencv.core.Scalar; diff --git a/src/test/java/com/tearabite/ftctearabits/localization/AprilTagPoseEstimatorTest.java b/src/test/java/com/tearabite/ielib/localization/localization/AprilTagPoseEstimatorTest.java similarity index 88% rename from src/test/java/com/tearabite/ftctearabits/localization/AprilTagPoseEstimatorTest.java rename to src/test/java/com/tearabite/ielib/localization/localization/AprilTagPoseEstimatorTest.java index 2eb57a9..c8c9907 100644 --- a/src/test/java/com/tearabite/ftctearabits/localization/AprilTagPoseEstimatorTest.java +++ b/src/test/java/com/tearabite/ielib/localization/localization/AprilTagPoseEstimatorTest.java @@ -1,9 +1,10 @@ -package com.tearabite.ftctearabits.localization; +package com.tearabite.ielib.localization.localization; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.fail; -import com.acmerobotics.roadrunner.Pose2d; +import com.acmerobotics.roadrunner.geometry.Pose2d; +import com.tearabite.ielib.localization.AprilTagPoseEstimator; import org.firstinspires.ftc.robotcore.external.matrices.VectorF; import org.firstinspires.ftc.robotcore.external.navigation.DistanceUnit; @@ -19,7 +20,7 @@ import org.junit.jupiter.params.provider.MethodSource; import java.security.InvalidParameterException; import java.util.stream.Stream; -class AprilTagPoseEstimatorTest { +public class AprilTagPoseEstimatorTest { private static final AprilTagMetadata metadata = new AprilTagMetadata( 2, @@ -91,14 +92,14 @@ class AprilTagPoseEstimatorTest { } private void assertIsClose(Pose2d a, Pose2d b) { - boolean isClose = isClose(a.position.x, b.position.x) - && isClose(a.position.y, b.position.y) - && isClose(a.heading.toDouble(), b.heading.toDouble()); + boolean isClose = isClose(a.getX(), b.getX()) + && isClose(a.getY(), b.getY()) + && isClose(a.getHeading(), b.getHeading()); if (!isClose) { fail(String.format("Expected (%.1f, %.1f, %.1f) to be close to (%.1f, %.1f, %.1f)", - a.position.x, a.position.y, a.heading.toDouble(), - b.position.x, b.position.y, b.heading.toDouble())); + a.getX(), a.getY(), a.getHeading(), + b.getX(), b.getY(), b.getHeading())); } } } \ No newline at end of file