Happy New Year! In the spirit of rule R303, 2468 Team Appreciate and 2687 Team Apprentice would love to share this year’s off-season projects with the public. Along with this post, all of our files and links will be available on our website.
Every off-season, we assign projects to complete throughout the course of the fall semester to further develop our technical skills and prepare for the season. With these projects, our main focus is teaching our students as well as our beginner team, 2689 Team Alpha, about design, programming, and electronics.
Design/Electrical Projects:
- Configurable MAXSwerve Drivebase:
- We created a drive base assembly controlled by equations in the primary assembly where electronics can be dragged around for easy visualization of component placement. The previous Spark Max bracket has been modified to fit only one Spark Max and an additional custom mini CAN Distribution Board for easy wiring.
- 2468 Team Appreciate Steamworks/Deep Space Offseason Robot:
- Designed to score wiffle balls and hatch panels only. Includes a wiffle ball intake, transfer, and shooter as well as a hatch panel intake, arm, and elevator.
- 2687 Team Apprentice Deep Space Offseason CAD Robot:
- Design Challenge for Destination: Deep Space full game
- 2687 Team Apprentice Steamworks Offseason CAD Robot:
- Design Challenge for Steamworks full game
- Battery Cart:
- Our custom battery cart was designed to fit 12 batteries with space on top for shelving, with our 4 x 3-battery chargers attached in the back for easy plugin.
- Mini CAN Distribution Board
- Custom PCB for 4 connections of CAN distribution.
- Pico Robotic Controller:
- This is intended to have a similar interface as the roboRIO, but is designed to be more cost efficient. It includes 8 digital input/outputs, 2 analog inputs, 8 PWMs, 4 I2C interfaces, a LED port, CAN, and ethernet. It also uses a 12V battery as a power source.
Programming Projects: (via GitHub)
- Swerve Repository/Template:
- We have made some updates to last year’s swerve implementation to solidify our conventions, making it more efficient and versatile. This includes rewriting our VIs to allow us to better transition between swerve drives with different dimensions and configurations. We are also currently improving our path following capabilities and command sequencer implementation.
- Important note: we use submodules in our swerve repository and they do not automatically update when the repository is cloned. To ensure you have our support code, use the command git submodule update --init within the higher level swerve repository. Also, switching branches on our higher level repository does not switch branches on our submodules. So, you will need to git checkout [branch] in order to load our code properly. In our case, these branches are main, Auto, and REVTemplate. This information is also all in the project’s README.
- 2468 Off-Season Robot Code:
- Using 2468’s off-season robot, we were able to practice utilizing complex state machines for the manipulator system, PIDF tuning on various subsystems, implement velocity trapezoids, and experiment with a rectangular swerve drive.
- 2468 Off-Season Robot Custom Dashboard:
- For 2468’s off-season robot, we created a custom Dashboard for our pre-match swerve drive configurations, shooter and manipulator encoder feedback, and debugging/diagnostic capabilities.
- 2 Degree of Freedom Arm Simulator:
- Through this project, we simulated the movement of a 2 degree of freedom arm using inverse kinematics to calculate the angles and setpoints of the two arms needed to reach a given point.
- Velocity Trapezoid Calculator:
- Given a max acceleration, velocity, and distance to travel, our VI creates a velocity trapezoid, resulting in more controlled and consistent velocity outputs over time. We used this calculator to control the cascade on 2468’s off-season robot as well as last year’s manipulator system.
- Python Game Object Tracker:
- The OpenMV IDE contains an example of object tracking that relies on LAB color space constraints, called thresholds, to determine where an object is. We edited this example to track cubes and cones from FRC Charged Up and the skystones from FTC Skystone.
- Control Methods:
- With this project, we explored the use of different control algorithms such as voltage compensation, bang bang, a take-back-half implementation found on Chief Delphi, and PIDF.
If you have any questions, comments, or feedback, please feel free to contact us. Good luck to everyone this season!