diff --git a/docs/docs/getting-started/template-projects/diff-drive-template.md b/docs/docs/getting-started/template-projects/diff-drive-template.md index 3e216170..e8e86d90 100644 --- a/docs/docs/getting-started/template-projects/diff-drive-template.md +++ b/docs/docs/getting-started/template-projects/diff-drive-template.md @@ -33,25 +33,27 @@ This example project is part of the 2025 AdvantageKit beta release. If you encou 3. If not already available, download and install [Git](https://git-scm.com/downloads). -4. Navigate to `src/main/java/frc/robot/subsystems/drive/DriveConstants.java` in the AdvantageKit project. +4. If the project will run **only on the roboRIO 2**, uncomment lines 39-42 of `build.gradle`. These contain additional [garbage collection](https://www.geeksforgeeks.org/garbage-collection-java/) optimizations for the RIO 2 to improve performance. -5. Update the value of `motorReduction` based on the robot's gearing. These values represent reductions and should generally be greater than one. +5. Navigate to `src/main/java/frc/robot/subsystems/drive/DriveConstants.java` in the AdvantageKit project. -6. Update the value of `trackWidth` based on the distance between the left and right sets of wheels. +6. Update the value of `motorReduction` based on the robot's gearing. These values represent reductions and should generally be greater than one. -7. Update the value of `wheelRadiusMeters` to the theoretical radius of each wheel. This value can be further refined as described in the "Tuning" section below. +7. Update the value of `trackWidth` based on the distance between the left and right sets of wheels. -8. Update the value of `maxSpeedMetersPerSec` to the theoretical max speed of the robot. This value can be further refined as described in the "Tuning" section below. +8. Update the value of `wheelRadiusMeters` to the theoretical radius of each wheel. This value can be further refined as described in the "Tuning" section below. -9. Set the value of `pigeonCanId` to the correct CAN ID of the Pigeon 2 (as configured using Tuner X). **If using a NavX instead of a Pigeon 2, see the [customization](#customization) section below.** +9. Update the value of `maxSpeedMetersPerSec` to the theoretical max speed of the robot. This value can be further refined as described in the "Tuning" section below. -10. Set values of the left and right leader and follower motors to the correct CAN IDs of the drive controllers (as configured in Phoenix Tuner or REV Hardware Client). +10. Set the value of `pigeonCanId` to the correct CAN ID of the Pigeon 2 (as configured using Tuner X). **If using a NavX instead of a Pigeon 2, see the [customization](#customization) section below.** -11. In the constructor of `RobotContainer`, switch the IO implementations instantiated for the drive based on your chosen hardware. The default is the Talon SRX and Pigeon 2. +11. Set values of the left and right leader and follower motors to the correct CAN IDs of the drive controllers (as configured in Phoenix Tuner or REV Hardware Client). -12. Deploy the project to the robot and connect using AdvantageScope. +12. In the constructor of `RobotContainer`, switch the IO implementations instantiated for the drive based on your chosen hardware. The default is the Talon SRX and Pigeon 2. -13. Check that there are no dashboard alerts or errors in the Driver Station console. If any errors appear, verify that CAN IDs, firmware versions, and configurations of all devices. +13. Deploy the project to the robot and connect using AdvantageScope. + +14. Check that there are no dashboard alerts or errors in the Driver Station console. If any errors appear, verify that CAN IDs, firmware versions, and configurations of all devices. :::warning The project is configured to save log files when running on a real robot. **A FAT32 formatted USB stick must be connected to one of the roboRIO USB ports to save log files.** diff --git a/docs/docs/getting-started/template-projects/spark-swerve-template.md b/docs/docs/getting-started/template-projects/spark-swerve-template.md index bbcff70f..4ed4848d 100644 --- a/docs/docs/getting-started/template-projects/spark-swerve-template.md +++ b/docs/docs/getting-started/template-projects/spark-swerve-template.md @@ -42,25 +42,27 @@ The swerve project folder includes a predefined AdvantageScope layout with tabs 3. If not already available, download and install [Git](https://git-scm.com/downloads). -4. Navigate to `src/main/java/frc/robot/subsystems/drive/DriveConstants.java` in the AdvantageKit project. +4. If the project will run **only on the roboRIO 2**, uncomment lines 39-42 of `build.gradle`. These contain additional [garbage collection](https://www.geeksforgeeks.org/garbage-collection-java/) optimizations for the RIO 2 to improve performance. -5. Update the values of `driveMotorReduction` and `turnMotorReduction` based on the robot's module type and configuration. This information can typically be found on the product page for the swerve module. These values represent reductions and should generally be greater than one. +5. Navigate to `src/main/java/frc/robot/subsystems/drive/DriveConstants.java` in the AdvantageKit project. -6. Update the values of `trackWidth` and `wheelBase` based on the distance between the left-right and front-back modules (respectively). +6. Update the values of `driveMotorReduction` and `turnMotorReduction` based on the robot's module type and configuration. This information can typically be found on the product page for the swerve module. These values represent reductions and should generally be greater than one. -7. Update the value of `wheelRadiusMeters` to the theoretical radius of each wheel. This value can be further refined as described in the "Tuning" section below. +7. Update the values of `trackWidth` and `wheelBase` based on the distance between the left-right and front-back modules (respectively). -8. Update the value of `maxSpeedMetersPerSec` to the theoretical max speed of the robot. This value can be further refined as described in the "Tuning" section below. +8. Update the value of `wheelRadiusMeters` to the theoretical radius of each wheel. This value can be further refined as described in the "Tuning" section below. -9. Set the value of `pigeonCanId` to the correct CAN ID of the Pigeon 2 (as configured using Tuner X). **If using a NavX instead of a Pigeon 2, see the [customization](#customization) section below.** +9. Update the value of `maxSpeedMetersPerSec` to the theoretical max speed of the robot. This value can be further refined as described in the "Tuning" section below. -10. For each module, set the values of `...DriveMotorId` and `...TurnMotorId` to the correct CAN IDs of the drive Spark Flex and turn Spark Max (as configured in the REV Hardware Client). +10. Set the value of `pigeonCanId` to the correct CAN ID of the Pigeon 2 (as configured using Tuner X). **If using a NavX instead of a Pigeon 2, see the [customization](#customization) section below.** -11. For each module, set the value of `...ZeroRotation` to `new Rotation2d(0.0)`. +11. For each module, set the values of `...DriveMotorId` and `...TurnMotorId` to the correct CAN IDs of the drive Spark Flex and turn Spark Max (as configured in the REV Hardware Client). -12. Deploy the project to the robot and connect using AdvantageScope. +12. For each module, set the value of `...ZeroRotation` to `new Rotation2d(0.0)`. -13. Check that there are no dashboard alerts or errors in the Driver Station console. If any errors appear, verify that CAN IDs, firmware versions, and configurations of all devices. +13. Deploy the project to the robot and connect using AdvantageScope. + +14. Check that there are no dashboard alerts or errors in the Driver Station console. If any errors appear, verify that CAN IDs, firmware versions, and configurations of all devices. :::warning The project is configured to save log files when running on a real robot. **A FAT32 formatted USB stick must be connected to one of the roboRIO USB ports to save log files.** diff --git a/docs/docs/getting-started/template-projects/talonfx-swerve-template.md b/docs/docs/getting-started/template-projects/talonfx-swerve-template.md index a8309c29..97a1cbb8 100644 --- a/docs/docs/getting-started/template-projects/talonfx-swerve-template.md +++ b/docs/docs/getting-started/template-projects/talonfx-swerve-template.md @@ -54,13 +54,15 @@ CTRE only permits the swerve project generator to be used on swerve robots with 3. If not already available, download and install [Git](https://git-scm.com/downloads). -4. Follow the instructions in the Phoenix documentation for the [Tuner X Swerve Project Generator](https://v6.docs.ctr-electronics.com/en/latest/docs/tuner/tuner-swerve/index.html). +4. If the project will run **only on the roboRIO 2**, uncomment lines 39-42 of `build.gradle`. These contain additional [garbage collection](https://www.geeksforgeeks.org/garbage-collection-java/) optimizations for the RIO 2 to improve performance. -5. On the final screen in Tuner X, choose "Generate only TunerConstants" and overwrite the file located at `src/main/java/frc/robot/generated/TunerConstants.java`. +5. Follow the instructions in the Phoenix documentation for the [Tuner X Swerve Project Generator](https://v6.docs.ctr-electronics.com/en/latest/docs/tuner/tuner-swerve/index.html). -6. In `TunerConstants.java`, comment out the [last import](https://github.com/CrossTheRoadElec/Phoenix6-Examples/blob/1db713d75b08a4315c9273cebf5b5e6a130ed3f7/java/SwerveWithPathPlanner/src/main/java/frc/robot/generated/TunerConstants.java#L18) and [last method](https://github.com/CrossTheRoadElec/Phoenix6-Examples/blob/1db713d75b08a4315c9273cebf5b5e6a130ed3f7/java/SwerveWithPathPlanner/src/main/java/frc/robot/generated/TunerConstants.java#L171-L175). Before removing them, both lines will be marked as errors in VSCode. +6. On the final screen in Tuner X, choose "Generate only TunerConstants" and overwrite the file located at `src/main/java/frc/robot/generated/TunerConstants.java`. -7. In `TunerConstants.java`, change `kSteerInertia` to 0.004 and `kDriveInertia` to 0.025. +7. In `TunerConstants.java`, comment out the [last import](https://github.com/CrossTheRoadElec/Phoenix6-Examples/blob/1db713d75b08a4315c9273cebf5b5e6a130ed3f7/java/SwerveWithPathPlanner/src/main/java/frc/robot/generated/TunerConstants.java#L18) and [last method](https://github.com/CrossTheRoadElec/Phoenix6-Examples/blob/1db713d75b08a4315c9273cebf5b5e6a130ed3f7/java/SwerveWithPathPlanner/src/main/java/frc/robot/generated/TunerConstants.java#L171-L175). Before removing them, both lines will be marked as errors in VSCode. + +8. In `TunerConstants.java`, change `kSteerInertia` to 0.004 and `kDriveInertia` to 0.025. :::warning The project is configured to save log files when running on a real robot. **A FAT32 formatted USB stick must be connected to one of the roboRIO USB ports to save log files.** @@ -75,27 +77,29 @@ The project is configured to save log files when running on a real robot. **A FA 3. If not already available, download and install [Git](https://git-scm.com/downloads). -4. Navigate to `src/main/java/frc/robot/generated/TunerConstants.java` in the AdvantageKit project. +4. If the project will run **only on the roboRIO 2**, uncomment lines 39-42 of `build.gradle`. These contain additional [garbage collection](https://www.geeksforgeeks.org/garbage-collection-java/) optimizations for the RIO 2 to improve performance. + +5. Navigate to `src/main/java/frc/robot/generated/TunerConstants.java` in the AdvantageKit project. -5. Update the values of `kDriveGearRatio` and `kSteerGearRatio` based on the robot's module type and configuration. This information can typically be found on the product page for the swerve module. These values represent reductions and should generally be greater than one. +6. Update the values of `kDriveGearRatio` and `kSteerGearRatio` based on the robot's module type and configuration. This information can typically be found on the product page for the swerve module. These values represent reductions and should generally be greater than one. -6. Update the value of `kWheelRadius` to the theoretical radius of each wheel. This value can be further refined as described in the "Tuning" section below. +7. Update the value of `kWheelRadius` to the theoretical radius of each wheel. This value can be further refined as described in the "Tuning" section below. -7. Update the value of `kSpeedAt12Volts` to the theoretical max speed of the robot. This value can be further refined as described in the "Tuning" section below. +8. Update the value of `kSpeedAt12Volts` to the theoretical max speed of the robot. This value can be further refined as described in the "Tuning" section below. -8. Update the value of `kCANBus` based on the CAN bus used by the drive devices. Check the [`CANBus`](https://api.ctr-electronics.com/phoenix6/latest/java/com/ctre/phoenix6/CANBus.html) API documentation for details on possible values. +9. Update the value of `kCANBus` based on the CAN bus used by the drive devices. Check the [`CANBus`](https://api.ctr-electronics.com/phoenix6/latest/java/com/ctre/phoenix6/CANBus.html) API documentation for details on possible values. -9. Set the value of `kPigeonId` to the correct CAN ID of the Pigeon 2 (as configured using Tuner X). **If using a NavX instead of a Pigeon 2, see the [customization](#customization) section below.** +10. Set the value of `kPigeonId` to the correct CAN ID of the Pigeon 2 (as configured using Tuner X). **If using a NavX instead of a Pigeon 2, see the [customization](#customization) section below.** -10. For each module, set the values of `k...DriveMotorId`, `k...SteerMotorId`, and `k...EncoderId` to the correct CAN IDs of the drive TalonFX, turn TalonFX, and CANcoder (as configured in Tuner X). +11. For each module, set the values of `k...DriveMotorId`, `k...SteerMotorId`, and `k...EncoderId` to the correct CAN IDs of the drive TalonFX, turn TalonFX, and CANcoder (as configured in Tuner X). -11. For each module, set the values of `k...XPos` and `k...YPos` based on the distance from each module to the center of the robot. Positive X values are closer to the front of the robot and positive Y values are closer to the left side of the robot. +12. For each module, set the values of `k...XPos` and `k...YPos` based on the distance from each module to the center of the robot. Positive X values are closer to the front of the robot and positive Y values are closer to the left side of the robot. -12. For each module, set the value of `k...EncoderOffset` to `Radians.of(0.0)`. +13. For each module, set the value of `k...EncoderOffset` to `Radians.of(0.0)`. -13. Deploy the project to the robot and connect using AdvantageScope. +14. Deploy the project to the robot and connect using AdvantageScope. -14. Check that there are no dashboard alerts or errors in the Driver Station console. If any errors appear, verify tha CAN IDs, firmware versions, and configurations of all devices. +15. Check that there are no dashboard alerts or errors in the Driver Station console. If any errors appear, verify tha CAN IDs, firmware versions, and configurations of all devices. :::warning The project is configured to save log files when running on a real robot. **A FAT32 formatted USB stick must be connected to one of the roboRIO USB ports to save log files.** diff --git a/template_projects/diff_drive/build.gradle b/template_projects/diff_drive/build.gradle index 9b82865e..07e59a75 100755 --- a/template_projects/diff_drive/build.gradle +++ b/template_projects/diff_drive/build.gradle @@ -29,16 +29,17 @@ deploy { // getTargetTypeClass is a shortcut to get the class type using a string frcJava(getArtifactTypeClass('FRCJavaArtifact')) { - // https://www.chiefdelphi.com/t/2024-wpilib-feedback/464322/141 - final MAX_JAVA_HEAP_SIZE_MB = 100; jvmArgs.add("-XX:+UnlockExperimentalVMOptions") - - // Set the minimum heap size to the maximum heap size to avoid resizing - jvmArgs.add("-Xmx" + MAX_JAVA_HEAP_SIZE_MB + "M") - jvmArgs.add("-Xms" + MAX_JAVA_HEAP_SIZE_MB + "M") jvmArgs.add("-XX:GCTimeRatio=5") jvmArgs.add("-XX:+UseSerialGC") jvmArgs.add("-XX:MaxGCPauseMillis=50") + + // The options below may improve performance, but should only be enabled on the RIO 2 + // + // final MAX_JAVA_HEAP_SIZE_MB = 100; + // jvmArgs.add("-Xmx" + MAX_JAVA_HEAP_SIZE_MB + "M") + // jvmArgs.add("-Xms" + MAX_JAVA_HEAP_SIZE_MB + "M") + // jvmArgs.add("-XX:+AlwaysPreTouch") } // Static files artifact diff --git a/template_projects/kitbot_2024/build.gradle b/template_projects/kitbot_2024/build.gradle index 9b82865e..07e59a75 100755 --- a/template_projects/kitbot_2024/build.gradle +++ b/template_projects/kitbot_2024/build.gradle @@ -29,16 +29,17 @@ deploy { // getTargetTypeClass is a shortcut to get the class type using a string frcJava(getArtifactTypeClass('FRCJavaArtifact')) { - // https://www.chiefdelphi.com/t/2024-wpilib-feedback/464322/141 - final MAX_JAVA_HEAP_SIZE_MB = 100; jvmArgs.add("-XX:+UnlockExperimentalVMOptions") - - // Set the minimum heap size to the maximum heap size to avoid resizing - jvmArgs.add("-Xmx" + MAX_JAVA_HEAP_SIZE_MB + "M") - jvmArgs.add("-Xms" + MAX_JAVA_HEAP_SIZE_MB + "M") jvmArgs.add("-XX:GCTimeRatio=5") jvmArgs.add("-XX:+UseSerialGC") jvmArgs.add("-XX:MaxGCPauseMillis=50") + + // The options below may improve performance, but should only be enabled on the RIO 2 + // + // final MAX_JAVA_HEAP_SIZE_MB = 100; + // jvmArgs.add("-Xmx" + MAX_JAVA_HEAP_SIZE_MB + "M") + // jvmArgs.add("-Xms" + MAX_JAVA_HEAP_SIZE_MB + "M") + // jvmArgs.add("-XX:+AlwaysPreTouch") } // Static files artifact diff --git a/template_projects/skeleton/build.gradle b/template_projects/skeleton/build.gradle index 9b82865e..07e59a75 100755 --- a/template_projects/skeleton/build.gradle +++ b/template_projects/skeleton/build.gradle @@ -29,16 +29,17 @@ deploy { // getTargetTypeClass is a shortcut to get the class type using a string frcJava(getArtifactTypeClass('FRCJavaArtifact')) { - // https://www.chiefdelphi.com/t/2024-wpilib-feedback/464322/141 - final MAX_JAVA_HEAP_SIZE_MB = 100; jvmArgs.add("-XX:+UnlockExperimentalVMOptions") - - // Set the minimum heap size to the maximum heap size to avoid resizing - jvmArgs.add("-Xmx" + MAX_JAVA_HEAP_SIZE_MB + "M") - jvmArgs.add("-Xms" + MAX_JAVA_HEAP_SIZE_MB + "M") jvmArgs.add("-XX:GCTimeRatio=5") jvmArgs.add("-XX:+UseSerialGC") jvmArgs.add("-XX:MaxGCPauseMillis=50") + + // The options below may improve performance, but should only be enabled on the RIO 2 + // + // final MAX_JAVA_HEAP_SIZE_MB = 100; + // jvmArgs.add("-Xmx" + MAX_JAVA_HEAP_SIZE_MB + "M") + // jvmArgs.add("-Xms" + MAX_JAVA_HEAP_SIZE_MB + "M") + // jvmArgs.add("-XX:+AlwaysPreTouch") } // Static files artifact diff --git a/template_projects/spark_swerve/build.gradle b/template_projects/spark_swerve/build.gradle index 9b82865e..07e59a75 100755 --- a/template_projects/spark_swerve/build.gradle +++ b/template_projects/spark_swerve/build.gradle @@ -29,16 +29,17 @@ deploy { // getTargetTypeClass is a shortcut to get the class type using a string frcJava(getArtifactTypeClass('FRCJavaArtifact')) { - // https://www.chiefdelphi.com/t/2024-wpilib-feedback/464322/141 - final MAX_JAVA_HEAP_SIZE_MB = 100; jvmArgs.add("-XX:+UnlockExperimentalVMOptions") - - // Set the minimum heap size to the maximum heap size to avoid resizing - jvmArgs.add("-Xmx" + MAX_JAVA_HEAP_SIZE_MB + "M") - jvmArgs.add("-Xms" + MAX_JAVA_HEAP_SIZE_MB + "M") jvmArgs.add("-XX:GCTimeRatio=5") jvmArgs.add("-XX:+UseSerialGC") jvmArgs.add("-XX:MaxGCPauseMillis=50") + + // The options below may improve performance, but should only be enabled on the RIO 2 + // + // final MAX_JAVA_HEAP_SIZE_MB = 100; + // jvmArgs.add("-Xmx" + MAX_JAVA_HEAP_SIZE_MB + "M") + // jvmArgs.add("-Xms" + MAX_JAVA_HEAP_SIZE_MB + "M") + // jvmArgs.add("-XX:+AlwaysPreTouch") } // Static files artifact diff --git a/template_projects/talonfx_swerve/build.gradle b/template_projects/talonfx_swerve/build.gradle index 9b82865e..07e59a75 100755 --- a/template_projects/talonfx_swerve/build.gradle +++ b/template_projects/talonfx_swerve/build.gradle @@ -29,16 +29,17 @@ deploy { // getTargetTypeClass is a shortcut to get the class type using a string frcJava(getArtifactTypeClass('FRCJavaArtifact')) { - // https://www.chiefdelphi.com/t/2024-wpilib-feedback/464322/141 - final MAX_JAVA_HEAP_SIZE_MB = 100; jvmArgs.add("-XX:+UnlockExperimentalVMOptions") - - // Set the minimum heap size to the maximum heap size to avoid resizing - jvmArgs.add("-Xmx" + MAX_JAVA_HEAP_SIZE_MB + "M") - jvmArgs.add("-Xms" + MAX_JAVA_HEAP_SIZE_MB + "M") jvmArgs.add("-XX:GCTimeRatio=5") jvmArgs.add("-XX:+UseSerialGC") jvmArgs.add("-XX:MaxGCPauseMillis=50") + + // The options below may improve performance, but should only be enabled on the RIO 2 + // + // final MAX_JAVA_HEAP_SIZE_MB = 100; + // jvmArgs.add("-Xmx" + MAX_JAVA_HEAP_SIZE_MB + "M") + // jvmArgs.add("-Xms" + MAX_JAVA_HEAP_SIZE_MB + "M") + // jvmArgs.add("-XX:+AlwaysPreTouch") } // Static files artifact diff --git a/template_projects/vision/build.gradle b/template_projects/vision/build.gradle index 9b82865e..07e59a75 100755 --- a/template_projects/vision/build.gradle +++ b/template_projects/vision/build.gradle @@ -29,16 +29,17 @@ deploy { // getTargetTypeClass is a shortcut to get the class type using a string frcJava(getArtifactTypeClass('FRCJavaArtifact')) { - // https://www.chiefdelphi.com/t/2024-wpilib-feedback/464322/141 - final MAX_JAVA_HEAP_SIZE_MB = 100; jvmArgs.add("-XX:+UnlockExperimentalVMOptions") - - // Set the minimum heap size to the maximum heap size to avoid resizing - jvmArgs.add("-Xmx" + MAX_JAVA_HEAP_SIZE_MB + "M") - jvmArgs.add("-Xms" + MAX_JAVA_HEAP_SIZE_MB + "M") jvmArgs.add("-XX:GCTimeRatio=5") jvmArgs.add("-XX:+UseSerialGC") jvmArgs.add("-XX:MaxGCPauseMillis=50") + + // The options below may improve performance, but should only be enabled on the RIO 2 + // + // final MAX_JAVA_HEAP_SIZE_MB = 100; + // jvmArgs.add("-Xmx" + MAX_JAVA_HEAP_SIZE_MB + "M") + // jvmArgs.add("-Xms" + MAX_JAVA_HEAP_SIZE_MB + "M") + // jvmArgs.add("-XX:+AlwaysPreTouch") } // Static files artifact