diff --git a/build.gradle b/build.gradle index 8d36417..bffbd69 100644 --- a/build.gradle +++ b/build.gradle @@ -16,9 +16,9 @@ repositories { mavenCentral() } //if (project.hasProperty('releaseMode')) { - wpilibRepositories.addAllReleaseRepositories(project) +wpilibRepositories.addAllReleaseRepositories(project) //} else { - //wpilibRepositories.addAllDevelopmentRepositories(project) +//wpilibRepositories.addAllDevelopmentRepositories(project) //} // Apply C++ configuration diff --git a/publish.gradle b/publish.gradle index 4228184..e707935 100644 --- a/publish.gradle +++ b/publish.gradle @@ -2,7 +2,7 @@ apply plugin: 'maven-publish' ext.licenseFile = files("$rootDir/LICENSE.txt") -def pubVersion = '2024.4.8.13' +def pubVersion = '2024.5.0.0' def outputsFolder = file("$buildDir/outputs") diff --git a/src/main/java/swervelib/SwerveDrive.java b/src/main/java/swervelib/SwerveDrive.java index 6da6906..b7b1623 100644 --- a/src/main/java/swervelib/SwerveDrive.java +++ b/src/main/java/swervelib/SwerveDrive.java @@ -1044,6 +1044,19 @@ public void restoreInternalOffset() { } } + /** + * Enable auto-centering module wheels. This has a side effect of causing some jitter to the robot + * when a PID is not tuned perfectly. This function is a wrapper for {@link + * SwerveModule#setAntiJitter(boolean)} to perform auto-centering. + * + * @param enabled Enable auto-centering (disable antiJitter) + */ + public void setAutoCenteringModules(boolean enabled) { + for (SwerveModule module : swerveModules) { + module.setAntiJitter(!enabled); + } + } + /** * Enable or disable the {@link swervelib.parser.SwerveModuleConfiguration#useCosineCompensator} * for all {@link SwerveModule}'s in the swerve drive. The cosine compensator will slow down or diff --git a/src/main/java/swervelib/math/SwerveMath.java b/src/main/java/swervelib/math/SwerveMath.java index 4697daf..b4a8ad4 100644 --- a/src/main/java/swervelib/math/SwerveMath.java +++ b/src/main/java/swervelib/math/SwerveMath.java @@ -336,33 +336,19 @@ public static SwerveModuleConfiguration getSwerveModule( * 756 degrees, assumes the full scope is (720-1080), and places an angle of 22 degrees into it, * returning 742 deg. * + *
A more formal definition: returns the closest angle {@code n} to {@code scopeReference} such
+ * that {@code n} is congruent to {@code newAngle}.
+ *
* @param scopeReference Current Angle (deg)
* @param newAngle Target Angle (deg)
* @return Closest angle within scope (deg)
*/
public static double placeInAppropriate0To360Scope(double scopeReference, double newAngle) {
- double lowerBound;
- double upperBound;
- double lowerOffset = scopeReference % 360;
- if (lowerOffset >= 0) {
- lowerBound = scopeReference - lowerOffset;
- upperBound = scopeReference + (360 - lowerOffset);
- } else {
- upperBound = scopeReference - lowerOffset;
- lowerBound = scopeReference - (360 + lowerOffset);
- }
- while (newAngle < lowerBound) {
- newAngle += 360;
- }
- while (newAngle > upperBound) {
- newAngle -= 360;
- }
- if (newAngle - scopeReference > 180) {
- newAngle -= 360;
- } else if (newAngle - scopeReference < -180) {
- newAngle += 360;
- }
- return newAngle;
+ // Figure out how many revolutions from the angle to the reference
+ double diffRevs = Math.round((scopeReference - newAngle) / 360) * 360;
+
+ // Add that many revolutions
+ return diffRevs + newAngle;
}
/**
diff --git a/src/main/java/swervelib/parser/json/ModuleJson.java b/src/main/java/swervelib/parser/json/ModuleJson.java
index 8399f47..3075531 100644
--- a/src/main/java/swervelib/parser/json/ModuleJson.java
+++ b/src/main/java/swervelib/parser/json/ModuleJson.java
@@ -9,6 +9,7 @@
import swervelib.parser.SwerveModuleConfiguration;
import swervelib.parser.SwerveModulePhysicalCharacteristics;
import swervelib.parser.json.modules.BoolMotorJson;
+import swervelib.parser.json.modules.ConversionFactorsJson;
import swervelib.parser.json.modules.LocationJson;
/** {@link swervelib.SwerveModule} JSON parsed class. Used to access the JSON data. */
@@ -27,6 +28,8 @@ public class ModuleJson {
* drive motors.
*/
public MotorConfigDouble conversionFactor = new MotorConfigDouble(0, 0);
+ /** Conversion Factors composition. Auto-calculates the conversion factors. */
+ public ConversionFactorsJson conversionFactors = new ConversionFactorsJson();
/** Absolute encoder device configuration. */
public DeviceJson encoder;
/** Defines which motors are inverted. */
@@ -64,6 +67,27 @@ public SwerveModuleConfiguration createModuleConfiguration(
}
}
+ // Setup deprecation notice.
+ // if (this.conversionFactor.drive != 0 && this.conversionFactor.angle != 0)
+ // {
+ // new Alert("Configuration",
+ // "\n'conversionFactor': {'drive': " + conversionFactor.drive + ", 'angle': " +
+ // conversionFactor.angle +
+ // "} \nis deprecated, please use\n" +
+ // "'conversionFactors': {'drive': {'factor': " + conversionFactor.drive + "},
+ // 'angle': {'factor': " +
+ // conversionFactor.angle + "} }",
+ // AlertType.WARNING).set(true);
+ // }
+
+ // Override with composite conversion factor.
+ if (!conversionFactors.isAngleEmpty()) {
+ conversionFactor.angle = conversionFactors.angle.calculate();
+ }
+ if (!conversionFactors.isDriveEmpty()) {
+ conversionFactor.drive = conversionFactors.drive.calculate();
+ }
+
// Set the conversion factors to null if they are both 0.
if (this.conversionFactor != null) {
if (this.conversionFactor.angle == 0 && this.conversionFactor.drive == 0) {
diff --git a/src/main/java/swervelib/parser/json/PhysicalPropertiesJson.java b/src/main/java/swervelib/parser/json/PhysicalPropertiesJson.java
index e6401c5..6d73310 100644
--- a/src/main/java/swervelib/parser/json/PhysicalPropertiesJson.java
+++ b/src/main/java/swervelib/parser/json/PhysicalPropertiesJson.java
@@ -1,6 +1,7 @@
package swervelib.parser.json;
import swervelib.parser.SwerveModulePhysicalCharacteristics;
+import swervelib.parser.json.modules.ConversionFactorsJson;
/**
* {@link swervelib.parser.SwerveModulePhysicalCharacteristics} parsed data. Used to configure the
@@ -15,6 +16,8 @@ public class PhysicalPropertiesJson {
* drive motors.
*/
public MotorConfigDouble conversionFactor = new MotorConfigDouble(0, 0);
+ /** Conversion Factors composition. Auto-calculates the conversion factors. */
+ public ConversionFactorsJson conversionFactors = new ConversionFactorsJson();
/** The current limit in AMPs to apply to the motors. */
public MotorConfigInt currentLimit = new MotorConfigInt(40, 20);
/** The minimum number of seconds to take for the motor to go from 0 to full throttle. */
@@ -33,6 +36,29 @@ public class PhysicalPropertiesJson {
* @return {@link SwerveModulePhysicalCharacteristics} based on parsed data.
*/
public SwerveModulePhysicalCharacteristics createPhysicalProperties() {
+ // Setup deprecation notice.
+ // if (conversionFactor.drive != 0 && conversionFactor.angle != 0 &&
+ // conversionFactors.isDriveEmpty() &&
+ // conversionFactors.isAngleEmpty())
+ // {
+ // new Alert("Configuration",
+ // "\n'conversionFactor': {'drive': " + conversionFactor.drive + ", 'angle': " +
+ // conversionFactor.angle +
+ // "} \nis deprecated, please use\n" +
+ // "'conversionFactors': {'drive': {'factor': " + conversionFactor.drive + "},
+ // 'angle': {'factor': " +
+ // conversionFactor.angle + "} }",
+ // AlertType.ERROR_TRACE).set(true);
+ // }
+
+ if (!conversionFactors.isAngleEmpty()) {
+ conversionFactor.angle = conversionFactors.angle.calculate();
+ }
+
+ if (!conversionFactors.isDriveEmpty()) {
+ conversionFactor.drive = conversionFactors.drive.calculate();
+ }
+
return new SwerveModulePhysicalCharacteristics(
conversionFactor,
wheelGripCoefficientOfFriction,
diff --git a/src/main/java/swervelib/parser/json/modules/AngleConversionFactorsJson.java b/src/main/java/swervelib/parser/json/modules/AngleConversionFactorsJson.java
new file mode 100644
index 0000000..d75d892
--- /dev/null
+++ b/src/main/java/swervelib/parser/json/modules/AngleConversionFactorsJson.java
@@ -0,0 +1,36 @@
+package swervelib.parser.json.modules;
+
+import swervelib.math.SwerveMath;
+import swervelib.telemetry.Alert;
+import swervelib.telemetry.Alert.AlertType;
+
+/** Angle motor conversion factors composite JSON parse class. */
+public class AngleConversionFactorsJson {
+
+ /**
+ * Gear ratio for the angle/steering/azimuth motor on the Swerve Module. Motor rotations to 1
+ * wheel rotation.
+ */
+ public double gearRatio = 0;
+ /** Calculated or given conversion factor. */
+ public double factor = 0;
+
+ /**
+ * Calculate the drive conversion factor.
+ *
+ * @return Drive conversion factor, if factor isn't set.
+ */
+ public double calculate() {
+ if (factor != 0 && gearRatio != 0) {
+ new Alert(
+ "Configuration",
+ "The given angle conversion factor takes precedence over the composite conversion factor, please remove 'factor' if you want to use the composite factor instead.",
+ AlertType.WARNING)
+ .set(true);
+ }
+ if (factor == 0) {
+ factor = SwerveMath.calculateDegreesPerSteeringRotation(gearRatio);
+ }
+ return factor;
+ }
+}
diff --git a/src/main/java/swervelib/parser/json/modules/ConversionFactorsJson.java b/src/main/java/swervelib/parser/json/modules/ConversionFactorsJson.java
new file mode 100644
index 0000000..79c509b
--- /dev/null
+++ b/src/main/java/swervelib/parser/json/modules/ConversionFactorsJson.java
@@ -0,0 +1,28 @@
+package swervelib.parser.json.modules;
+
+/** Conversion Factors parsed JSON class */
+public class ConversionFactorsJson {
+
+ /** Drive motor conversion factors composition. */
+ public DriveConversionFactorsJson drive = new DriveConversionFactorsJson();
+ /** Angle motor conversion factors composition. */
+ public AngleConversionFactorsJson angle = new AngleConversionFactorsJson();
+
+ /**
+ * Check if the conversion factors are set for the drive motor.
+ *
+ * @return Empty
+ */
+ public boolean isDriveEmpty() {
+ return drive.factor == 0 && drive.diameter == 0 && drive.gearRatio == 0;
+ }
+
+ /**
+ * Check if the conversion factors are set for the angle motor.
+ *
+ * @return Empty
+ */
+ public boolean isAngleEmpty() {
+ return angle.factor == 0 && angle.gearRatio == 0;
+ }
+}
diff --git a/src/main/java/swervelib/parser/json/modules/DriveConversionFactorsJson.java b/src/main/java/swervelib/parser/json/modules/DriveConversionFactorsJson.java
new file mode 100644
index 0000000..3278b2b
--- /dev/null
+++ b/src/main/java/swervelib/parser/json/modules/DriveConversionFactorsJson.java
@@ -0,0 +1,38 @@
+package swervelib.parser.json.modules;
+
+import edu.wpi.first.math.util.Units;
+import swervelib.math.SwerveMath;
+import swervelib.telemetry.Alert;
+import swervelib.telemetry.Alert.AlertType;
+
+/** Drive motor composite JSON parse class. */
+public class DriveConversionFactorsJson {
+
+ /** Gear ratio for the drive motor rotations to turn the wheel 1 complete rotation. */
+ public double gearRatio = 0;
+ /** Diameter of the wheel in inches. */
+ public double diameter = 0;
+ /** Calculated conversion factor. */
+ public double factor = 0;
+
+ /**
+ * Calculate the drive conversion factor.
+ *
+ * @return Drive conversion factor, if factor isn't set.
+ */
+ public double calculate() {
+ if (factor != 0 && (diameter != 0 || gearRatio != 0)) {
+ new Alert(
+ "Configuration",
+ "The given drive conversion factor takes precedence over the composite conversion factor, please remove 'factor' if you want to use the composite factor instead.",
+ AlertType.WARNING)
+ .set(true);
+ }
+ if (factor == 0) {
+ factor =
+ SwerveMath.calculateMetersPerRotation(
+ Units.inchesToMeters(this.diameter), this.gearRatio);
+ }
+ return factor;
+ }
+}
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip
new file mode 100644
index 0000000..19049cd
Binary files /dev/null and b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip differ
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip.md5 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip.md5
new file mode 100644
index 0000000..ff4d09a
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip.md5
@@ -0,0 +1 @@
+08caa4af8eaae4675661179f851ffb27
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip.sha1 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip.sha1
new file mode 100644
index 0000000..25db36c
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip.sha1
@@ -0,0 +1 @@
+de3b1976111495ed71be02dc1e444364198ecaf0
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip.sha256 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip.sha256
new file mode 100644
index 0000000..5d4b495
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip.sha256
@@ -0,0 +1 @@
+fb99f57bbdc7c3b30b185c9643609f16d4e60d7e3b1e69dfe1f112924fb168ec
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip.sha512 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip.sha512
new file mode 100644
index 0000000..33a1031
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-headers.zip.sha512
@@ -0,0 +1 @@
+418b466a46440387ed256fa4937014c875ff04f0e454b13af2caf3d9a44734720e2f1c79df8224a7e9dead59a1d018b0635cae03daa77908c949395df953bb96
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip
new file mode 100644
index 0000000..19049cd
Binary files /dev/null and b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip differ
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip.md5 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip.md5
new file mode 100644
index 0000000..ff4d09a
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip.md5
@@ -0,0 +1 @@
+08caa4af8eaae4675661179f851ffb27
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip.sha1 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip.sha1
new file mode 100644
index 0000000..25db36c
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip.sha1
@@ -0,0 +1 @@
+de3b1976111495ed71be02dc1e444364198ecaf0
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip.sha256 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip.sha256
new file mode 100644
index 0000000..5d4b495
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip.sha256
@@ -0,0 +1 @@
+fb99f57bbdc7c3b30b185c9643609f16d4e60d7e3b1e69dfe1f112924fb168ec
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip.sha512 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip.sha512
new file mode 100644
index 0000000..33a1031
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathena.zip.sha512
@@ -0,0 +1 @@
+418b466a46440387ed256fa4937014c875ff04f0e454b13af2caf3d9a44734720e2f1c79df8224a7e9dead59a1d018b0635cae03daa77908c949395df953bb96
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip
new file mode 100644
index 0000000..19049cd
Binary files /dev/null and b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip differ
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip.md5 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip.md5
new file mode 100644
index 0000000..ff4d09a
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip.md5
@@ -0,0 +1 @@
+08caa4af8eaae4675661179f851ffb27
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip.sha1 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip.sha1
new file mode 100644
index 0000000..25db36c
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip.sha1
@@ -0,0 +1 @@
+de3b1976111495ed71be02dc1e444364198ecaf0
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip.sha256 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip.sha256
new file mode 100644
index 0000000..5d4b495
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip.sha256
@@ -0,0 +1 @@
+fb99f57bbdc7c3b30b185c9643609f16d4e60d7e3b1e69dfe1f112924fb168ec
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip.sha512 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip.sha512
new file mode 100644
index 0000000..33a1031
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenadebug.zip.sha512
@@ -0,0 +1 @@
+418b466a46440387ed256fa4937014c875ff04f0e454b13af2caf3d9a44734720e2f1c79df8224a7e9dead59a1d018b0635cae03daa77908c949395df953bb96
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip
new file mode 100644
index 0000000..19049cd
Binary files /dev/null and b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip differ
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip.md5 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip.md5
new file mode 100644
index 0000000..ff4d09a
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip.md5
@@ -0,0 +1 @@
+08caa4af8eaae4675661179f851ffb27
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip.sha1 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip.sha1
new file mode 100644
index 0000000..25db36c
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip.sha1
@@ -0,0 +1 @@
+de3b1976111495ed71be02dc1e444364198ecaf0
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip.sha256 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip.sha256
new file mode 100644
index 0000000..5d4b495
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip.sha256
@@ -0,0 +1 @@
+fb99f57bbdc7c3b30b185c9643609f16d4e60d7e3b1e69dfe1f112924fb168ec
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip.sha512 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip.sha512
new file mode 100644
index 0000000..33a1031
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastatic.zip.sha512
@@ -0,0 +1 @@
+418b466a46440387ed256fa4937014c875ff04f0e454b13af2caf3d9a44734720e2f1c79df8224a7e9dead59a1d018b0635cae03daa77908c949395df953bb96
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip
new file mode 100644
index 0000000..19049cd
Binary files /dev/null and b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip differ
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip.md5 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip.md5
new file mode 100644
index 0000000..ff4d09a
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip.md5
@@ -0,0 +1 @@
+08caa4af8eaae4675661179f851ffb27
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip.sha1 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip.sha1
new file mode 100644
index 0000000..25db36c
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip.sha1
@@ -0,0 +1 @@
+de3b1976111495ed71be02dc1e444364198ecaf0
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip.sha256 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip.sha256
new file mode 100644
index 0000000..5d4b495
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip.sha256
@@ -0,0 +1 @@
+fb99f57bbdc7c3b30b185c9643609f16d4e60d7e3b1e69dfe1f112924fb168ec
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip.sha512 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip.sha512
new file mode 100644
index 0000000..33a1031
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-linuxathenastaticdebug.zip.sha512
@@ -0,0 +1 @@
+418b466a46440387ed256fa4937014c875ff04f0e454b13af2caf3d9a44734720e2f1c79df8224a7e9dead59a1d018b0635cae03daa77908c949395df953bb96
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip
new file mode 100644
index 0000000..19049cd
Binary files /dev/null and b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip differ
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip.md5 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip.md5
new file mode 100644
index 0000000..ff4d09a
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip.md5
@@ -0,0 +1 @@
+08caa4af8eaae4675661179f851ffb27
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip.sha1 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip.sha1
new file mode 100644
index 0000000..25db36c
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip.sha1
@@ -0,0 +1 @@
+de3b1976111495ed71be02dc1e444364198ecaf0
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip.sha256 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip.sha256
new file mode 100644
index 0000000..5d4b495
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip.sha256
@@ -0,0 +1 @@
+fb99f57bbdc7c3b30b185c9643609f16d4e60d7e3b1e69dfe1f112924fb168ec
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip.sha512 b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip.sha512
new file mode 100644
index 0000000..33a1031
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0-sources.zip.sha512
@@ -0,0 +1 @@
+418b466a46440387ed256fa4937014c875ff04f0e454b13af2caf3d9a44734720e2f1c79df8224a7e9dead59a1d018b0635cae03daa77908c949395df953bb96
\ No newline at end of file
diff --git a/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0.pom b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0.pom
new file mode 100644
index 0000000..5db460e
--- /dev/null
+++ b/yagsl/repos/swervelib/YAGSL-cpp/2024.5.0.0/YAGSL-cpp-2024.5.0.0.pom
@@ -0,0 +1,9 @@
+
+