Skip to content

Commit a777b30

Browse files
Tejshah88BrodyKarrWu-Fan-529AlenaNguyenFRCTeam3255-Shared-K1-10
authored
392 readmemd hyperlinks visuals (#410)
* put links and image * Create image.png * Update README.md * Update README.md * more state machine links * Update dropdown to be html * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * made all the links for the examples dropdown menus🦟™️ Co-Authored-By: BrodyKarr <145169276+BrodyKarr@users.noreply.github.com> Co-Authored-By: Alice <90939494+ACat701@users.noreply.github.com> * replace all unnecessary summaries with hyperlinks, add photos, update file * Refactor README.md to streamline examples with hyperlinks and remove unnecessary whitespace --------- Co-authored-by: BrodyKarr <145169276+BrodyKarr@users.noreply.github.com> Co-authored-by: Wu-Fan-529 <3681247216@qq.com> Co-authored-by: Alena <112772895+Alenguye582@users.noreply.github.com> Co-authored-by: Krypton-6-FRCTeam3255-Shared <170778697+FRCTeam3255-Shared@users.noreply.github.com> Co-authored-by: Alice <90939494+ACat701@users.noreply.github.com> Co-authored-by: Evan Grinnell <worldevan8@gmail.com> Co-authored-by: ACat701 <90939494+alicekuznetsov@users.noreply.github.com>
1 parent 5e5e2bc commit a777b30

File tree

6 files changed

+71
-24
lines changed

6 files changed

+71
-24
lines changed

README.md

Lines changed: 71 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,41 @@
11
# 2025_Robot_Code - FRC Team 3255's 2025 Robot
22
Jump into the code [`here!`](src/main/java/frc/robot)
33

4-
54
![Black Manta](assets/robot_name_design_2025.png)
65

7-
- ![2025 comp bot 1.0](assets/2025_compbot_1.0.jpg)
8-
9-
## We won Port Hueneme Regional and Innovation In Control Award!!!!!
10-
11-
- ![PHR Team Photo](assets/PHR_Team_Photo.jpg)
12-
13-
This robot will compete at the following competitions:
6+
![2025 comp bot 1.0](assets/2025_CompBot_PHR.jpg)
7+
8+
## Winner of Port Hueneme Regional and Innovation In Control Award
9+
**To Watch Our Port Hueneme Regional Recap [Click Here!](https://www.youtube.com/watch?v=wBRe15c5S4I)**
10+
<br>
11+
<br>
12+
![PHR Team Photo](assets/PHR_Team_Photo.jpg)
13+
<br>
14+
15+
## Winner of San Diego Regional and Gracious Professionalism Award
16+
**To Watch Our San Diego Regional Recap [Click Here!](https://youtu.be/Qmp8hHGo8Fs?si=mEE1UkDhzCBtK5RI)**
17+
<br>
18+
<br>
19+
![SDR Team photo](assets/SDR_Team_Photo.JPG)
20+
<br>
21+
22+
## First pick of Alliance 7 in World Championship Daly Division
23+
**To Watch Our World Championship Recap [Click Here!](https://youtu.be/pgZlrYAgXeg?si=jCeNsdmj5ZAc5a_d)**
24+
<br>
25+
<br>
26+
![WCMP Team Photo](assets/WCMP_Team_Photo.png)
27+
28+
This robot competed at the following competitions:
1429
- [Port Hueneme](https://www.thebluealliance.com/event/2025caph)
1530
- [San Diego Regional](https://www.thebluealliance.com/event/2025casd)
31+
- [Championship in Houston, TX](https://www.thebluealliance.com/event/2025cmptx)
32+
33+
## ✨ Highlights ✨
1634

35+
- Manual & Automatic Zeroing
36+
- Vision Aided Alignment
37+
- State Machine
38+
- Smart Control of Scoring Elements
1739

1840
## View Our Robots in Action!
1941
- [Instagram](https://www.instagram.com/frcteam3255/)
@@ -38,29 +60,39 @@ Interested in learning more about REEFSCAPE? Visit [FIRST's website](https://www
3860
All values, including motor outputs and logic statements, are displayed during match play and saved to the robot as a file. We have the capability of viewing these logs with a 3D model & graphs.
3961
- **Why it’s cool:** We can translate what the robot is thinking into visuals we can understand in real time, as well as look back on previous matches to diagnose new issues.
4062

63+
- **Example of logging for TalonFXs:**
64+
Jump into code [`here!`](https://github.com/FRCTeam3255/2025_Robot_Code/blob/26d6f1e49594b345b34e01dcde61f79d4eecd758/src/main/java/frc/robot/loggers/TalonFXLogger.java#L1-L32)
65+
4166
### Manual Zeroing
4267

43-
We have code to manually zero the Algae Intake Pivot and Elevator. In disabled, a person can quickly zero the Algae Intake Pivot and Elevator by raising them and then hitting them into their hard stop. We display the status of our manual zeroing using the CANdle, providing a clear indicator of our zeroing status. (Red to Green)
68+
We have code to manually zero the Algae Intake Pivot and Elevator. In disabled, a person can quickly zero the Algae Intake Pivot and Elevator by raising them and then hitting them into their hard stop. We display the status of our manual zeroing using the CANdle, providing a clear indicator of our zeroing status (Red to Green).
4469
- **Why it’s cool:** The robot will not run automatic zeroing if the manual zeroing is done to save match time. This ensures that our subsystems are at zero for every match.
4570

71+
- **Example of Manual Zeroing:**
72+
Jump into code [`here!`](https://github.com/FRCTeam3255/2025_Robot_Code/blob/26d6f1e49594b345b34e01dcde61f79d4eecd758/src/main/java/frc/robot/commands/Zeroing/ManualZeroElevator.java#L1-L97)
73+
4674
### Automatic Zeroing
4775

4876
Our Algae Intake Pivot and Elevator automatically sets the subsystem’s zero when we enable it, making us not need an absolute encoder.
4977
- **How it works:** The motor slowly runs to hit the mechanism to a hard stop, triggering a spike in current and a stop in velocity. We detect the current spike and velocity in code to know when the mechanism is at its hard stop to zero it correctly.
5078
- **Why it’s cool:** Automatic zeroing serves as a fallback. If manual zeroing fails or is not completed, the robot will automatically initiate the automatic zeroing process. This ensures that our subsystems are at zero for every match.
5179

80+
- **Example of Automatic Zeroing:**
81+
Jump into code [`here!`](https://github.com/FRCTeam3255/2025_Robot_Code/blob/26d6f1e49594b345b34e01dcde61f79d4eecd758/src/main/java/frc/robot/commands/Zeroing/ZeroElevator.java#L1-L82)
82+
5283
### Vision
5384

5485
Using three Limelight 3G’s, we calculate pose estimates based on the AprilTags that each camera can see. Two of the front cameras are mounted to ensure that when we’re up against the reef (when our pose is most important), at least 1 camera can see the tag in front of us. After San Diego Regional, we added a third Limelight on the back of our robot to be able to see processor tags. This ensures us to also be able to do the net and processor self-aligning.
5586
Each Limelight’s pose estimates are then fed into the robot, passed through a rejection filter (if tags are too small or far away), and then added to a Pose Estimator that combines our current pose with the estimates.
5687

5788
- **Why it’s cool:** This process allows our robot to always have an accurate pose, optimized for times when minuscule changes can heavily impact cycle time. This baseline allows us to do all other vision-related features.
5889

59-
### Vision Aided Alignment
90+
- **Example of Vision:**
91+
Jump into code [`here!`](https://github.com/FRCTeam3255/2025_Robot_Code/blob/26d6f1e49594b345b34e01dcde61f79d4eecd758/src/main/java/frc/robot/subsystems/Vision.java#L1-L154)
6092

93+
### Reef Alignment
6194
The multi-stage system, depending on the distance
6295
- **Smart:** Automatically chooses which face of the reef to go
63-
- **Double limelights**
6496
- **How it works:** Using the current pose of the robot (see Vision), we calculate our desired reef face on the fly based on our distance from the reef and current rotation. The self alignment then determines different desired positions based on which branch of the reef the driver picks, always relative to their left & right. Then, we calculate our distance from the desired pose. If the distance is too large, the robot will just turn to the correct angle; otherwise, the robot will fully self-drive to the desired position.
6597

6698
### Net/Processor Vision Aided Alignment
@@ -69,21 +101,29 @@ However, the net and processor have a special type of alignment. We can self-ali
69101

70102
### State Machine Control
71103

72-
- **State Machine Diagram**
73-
![State Machine](assets/State_Machine_2.0.png)
74-
75-
- **Controller Map**
104+
**Controller Map**
105+
<br><br>
76106
![Controller Map](assets/2025_controllermap.png)
107+
<br><br>
108+
109+
**State Machine Diagram**
110+
<br><br>
111+
![State Machine](assets/State_Machine_2.0.png)
112+
<br><br>
77113

78114
- **State Machine link:** [State Machine](https://www.tldraw.com/ro/lFqVEhO80IajGo7JezZaz)
79115

116+
- **Example of our Statemachine subsystem:**
117+
Jump into code [`here!`](https://github.com/FRCTeam3255/2025_Robot_Code/blob/main/src/main/java/frc/robot/subsystems/StateMachine.java)
118+
119+
<br>
80120

81121
The state machine prevents us from going to states before the robot is ready.
82122
- **Blocking invalid transitions through nested switch statements:** Only state transitions that meet predefined conditions are permitted, preventing the robot from entering invalid or hazardous states. The state machine subsystem manages this.
83-
- **State Machine subsystem:** Used to manage different states in the robot. It controls which state the transitions between different states. We use enum to control what states we could go to from the current state.
84-
- **States:** Individual commands represent different operational modes of the robot and control the robot's behavior. We set the requirements of the commands to be subStateMachine.
85-
- **tryState method:** This method is what we run when we try to go from the current state to the desired state. It will return the desired States if it is valid based on the current state. Then it will execute the command based on the desired states.
86-
- **Calling states:** We call the tryState method in the RobotContainer. We turn whatever it returns into a Deferred Proxy, which allows the tryState method to be evaluated multiple times.
123+
- **[`State Machine subsystem`](https://github.com/FRCTeam3255/2025_Robot_Code/blob/main/src/main/java/frc/robot/subsystems/StateMachine.java):** Used to manage different states in the robot. It controls which state the transitions between different states. We use enum to control what states we could go to from the current state.
124+
- **[`States`](https://github.com/FRCTeam3255/2025_Robot_Code/blob/main/src/main/java/frc/robot/subsystems/StateMachine.java#L607):** Individual commands represent different operational modes of the robot and control the robot's behavior. We set the requirements of the commands to be subStateMachine.
125+
- **[`tryState method`](https://github.com/FRCTeam3255/2025_Robot_Code/blob/main/src/main/java/frc/robot/subsystems/StateMachine.java#L132):** This method is what we run when we try to go from the current state to the desired state. It will return the desired States if it is valid based on the current state. Then it will execute the command based on the desired states.
126+
- **[`Calling states`](https://github.com/FRCTeam3255/2025_Robot_Code/blob/main/src/main/java/frc/robot/RobotContainer.java#L118):** We call the tryState method in the RobotContainer. We turn whatever it returns into a Deferred Proxy, which allows the tryState method to be evaluated multiple times.
87127

88128
### Scoring Elements Indexing
89129

@@ -93,23 +133,32 @@ The state machine prevents us from going to states before the robot is ready.
93133
With the addition of the coral hardstop after PHR, we no longer have to slow down the indexing speed and now just set both indexing and intaking to full speed.
94134
- **Consistency:** Maintaining consistent indexing logic regardless of task details, ensuring high success rates and efficiency in every mission.
95135

136+
- **Example of our indexing state:**
137+
Jump into code [`here!`](https://github.com/FRCTeam3255/2025_Robot_Code/blob/main/src/main/java/frc/robot/commands/states/first_scoring_element/IndexingCoral.java)
138+
96139
### Coral Placing Safety Time
97140

98141
- **What it is** A mechanism that sets a safety delay after placing coral to ensure the robot does not immediately perform other operations (such as lowering the elevator), thereby preventing a shallow climb on the reef.
99142
- **How it works:**
100143
- **Quick Tap:** If the operator performs a quick tap on the trigger button, the robot will wait until the coral has completely exited the scoring mechanism (CoralOuttake) before lowering the elevator. This process is achieved through the Coral Placing Safety Time, ensuring that the robot does not proceed to the next operation until the coral is fully placed.
101144
- **Long Press:** If the operator holds the trigger button for longer than the preset delay time, the robot will ignore the safety delay. This means the robot will immediately proceed to the next operation when the operator releases the trigger button.
102145

103-
### Motion Magic
146+
- **Example of our shooting delay:**
147+
Jump into code [`here!`](https://github.com/FRCTeam3255/2025_Robot_Code/blob/main/src/main/java/frc/robot/commands/states/scoring/ScoringCoral.java#L50)
148+
149+
### Motion Magic 🪄🪄
104150

105151
Our Elevator & Algae Pivot use a motion profiling system from CTRE called Motion Magic, allowing us to tune not only our subsystems’ PID controller, but also their acceleration & cruise velocity.
106152
- **Why it’s cool:** This method of tuning, along with our constant force springs, allows our Elevator to reach its desired position (from Min to Max) in approximately 0.79 seconds.
107153
The addition of constant force springs after San Diego Regional allowed us to achieve a 34.6% faster cycle time on our Elevator via dynamic acceleration curves.
108154

109155
### Autos
110156

111-
Our autos include a 3 coral auto on both sides, 4 one coral and 2.5 algae net auto, and “Tickle” autos that bump other bots (forcing the ranking point).
157+
Our autos include a 3 coral auto on both sides, four 1 coral and 2.5 algae net auto, and “Tickle” autos that bump other bots (forcing the ranking point).
112158
- **How it works:**
159+
<br><br>
160+
![alt text](image.png)
161+
<br><br>
113162
- **Driving:**
114163
- Basic driving: Path planner used to navigate by preset trajectories.
115164
- Pose Target driving: dynamically adjusts robot pose to auto-align (same as the one in tele-op).
@@ -126,7 +175,6 @@ Our autos include a 3 coral auto on both sides, 4 one coral and 2.5 algae net au
126175

127176
- #### Step 3: Check Reef
128177

129-
130178
*Note: if the limelight tuning values of the further one doesn't work for the closer one, just use the closer one*
131179

132180
a. In the advantage scope 3D field, check if the robot position is at the same position in the real life
@@ -139,8 +187,7 @@ Our autos include a 3 coral auto on both sides, 4 one coral and 2.5 algae net au
139187

140188
e. Repeat step a-e for every face of the reef
141189

142-
![Field_Calibration_Reef](assets/Field_Calibration_Reef.png)
143-
190+
![Field_Calibration_Reef](assets/Field_Calibration_Reef.png)
144191

145192
- #### Step 4: Check auto starting line
146193
a. Manually move the robot on the auto starting line, make sure the robot is facing toward the center of your side of the field

assets/2025_CompBot_PHR.jpg

2.02 MB
Loading

assets/Auto_Sheet.png

-15.8 KB
Loading

assets/SDR_Team_Photo.JPG

11.9 MB
Loading

assets/WCMP_Team_Photo.png

852 KB
Loading

image.png

163 KB
Loading

0 commit comments

Comments
 (0)