From d589c897db034f9bb67a5e6c1bc1a3ba4f644d58 Mon Sep 17 00:00:00 2001 From: programming06 <2491nomythic@gmail.com> Date: Tue, 11 Nov 2025 17:58:45 -0600 Subject: [PATCH 01/17] Made website more understable by rewording sentences and fixing typos. --- blog/2024-04-23-General-Status-Update-13.md | 4 ++-- docs/how-to-docu/_category_.json | 2 +- docs/how-to/_category_.json | 4 ++-- docs/how-to/how-to-blog-post.md | 8 +++++--- docs/how-to/how-to-edit-files.md | 4 ++-- docs/how-to/how-to-git.md | 10 +++++----- docs/robot-docs/pneumatics.md | 6 +----- docs/tutorials/_category_.json | 2 +- src/components/HomepageFeatures/index.js | 8 ++++---- 9 files changed, 23 insertions(+), 25 deletions(-) diff --git a/blog/2024-04-23-General-Status-Update-13.md b/blog/2024-04-23-General-Status-Update-13.md index f2c3fa1..cf309a4 100644 --- a/blog/2024-04-23-General-Status-Update-13.md +++ b/blog/2024-04-23-General-Status-Update-13.md @@ -8,8 +8,8 @@ authors: title: Zero The Hut tags: [competition season] --- -lots happening today as we get ready for state and dive into off season progects. -* Revolution Reprair (Xiaohan, Davey): Xiaohan and Davey worked on geting Revolution back up and runing. +Lots happening today as we get ready for state and dive into off season progects. +* Revolution Repair (Xiaohan, Davey): Xiaohan and Davey worked on geting Revolution back up and runing. * Pattern Language Work (Serena): Serena worked on filling out or pattern languge and what we learned from this season. * PID Teaching (Rowan, Griffin): Rowan was teaching Griffen about PID tuning. * AdvantageScope (Us Two): Zack and Augie worked on testing our AdvantageScope and figuring out how it works. diff --git a/docs/how-to-docu/_category_.json b/docs/how-to-docu/_category_.json index 13a14f3..e216de4 100644 --- a/docs/how-to-docu/_category_.json +++ b/docs/how-to-docu/_category_.json @@ -1,5 +1,5 @@ { - "label": "How To Docusaurous", + "label": "How To: Docusaurus", "position": 10, "link": { "type": "generated-index", diff --git a/docs/how-to/_category_.json b/docs/how-to/_category_.json index 29fcba7..c937adb 100644 --- a/docs/how-to/_category_.json +++ b/docs/how-to/_category_.json @@ -1,8 +1,8 @@ { - "label": "How To Do X", + "label": "How To: General", "position": 5, "link": { "type": "generated-index", - "description": "Collection of how to do something. One page. Not necesarily a robot thing." + "description": "Collection of how to do various things in one page. Not necessarily a robot thing." } } diff --git a/docs/how-to/how-to-blog-post.md b/docs/how-to/how-to-blog-post.md index 23e259d..5c94c4b 100644 --- a/docs/how-to/how-to-blog-post.md +++ b/docs/how-to/how-to-blog-post.md @@ -1,5 +1,7 @@ -# How to make a blog post +# How To Make a Blog Post -## Interperting the slug +## Interpreting the slug -The slug is a funky thing that is used to identify blog posts. It is structured as followed: Year (currently two digits, find your own solution to Y100), week indicator (BW for Build Week, CW for Competition Week, OW for Off-Season Week, TW for Training Week), week number (BW -> CW at the week of the Duluth competition, CW -> OW after the last competition of the year, OW -> TW at the start of the next school year, and TW -> BW at Kickoff), \ No newline at end of file +The slug is a funky thing that is used to identify blog posts. It is structured as followed: Year (currently two digits, find your own solution to Y100), week indicator (BW for Build Week, CW for Competition Week, OW for Off-Season Week, TW for Training Week), week number (BW -> CW at the week of the Duluth competition, CW -> OW after the last competition of the year, OW -> TW at the start of the next school year, and TW -> BW at Kickoff), and Weekday(T for Tuesday, H for Thursday, and S for Saturday. If any outlier practices were to occur, you would use the first letter that is not in use for another day) +An example of this in use can be seen in the Blog Post for 2025/3/18, where the slug appears like this: 25-C4-T. +In this example, 25 is for 2025, C4 for Competition Week 4, and T for Tuesday. \ No newline at end of file diff --git a/docs/how-to/how-to-edit-files.md b/docs/how-to/how-to-edit-files.md index c7ec0bd..a663599 100644 --- a/docs/how-to/how-to-edit-files.md +++ b/docs/how-to/how-to-edit-files.md @@ -4,7 +4,7 @@ sidebar_position: 3 # How to edit files -If the question was asked "How do I edit a file" you would get lots of opinions, and it would matter what type of files we meant. You don't use a CAD program, an image editor, and a text editor all on the same file. At least most of us don't we use purpose built tools. Here I am only going to talk about text editors. And just the ones we use with robotics here at NoMythic. If you have a favorite, go ahead and use it, but the mentors may not be as knowledgeable about that tool if you have issues. +If the question was asked "How do I edit a file?" you would get lots of opinions, and it would matter what type of files we meant. You don't use a CAD program, an image editor, and a text editor all on the same file- we use purpose built tools. Here I am only going to talk about text editors. And just the ones we use with robotics here at NoMythic. If you have a favorite, go ahead and use it, but the mentors may not be as knowledgeable about that tool if you have issues. ## Notepad on Windows, TextEdit on Mac @@ -15,7 +15,7 @@ We often start with students with Circuit Python, and use this very basic editor ## Arduino IDE (c and arduino) -Sometimes we code sik lights and sensors on helper boards. If we are coding these in the C like Arduino code, this IDE makes sense, and since the 2.0 version was released, it has become much better. It has a built in serial console, board library, and code library management. V2 has much improved code suggestions. Check out [here](https://docs.arduino.cc/software/ide-v2) to install it. +Sometimes we code lights and sensors on helper boards. If we are coding these in the C like Arduino code, this IDE makes sense, and since the 2.0 version was released, it has become much better. It has a built in serial console, board library, and code library management. V2 has much improved code suggestions. Check out [here](https://docs.arduino.cc/software/ide-v2) to install it. ## VS Code (robot code, NoMythicApp, and docusaurus) diff --git a/docs/how-to/how-to-git.md b/docs/how-to/how-to-git.md index 18e65ac..c9854c3 100644 --- a/docs/how-to/how-to-git.md +++ b/docs/how-to/how-to-git.md @@ -6,21 +6,21 @@ sidebar_position: 2 ## Installing Git -If you are on a Mac, pat yourself on the back and go to the next section, git is built in. +If you are on a Mac, pat yourself on the back and go to the next section, Git is built in. -On Windows, I suggest installing GitBash. This will give you a terminal with the git tools installed. See [Install Git](https://www.gitkraken.com/learn/git/git-download) +On Windows, I suggest installing GitBash. This will give you a terminal with the Git tools installed. See [Install Git](https://www.gitkraken.com/learn/git/git-download) ## What is Git? -Git is a way to store and manage versions of things like text files and images. We use it to manage our source code for the robot and for docusaurous. Git is not the only way this could be done. These systems are called Version Control Systems. Git is very popular and what we use. We can use a command line, or various programs to do this. We will got to that later but we need to talk about the why. +Git is a Version Control System, meaning it is a way to store and manage versions of things like text files and images. We use it to manage our source code for the robot and for docusaurus. We can use a command line, or various programs to use Git. We will get to that later, but first we need to talk about why we use Git. ## Why use Git? -Git is a distributed version control system. This means that there doesn't have to be one server that holds all the code. In practice, most teams use someplace like GitHub (or Bitbucket, etc) to be the "official" repository of their code. We do too. But that does not mean that you edit the code on GitHub. You stil edit code locally on your computer and then "push" your code to the server. This is good becuase many people can work on one file, or files on their own computer, and then put them together on the server, called merging. We do this so that the last person to upload code doesn't win. We want to get everyones contributions. Lets back up. +Git is a Distributed Version Control System. This means that there doesn't have to be one server that holds all the code. In practice, most teams use someplace like GitHub (or Bitbucket, etc) to be the "official" repository of their code. We use GitHub to store all of our code, but that does not mean that you can just edit the code on GitHub. You stil edit code locally on your computer and then "push" your code to the server. This is good becuase many people can work on one file, or work on files on their own computer, and then put them together on the server, by doing something called "merging". We do this so that the last person to upload code doesn't erase all the other contributions. ## How does this work? -You get a "main" and you get a "main" and you get a "main. When I said there are versions of a file there are actually versions of a group of files. This group is called a branch. The main, or official branch is called "main" in most of our repositories. (Old ones were called master - we and the community have stopped calling it that) When you work on changes you will work on a different branch. Rember how I said this was distributed? That means that each computer that is working with a repository will have the main branch on their machine. Everyones main branch might not have exactly the same changes, but they could, by syncing with the main branch on Github. +You get a "main" and you get a "main" and you get a "main". When I said there are versions of a file there are actually versions of a group of files. This group is called a branch. The main, or official branch is called "main" in most of our repositories. (Old ones were called master - we and the community have stopped calling it that) When you work on changes you will work on a different branch. Rember how I said this was distributed? That means that each computer that is working with a repository will have the main branch on their machine. Everyones main branch might not have exactly the same changes, but they could, by syncing with the main branch on Github. ## No really, how does this work? diff --git a/docs/robot-docs/pneumatics.md b/docs/robot-docs/pneumatics.md index 0c8e981..1579e75 100644 --- a/docs/robot-docs/pneumatics.md +++ b/docs/robot-docs/pneumatics.md @@ -1,13 +1,9 @@ # Pneumatics -Pneumatics are air pressure powered pistons that provide explosive and strong power. - +Pneumatics are air pressure powered pistons that provide explosive and strong power. We control Pneumatics using valves called "solenoids", which determine the direction that air flows. These valves can be programmed to provide mechanical motor, like motors and servos. We have used Pneumatics in the past(such as on Janus), but have mainly stopped using them. ## What comes with Pneumatics? -I will preface that pneumatics are not actually called pneumatics in the code. They are called solenoids so from here on out I -may be calling them solenoids, but they're pretty much refer the same thing. - There are really 3 main objects that come with the pneumatics package, the Pneumatics Control Module (PCM), the Compressor, and the Solenoid. There are other things that exist, but in the code those are really the only things you need to worry about. The PCM is the hub, both the solenoid and compressor both plug into the PCM and tells them what they should be doing. The solenoid is the diff --git a/docs/tutorials/_category_.json b/docs/tutorials/_category_.json index aec2d88..7c79ec0 100644 --- a/docs/tutorials/_category_.json +++ b/docs/tutorials/_category_.json @@ -1,5 +1,5 @@ { - "label": "Robot Tutorials", + "label": "Tutorials for New Programmers", "position": 3, "link": { "type": "generated-index" diff --git a/src/components/HomepageFeatures/index.js b/src/components/HomepageFeatures/index.js index 6e6492e..898eecc 100644 --- a/src/components/HomepageFeatures/index.js +++ b/src/components/HomepageFeatures/index.js @@ -10,10 +10,10 @@ const FeatureList = [ imageurl: require('@site/static/img/Clover_Janusx200.jpg').default, description: ( <> - Documentaion out team wants to know for next time. What worked, what didn't, - and info on each years robot is in this section. + Documentation of the things we learned during the year. What worked, what didn't, + and info on our robots are in this section. - ), + ), }, { title: 'Tutorials', @@ -21,7 +21,7 @@ const FeatureList = [ imageurl: require('@site/static/img/circuit_playground.jpg').default, description: ( <> - Tutorials and How to's to help you learn different topics. From python on + Tutorials and How Tos to help you learn different topics. From Python on Adafruit Circuit boards to an Intro to Java, and more. ), From 0c296bb69d40efbf88bd2e1f5f82f0082b218a86 Mon Sep 17 00:00:00 2001 From: programming06 <2491nomythic@gmail.com> Date: Tue, 18 Nov 2025 17:05:46 -0600 Subject: [PATCH 02/17] Changed link to hopefully fix it --- src/components/HomepageFeatures/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/HomepageFeatures/index.js b/src/components/HomepageFeatures/index.js index 898eecc..6ca1a9e 100644 --- a/src/components/HomepageFeatures/index.js +++ b/src/components/HomepageFeatures/index.js @@ -17,7 +17,7 @@ const FeatureList = [ }, { title: 'Tutorials', - link: '/docs/category/robot-tutorials', + link: '/docs/category/tutorials-for-new-programmers', imageurl: require('@site/static/img/circuit_playground.jpg').default, description: ( <> From 16ef2554e558914c403727d53d20718e3f3b9ecc Mon Sep 17 00:00:00 2001 From: programming06 <2491nomythic@gmail.com> Date: Tue, 11 Nov 2025 18:54:49 -0600 Subject: [PATCH 03/17] Created the start of our Sim page. --- docs/robot-docs/replay_simulation/_simulation.json | 7 +++++++ docs/robot-docs/replay_simulation/blank.md | 3 +++ docs/robot-docs/replay_simulation/gradle_changes.md | 2 ++ docs/robot-docs/replay_simulation/sim_intro.md | 3 +++ 4 files changed, 15 insertions(+) create mode 100644 docs/robot-docs/replay_simulation/_simulation.json create mode 100644 docs/robot-docs/replay_simulation/blank.md create mode 100644 docs/robot-docs/replay_simulation/gradle_changes.md create mode 100644 docs/robot-docs/replay_simulation/sim_intro.md diff --git a/docs/robot-docs/replay_simulation/_simulation.json b/docs/robot-docs/replay_simulation/_simulation.json new file mode 100644 index 0000000..3c85a9f --- /dev/null +++ b/docs/robot-docs/replay_simulation/_simulation.json @@ -0,0 +1,7 @@ +{ + "label": "Simulation", + "position": 1, + "link": { + "type": "generated-index" + } +} \ No newline at end of file diff --git a/docs/robot-docs/replay_simulation/blank.md b/docs/robot-docs/replay_simulation/blank.md new file mode 100644 index 0000000..02025ad --- /dev/null +++ b/docs/robot-docs/replay_simulation/blank.md @@ -0,0 +1,3 @@ +# Title +## Subtitle +Lorem Ipsum this is sample tect Muspi Merol \ No newline at end of file diff --git a/docs/robot-docs/replay_simulation/gradle_changes.md b/docs/robot-docs/replay_simulation/gradle_changes.md new file mode 100644 index 0000000..e5f6c46 --- /dev/null +++ b/docs/robot-docs/replay_simulation/gradle_changes.md @@ -0,0 +1,2 @@ +# Gradle Changes +In order to implement simulation, changes to the build.gradle file are required. \ No newline at end of file diff --git a/docs/robot-docs/replay_simulation/sim_intro.md b/docs/robot-docs/replay_simulation/sim_intro.md new file mode 100644 index 0000000..a4396a5 --- /dev/null +++ b/docs/robot-docs/replay_simulation/sim_intro.md @@ -0,0 +1,3 @@ +# Intro To Simulation +## Subtitle +Lorem Ipsum this is sample tect Muspi Merol \ No newline at end of file From 51cc22a9210ceb27793961f887dc610112847a90 Mon Sep 17 00:00:00 2001 From: prog02 <2491NoMythic@gmail.com> Date: Tue, 11 Nov 2025 19:42:56 -0600 Subject: [PATCH 04/17] started the replay simulation docs, with What is Simulation, and Creating an Inputs class --- .../replay_simulation/What_is_simulation.md | 31 +++++++++ .../creating_inputs_class.md | 63 +++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 docs/robot-docs/replay_simulation/What_is_simulation.md create mode 100644 docs/robot-docs/replay_simulation/creating_inputs_class.md diff --git a/docs/robot-docs/replay_simulation/What_is_simulation.md b/docs/robot-docs/replay_simulation/What_is_simulation.md new file mode 100644 index 0000000..f9671f2 --- /dev/null +++ b/docs/robot-docs/replay_simulation/What_is_simulation.md @@ -0,0 +1,31 @@ +# What is Replay Simulation? + +## Using Replay Simulation + +The process of replay simulation has these steps: + +1. Recording the inputs & outputs: + +during the match, sensor inputs are recorded and saved to a log file. This is done through our kid, using the AdvantageKit software to help us. Examples of sensor inputs would be: drivetrain wheel encoders, distance sensor values on the robot, Estimated robot position from limelights. Basically, any data we gather from parts of the robot that we then use - via logic, math, or raw values - to produce outputs. Outputs - such as the robot position we calculate using multiple limelights, or the speed we decide to run the end effector at - that are determined by the inputs in our code can also be recorded using AdvantageKit. + +2. Replaying the inputs and outputs: + +using AdvantageScope, we can replay the inputs recorded in the log file to see what was happening on our robot during a match. We can view recorded inputs and outputs via AdvantageScope, allowing us to determine exactly what happened on our robot at any given point in a match + +3. Simulating new code using the inputs: + +Using the wpilib "simulate code" command (found in the same place as "deploy" and "build"), we can replay the inputs from any match (or any time the robot was on) and create a new log file that contains the outputs that would have been created during that match if the new code had been running. + +another nifty part about simulating the code is that if the inputs recieved would have caused your new code to crash, the simulation will catch that, and report an error just like the RioLog does, helping you catch more than just compilation errors without a robot. + +## Coding Replay Simulation + +There are 4 steps to incorporating replay simulation into your codebase. They are as follows: + +1. Update the build.gradle class + +2. Create inputs class(es), one for each subsystem that you want to record inputs for + +3. Incorporating the inputs class into the actual subsystem class + +4. recording outputs \ No newline at end of file diff --git a/docs/robot-docs/replay_simulation/creating_inputs_class.md b/docs/robot-docs/replay_simulation/creating_inputs_class.md new file mode 100644 index 0000000..832994e --- /dev/null +++ b/docs/robot-docs/replay_simulation/creating_inputs_class.md @@ -0,0 +1,63 @@ +# Creating an Inputs Class + +## What is in an inputs class? + +An inputs class can be built in two ways: + +1. All the class does is hold each input as a variable. An example of this is our DriveTrainSubsystemInputs class from BaseSwerve2025: +'''java +package frc.robot.LogInputs; + +import org.littletonrobotics.junction.AutoLog; + +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.kinematics.SwerveModulePosition; +import edu.wpi.first.math.kinematics.SwerveModuleState; + +@AutoLog + +public class DrivetrainInputs { + public SwerveModulePosition[] swerveModulePositions = new SwerveModulePosition[4]; + public SwerveModuleState[] swerveModuleStates = new SwerveModuleState[4]; + public Rotation2d gyroScopeRotation = new Rotation2d(); + public double pitch; + public double roll; + public double gyroTimeStamp; + public double angularVelocity; +} +''' + +This class stores each input variable we have for our drivetrain. The @AutoLog annotation above the class decleration is required. This will cause the annotation processor to create a new class whenever you build the code. This auto-generated class will take care of accessing the log file to send and recieve logged inputs. + +2. Create your own class that both holds the variables (like the DriveTrainSubsystemInputs class) and also handles the sending and recieving of logged inputs from the log file. An example of this is our LimelightInputs class from BaseSwerve2025. When doing this, you must have the variables stated under the class decleration (just like above) but also have two methods in the class: toLog() and fromLog() + +These methods are automatically generated by the annotation processor in the automatically created class, but we had to implement them into our class instead becuase we wanted to log Pose2d's which created errors becuase the automatically created class used these lines: +```java +table.put("MegaTag2Pose2d", megaTag2Pose2d); +``` +and +```java +table.get("MegaTag2Pose2d", megaTag2Pose2d); +``` + +This created compilation errors becuase an input of the Object type was needed to log a Pose2d, so in our own class we used the lines: + +```java +table.put("MegaTag2Pose2d", Pose2d.struct, megaTag2Pose2d); +``` +and +```java +table.get("MegaTag2Pose2d", Pose2d.struct, megaTag2Pose2d); +``` + +## How to create an inputs class + +We use a folder called LogInputs folder to store our input classes. Each input class represents the inputs from one area of the robot - usually a subsystem. An example of this is the Coral End Effector subsystem. For this subsystem's inputs class, one might add a MotorLoggerInputs for the motor, along with a variable that represents the status of the distance sensor in the subsystem. + +If the inputs class will only hold variables (option 1 above), then the annotation @AutoLog must be added above the class declaration. If the inputs class will also handle the sending and recieving of inputs to/from the log file, then add +```java +implements LoggableInputs +``` +## next step + +After an inputs class is created, the inputs class must now be incorporated into the associated subsystem. This involves making sure the inputs are updated periodically, and referencing the inputs class whenver the inputs are used From 9ba9b687e252f2b75b51298076597b84b4a3a9fa Mon Sep 17 00:00:00 2001 From: programming06 <2491nomythic@gmail.com> Date: Tue, 11 Nov 2025 19:24:37 -0600 Subject: [PATCH 05/17] Added the gradle_changes subdocument to Simulation --- docs/robot-docs/replay_simulation/.md | 3 ++ .../replay_simulation/gradle_changes.md | 33 ++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 docs/robot-docs/replay_simulation/.md diff --git a/docs/robot-docs/replay_simulation/.md b/docs/robot-docs/replay_simulation/.md new file mode 100644 index 0000000..c2f6db6 --- /dev/null +++ b/docs/robot-docs/replay_simulation/.md @@ -0,0 +1,3 @@ +# Input Class Creation +## Subtitle +Lorem Ipsum this is sample tect Muspi Merol \ No newline at end of file diff --git a/docs/robot-docs/replay_simulation/gradle_changes.md b/docs/robot-docs/replay_simulation/gradle_changes.md index e5f6c46..d53a34a 100644 --- a/docs/robot-docs/replay_simulation/gradle_changes.md +++ b/docs/robot-docs/replay_simulation/gradle_changes.md @@ -1,2 +1,33 @@ # Gradle Changes -In order to implement simulation, changes to the build.gradle file are required. \ No newline at end of file + +## Overview +In order to implement simulation, changes to the build.gradle file are required. The build.gradle file is found near the bottom of the explorer, and is used to manage external libraries/vendor dependencies and configure how code is deployed to the RoboRIO. + +## Code +This code must be put in dependencies(colors of text may not look the same): +dependencies { +```java + genericGradleThing wpi.java.deps.genericThing() + genericGradleThing2 wpi.java.deps.genericThing2(wpi.platforms.genericTech) + + thisRepeats on.for.someTime(acrossMultiple.Sections) + + //CODE START + def akitJson = new groovy.json.JsonSlurper().parseText( + new File(projectDir.getAbsolutePath() + "/vendordeps/AdvantageKit.json").text + ) + annotationProcessor "org.littletonrobotics.akit:akit-autolog:$akitJson.version" + //CODE END +``` +} + +And this code can be put directly after the ending bracket of dependencies(or other places): +```java +task(replayWatch, type: JavaExec) { + mainClass = "org.littletonrobotics.junction.ReplayWatch" + classpath = sourceSets.main.runtimeClasspath +} +``` +## Sources +[AdvantageKit>Existing_Projects](https://docs.advantagekit.org/getting-started/installation/existing-projects) + From 270e1b4650d7287bf26eaf0f4950b3c5863700c7 Mon Sep 17 00:00:00 2001 From: prog02 <2491NoMythic@gmail.com> Date: Tue, 11 Nov 2025 19:54:20 -0600 Subject: [PATCH 06/17] modified the code language declarations to be accurate --- docs/robot-docs/replay_simulation/creating_inputs_class.md | 4 ++-- docs/robot-docs/replay_simulation/gradle_changes.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/robot-docs/replay_simulation/creating_inputs_class.md b/docs/robot-docs/replay_simulation/creating_inputs_class.md index 832994e..6f62d40 100644 --- a/docs/robot-docs/replay_simulation/creating_inputs_class.md +++ b/docs/robot-docs/replay_simulation/creating_inputs_class.md @@ -5,7 +5,7 @@ An inputs class can be built in two ways: 1. All the class does is hold each input as a variable. An example of this is our DriveTrainSubsystemInputs class from BaseSwerve2025: -'''java +```java package frc.robot.LogInputs; import org.littletonrobotics.junction.AutoLog; @@ -25,7 +25,7 @@ public class DrivetrainInputs { public double gyroTimeStamp; public double angularVelocity; } -''' +``` This class stores each input variable we have for our drivetrain. The @AutoLog annotation above the class decleration is required. This will cause the annotation processor to create a new class whenever you build the code. This auto-generated class will take care of accessing the log file to send and recieve logged inputs. diff --git a/docs/robot-docs/replay_simulation/gradle_changes.md b/docs/robot-docs/replay_simulation/gradle_changes.md index d53a34a..6c03ea0 100644 --- a/docs/robot-docs/replay_simulation/gradle_changes.md +++ b/docs/robot-docs/replay_simulation/gradle_changes.md @@ -6,7 +6,7 @@ In order to implement simulation, changes to the build.gradle file are required. ## Code This code must be put in dependencies(colors of text may not look the same): dependencies { -```java +```groovy genericGradleThing wpi.java.deps.genericThing() genericGradleThing2 wpi.java.deps.genericThing2(wpi.platforms.genericTech) @@ -22,7 +22,7 @@ dependencies { } And this code can be put directly after the ending bracket of dependencies(or other places): -```java +```groovy task(replayWatch, type: JavaExec) { mainClass = "org.littletonrobotics.junction.ReplayWatch" classpath = sourceSets.main.runtimeClasspath From 6fe299ddae5e1582e7f42d623446d3fca83b29f0 Mon Sep 17 00:00:00 2001 From: KnightPiscesAugie <94499208+KnightPiscesAugie@users.noreply.github.com> Date: Tue, 29 Apr 2025 20:20:07 -0500 Subject: [PATCH 07/17] Post --- blog/2025-04-29-Prepping-for-State.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 blog/2025-04-29-Prepping-for-State.md diff --git a/blog/2025-04-29-Prepping-for-State.md b/blog/2025-04-29-Prepping-for-State.md new file mode 100644 index 0000000..7346e84 --- /dev/null +++ b/blog/2025-04-29-Prepping-for-State.md @@ -0,0 +1,17 @@ +--- +slug: Y25-O2-T +title: Prepping for State +authors: + - name: Augie + title: "[REDACTED]" +tags: [off season] +--- +Apoloies about the lack of updates for the past several weeks. It was mostly auto work, Worlds, and recovering from Worlds. As for how we did there? No awards, ranked 25th, ended up as 3rd pick of Hopper Alliance 2. They got to the division finals and we lost because they didn't submit the thing to let us swap with a broken robot in time. There were also more captain selections. The final roster is: Opal for all-team, Leo for design, Orion for production, Lio and May for operations, and Rowan and Zach for programming. Anyway, actual programming things done today: +* Trigger Fixes (Me): Drive team was running into issues where the robot wasn't reading the buttonboard on startup, so I fixed that. The solution was to stop making everything triggers. +* Algae Pickup Improvements (Rowan, Serena, Nigel): We can now pick up algae better, although this code hasn't been tested. +* Processor Improvements (Xiaohan): This wasn't working great, so Xiaohan wrote a new and improved processor command. +* Algae Autos (Griffin, Zach): The various autos were made substantially faster. There were also some new autos made to steal algae from the opposing alliance. +* Simulation Research (Nigel): This happened. +* ClosestReefSide Fixes (Serena, Nigel): Currently the ClosestReefSide based on alliance is read from the driver station rather than the field X-coordinates. A fix to this was started. + +As we have ceased Thursday and Saturday practices, there will not be more posts this week. In addition, as I am graduating and none of the other students like doing this, next week's post will likely be the last. \ No newline at end of file From 499c2cb4916dafdfb9a76664638691b68d0ac23a Mon Sep 17 00:00:00 2001 From: prog02 <2491NoMythic@gmail.com> Date: Tue, 11 Nov 2025 20:03:40 -0600 Subject: [PATCH 08/17] altered links again, not sure why it's failing --- src/components/HomepageFeatures/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/HomepageFeatures/index.js b/src/components/HomepageFeatures/index.js index 6ca1a9e..66bc604 100644 --- a/src/components/HomepageFeatures/index.js +++ b/src/components/HomepageFeatures/index.js @@ -6,7 +6,7 @@ import Link from '@docusaurus/Link'; const FeatureList = [ { title: 'Robot Docs', - link: '/docs/category/robot-docs', + link: '/docs/robot-docs', imageurl: require('@site/static/img/Clover_Janusx200.jpg').default, description: ( <> From 3a6649332941ad0286f43726a91865b652ec5e72 Mon Sep 17 00:00:00 2001 From: prog02 <2491NoMythic@gmail.com> Date: Tue, 11 Nov 2025 20:09:19 -0600 Subject: [PATCH 09/17] fixing bugs --- .../replay_simulation/{_simulation.json => _category.json} | 0 src/components/HomepageFeatures/index.js | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/robot-docs/replay_simulation/{_simulation.json => _category.json} (100%) diff --git a/docs/robot-docs/replay_simulation/_simulation.json b/docs/robot-docs/replay_simulation/_category.json similarity index 100% rename from docs/robot-docs/replay_simulation/_simulation.json rename to docs/robot-docs/replay_simulation/_category.json diff --git a/src/components/HomepageFeatures/index.js b/src/components/HomepageFeatures/index.js index 66bc604..6ca1a9e 100644 --- a/src/components/HomepageFeatures/index.js +++ b/src/components/HomepageFeatures/index.js @@ -6,7 +6,7 @@ import Link from '@docusaurus/Link'; const FeatureList = [ { title: 'Robot Docs', - link: '/docs/robot-docs', + link: '/docs/category/robot-docs', imageurl: require('@site/static/img/Clover_Janusx200.jpg').default, description: ( <> From 318b1cd80a564052721ffac91bda47fe2b1b6cef Mon Sep 17 00:00:00 2001 From: prog02 <2491NoMythic@gmail.com> Date: Tue, 11 Nov 2025 20:15:31 -0600 Subject: [PATCH 10/17] more fixing --- src/components/HomepageFeatures/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/HomepageFeatures/index.js b/src/components/HomepageFeatures/index.js index 6ca1a9e..d6bbe50 100644 --- a/src/components/HomepageFeatures/index.js +++ b/src/components/HomepageFeatures/index.js @@ -16,7 +16,7 @@ const FeatureList = [ ), }, { - title: 'Tutorials', + title: 'Tutorials for New Programmers', link: '/docs/category/tutorials-for-new-programmers', imageurl: require('@site/static/img/circuit_playground.jpg').default, description: ( From 317dbf255cc9fed44765f17cc978429246db689e Mon Sep 17 00:00:00 2001 From: programming06 <2491nomythic@gmail.com> Date: Tue, 11 Nov 2025 20:10:58 -0600 Subject: [PATCH 11/17] more typo and rewording --- docs/how-to/_category_.json | 2 +- docs/how-to/how-to-edit-files.md | 7 ++++--- docs/how-to/how-to-git.md | 15 +++++++++------ docs/how-to/how-to-terminal.md | 4 ++-- docs/how-to/how-to-vscode.md | 4 ++-- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/docs/how-to/_category_.json b/docs/how-to/_category_.json index c937adb..d4b93bf 100644 --- a/docs/how-to/_category_.json +++ b/docs/how-to/_category_.json @@ -3,6 +3,6 @@ "position": 5, "link": { "type": "generated-index", - "description": "Collection of how to do various things in one page. Not necessarily a robot thing." + "description": "Collection of how to do various things in one page. Not necessarily robot things." } } diff --git a/docs/how-to/how-to-edit-files.md b/docs/how-to/how-to-edit-files.md index a663599..1799069 100644 --- a/docs/how-to/how-to-edit-files.md +++ b/docs/how-to/how-to-edit-files.md @@ -9,9 +9,10 @@ If the question was asked "How do I edit a file?" you would get lots of opinions ## Notepad on Windows, TextEdit on Mac If you need to edit one file, these can work fine, but using one of these other editors makes editing, searching, and navigating between the files in a project much easier. + ## MU Editor (circuit python) -We often start with students with Circuit Python, and use this very basic editor. It is not the best at giving code suggestions, but it does help format python files, and display error message on the hardware devices we use with a built in serial console. Check out [here](https://codewith.mu) to install it. +We often start with students with Circuit Python, and use this very basic editor. It is not the best at giving code suggestions, but it does help format python files, and display error messages on the hardware devices we use with a built in serial console. Check out [here](https://codewith.mu) to install it. ## Arduino IDE (c and arduino) @@ -19,7 +20,7 @@ Sometimes we code lights and sensors on helper boards. If we are coding these in ## VS Code (robot code, NoMythicApp, and docusaurus) -VS Code has become a defacto standard editor in many circles due to it being free, but as powerful and extensible as it's expensive professional cousins. We use it for lot of things at NoMythic. It is currently the standard recommended editor for creating java based robot code. For developing java robot code, I recommend following the [instructions at First](https://docs.wpilib.org/en/stable/docs/zero-to-robot/step-2/wpilib-setup.html) and getting the software bundle that includes it. Be sure to check the box that installs VS Code. +VS Code has become a defacto standard editor in many circles due to it being free, powerful and extensible. Because of this, we use it for lot of things at NoMythic. It is currently the standard recommended editor for creating java based robot code. For developing java robot code, I recommend following the [instructions at First](https://docs.wpilib.org/en/stable/docs/zero-to-robot/step-2/wpilib-setup.html) and getting the software bundle that includes it. Be sure to check the box that installs VS Code. The NoMythicApp is also being developed in Typescript/Javascript using VS Code. It is recommended but not required to use it for development. You can use the VS Code that came with the FRC install, or if you do not need those tools, download it [here](https://code.visualstudio.com) @@ -31,6 +32,6 @@ VS Code also offers Git integration that can help with pulling and pushing files ## IntelliJ IDEA Community Edition -It seems like most Java programmers like to use IntelliJ. There is a free version called the community edition, and it will work really well to write java code. It was originally created for Java coding (now does a lot more) so as you can expect there are some pretty cools tools changing and modifying and navigating your java code. you can download it [here](https://www.jetbrains.com/idea/) There is also a [WPILIB plugin](https://plugins.jetbrains.com/plugin/9405-frc) maintained by an FRC team. +It seems like most Java programmers like to use IntelliJ. There is a free version called the community edition, and it will work really well to write Java code. It was originally created for Java coding (now does a lot more) so as you can expect there are some pretty cools tools changing and modifying and navigating your java code. you can download it [here](https://www.jetbrains.com/idea/) There is also a [WPILIB plugin](https://plugins.jetbrains.com/plugin/9405-frc) maintained by an FRC team. IntelliJ also offers Git integration that can help with pulling and pushing files to GitHub. diff --git a/docs/how-to/how-to-git.md b/docs/how-to/how-to-git.md index c9854c3..c395fcd 100644 --- a/docs/how-to/how-to-git.md +++ b/docs/how-to/how-to-git.md @@ -20,7 +20,10 @@ Git is a Distributed Version Control System. This means that there doesn't have ## How does this work? -You get a "main" and you get a "main" and you get a "main". When I said there are versions of a file there are actually versions of a group of files. This group is called a branch. The main, or official branch is called "main" in most of our repositories. (Old ones were called master - we and the community have stopped calling it that) When you work on changes you will work on a different branch. Rember how I said this was distributed? That means that each computer that is working with a repository will have the main branch on their machine. Everyones main branch might not have exactly the same changes, but they could, by syncing with the main branch on Github. + When I said there are versions of a file, I meant that there are actually versions of a group of files. This group is called a repository, and it stores the history of your project. This history is made up of commits(save-points), tags(milestone markers), and branches. Branches are used to create seperate lines of developement, so code can be changed without affecting the project directly. + + A good way to understand this is to think of branch structure like a tree: The code we use, or official branch is called "main" in most of our repositories(Old ones were called master - we and the community have stopped calling it that). It functions like the trunk of tree, because everything comes from it. When you want changes to the project, you will create a different branch growing off of main to work on. This branch will be a copy of the main project, but any changes made to it will not affect any other branch. + Each computer then will have its own copy of the main "tree" that they can edit independently. Remember how I said this was distributed? That means that each computer that is working with a repository will have the main branch on their machine. Everyone's main branch might not have exactly the same changes, but they could, by syncing with the main branch on Github. ## No really, how does this work? @@ -78,9 +81,9 @@ no changes added to commit (use "git add" and/or "git commit -a") Lots of stuff! We have a message telling us that there are files not staged for commit, and they are the README.md file. It was modified (as opposed to added or deleted) -# 4) Lets add and commit +# 4) Let's add and commit -Just like the message said, lets add our file. `git add README.md` Then try `git status` again. +Just like the message said, let's add our file. `git add README.md` Then try `git status` again. ```bash On branch first-branch @@ -88,20 +91,20 @@ Changes to be committed: (use "git restore --staged ..." to unstage) modified: README.md ``` -We are gitting closer to making git happy now. We have 'staged' the README.md file and we can now commit it. We want to give our commit a message, so `git commit -m "updated readme"`. Now what does `git status` tell us? +We are "gitting" closer to making Git happy now. We have 'staged' the README.md file and we can now commit it. We want to give our commit a message, so `git commit -m "updated readme"`. Now what does `git status` tell us? ```bash On branch first-branch nothing to commit, working tree clean ``` -## 5) Can other see our changes? +## 5) Can others see our changes? Not yet. We have committed (saved) our changes to our branch, but we have not 'pushed' the changes to GitHub yet. When we do a push, we will be pushing our code to the remote that we got the code from, which in our case was Github, and the NoMythic/test repo. If you have a new version of Git installed, you should be able to just say `git push` and it will work. Older version required `git push origin first-branch` -## 6) Now others can see the code? +## 6) Now can others see our changes? Yup, but not as easily. We now have a branch called first-branch that is on Github, and people could download it, but it isn't in main, and we want to show others what changed and make sure our new changes look right. Lets make a PR or pull request. diff --git a/docs/how-to/how-to-terminal.md b/docs/how-to/how-to-terminal.md index 006901f..8af1d4a 100644 --- a/docs/how-to/how-to-terminal.md +++ b/docs/how-to/how-to-terminal.md @@ -4,11 +4,11 @@ sidebar_position: 1 # How to Terminal -Sometimes it is usefull to leave the world of a mouse and type commands at a command prompt in a termial. The commands are a bit different on Mac and Windows, but we will try to show both. +Sometimes it is useful to leave the world of a mouse, and type commands in a terminal. The commands are a bit different on Mac and Windows, but we will try to show both. ## How to get a command prompt -You need to use a progam that you can type these commands in. On Mac, that would be Terminal, and on Windows, that is CMD.exe. (new windows have powershell, but we will just use CMD) +You need to use a progam that you can type these commands in. On Mac, that would be Terminal, and on Windows, that is CMD.exe(Command Prompt). (Newer Windows have Powershell, but we will just use CMD) ## Where am I? diff --git a/docs/how-to/how-to-vscode.md b/docs/how-to/how-to-vscode.md index 7209ece..7c12b75 100644 --- a/docs/how-to/how-to-vscode.md +++ b/docs/how-to/how-to-vscode.md @@ -10,7 +10,7 @@ VS Code has become a defacto stndard editor in many circles due to it being free The NoMythicApp is also being developed in Typescript/Javascript using VS Code. It is recommended but not required to use it for development. You can use the VS Code that came with the FRC install, or if you do not need those tools, download it [here](https://code.visualstudio.com) -Docusaurous pages are written mostly in markdown. This means any text editor will do, but useing the above link to install VS Code will allow you to see an immediate accurate preview of the markdown (.md) file that you are edting. +Docusaurus pages are written mostly in markdown. This means any text editor will do, but useing the above link to install VS Code will allow you to see an immediate accurate preview of the markdown (.md) file that you are edting. ## Get Started @@ -67,6 +67,6 @@ Shift-Command-p or Shift-CTRL-p will bring up a list of actions that you can do. ## Build Robot Code -You have to have the WPILib plugin for this. If you do that same -p command as above and type wpilib into the command search, you will see all the wpilib commands. The most often used are to build and deploy robot code. +You have to have the WPILib plugin for this. If you use that same -p command as above and type wpilib into the command search, you will see all the wpilib commands. The most often used are to build and deploy robot code. See the [WPILib page](https://docs.wpilib.org/en/stable/docs/software/vscode-overview/vscode-basics.html) for a little more on the plugin. From 21732859030a79e5da98598951a3480e5795fb3c Mon Sep 17 00:00:00 2001 From: programming06 <2491nomythic@gmail.com> Date: Tue, 18 Nov 2025 17:44:37 -0600 Subject: [PATCH 12/17] Capitalized many file names, added Sim Intro --- docs/how-to-docu/Blank File.md | 8 ++++++++ ...melight_and_Vision.md => Limelight and Vision.md} | 0 ...Motion_Magic_Tuning.md => Motion Magic Tuning.md} | 0 .../Creating Inputs_class.md} | 0 .../Gradle Changes.md} | 9 ++++----- docs/robot-docs/Replay Simulation/Sim Intro.md | 12 ++++++++++++ .../What_is_simulation.md | 0 .../_category.json | 0 docs/robot-docs/replay_simulation/.md | 3 --- docs/robot-docs/replay_simulation/blank.md | 3 --- docs/robot-docs/replay_simulation/sim_intro.md | 3 --- 11 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 docs/how-to-docu/Blank File.md rename docs/robot-docs/{Limelight_and_Vision.md => Limelight and Vision.md} (100%) rename docs/robot-docs/{Motion_Magic_Tuning.md => Motion Magic Tuning.md} (100%) rename docs/robot-docs/{replay_simulation/creating_inputs_class.md => Replay Simulation/Creating Inputs_class.md} (100%) rename docs/robot-docs/{replay_simulation/gradle_changes.md => Replay Simulation/Gradle Changes.md} (90%) create mode 100644 docs/robot-docs/Replay Simulation/Sim Intro.md rename docs/robot-docs/{replay_simulation => Replay Simulation}/What_is_simulation.md (100%) rename docs/robot-docs/{replay_simulation => Replay Simulation}/_category.json (100%) delete mode 100644 docs/robot-docs/replay_simulation/.md delete mode 100644 docs/robot-docs/replay_simulation/blank.md delete mode 100644 docs/robot-docs/replay_simulation/sim_intro.md diff --git a/docs/how-to-docu/Blank File.md b/docs/how-to-docu/Blank File.md new file mode 100644 index 0000000..a0368a2 --- /dev/null +++ b/docs/how-to-docu/Blank File.md @@ -0,0 +1,8 @@ +--- +sidebar_position: 100 +--- + +# Blank Docusaurus File + +## Why? +This is a blank docusaurus file that can be copied in Visual Studio to serve as a basis for new webpages. \ No newline at end of file diff --git a/docs/robot-docs/Limelight_and_Vision.md b/docs/robot-docs/Limelight and Vision.md similarity index 100% rename from docs/robot-docs/Limelight_and_Vision.md rename to docs/robot-docs/Limelight and Vision.md diff --git a/docs/robot-docs/Motion_Magic_Tuning.md b/docs/robot-docs/Motion Magic Tuning.md similarity index 100% rename from docs/robot-docs/Motion_Magic_Tuning.md rename to docs/robot-docs/Motion Magic Tuning.md diff --git a/docs/robot-docs/replay_simulation/creating_inputs_class.md b/docs/robot-docs/Replay Simulation/Creating Inputs_class.md similarity index 100% rename from docs/robot-docs/replay_simulation/creating_inputs_class.md rename to docs/robot-docs/Replay Simulation/Creating Inputs_class.md diff --git a/docs/robot-docs/replay_simulation/gradle_changes.md b/docs/robot-docs/Replay Simulation/Gradle Changes.md similarity index 90% rename from docs/robot-docs/replay_simulation/gradle_changes.md rename to docs/robot-docs/Replay Simulation/Gradle Changes.md index 6c03ea0..4a40a03 100644 --- a/docs/robot-docs/replay_simulation/gradle_changes.md +++ b/docs/robot-docs/Replay Simulation/Gradle Changes.md @@ -4,9 +4,9 @@ In order to implement simulation, changes to the build.gradle file are required. The build.gradle file is found near the bottom of the explorer, and is used to manage external libraries/vendor dependencies and configure how code is deployed to the RoboRIO. ## Code -This code must be put in dependencies(colors of text may not look the same): -dependencies { +This code must be put in dependencies: ```groovy + dependencies { genericGradleThing wpi.java.deps.genericThing() genericGradleThing2 wpi.java.deps.genericThing2(wpi.platforms.genericTech) @@ -14,12 +14,11 @@ dependencies { //CODE START def akitJson = new groovy.json.JsonSlurper().parseText( - new File(projectDir.getAbsolutePath() + "/vendordeps/AdvantageKit.json").text - ) + new File(projectDir.getAbsolutePath() + "/vendordeps/AdvantageKit.json").text) annotationProcessor "org.littletonrobotics.akit:akit-autolog:$akitJson.version" //CODE END + } ``` -} And this code can be put directly after the ending bracket of dependencies(or other places): ```groovy diff --git a/docs/robot-docs/Replay Simulation/Sim Intro.md b/docs/robot-docs/Replay Simulation/Sim Intro.md new file mode 100644 index 0000000..ad77858 --- /dev/null +++ b/docs/robot-docs/Replay Simulation/Sim Intro.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 1 +--- + +# Intro To Simulation +## Subtitle +In FRC, Simulation is testing code without a physical robot. This allows you to quickly debug and develop code before the robot is made and while it is competing. Simulation comes in three main forms in order of difficulty: Running code on a laptop, simulating hardware, and simulating environment(not normally used in FRC). + +## Sources +[NoMythic>Simulation_Google_Doc]https://docs.google.com/document/d/13F6GO_e3fENr6bYeQux29UXtqi7mdO8z0uJELuAZY3Y/edit?pli=1&tab=t.ejcfcjau18wn +[Mechanical_Advantage(6328)>Presentation]https://www.youtube.com/watch?v=8FfwFQcvRmU +[WPILib>Simulation]https://docs.wpilib.org/en/stable/docs/software/wpilib-tools/robot-simulation/introduction.html \ No newline at end of file diff --git a/docs/robot-docs/replay_simulation/What_is_simulation.md b/docs/robot-docs/Replay Simulation/What_is_simulation.md similarity index 100% rename from docs/robot-docs/replay_simulation/What_is_simulation.md rename to docs/robot-docs/Replay Simulation/What_is_simulation.md diff --git a/docs/robot-docs/replay_simulation/_category.json b/docs/robot-docs/Replay Simulation/_category.json similarity index 100% rename from docs/robot-docs/replay_simulation/_category.json rename to docs/robot-docs/Replay Simulation/_category.json diff --git a/docs/robot-docs/replay_simulation/.md b/docs/robot-docs/replay_simulation/.md deleted file mode 100644 index c2f6db6..0000000 --- a/docs/robot-docs/replay_simulation/.md +++ /dev/null @@ -1,3 +0,0 @@ -# Input Class Creation -## Subtitle -Lorem Ipsum this is sample tect Muspi Merol \ No newline at end of file diff --git a/docs/robot-docs/replay_simulation/blank.md b/docs/robot-docs/replay_simulation/blank.md deleted file mode 100644 index 02025ad..0000000 --- a/docs/robot-docs/replay_simulation/blank.md +++ /dev/null @@ -1,3 +0,0 @@ -# Title -## Subtitle -Lorem Ipsum this is sample tect Muspi Merol \ No newline at end of file diff --git a/docs/robot-docs/replay_simulation/sim_intro.md b/docs/robot-docs/replay_simulation/sim_intro.md deleted file mode 100644 index a4396a5..0000000 --- a/docs/robot-docs/replay_simulation/sim_intro.md +++ /dev/null @@ -1,3 +0,0 @@ -# Intro To Simulation -## Subtitle -Lorem Ipsum this is sample tect Muspi Merol \ No newline at end of file From 6aae6c1a66dda26b1379f022b4141f0930ff3368 Mon Sep 17 00:00:00 2001 From: programming06 <2491nomythic@gmail.com> Date: Tue, 18 Nov 2025 18:45:09 -0600 Subject: [PATCH 13/17] Reordered things, reworded Pneumatics, and made some formatting changes --- .../Replay Simulation/Gradle Changes.md | 7 ------- docs/robot-docs/Replay Simulation/Sim Intro.md | 7 +++---- .../robot-docs/Replay Simulation/_category.json | 2 +- docs/robot-docs/pneumatics.md | 17 ++++++----------- docs/robot-docs/swerve.md | 6 +++++- 5 files changed, 15 insertions(+), 24 deletions(-) diff --git a/docs/robot-docs/Replay Simulation/Gradle Changes.md b/docs/robot-docs/Replay Simulation/Gradle Changes.md index 4a40a03..1423f01 100644 --- a/docs/robot-docs/Replay Simulation/Gradle Changes.md +++ b/docs/robot-docs/Replay Simulation/Gradle Changes.md @@ -6,18 +6,11 @@ In order to implement simulation, changes to the build.gradle file are required. ## Code This code must be put in dependencies: ```groovy - dependencies { - genericGradleThing wpi.java.deps.genericThing() - genericGradleThing2 wpi.java.deps.genericThing2(wpi.platforms.genericTech) - - thisRepeats on.for.someTime(acrossMultiple.Sections) - //CODE START def akitJson = new groovy.json.JsonSlurper().parseText( new File(projectDir.getAbsolutePath() + "/vendordeps/AdvantageKit.json").text) annotationProcessor "org.littletonrobotics.akit:akit-autolog:$akitJson.version" //CODE END - } ``` And this code can be put directly after the ending bracket of dependencies(or other places): diff --git a/docs/robot-docs/Replay Simulation/Sim Intro.md b/docs/robot-docs/Replay Simulation/Sim Intro.md index ad77858..5f5d859 100644 --- a/docs/robot-docs/Replay Simulation/Sim Intro.md +++ b/docs/robot-docs/Replay Simulation/Sim Intro.md @@ -3,10 +3,9 @@ sidebar_position: 1 --- # Intro To Simulation -## Subtitle In FRC, Simulation is testing code without a physical robot. This allows you to quickly debug and develop code before the robot is made and while it is competing. Simulation comes in three main forms in order of difficulty: Running code on a laptop, simulating hardware, and simulating environment(not normally used in FRC). ## Sources -[NoMythic>Simulation_Google_Doc]https://docs.google.com/document/d/13F6GO_e3fENr6bYeQux29UXtqi7mdO8z0uJELuAZY3Y/edit?pli=1&tab=t.ejcfcjau18wn -[Mechanical_Advantage(6328)>Presentation]https://www.youtube.com/watch?v=8FfwFQcvRmU -[WPILib>Simulation]https://docs.wpilib.org/en/stable/docs/software/wpilib-tools/robot-simulation/introduction.html \ No newline at end of file +[NoMythic_Simulation_Google_Doc](https://docs.google.com/document/d/13F6GO_e3fENr6bYeQux29UXtqi7mdO8z0uJELuAZY3Y/edit?pli=1&tab=t.ejcfcjau18wn) +[Mechanical_Advantage(6328)_Presentation](https://www.youtube.com/watch?v=8FfwFQcvRmU) +[WPILib_imulation](https://docs.wpilib.org/en/stable/docs/software/wpilib-tools/robot-simulation/introduction.html) \ No newline at end of file diff --git a/docs/robot-docs/Replay Simulation/_category.json b/docs/robot-docs/Replay Simulation/_category.json index 3c85a9f..c020f4a 100644 --- a/docs/robot-docs/Replay Simulation/_category.json +++ b/docs/robot-docs/Replay Simulation/_category.json @@ -1,6 +1,6 @@ { "label": "Simulation", - "position": 1, + "position": 6, "link": { "type": "generated-index" } diff --git a/docs/robot-docs/pneumatics.md b/docs/robot-docs/pneumatics.md index 1579e75..7cf4b26 100644 --- a/docs/robot-docs/pneumatics.md +++ b/docs/robot-docs/pneumatics.md @@ -1,6 +1,6 @@ # Pneumatics -Pneumatics are air pressure powered pistons that provide explosive and strong power. We control Pneumatics using valves called "solenoids", which determine the direction that air flows. These valves can be programmed to provide mechanical motor, like motors and servos. We have used Pneumatics in the past(such as on Janus), but have mainly stopped using them. +Pneumatics are air pressure powered pistons that provide explosive and strong power. We control our pneumatics using valves called "solenoids", which determine the direction that air flows. These valves can be programmed to provide mechanical motor, like motors and servos. We have used pneumatics in the past (on Janus for example), but have mainly stopped using them. ## What comes with Pneumatics? @@ -26,15 +26,11 @@ public class Pneumatics extends SubsystemBase { } } ``` -Wow. That was so fun guys, we made a solenoid. I will note that a DoubleSolenoid is different from a regular Solenoid. A Solenoid -only has 1 channel to move in, whereas a DoubleSolenoid has 2. Usually we use a DoubleSolenoid because we like the -capability to go in both directions. DoubleSolenoids are simple though. They have 3 states: Forward, Reverse, and Off. Let's think -about what that acutally looks like. Forward is the state of the solenoid that pushes outward, reverse is the state that retracts -inward and Off means that it'll do nothing. +Wow. That was so fun guys, we made a solenoid. I will note that a DoubleSolenoid is different from a regular Solenoid. A regular Solenoid only has 1 channel to move in, whereas a DoubleSolenoid has 2. Usually we use a DoubleSolenoid because we like to have the capability to move in both directions. -Forward and Reverse have their own numbered channels that you can assign them to. They have to be wired into the solenoid, but -each port has a number so you can figure out with port/number is associated with the Forward and Reverse states of the solenoid, -so let's actually give the solenoid some numbers. They take 3 values: The manufacturer of the solenoid, the forward channel port, and the reverse channel port. +To program a DoubleSolenoid, you need to know that they have 3 states: Forward, Reverse, and Off. Forward is the state of the solenoid that pushes outward, Reverse is the state that retracts inward and Off is the state that stops the DoubleSolenoid, making it do nothing. + +Forward and Reverse have their own numbered channels that you can assign them to. They have to be wired into the solenoid, but each port has a number so you can figure out with port/number is associated with the Forward and Reverse states of the solenoid. Now let's actually give the solenoid some numbers. They take 3 values: The manufacturer of the solenoid, the forward channel port, and the reverse channel port. ```java import edu.wpi.first.wpilibj.DoubleSolenoid; import edu.wpi.first.wpilibj.PneumaticsModuleType; @@ -48,8 +44,7 @@ public class Pneumatics extends SubsystemBase { } } ``` -Now that we have a solenoid, let's make some methods to go with it so we can call it in a command. We are going to need kForward -and kReverse values. They just are values that tell the solenoid what exactly it should do with a given method. +Now that we have a solenoid, let's make some methods to go with it so we can call it in a command. We are going to need kForward and kReverse values. These values tell the solenoid to activate a certain method. ```java import edu.wpi.first.wpilibj.DoubleSolenoid; import edu.wpi.first.wpilibj.PneumaticsModuleType; diff --git a/docs/robot-docs/swerve.md b/docs/robot-docs/swerve.md index c29db55..5ab3eb1 100644 --- a/docs/robot-docs/swerve.md +++ b/docs/robot-docs/swerve.md @@ -1,3 +1,7 @@ +--- +side-bar position: 4 +--- + # Swerve ## What is Swerve? @@ -38,7 +42,7 @@ import edu.wpi.first.wpilibj.shuffleboard.ShuffleboardTab; import frc.robot.settings.Constants.DriveConstants; ``` -### Swerve Module +### Swerve Modules A swerve drive is made up of four modules. Each module has a wheel, two motors, and an encoder. In the code, you need the motors, an encoder, and a Rotation2d. You also need a bunch of variables, like the steering angle and driving speed. These specific varaibles are used in the controlling bit specifically. ```java From 0d547dc87a6a91093ad165ed551bb2553c8e3dae Mon Sep 17 00:00:00 2001 From: programming06 <2491nomythic@gmail.com> Date: Tue, 18 Nov 2025 18:54:34 -0600 Subject: [PATCH 14/17] Swerve and Motion Magic edits --- docs/REDACTEDs_Guide_to_Competitions.md | 6 +++--- docs/robot-docs/Motion Magic Tuning.md | 7 +++++-- docs/robot-docs/SwerveConstants.md | 3 +++ docs/robot-docs/swerve.md | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/REDACTEDs_Guide_to_Competitions.md b/docs/REDACTEDs_Guide_to_Competitions.md index ee721f8..0b4d95f 100644 --- a/docs/REDACTEDs_Guide_to_Competitions.md +++ b/docs/REDACTEDs_Guide_to_Competitions.md @@ -1,5 +1,5 @@ # [REDACTED]'s Guide to Competitions -1. Regionals are different from Worlds is different from State. The Regionals tend to have lower quality, and are the competition baseline. Teams can show up without much more than a drivetrain, especially in Duluth. Teams have their stuff together by Mariucci, though. Worlds is longer and more intense. There are two ways to get to Worlds: being on the winning alliance at a Regional, or getting one of three specific awards (Impact (historically known as Chairman's), Engineering Inspiration, and Wild Card). Every robot there is a high-quality machine, with scores routinely double or triple that of the average regional. Any gimmick robots (example: the jumping robot at Houston 2022) will be high-quality with all the bugs in the gimmick worked out. State is complicated(see below). +1. Regionals are different from Worlds is different from State. The Regionals tend to have lower quality, and are the competition baseline. Teams can show up without much more than a drivetrain, especially in Duluth. Teams have their stuff together by Mariucci/10k/Northern Lights, though. Worlds is longer and more intense. There are two ways to get to Worlds: being on the winning alliance at a Regional, or getting one of three specific awards: Impact (historically known as Chairman's), Engineering Inspiration, and Wild Card. Every robot there is a high-quality machine, with scores routinely double or triple that of the average regional. Any gimmick robots (example: the jumping robot at Houston 2022) will be high-quality with all the bugs in the gimmick worked out. State is complicated(see below). 1. The State competition for Minnesota is different than the others. It has no bearing on the main FRC tournaments, and in fact happens after Worlds. The reason it exists is that any Minnesota High School Sport needs a statewide competition. Teams earn points at Regionals based on matches won and awards. It is only a single day, and there are no practice matches before the qualifiers. Scouting happens remotely before the event. 2. Addendum: The exact number of teams going to worlds varies depending on the year. Some years the entire winning alliance goes, sometimes only the captain and first pick go. Also, Wild Card awards are generally only ever handed out when one of the teams in a postition to go to Worlds already recived an invite from attending a previous competition. 6. For out-of-town competitions, pick a group you think you can get along with, not people you know. I ended up with my sibling and their friends for Duluth 2022 and got no sleep, along with fighting with my room mates. For Worlds I roomed with Yours Truly™ and Captain23, and things were much calmer and nicer. @@ -17,7 +17,7 @@ 1. Expect not to get much sleep, or at least have your sleep schedule disrupted. Normal hours are 5 AM to 10 PM, and that's if there's no alliance selection meeting. It gets worse for flying days to/from Worlds. 3. Competition building interiors are warm, even if outside is not. This is mostly relevant for Duluth. 4. Stay with the group. This is slightly less important at tournaments in town, where one can catch a bus or the Green Line back to Avalon/GRS (and your parents are probably on pickup duty), but otherwise getting lost in another city is bad. -5. Don't bring your Switch/laptop/whatever. The mentors will tell you this, I'm just confirming from experience. The one situation to ignore this rule is if you want to bring a laptop to Worlds for schoolwork. -9. If possible, acquire at least 3 team t-shirts and a sweatshirt. It makes it easier for the mentors to find you if you are wearing team colors. +5. Don't bring your Switch/laptop/whatever. The mentors will tell you this, I'm just confirming from experience. The one exception to this rule is if you want to bring a laptop to Worlds for schoolwork. +9. If possible, bring at least 3 team t-shirts and a sweatshirt. It makes it easier for the mentors to find you if you are wearing team colors. 10. When on scouting duty, write the reports as if the team you are scouting would read them. 'Poor Scorer' is fine. 'Sh**ty Vacuum Cleaner' is not. This is partly because we share our scouting data, so there is a chance that they will actually read the reports. 21. Either bring something to soothe your throat or hearing protection, depending on if you want to scream out cheers or plug your ears because the rest of the team is trying to get the Loudest- sorry, I meant the Team Spirit Award. \ No newline at end of file diff --git a/docs/robot-docs/Motion Magic Tuning.md b/docs/robot-docs/Motion Magic Tuning.md index 68a619e..e91e2a7 100644 --- a/docs/robot-docs/Motion Magic Tuning.md +++ b/docs/robot-docs/Motion Magic Tuning.md @@ -16,7 +16,7 @@ When tuning motion magic you might follow these steps: 8. You will need to select a starting point for Accel, Cruise, and P. If F is about right, then the cruise speed you select is thespeed the motor will run as it approaches target endpoint (remember that you have really switched to a position control loop onceyou select Motion Magic) 9. You then tune P, I, D just like you would for a normal position loop. Cruise will determine your max speed while the motor runstoward the target. Accel sets the ramp rate on motor acceleration and then slowdown. 10. I would advise setting the cruise at a middle of the road speed. Set your accel slow enough so that you can see it speed up andthen slow down. Make sure you see the expected cause and effect of the values. Increasing cruise should indeed increased the speed.Slowing accel does does indeed make it start and stop slower. Then as you increase P (you will need to have some small P value foranything to run), the accuracy of the finish point gets better and better. But if P gets too high, it will oscillate about the commanded endpoint target. -11. The Stryke Force Talon training course Chapter 8 starting at 30:11 walks thought the whole process. +11. The Stryke Force Talon training course Chapter 8 walks thought the whole process, starting at 30:11. As far as how to tune a PID loop, back up a few chapters in the talon training course. There is a full explanation. Once you get F set, Motion magic is tuned just like a position loop. The only difference is you now have Cruise and Accel to help control the start, stop and cruise rates. @@ -24,4 +24,7 @@ Hopefully this provides a little bit of clarity. CTR does a great job of walking you though the process if you want to approach it mathematically. The above approach is more of a seat of you pants method using the actual hardware. -Jerry (Mentor on 2767) \ No newline at end of file +Jerry (Mentor on 2767) + +### Sources +[Stryke Force Talon Train Course Chapter 8](https://www.youtube.com/watch?v=Fs46TUeJMyc0) \ No newline at end of file diff --git a/docs/robot-docs/SwerveConstants.md b/docs/robot-docs/SwerveConstants.md index e827c94..39dd256 100644 --- a/docs/robot-docs/SwerveConstants.md +++ b/docs/robot-docs/SwerveConstants.md @@ -1,3 +1,6 @@ +--- +side-bar position: 5 +--- Hello! Here is the list of constants to use with swerve. If you have no idea what this is, go back and read the Swerve page. Make sure to measure things and put in your own numbers after all of these. It is why there are no = signs. ```java public static final double ALLOWED_ERROR; diff --git a/docs/robot-docs/swerve.md b/docs/robot-docs/swerve.md index 5ab3eb1..b4f2fcf 100644 --- a/docs/robot-docs/swerve.md +++ b/docs/robot-docs/swerve.md @@ -10,7 +10,7 @@ Swerve drive, or swerve, is a type of drivetrain. It has one wheel in each corne ## Why Is This Good? -Swerve drive has a number of benefits, both obvious and unobvious. The obvious ones are metioned above: high speed and high manuverability without sacrifices to either. A slighty less obvious benefit is connected to that mobility, and more specifically the rotation. The robot is able to move in a direction while pointing in another, allowing for extreme precision during shooter games. The least obvious benefit is simply the amount of things the prereqs allow. Just getting the wheels moving in the same direction requires a gyroscope and field map, which can easily be paired with a limelight for extreme degrees of autonomy. +Swerve drive has a number of benefits, both obvious and unobvious. The obvious ones are metioned above: high speed and high manuverability with no sacrifices needed. A slightly less obvious benefit is connected to that mobility, and more specifically the rotation. The robot is able to move in a direction without having to rotate, allowing for extreme precision during shooter games. The least obvious benefit is simply the amount of things the prereqs allow. Just getting the wheels moving in the same direction requires a gyroscope and field map, which can easily be paired with a limelight for extreme degrees of autonomy. ## Prerequisites From 31cbb032f644716eff7058d3e2ee0897c3ae27f0 Mon Sep 17 00:00:00 2001 From: programming06 <2491nomythic@gmail.com> Date: Tue, 18 Nov 2025 19:18:07 -0600 Subject: [PATCH 15/17] reformated sidebar position, and added two new pages of simulation documentation --- ...Integrating_Inputs_Class_into_Subsystem.md | 47 +++++++++++++++++++ .../Recording_Outputs_And_Simulating.md | 32 +++++++++++++ docs/robot-docs/SwerveConstants.md | 2 +- docs/robot-docs/swerve.md | 2 +- 4 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 docs/robot-docs/Replay Simulation/Integrating_Inputs_Class_into_Subsystem.md create mode 100644 docs/robot-docs/Replay Simulation/Recording_Outputs_And_Simulating.md diff --git a/docs/robot-docs/Replay Simulation/Integrating_Inputs_Class_into_Subsystem.md b/docs/robot-docs/Replay Simulation/Integrating_Inputs_Class_into_Subsystem.md new file mode 100644 index 0000000..a02e3d9 --- /dev/null +++ b/docs/robot-docs/Replay Simulation/Integrating_Inputs_Class_into_Subsystem.md @@ -0,0 +1,47 @@ +# Integrating Inputs Class into Subsystem + + +## Create the Instance of the Inputs class in the subsytem + + +There should be one instance of the inputs class for every physical instance of that subsystem that exist. For example, each limelight gets its own instance of a LimelightInputs class, and there should be 1 instance of the MotorLoggerInputs in the subsystemInputs class for each motor in the subsystem. + + +Define the inputs class in the constructor for the subsystem, but create the instance of it outside of the constructor. For example: +```java +DrivetrainInputsAutoLogged inputs; + + +public DrivetrainSubystem() { + inputs = new DrivetrainInputsAutoLogged(); + //define other Objects for the subsystem +``` + + + + +## Updating the Inputs + + +Make sure that all inputs that need to be constantly updated in order to be used (such as motor position, or sensor state) are updated during periodic() of that subsystem. This is done by referencing the variables through the instance of the Inputs class. For example, in the drivetrain subsystem: (note that this is not the exact code we have in OUR drivetrain subsystem, just an example for what it might look like) +```java +public void periodic() { + inputs.gyroscopeRotation = this.getGyroscopeRotation(); + inputs.SwerveModuleStates = this.getSwerveModuleStates(); + //other periodic code +} +``` +Once these values are set, you then have to tell the code to update these values on the log. This is done by the adding the following code to periodic of the subystem, BELOW where the input values are set: +```java +public void periodic() { + Logger.ProcessInputs("SubsystemName", inputsClassInstance); +} +``` +## Using the inputs class to access values instead of the sensors + + +Now that we have created an inputs class that tracks the values of our inputs periodically, we need to use the inputs class to access those values, instead of the sensors. For example, on the drivetrain, instead of getting the robot orientation through the getGyrosocopeRotation() method, access it using inputs.gyroscopeRotation. This ensures that all ouputs created using the inputs (via logic, math, or just raw values) will be dependent on the inputs in the inputs class. This makes the testing of new code while doing replay simulation possible. + + + + diff --git a/docs/robot-docs/Replay Simulation/Recording_Outputs_And_Simulating.md b/docs/robot-docs/Replay Simulation/Recording_Outputs_And_Simulating.md new file mode 100644 index 0000000..8efe1d3 --- /dev/null +++ b/docs/robot-docs/Replay Simulation/Recording_Outputs_And_Simulating.md @@ -0,0 +1,32 @@ +# Recording Outputs And Simulating + + +## Recording Outputs + + +Outputs that are generated by processing (via logic, math, or just raw values) inputs from the inputs class can be used to simulate code changes by CHANGING the logic or math that generates the inputs, feeding in the inputs again (by running the simulation program), and viewing the outputs that are produced. + + +This is done using the code: +```java +Logger.RecordOutput("Name", value); +``` +This code can be written after the inputs have been recorded, and you don't need a robot for the following simulation to work. As long as the recorded output is determined using code performed with values from the recorded inputs, the value will be determined by new code written before simulating. + + +## Performing the Simulation + + +By Replay Simulation, we mean that we are testing what outputs our new code would have produced if it was given the inputs from a past match. These inputs are saved on a log file during the match, as long as the code from every step until this was on the robot during the match. Here are the steps for performing Replay simulation: + + +1. Open the log file from the match whose inputs you will use. Since multiple log files are generated from each match (each containing data in different formats), choose the one that starts with "akit_" and ends with ".wpilog" on AdvantageScope. + + +2. from VSCode, run the task "WPILib: Simulate robot code". This task is found in the same places that the "WPILib: Deploy Robot Code" and "WPILib: Build Robot Code" tasks are found. If the code builds succesfully, you will be asked to select which extensions you want to open. I like to open none of them. I haven't found them very helpful, and they aren't necessary + + +3. If the code is able to run through the simulation without crashing, a new log file will be created. This one will have the same name as the original, but with "_sim" near the end. This file contains the recorded inputs, and the RealOutputs folder with all recorded outputs (just like the original log file), but also contains a ReplayOutputs folder, with the RealOutputs that would have been generated if the same inputs were ran through the new code + + +NOTE: when you run a simulation for the first time on a new device, a file called networktables.json is created. This file contains the Preferences that the could uses, which it usually gets from the rio when it is connected to a robot. These preferences have default values that can easily be changed. If the Preference values are entered incorrectly, it can crash code or cause some outputs to not be generated, depending on how the Preferences are checked within the code. diff --git a/docs/robot-docs/SwerveConstants.md b/docs/robot-docs/SwerveConstants.md index 39dd256..5dea330 100644 --- a/docs/robot-docs/SwerveConstants.md +++ b/docs/robot-docs/SwerveConstants.md @@ -1,5 +1,5 @@ --- -side-bar position: 5 +sidebar_position: 5 --- Hello! Here is the list of constants to use with swerve. If you have no idea what this is, go back and read the Swerve page. Make sure to measure things and put in your own numbers after all of these. It is why there are no = signs. ```java diff --git a/docs/robot-docs/swerve.md b/docs/robot-docs/swerve.md index b4f2fcf..e73887e 100644 --- a/docs/robot-docs/swerve.md +++ b/docs/robot-docs/swerve.md @@ -1,5 +1,5 @@ --- -side-bar position: 4 +sidebar_position: 4 --- # Swerve From a81475eab586b3e3f8b37315360fb6b311a2d2e7 Mon Sep 17 00:00:00 2001 From: prog02 <2491NoMythic@gmail.com> Date: Tue, 18 Nov 2025 19:25:07 -0600 Subject: [PATCH 16/17] added sidebar positioning to all tabs of simulation --- docs/robot-docs/Replay Simulation/Creating Inputs_class.md | 4 ++++ docs/robot-docs/Replay Simulation/Gradle Changes.md | 4 ++++ .../Integrating_Inputs_Class_into_Subsystem.md | 4 ++++ .../Replay Simulation/Recording_Outputs_And_Simulating.md | 4 ++++ docs/robot-docs/Replay Simulation/What_is_simulation.md | 4 ++++ 5 files changed, 20 insertions(+) diff --git a/docs/robot-docs/Replay Simulation/Creating Inputs_class.md b/docs/robot-docs/Replay Simulation/Creating Inputs_class.md index 6f62d40..28c5b32 100644 --- a/docs/robot-docs/Replay Simulation/Creating Inputs_class.md +++ b/docs/robot-docs/Replay Simulation/Creating Inputs_class.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 4 +--- + # Creating an Inputs Class ## What is in an inputs class? diff --git a/docs/robot-docs/Replay Simulation/Gradle Changes.md b/docs/robot-docs/Replay Simulation/Gradle Changes.md index 1423f01..6cab0e5 100644 --- a/docs/robot-docs/Replay Simulation/Gradle Changes.md +++ b/docs/robot-docs/Replay Simulation/Gradle Changes.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 3 +--- + # Gradle Changes ## Overview diff --git a/docs/robot-docs/Replay Simulation/Integrating_Inputs_Class_into_Subsystem.md b/docs/robot-docs/Replay Simulation/Integrating_Inputs_Class_into_Subsystem.md index a02e3d9..9d77a6c 100644 --- a/docs/robot-docs/Replay Simulation/Integrating_Inputs_Class_into_Subsystem.md +++ b/docs/robot-docs/Replay Simulation/Integrating_Inputs_Class_into_Subsystem.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 5 +--- + # Integrating Inputs Class into Subsystem diff --git a/docs/robot-docs/Replay Simulation/Recording_Outputs_And_Simulating.md b/docs/robot-docs/Replay Simulation/Recording_Outputs_And_Simulating.md index 8efe1d3..35b9003 100644 --- a/docs/robot-docs/Replay Simulation/Recording_Outputs_And_Simulating.md +++ b/docs/robot-docs/Replay Simulation/Recording_Outputs_And_Simulating.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 6 +--- + # Recording Outputs And Simulating diff --git a/docs/robot-docs/Replay Simulation/What_is_simulation.md b/docs/robot-docs/Replay Simulation/What_is_simulation.md index f9671f2..e6010dd 100644 --- a/docs/robot-docs/Replay Simulation/What_is_simulation.md +++ b/docs/robot-docs/Replay Simulation/What_is_simulation.md @@ -1,3 +1,7 @@ +--- +sidebar_position: 2 +--- + # What is Replay Simulation? ## Using Replay Simulation From aed69177058c71bba1c3bb6cf966514b012ec6eb Mon Sep 17 00:00:00 2001 From: prog02 <2491NoMythic@gmail.com> Date: Tue, 18 Nov 2025 19:25:58 -0600 Subject: [PATCH 17/17] removed unhelpful comments in gradle changes simulation tab --- docs/robot-docs/Replay Simulation/Gradle Changes.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/robot-docs/Replay Simulation/Gradle Changes.md b/docs/robot-docs/Replay Simulation/Gradle Changes.md index 6cab0e5..5c54bcb 100644 --- a/docs/robot-docs/Replay Simulation/Gradle Changes.md +++ b/docs/robot-docs/Replay Simulation/Gradle Changes.md @@ -10,11 +10,9 @@ In order to implement simulation, changes to the build.gradle file are required. ## Code This code must be put in dependencies: ```groovy - //CODE START def akitJson = new groovy.json.JsonSlurper().parseText( new File(projectDir.getAbsolutePath() + "/vendordeps/AdvantageKit.json").text) annotationProcessor "org.littletonrobotics.akit:akit-autolog:$akitJson.version" - //CODE END ``` And this code can be put directly after the ending bracket of dependencies(or other places):