8738 SLICE - 2024 Open Alliance Build Thread


Welcome to the 8738 Slice Robotics openalliance build thread for the 2024 season! This will be our third season as a team, and our second year as a member of The Open Alliance. Our goal as a part of OA is to help other teams to improve by documenting our methods, mistakes, and innovations as we continue our journey as a team.

About Us:

FRC 8738 is a student-led team operating out of Fuquay Varina High School in North Carolina. We currently have roughly 49 students and 10 mentors registered across 3 local high schools. We meet daily after school throughout the year, running until 3:30pm or later as needed.

This year we are planning on having our robot finished fairly early in the season to give us plenty of time to innovate and practice. We will be competing at the Pembroke and Wake district events in weeks 2 and 4.

Our mission is to Serve our community by inspiring students to be science, technology and business Leaders and Innovators. With essential help from our local Community, we strive to develop well-rounded life capabilities including self-confidence, professionalism and pursuit of Excellence. It’s all in our name — SLICE.

Open Alliance Strategy:

This season on Chief Delphi, similar to last year, we will have weekly recaps throughout the season and semi-weekly in the remaining off-season. In addition, we will be introducing subteam deep dives: a series where our Mechanical/CAD, Electrical, Programming, and Business teams will take turns covering their past and present methods, mistakes, and innovations in depth. Our goal is to post one deep dive per week in the off-season, and two per week during build and competition seasons.

On Discord, we will continue to post brief, frequent updates on what we’re up to, along with summarizing recent Chief Delphi posts as a quick way to see what you can learn from each recap and deep dive.

Links:

5 Likes

Slice Slice Squeeze

5 Likes

11/2/2023 Programming Deep Dive

After the 2023 season, Slice decided to make some significant physical upgrades to our robot during the offseason in preparation for the 2023 THOR and Doyenne competitions, and the code was updated to reflect these changes. Here’s a summary of the most important problems we faced and innovations we made during this process.

Swerve Drive: A 3-Part Tragedy

This year was our first using swerve drive, which meant big changes for our drivetrain code, and also a whole lot of mistakes, some late nights, and increasingly spaghettified code. Hopefully, future teams reading this that are also switching to swerve can avoid some of the mistakes we made. We based our swerve drive after Team 364, Fusion’s drive code, which can be found at this repo.

Most of our programming team’s struggles occurred because we realized that some of the settings we were applying to our angle motors, including whether they were inverted, were being reset. This one bug, which we did not discover until a week before our offseason competition, caused us a lot of grief over the development of our swerve code, detailed in the following step by step process following the deteriorating quality of our code:

  1. Bandaid 1 - Early on while in the development of swerve, when we were trying to rotate, our wheels were angling 90 degrees off from where they should be. We fixed this by inverting the signs on the x components of our kinematics, so that the robot believed its left and right wheels were switched.
  2. Bandaid 2 - When doing auto, our robot kept moving left when it was meant to be going right, and vice versa. Stressed and with drive practice looming in the near future, we decided to create a custom version of SwerveDriveKinematics that inverted the left and right directions, which we used only during autonomous driving. Yes, it was incredibly cursed.
  3. Bandaid 3 - Our odometry refused to cooperate at all, and would often think that the robot teleported outside of the field. This was likely it screaming in agony from the multiple terrible bandaids we had already implemented, but we silenced it’s torture with a 3rd bandaid, by taking the absolute value of the position of the robot, which ensured all the values it gave us were on the field.

What eventually fixed our problem was when we realized that the code for inverting our angle motors was placed before our factory reset lines, so we moved it to be after. For other teams, the two main takeaways here are: make sure every motor is spinning in the direction you expect, and make sure factory resetting your motors is the FIRST thing you do

Polar Joystick Filter

Late into the season, during drive practice, we noticed that it was very difficult to drive in any direction except directly forwards, backwards, left, and right. After some testing, we located the problem within the way we filter our joystick input. For the past year, Slice has run the input from joysticks through a polynomial function in order to decrease the sensitivity when we’re moving slowly. However, when we switched to swerve, we applied this curve to both the x and y axis individually, which transformed the even circle of possible joystick inputs into a skewed star shape, as seen below:
rectangular_filter_animation

(you can play around with this Desmos graph here)

Do you see the problem? Most of the inputs became concentrated along the x and y axis, locking driving to the cardinal directions. To fix this, we converted the (x, y) rectangular point from the joystick into a (θ, r) polar point, and then input the radius variable into the polynomial function instead. This fixed our issue. For reference, here’s what the polar filter looks like:

polar-filter-animation

Arm Control

Not only did Slice upgrade from tank drive to swerve drive during the offseason, but our arm gained a wrist, bringing it to 3 total degrees of freedom. During the 2023 season, Slice controlled our arm by recording the motor angles of several states the robot could go to, (like stowed, score on high row, and pick up cone from double substation) and then we used positional PID controllers on each motor to move between states. While an extra degree of freedom still works with this method, the extra motor makes it more difficult to ensure that no parts of the robot collide. Thus, we split the task into two parts: preventing the intake from hitting the elevator, and preventing the wrist from hitting the elevator.

To prevent the intake from hitting the elevator, we created a function that calculates the position of the intake based on the angle of the elbow and wrist relative to the base of the elevator, using some simple right triangle trigonometry. Then we can tell if a position would collide with the elevator just by checking if its y coordinate is greater than its x coordinate (with a little extra added to the y to account for the thickness of the elevator). You can see an illustration below: as long as the intake would be in the green region, our code allows everything to move. If moving the whole arm would instead put the wrist outside that green area, (its y coordinate is greater than its x coordinate), then our code only moved whichever of the two components, the wrist or elbow, is moving away from the elevator, until moving both at the same time is safe.

arm-diagram
(you can see this Desmos graph here)

The second component of controlling the arm is preventing the wrist from hitting the elevator. This was, comparatively, a simpler solution. If the elevator and arm were ever moving at the same time, we first moved the arm out 15 degrees, so it is definitely clear of the elevator, before proceeding to move the elevator and arm at the same time.

13 Likes

Business Deep Dive Intro 11/08/2023

Summary:
In this comprehensive business deep dive, we delve into the intricate facets of Slice Robotics’ business operations, assessing past achievements, areas in need of improvement, and our concerted efforts to evolve and thrive in the competitive landscape. As we approach our third season, we reflect upon the lessons learned and the strategic shifts undertaken to ensure our continued success.

Challenges and Areas for Improvement:
While our performance in managing competitions has been commendable, it is imperative to acknowledge that a substantial part of our success resides behind the scenes, underpinning the visible triumphs. There are various dimensions within our business operations that have demanded our attention and improvement. Each time we do a deep dive, we will cover a few of these topics in depth.

Resolution and Implementation:
In response to these identified challenges, we have undertaken a series of targeted strategies and operational adjustments. These initiatives have been meticulously designed and implemented to address specific issues and to support the overarching goals of our business team.

Local and Community Outreach:
While we have excelled in outreach efforts to other schools, it has come to our attention that our engagement at the high school and community levels requires reinforcement. The goal of our outreach initiatives is to make our team a local cornerstone and to build sustainable relationships in our immediate community. Furthermore, refining our budgeting practices is essential to ensure the longevity of our operations.

Sustainability:
Ensuring the long-term sustainability of our team is of paramount importance. This necessitates the enhancement of our organization and the implementation of more efficient systems for task assignment and order confirmation. Achieving sustainability means fostering a strategic approach that enables us to thrive over time, even as we navigate through various challenges.

Role Clarification and Organizational Enhancement:
Recognizing the critical role that finances play in sustaining our team, we initiated a comprehensive evaluation of roles within our business team. This assessment led to individual meetings with team leaders, ensuring a comprehensive understanding of each member’s responsibilities. The aim is to promote organization and knowledge-sharing among team members.

Leadership Roles:

Business Captain:
The Business Captain plays a pivotal role in managing leads, task assignments, and meeting planning. Their primary responsibility is to ensure that the team meets its business objectives, including fundraising targets and community outreach goals. They also work alongside the Operations Lead to maintain budgets and maximize revenues, ensuring that the team operates within budgetary constraints.

Outreach Lead:
The Outreach Lead is responsible for planning community events and formulating strategies to increase recognition for the robotics team in the broader community.

Marketing Lead:
The Marketing Lead ensures that the team is presented professionally, maintaining a consistent appearance with proper gear and sponsor representation.

Operations Lead:
Primarily responsible for financial matters, the Operations Lead collaborates closely with the CFO to manage budgets and financial flows, ensuring compliance with established standards.

Task Management and Deadlines:
An effective system for task management and deadline enforcement is pivotal to our success. To this end, we introduced deadlines via a dedicated Trello board created exclusively for the business team. This approach necessitated a heightened level of precision and adherence to timelines. Moreover, we introduced a task assignment system where team members can request assistance from the Business Captain or other leads.

Evolution of Budgeting:
In previous years, our budgeting approach was marked by its ad-hoc nature, reliant on shared budget sheets and single-order forms. This approach often resulted in confusion and non-transparent budgeting practices, posing challenges for future business teams. This year, we implemented a more structured strategy known as the virtual envelope budgeting method.

This method involves allocating a predetermined percentage of funds to each subteam. It grants flexibility, allowing for adjustments between subteams if one requires more financial support. Additionally, it provides enhanced visibility into the allocation of funds for various purposes, including competition registration fees. As part of this approach, we thoroughly calculate all registration fees, including those for Worlds, and maintain a stringent record to ensure compliance.

Enhanced Marketing:
The marketing team has undergone significant transformations, transitioning from a small, understaffed group to a larger, more diverse team. As our marketing operations expanded, we recognized the need for streamlined management and submission processes.

As part of this restructuring, all marketing initiatives are subject to approval by the Marketing Lead and Business Captain, ensuring that the team remains focused and aligned with its core objectives. Although this process is not yet complete due to our ongoing search for a dedicated Marketing Lead, all marketing endeavors are overseen by the Business Captain, promoting clarity and oversight.

Merchandise Strategy:
Our merchandise strategy has evolved significantly to cater to the diverse needs of our team and supporters. We have categorized our merchandise into two distinct types: uniform merchandise and product merchandise.

  • Uniform Merchandise:

    • Uniform merchandise is exclusively designed for team members and is an essential part of our team’s identity. It is marked by the inclusion of all current sponsors for the season. Team members are required to wear these uniforms in the pits at competitions, ensuring a unified and professional appearance.
  • Product Merchandise:

    • Product merchandise serves a different purpose and is intended for external use. It includes merchandise that is suitable for wear around school and in local stores. Product merchandise, in contrast to uniform merchandise, does not feature sponsor logos. Both categories adhere to the consistent SLICE color scheme and branding.
  • Decision-Making Process:

    • The process for approving product merchandise is designed to be a democratic one, involving a vote by the entire business team. This ensures that the perspectives and preferences of all team members are considered in merchandise decisions. On the other hand, the approval of uniform merchandise is determined by the leadership team, as their decision-making is guided by the unique requirements of pit appearances at competitions.

Community Outreach:
Our outreach efforts are at the heart of our mission, aiming to achieve dual goals: gaining support from the local community and nurturing the next generation of STEM leaders. We actively mentor the Fuquay-Varina Middle School’s FLL team and the Ballentine Elementary FLL team, both of which represent crucial opportunities for our team to foster STEM interest at the elementary and middle school levels.

In our pursuit of broader outreach, we are striving to strengthen connections with other schools and the town of Fuquay, seeking to enhance our recognition and build valuable partnerships. Participation in events such as the Manifest event, focused on the future of STEM in the black community, underscores our commitment to community engagement. Our aspiration is to build upon these successes, using our connections to further elevate our outreach initiatives and achieve new milestones in community support.

In Summary:
Our Business Deep Dive Report provides a comprehensive overview of our business operations, challenges, and initiatives aimed at improving our team’s sustainability and community engagement. These strategic changes are essential to our continued growth and success. As we move forward, we remain committed to the mission of Slice Robotics, with a strong focus on innovation, teamwork, and the development of STEM leaders in our community.

5 Likes

Semi-Weekly Recap (weeks of 10/30 and 11/6):

In the past few weeks, we have been working on our preseason training build, teaching new programmers, updating code to the 2024 beta, adjusting our off season bot, developing product merchandise and much more. If you have any questions about what we discuss in this thread, we will be happy to answer them.

Mechanical:
The mechanical subteam has been developing an intake and prototyping an elevator for the 2019 game as our preseason training build. Some of our more experienced members are experimenting with gear ratios on our off-season bot’s intake (I’ll try to get the post about that robot up by Friday). We even tried direct driving it, however that resulted in the motor stalling on contact with a cone. We also put half a bumper on our robot cart since it is stored against a wall in our practice space (we’ll put the other half on when more duct tape arrives).

An unfinished version of the challenge intake (left); The robot cart with its bumper fitted (right);

Freshman Elevator Prototype (0:10)

CAD:
The CAD subteam has been designing the mechanisms that will move mechanical’s intake from the ground to the different scoring positions of the rocket, along with various personal projects in order to get comfortable with MKCad and Onshape as a whole for the upcoming season.

Electrical:
The electrical subteam has been working on the E-board for the challenge robot, along with our electrical lead starting a series of electrical lessons. Our offseason robot was recently fitted with a new Rio and PDH, allowing the old Rio and PDP to be used for our second robot. We got the breakers for the PDH recently and restored the offseason bot back to its original capability.

Some electrical members mounting the board for the challenge electronics;

Programming:
The programming subteam has been very busy preparing for the season. They are creating documentation for how to program a robot to streamline the training process in future years, along with the new programmers having made and tested basic drivetrain code. We are also updating our swerve drive code to be compliant with the 2024 WPILib beta.

Business:
The business team is currently working on our finances and branding situation for the upcoming season. This includes placing our preseason order with anything we will most likely need in the season. They have also been designing sponsor banners and developing product merch to sell in the near future. The team is also writing an article about this year’s Doyenne competition, an all girls FNC offseason event that our team has attended since we were pre-rookies.

2 Likes

11/15/2023 CAD Deep Dive

The conclusion of the 2023 season left Slice with many improvements to make for C^2, along with the introduction of our off-season challenge. In regards to these events, here’s what the Slice CAD team has been up to this off-season.

2023 Issues: Retrospective

Last year, CAD was pretty disastrous. Due to internal issues and simply a lack of able people, nearly all of the CAD work was left to a single person. Along with this, here are what we have identified as the main issues that occurred during the 2023 season regarding CAD.

  1. Scheduling - The 2023 schedule was a bit optimistic to say the least. With the lack of hard due dates for individual subsystem CAD and the well known Dunning-Kruger effect at play, we severely overestimated our abilities to deliver designs in a timely manner. This led to much of the CAD being done as the robot was actively being built.

  2. Experience - Despite the incredible successes of our 2022 rookie year, one fault of our team was the lack of training given to new members. This left many requiring the discipline to teach themselves the in’s and out’s of robotics, as was such with the CAD team. Not only were we CADing while the robot was being built, we also had to learn how to CAD while the robot was being built.

2024 Improvements

With the introduction of an actual CAD team (and not the CADer), we are very hopeful for the next year. This upcoming season we hope to remedy the previously stated issues, and this is how we plan on doing so:

  1. Detailed CAD Schedule - This upcoming season the CAD team hopes to get together and discuss a CAD specific schedule of when to design each subsystem in order to meet the final deadline given to us.

  2. Training - The Onshape Learning Center has really been our crutch so far, and is the only reason we have gotten where we (the CAD team) are today. However, over the off-season we have been hoping to do away with this crutch to promote a more efficient and engaging learning environment for would-be CADers. Having more experienced members give learners tangible projects so they can see designs they created be brought to life via 3D printing will hopefully make CAD a more accessible field to members who may not want to sit through hours of Learning Center videos (no matter how helpful they are).

Off-Season CAD

Now, onto the actual robot. The 2023 off-season robot has been dubbed “C^3”, with our Engineering Captain designing the CAD for our new and improved robot (with swerve!) over this past Summer:

It features a new “wrist” that allows far more efficient manipulation of cones. The effectiveness of our improvements was evident in our performance at both the THOR and Doyenne off-season competitions.

Destination: Deep Space Challenge

The main event of Slice Robotics over the 2023 off-season is the Destination: Deep Space Challenge; new members must go through a simulated build season in order to create a robot that can play a modified version of the 2019 game. While progress has been admittedly slow (seeing as experienced members are only allowed to mentor, not participate), we have recently gotten back on track with the challenge.

CAD in specific has been having issues with grasping what exactly CADing for robotics entails, something we must address when teaching those in the future. Sure you can know how to extrude or make the most detailed model of a table the world has ever seen, but that means little when you’re a day away from the CAD deadline mid build-season and not even halfway done. The biggest lesson (by far) that we have learned from this challenge is that CAD needs to revamp our on-boarding process. As a robotics team, we need to make it clear how to utilize CAD in robotics specific applications.

Conclusion

Overall, the CAD team has made incredible progress since our 2023 season. While we aren’t nearly as experienced as some teams, these continuous retrospectives and reevaluations of the CAD team is what will lead us there.

7 Likes

Summary:

This Electrical Deep Dive post talks about:
-Tank Drive to Swerve
-Problems During On and Off Season
-E-Board Innovations

Tank to Swerve:

Our robot used to run Tank Drive, but for the 2023 off-season, we purchased the MK4i Swerve Drive. It was a challenge to transfer from Tank Drive to Swerve, and there were a few complications along the way, but we came up with some pretty innovative solutions. From an electrical standpoint, the process we used to swap the two drive trains is shown below:

Step 1: We disconnected all wiring from the Tank Drive, and had the mechanical team construct Swerve and prepare it for transfer.

Step 2: Once Swerve was mechanically built and prepared, we transferred the top of our robot, where everything besides the drivetrain was, to the new Swerve Drive and had mechanical reattach it.

Step 3: We rewired all the components that were disconnected from Tank Drive, but since each Swerve module has two motors we had to make room for more wires going into our PDP. Our robot didn’t have enough Spark MAXs to accommodate the 4 extra motors . We decided to keep the wires from the old Tank Drive and use those to connect to the “Drive” motors while making new wires and connections to accommodate the “Steer” motors.

Step 4: Adjusting to Swerve meant that we needed more open ports on our VRM for its CANcoders, but we didn’t have enough of the right ports for that. So we split the current from one port to two CANcoders because they only run on 6V, and the port we split from ran 12V. We did this for two ports to adjust to the 4 new CANcoders we needed to power.

Step 5: Once all the Spark MAXs and motors were reconnected and the CANcoders were accounted for, all we had to do was make sure we still had room to use the motors for the arm and wrist.

Things We Encountered:

Our team came across several problems with our new Swerve Drive, ranging from small issues that had simple fixes to big ones that required several days to fix, as well as problems with our NEO Motors and Wago Connectors. There were also a few general problems with the robot that are listed below alongside the Swerve issues that came up this season:

  • Issue #1: When first installing Swerve Drive, we encountered an issue with one of the wheels only being able to drive if it was given a starting boost like someone manually moving the wheel or the “Steer” motor running quickly. After probing the “Drive” motor’s wires, we saw some noise using an oscilloscope and figured it was a loose connection. Not only that, but during competition a NEO Motor on our arm could only rotate the shaft a certain distance before it couldn’t rotate any farther. We figured out the cause of this problem was the use of automotive connectors because one of the wires (phases) had been disconnected unintentionally from the connector. For both of these situations, we elected to bypass the automotive connector for that wire and instead use a Wago Connector.
  • Issue #2: At competition our breaker was randomly making sparks when the battery was plugged in, so we observed when it made sparks and when it did not, and concluded that the problem must be the air in between the breaker’s lugs. The air was ionizing when it was trapped in between the lug on the end of the battery wire and the nut on the breaker, causing sparks to fly out. We disconnected the battery and tightened the nut as tight as it could be to limit the amount of air in that spot, and proceeded to check the other lug.
  • Issue #3: One of the robot’s Wago connections going to a motor stopped working, but not because it was unintentionally unplugged. We assessed that the connection was burnt and that the Wago was no longer usable, so we replaced it with a different identical one. Later, we found out the reason why the Wago was burnt was because the wire was not fully inserted into the Wago, so it was arcing to fill in for the length of the wire that wasn’t far enough in, resulting in it melting. We plan to use Wagos that are rated for higher gauge wires in the upcoming season to prevent this issue.
  • Issue #4: Our robot uses MK Batteries, and the battery plug that connects the battery to the breaker ripped out the ground wire but left the metal lug inside the connector. We removed the metal lug from the connector, crimped a new lug onto the ground wire, and put a heat shrink around it. We haven’t soldered the wire into the lug yet, and we think that not soldering it may have been the problem in the first place.

E-Board to E-Box:

Instead of using a standard design for our E-Board, we decided to make an E-Box for our 2022-23 robot. It’s similar to an E-Board, but there are some key differences to our E-Box listed below:

  • Protection: The electronics are enclosed in a sturdy polycarbonate box that has easily held its own against several tipping incidents. The “floor” of the box is where the electronics are mounted, and by using bolts and nuts, they are made secure. Our team used to have an E-Board on the bottom of our robot, but it fell out during competition and almost damaged all the electronics, so we use an E-Box to prevent those types of situations.

  • Accessibility: Our E-Box is placed in an area specifically chosen for easy accessibility, and our polycarbonate cover allows the team to see what exactly is happening regarding our electronics. Having electronics on the bottom of the robot not only poses that chance of electronics falling out, but also doesn’t allow for much accessibility, so repositioning our electronics made it way easier to work with them during competition and in general.

  • Organization: The E-Box is a dedicated space for our electronics, and by using a rough draft of where each part should be mounted, we were able to organize them thoroughly and place each piece in a spot that would save space and work with the other electronics. Having designated spots for our Spark MAX motor controllers simplified the process of figuring out which controller corresponded with which motor. It also made it easier to analyze the status lights on the controllers during high-speed competitions.

2 Likes

11/29/2023 Programming Deep Dive

This programming deep dive covers what the Slice programming team has been up to since our offseason competitions. This includes our latest developments in training new members, better path following code, and preparations for our swap to Kraken motors.

Knowledge Base and Tutorials

The programming team has significantly grown this year (from 3 members to 11) and training all these new people has become a significant sink of both time and people. Therefore, our team set out to create a database of all the programming knowledge we have. The database is supposed to accomplish 3 basic goals:

  • Training new members in the basics of programming a robot
  • Recording bugs and their solutions for future debugging
  • Explaining code that is persistent between seasons

Our team began by researching a way to make a custom document database for this purpose, but we eventually decided to use a pre existing website called Notion to store all of this information, as it had most of the features we wanted anyways. To begin the process of populating this knowledge base, we are writing some tutorials explaining WPILib and Command Robots. We are also writing scripts for videos to accompany the written tutorials, which we will record and upload for any team to use.

This is an example of what our knowledge base looks like:

Offseason Deep Space Challenge

During the offseason, Slice is challenging our new members by having them create a robot for a simplified version of the 2019 FRC game Deep Space. The programming team has begun writing the code for this challenge by creating a class called PositionalSubsystem. This is a class meant to solve a problem Slice has encountered many times this season, which is creating a subsystem whose sole purpose is to go to different positions using a PID controller. We had to program this feature into 3 different subsystems this year, so the hope is that rather than having to continue rewriting it, we can make subsystems inherit from PositionalSubsystem so we can reuse the same code every year.

Node Alignment Trajectory Generation

Ever since the 2023 main season, our programming team has been working on developing code for generating on-the-fly trajectories to automatically align the robot with a selected node while avoiding field obstacles as a way to lift this burden off our drivers. As this began in the main season when our robot was still on tank drive, these trajectories were originally generated using the WPILib TrajectoryGenerator class and were run by a Ramsete Command, but now with our robot being on Swerve MK4i, they are now generated using 2024 beta PathPlannerLib and run by a PathFindHolonomicCommand. Mostly due to errors in code logic that would naturally arise from creating code of this complexity from scratch without being able to test it extensively, the programming team struggled to even reach a level of basic functionality in the trajectory generation in the beginning, facing a variety of issues such as malformed spline and null pointer exception errors, PID controller oscillation, and even the robot moving in the complete opposite direction. Due to having more time to work on more minor projects like this during the offseason, we were able to resolve most of these issues by thoroughly analyzing and testing the code, which was largely done using simulation. Now the largest issue preventing this code from being perfected is the poor accuracy of the robot’s odometry, which we unfortunately have still not been quite able to solve yet.

Here is our robot running autonomously using this trajectory generation:

Kraken-Neo Swerve

Our swerve MK4i code is based on a version of the Team 364 BaseFalconSwerve library completely adapted for NEO motors to work with our drivetrain, with us only having made minor changes to accommodate our code structure, but our team recently made the decision to order Kraken X60 motors to swap our NEO drive motors with. With the higher torque that these motors have compared to NEOs, we thought that it would be a worthwhile investment, and we hope that our drivetrain will be more powerful and competitive in future competitions with them. Our programming team has already finished developing a GitHub branch for this, and luckily, since the original Team 364 swerve library is made for Falcon 500s, which use TalonFX motor controllers just like Kraken X60s, we were once again able to develop the code based on a library. Although this was naturally easier than it would have been converting the code having to do with the drive motors completely by hand, since our swerve code still uses NEO angle motors, there were some slight complications that arose from combining code for both SparkMax and TalonFX motor controllers in the same swerve module class that prevented us from simply being able to copy and paste.

3 Likes

What was it about Notion that made it the right choice for your team? I’d also be interested in taking a look at y’all’s materials if/when that’s possible

Our most important requirement was that the knowledge base could be easily searched: finding debugging tickets or tutorials by keywords or categories, not just the name. Notion offers the ability to tag pages and sort them by those tags or to search the entire knowledge base for specific words. Some other features that improve searchability include an easy to navigate homepage to scroll through pages quicky, and the ability to link between pages. Another important feature is that it supports multimedia content, critically code blocks. And it’s free for students!

Once we begin recording our videos and have some more polished materials we’ll be sure to include them in this thread!

Cool, thank you so much! currently working on finding/creating a training management platform for my team so good to know what’s been working well for others :slight_smile:

Business Deep Dive Report
Outreach- December 7th, 2023

Introductory:
Every business needs a strong social network. How else are they supposed to gain support? A social network can get business sponsors, clients and overall support from our community. Hence why you have to utilize every avenue you can to gain connections. However, establishing these connections takes time, and a lot of it. This report will go over the effort we have put into building our own network, including the problems we’ve come across in the process. That being said, one of the basic problems a team can face is not understanding how to maintain them.

Leadership:
A team’s Outreach Lead is often very heavily involved in the networking process, as a strong network can help boost a team’s communal demand. Connecting with the right people can come with invites to various events, or can provide a team with the opportunity to advertise and hold more events of their own. Since the Outreach Lead is responsible for ensuring a team’s involvement within their community, they are usually the ones to make those types of connections. That being said, a developing team may not have as many leadership positions, making it even harder for a new team to network.
Solution:
During SLICE’s rookie season, our team worked to overcome this problem by utilizing connections our team members and their parents had. Working these types of connections allowed our team to build the tentative foundation of a network, and gained us valuable sponsorships from companies such as Relay and John Deere. Without this support, our team likely wouldn’t have been able to compete.

The Result:
Since then, our team has continued to expand on this network, fortifying it by taking communications in our own hands and adding to it as we go. As we’ve been able to increase our networking efforts, we have found many opportunities within the community. We have emailed a local NHL hockey team the Hurricanes about a potential collaboration. We have also raised money on a crowdsourcing platform called vertical raise which was very beneficial. Opportunities like Manifest and Wings Over Wayne helped us gain a connection with the Fuquay-Varina Community. Other great experiences we had that helped acquire a connection is the Caterpillar Stem event all about getting girls involved in STEM. This involved students from elementary and middle schools, the experience also helped us further gain a connection to our Mentors from Caterpillar. It’s these events that help us in the long run to fully understand our community and our supporters.

Takeaways:
So what is this whole deep dive trying to tell me? Well first off always take a risk never not send an email you never know what can come out of it. Second, always start with the small connections, the closer you are to someone who’s closer to another the better outcome down the line. Third, never think about the bad things when sending an email, the response might be better than you think; prepare for the worst but hope for the best. Fourth, whenever you plan for events whether by request or for your own volition, always plan like you have something to sell the target audience no matter how big the crowd is. And lastly do your research and plan accordingly, events give you more recognition than anything; this can actually help you financially too. You never know your events might have a future mentor in the crowd and you didn’t even know it yet. Remember networking takes time although some teams don’t have a lot of time, always start close and work your way out. That’s the key.

Late November/December Summary

Since our last summary post, the team has been very busy. Many sub-teams have been working on the off-season challenge, mechanical has been experimenting with the off-season robot for learning purposes, the programming team has been training for the season and refining odometry, and the build space team has been disassembling old field elements. We have also been organizing our build space to allow us to find parts more efficiently.

Disassembling the rapid react traversal rung that held our rookie pit banner (new banner location visible in rear)

Our off-season challenge this year was to have our underclassmen and less experienced upperclassmen attempt to complete a robot for the 2019 FRC Game: Deep Space. While they couldn’t finish it, they learned a lot about robot design, construction, and wiring. Some problems they had to debug were the electrical system making unusual whining noises when they originally completed it, and identifying that a gear wasn’t properly fitted during assembly of the drivetrain. The intake they developed would have worked well if it was fitted onto the robot, with the ability to pick up hatch panels using velcro and rollers to intake and outtake cargo. You can see photos and videos of it here:

The challenge intake under construction

Challenge intake drill test

First time running two robots at once

The Mechanical team has been working on a lot of different things. This includes installing temporary Colson wheels on our swerve drive to allow it to drive on concrete at outreach events, reducing the gear ratio on the intake to see how that affects performance, swapping some of the chains with belts, and disassembling our off-season robot. Last week, we fixed the motor on our robot cart, allowing us to have an adjustable working height.

Robot disassembly

Belt test with the C^3 offseason intake
|291x388.13230142156937
Lower gear ratio cone pickup/placement

Robot cart lift test

The CAD Team has been getting accustomed to KrayonCAD in preparation for prototype designs for this upcoming kick-off. We have also continued work on the 2019 challenge CAD, began designing a holder for our new fire extinguisher, and learning how to use useful feature scripts in Onshape.

Electrical has been working on getting the team’s promotional robot wired up and powered. This includes finding ways to adjust the Spark MAXs to work with brushed motors and finding creative ways to mount the Robot Signal Light. We’ve planned the placement for certain components to work around the intake while keeping accessibility a priority and having wire management incorporated into the beginning stages of design to ensure it doesn’t become a problem later.

The last few weeks the programming team has focused on writing code for our offseason challenge. This includes testing our new reusable code for controlling mechanisms using positional control. We have also worked on increasing the accuracy of our swerve odometry. In addition, we have also adapted our swerve code to run on the 2024 WPILib beta.

The business team has been making final preparations for the upcoming season. We have redesigned our buttons and stickers and updated our shirts with our season sponsors. In addition, we attended an event about introducing girls to STEM with 9008 G-Force and our primary 2024 sponsor Caterpillar. We also tried out posting a weekly recap on our Instagram (@slice_robotics).

Slice and G-Force at the Caterpillar Introduce Girls to STEM event

One of our recent ‘this week at Slice’ posts from Instagram

2 Likes

Pre-Kickoff Update

Over the past few weeks, we’ve been working on cleaning our build space, disassembling our old robot, testing odometry inaccuracies, collecting uniform merch orders, and more. I won’t go in-depth on these activities so the post stays fairly short, but I’ll gladly answer any questions you may have.

Each year, we’ve taken a different approach to kickoff. In 2022, we watched the stream on a Discord call together and went straight into robot design. However, this led to our founding members dominating the discussions, and the rest of the team feeling left behind. In 2023, we attended kickoff with a local team (3459 Pyrotech). Since we didn’t plan very well, we had several isolated strategy and design discussions happening in parallel and didn’t accomplish much. This year, we are taking a more structured approach to kickoff to ensure everyone is involved. We will meet at our build space for kickoff, and after we watch the stream, we will read the game-specific aspects of the rulebook as a team before breaking off into stations. These stations are designed to let people try the game, familiarize themselves with the rules, and come up with various strategies. You can view the full plan here

In case anyone is interested, here are the links to our off-season repo and our persistent/reusable code repo:
2023 Offseason
Slice Persistent Code

1 Like

Kickoff Week Recap:

This post will go over our kickoff meeting, brainstorming days, and idea filtering meeting (aka The Purge), along with what strategy our team has decided to design for.

On kickoff, we met at our build space to watch the reveal, read the rules, and went on to stations to learn the game (these stations were covered in our pre-kickoff post). Our strategy discussion at the end of the meeting ran on into Monday’s meeting, where we developed our strategy prioritization.


Watching the Kickoff broadcast; Playing a half-scale human version of Crescendo

When it came time to create our list of strategies, we made a list of different ways to score, intake, defend, and run endgame. We then prioritized a few of these items, with our primary focuses being ground intaking, amp, and shooting from a medium distance. Our reasons behind these priorities are as follows: Regarding ground intakes, this game will be a game of extremely rapid cycles based on the performance of early-season prototypes, so every bit of time we can save is worth it. Regarding the amp, even the kitbot can score in the speaker, so being good at the amp will allow us to improve the scores from our teammates significantly. Regarding mid-range shooting, we believe the subwoofer will be a prominent area for defense, so we don’t want to rely on shooting there, and the design of this game leads us to believe that mid-court shots would be much less accurate, and not worth relying on. In addition, mid-range shooting gives us the option to easily shoot from protected areas such as the amp or podium.


Strategy tier list

After we determined our priorities, we allowed our team to transition into open-ended mechanism brainstorming to help us determine what designs we wanted to target with prototyping. On Thursday, we had “The Purge”, where groups presented their ideas, and we utilized approval voting to identify which robot designs were the best to pursue and assigned people to work on each of the top designs. On Friday, we worked with our mentors to identify what prototypes we want to make for each design and will begin working on those in the upcoming week, to finalize our high-level robot design on Friday.


Presenting ideas at ‘The Purge’

2 Likes

1/21/2024 Programming Deep Dive

This programming deep dive goes into what Slice’s programming team has been working on to prepare for the 2024 season.

Persistent Code Repository

Our programming team has collected all the code that we plan to use every year into one repository, which we can clone each year. Some of the features included in this repository are:

  • Swerve drive
  • Polar joystick filtering (see our 11/2/2023 post for more info)
  • Code for controlling positional subsystems

You can take a look at the public repo here.

Autonomous Preparations

While the rest of the programming team has been working on prototyping our robot, our software architect has been hard at work ensuring that our autonomous routines will be top notch. This includes:

  • Fine tuning the odometry to give us as precise results as possible. We started by doing a series of tests where the robot was supposed to drive in a straight line that was exactly 2 meters long and measuring how far off it was. After fixing some careless mistakes in the code and tweaking the PID gains for our path following controllers, the accuracy seemed to noticeably improve. Our results in the end are promising, with only a 1 cm variation in distance per meter driven.
  • Updating the limelight code so that it can be used with more than one limelight. In our previous seasons we have only used one limelight and had the limelight as a single subsystem in the code, but for this season we are planning to have two limelights to improve the robot’s vision processing visibility, so to accommodate this, we rather made a class that can be instantiated in the subsystems where each limelight will be used. Additionally, we updated some parts of the limelight code by adding more commentation and more AprilTag data that could be accessed in the code both for odometry and the shooter subsystem when it is completed.
  • Preparing the autonomous paths we expect to need well in advance so that we’re ready to make auto routines right when we begin programming

Slice Tutorials

While the programming team has gotten sidetracked with other preparations for the season and kickoff itself, the knowledge base and tutorial project is still going on, if slowly. Recently I recorded this video for teaching python programmers some of the syntax of java, as most of the resources already out there aren’t fine tuned to what’s needed for robotics. I’ve since realized that this talk-and-write-code style of video isn’t great for learning, so we will be pursuing other formats or mediums to publish instead, but you can check out the old video here.

2 Likes

Mechanical Deep Dive 1

Here, I will first cover things that we had issues with during the charged-up season and offseason. (More on 2024 prototypes later)

2023 Season Issues:

  1. Slower speed and overall cycle times - The first issue was that we were forced to drive slowly since our center of gravity was very high. Anytime we entered the loading zone too fast while extending the elevator and arm, the robot wanted to tip, and having a tank drive robot added to that problem. Another thing that was contributing to this was a very heavy arm/elevator assembly. (we were using ⅛” tubing everywhere)
  2. Durability - Our main issue with durability included elevator chains. Also, after 2 competitions, the elevator tubes gathered a lot more wear than normal. Another durability concern was the arm sag, this was caused mainly by the bolts being under shear force by the arm tubing and carriage (we didn’t know that we could use gussets at the time). At an exhibition in May, we played basically every single match one day, but unfortunately, the next day, while testing new code with new drivers (the first time they drove a robot), our carriage halfway ripped out of the elevator and we had to completely rebuild the whole thing.

The 2023 Off-Season Changes and Issues:

  1. Before the swerve modules arrived, we wanted to fix the elevator, since during the season, it was already somewhat built without much attention (wasn’t square and bent, this was mainly an issue of not using pre-drilled tubes). This time, we gave more attention to lining things up before putting holes through them - this really paid off, however, this took much longer than it should, so we decided that during the new season, we would use pre-drilled tubes.

  2. Way before the season ended we realized that we needed swerve. So during the summer, with the help of a few members, we were able to get the chassis built in a not-so-timely manner due to being limited to 1-2 meetings per week. For this new robot, we decided to lower the elevator angle from around 60° to 45°, this really helped a lot with the COG, however with the faster and more snappy robot, if we stopped too fast or in a certain direction, we found that we would lose contact with some wheels (the main issue here was the Electrical box on top of the elevator).

  3. Along with this newly built elevator and drivetrain, we made a new intake. However, since we had an elbow and a wrist (everybot intake, but with a pivoting cone roller) we had many problems with rigidity and flimsiness. The 2 main problems were the sagging of the arm (problem of mounting to the carriage again) and the wrist (cone intake) twisting. The arm’s sag was due to a lack of knowledge of using gussets, but also just poor mounting in general. We solved this problem by welding which ended up working very well (we now have resources to make custom gussets, so we’ll be able to do this easier). There are a few theories of why the wrist was twisting so much. 1 - Bad bearing holes (we were using an old wood hole bore tool), 2 - Bad bearing retention on polycarb, 3 - No stiffening or support apart from the hex shafts for the wheels, 4 - only driving one side of the wrist. The first thing that helped was welding a stiffening bar for the arm, this helped since the elbow was made from polycarb and could transfer the bending all the way up to the wrist. The second thing was to stop the bearing from slipping off of the polycarb, although we used the big shaft collars, there was enough space in between the bearing and the face of the collar so that the polycarb would just shift around, we found that using really big washers to double as spacers and a way to keep the polycarb from moving worked well. Another thing was directly stiffening the wrist with a hex shaft (as robot spacer) bolted onto the polycarb (this works the best).

  4. For weight reduction, our new intake design got rid of two decently long pieces of tubing. With this intake, we had less mass extended while scoring and intaking, which helped with getting in and out of the loading zone and lining up to score much faster.

2024 Prototypes and Designs:

Intake V1: This intake worked well for head-on note intaking, however, the mecanum wheels weren’t enough and the intake struggled while trying to acquire a note from the sides or corners. We came to the conclusion that the mecanum wheels wouldn’t be suitable for us and that they would damage notes too much.

Intake V2: With this new mechanism, we had a guide on the back, so that the game piece can get funneled into a narrower space for more consistent indexing and shooting. The “funneling” idea here worked better than using mecanum wheels and we decided that this would be a better way for us to go about centering a note.

Amp Mech: The goal with this was to test an outtake angle and speed along with a guide (churro) to help make that more consistent. We just repurposed our 2023 cone mechanism for this and we got lucky to get the correct compression.

Shooter: With this shooter mech our main goal was to test motor speeds. This prototype showed us a good estimate of compression and the size of flywheels. We used a combination of 4" compliant and stealth wheels near the sides with around .4” compression on the game piece.

Keep in mind that most of these prototypes weren’t very high effort and we only used parts that we already had lying around (polycarb from previous years). These were mainly made so that many of us can get a feel of how the piece will react with mechanisms and parts. We are currently working on CAD for our primary design (more about that next week).

2 Likes

1/21/24 Electrical Deep Dive

This post focuses on what Slice’s electrical team is doing to prepare for and start the new 2024 Crescendo Season.

A New Look at CAD

The team has had a recent problem with managing wires and components, so we looked into using CAD to fully plan our E-board/E-box without worrying about drilled holes we can’t undo. This has already proven useful seeing as though we’re yet to prototype it, the CAD model seems to be able to work fluently with the mechanisms we have in the CAD. We plan to incorporate wiring into the full CAD of the robot to increase wire management and ensure the safety of all wire chains, connectors, and mechanically moving parts. It’s important for us to do this to make sure that all the mechanisms are clear of wires and connectors, as they could be caught in any and all of those mechanisms.

This is a rough idea of how we’re using CAD to plan our E-board and a prototype for the bellypan.

|268x319.1304771062863

|377.12737127371275x283.79986405551745

Deconstruction

Since our robot was being used for testing a newly implemented Swerve Drive, we were unable to deconstruct it sooner, but over the course of the past few days we have. Each component had to be unwired and then unmounted, but they were only so easy to unwire and unmount because of the planning we did last season to ensure that each component had adequate room for wiring intake and wiring output. These components didn’t take that long to unwire and unmount at a time of about 3.5 hours in one meeting. The next meeting was deconstruction of the E-box itself.

1 Like

Build Weeks 2 and 3 recap:

In the past two weeks, we prototyped concepts we selected during week 1 and chose our final robot concept. The build space team worked with mentors to build our half field, the CAD team began designing the final robot, and the electrical team designed the eboard. During this time, the programming team planned the code structure of the robot and had a code review with our programming mentor. The mechanical team CNCed some wooden test parts to build the drivetrain and built a test shooter, which the programmers will use to simplify testing on the final robot.

Let’s talk about demo day and our 2024 robot design. On Friday of week 2, we demonstrated our prototypes (see recent mechanical deep dive for details) and presented 3 robot concepts. One utilized a shooter that pivoted into the drivetrain for intaking and utilized a crossbar to deflect game pieces into the amp, one utilized a full-width in-the-bumper intake to feed a pivoting shooter that tilts up for the amp, and the last one utilized an over-the-bumper intake with a pivoting shooter with opposite ends for speaker and amp. After some discussion, we voted on the 3 designs, and the second design won, becoming the guide for our final robot design. We have made good progress on our CAD, and intend to make a deep dive into the design once it’s finished later this week.


The demo day robot concepts


Progress on our final CAD

The programming team created a list of subsystems, commands, and buttons we wanted, and then used that to begin the skeleton code for the robot. This will be covered in depth in a programming deep dive later this week.

For our build space, we chose to build the blue side of the field, as that coincided best with the layout of our practice space. We also made adjustments to the team stage to allow for a third leg for realism purposes. We intend to build some sort of structure to protect drivers and programmers from being shot by the robot soon. We also have a removable strut under the center of the stage to prevent sag when we aren’t using it.


Our practice field

The mechanical and electrical teams worked on prototypes during week 2 (more on that in the recent mechanical deep dive), and have since been working on designing and building the drivetrain and eboard using temporary wooden parts that will eventually be replaced by metal. In addition, we made a test shooter that will be mounted on our old drivetrain for programming purposes (the wheels will be replaced with 60A stealth wheels once they ship).


CNCed eboard and drivetrain brackets


Test shooter


Drivetrain with test parts attached

5 Likes

Business Deep Dive Report Sustainability - January 30, 2024

Sustainability:

Sustainability isn’t something that can be calculated or guaranteed. A team can’t guarantee how long they’ll be around for, we can only take steps to stay around for as long as possible. There is no one right way to approach sustainability, but rather an infinite number of ways to achieve and manage it. These are some things that SLICE has found to help.

Training:

No group can exist without experienced and well-rounded members, which makes recruitment and training two of the most important endeavors an FRC team can undertake. The best training a team member can get comes through the experience of the main season, but it’s important to make sure that all rookies have a basic knowledge ahead of the season. In the past, SLICE has had our rookie members completely dismantle and rebuild our previous season’s robot with minimal help from team veterans. While this method was met with some success, we felt we could get a little more out of our off-season. After a bit of thinking, our team was able to come up with a solution we felt confident about.

Shortly after, we began what we called the “Shrethan Showdown”, an off-season challenge designed to make our rookies face the challenges of the FRC regular season in a competitive, low stakes environment. We sorted our rookies into two teams named after our past presidents, Ethan and Shrey. Both teams were then challenged to build a robot that could complete a pre-designated task while following strict criteria. Our veteran members were not allowed to touch either team’s robot or computers, but they could provide guidance as needed. While neither team was able to complete the challenge in the timeframe given, the challenge fulfilled its purpose. Our rookies learned how to CAD, gained experience with the various tools used on a robot, learned basic code, and became familiar with 3D printers. This past season, we streamlined the process even more, taking our challenge from the 2018-2019 FRC season so that students had resources like a game animation available.

These training endeavors have proven extremely valuable to SLICE, as they’ve allowed our members to gain the basic skills necessary for the regular competition season. By working to provide our team members with the best FIRST experience possible, we are able to draw in more attention from the community and thus, we gain new team members and support.

Task Management:

One of the smallest, yet most crucial factors of sustainability is a team’s task management. It can be detrimental to a team if an important task slips through the cracks or is finished too late. That makes it extremely important for teams to have effective methods of organizing necessary tasks for all team members to see. There are lots of places teams can organize their tasks. It could be done on a team calendar, on a weekly to-do list, or on a web program like Trello. Any of those three can be effective, we’ve used all three at one point or another, but some methods work better than others.

Naturally, a calendar is great for organizing things by their due date. It allows all team members to see exactly when every task needs to be done so they can be accomplished in a systematic, timely manner. However, depending on how it’s managed, tasks will not appear more than once on the calendar.

A weekly to-do list highlights the tasks that need to be made a priority. It gives team members a clear direction and goal for the week, so everyone knows exactly what needs to be done. The problem is that it requires some larger tasks to be broken down into smaller parts, and not every task can be easily broken down. It also allows more room for human error, as the list has to be made fresh every week. That format increases the risk of forgetting tasks unless a general list is created for (or by) the person responsible for the weekly lists.

Recently, our team has begun the transition to the method we’ve found the most effective so far; a web program. In specific, Trello. Trello allows for teams to create several boards for different aspects or subteams of their team. From there, each board can be organized and designed as the team sees fit. Lists can be created for different objectives, timelines, or even task status. Task cards can be created with a task name, description, due date, and tags. The tags are people linked specifically to each task. This helps create direction amongst team members and ensures that they know exactly what to work on and when it needs to be done. Of course, no system is perfect, and organizational web programs are no exception. The Trello system requires team members to check the board, and leadership to keep up with their board. However, of all the methods we’ve tried on SLICE, this is the one we’ve found the most effective.

Evolution of Budgeting:

Budgeting is a key to success in every business, even if it is just for a high school robotics team. The problem with building a good base to budgeting is figuring out what method you want to use. In previous years we used the “online (digital) envelope” method of budgeting, which is a flexible spending budget. In the previous year we had a specific total assigned to each particular section of the mechanical subteam or business subteam. This is a highly ineffective method for an entire business considering it was hard to keep track of certain orders on certain subteams. One of the methods we started to adapt into the team is a modified version of the percentage budget. This method allows you to allocate the percentage to each subteam out of the total number of income we have. We use this method to gain an understanding of who needs more money or who needs their amount shrunk. Every order we make has to have a label of the subteam that submitted it or needs it. That way we can properly allocate the percentage needed and show the leftover money in each subteam. For instance, in our budgeting sheet we have a fund allocation sheet. That explains the percentage each subteam has. For example, we have our mechanical subteam that makes up 55% of our budget.

2 Likes