Portfolio Think Award - wccarobotics/ftc-decode GitHub Wiki
This judged award is given to the team that best reflects the journey the team took as they experienced their season. The content within the PORTFOLIO is the key reference for JUDGES to help identify the most deserving team. The team could share or provide additional detailed information that is helpful for the JUDGES.
The portfolio MUST include engineering content with at least one of:
- Evidence of use of the engineering process
- Lessons learned and implemented related to robot design
- Trade-off analysis / cost-benefit analysis
- Mathematical analysis used to make design decisions
Encouraged:
- How team learns from mentors / development plan for learning new skills
- How team recruited new people into FIRST
- how the team identified goals and tracked progress towards their goals throughout the season.
- Portfolio organized clearly and intuitively
We are a first-year team and as such we didn't know what we were doing. Some of our team members were on the FLL team Marcus Bartholomew the Third Junior, so we named our team Marcus Bartholomew the Third Senior. Because we are a first-year team our first robot was a GoBilda starter bot.
We built the starter bot and began making improvements. One of the first things we noticed is that we could only shoot from right next to the goal which is not good. If you can only shoot from one spot you are very vulnerable to defense. To be able to shoot from further away we added a "flap" to the robot's shooter. The flap was a piece of flat plastic connected to a servo and increased the range in which we could shoot from by adjusting the angle of the shot.
We wanted our robot to be easier to drive and score with accurately. Also, from where the drivers stand it's difficult to judge the angle to the goal. One of the best ways to do this is to aim automatically. When the robot aims itself, we help remove driver error from the equation. To do this we added the Gobilda Pinpoint Odometry computer which tracks the robot's position using the data from two unpowered Gobilda 4 bar odometry pods. We also started working on having the robot automatically angle the flap and flywheel speed, but we stopped when we began building a new robot.
Another problem was that no matter where we put our power switch, artifacts could hit the power switch and turn the robot off. To solve this, we covered our power switch with a short U channel.
The starter bot was a great help in getting us experience with building a robot and beginning to understand what we wanted to do, However it had some limitations that we didn't like.
- It didn't have an intake
- It had a tank drive and not a mechanum drive
Because of this we decided to build the Gobilda Robot in 3 Days, or RI3D.

The Robot in 3 Days is what our current robot is based on. We wanted a few things from our next robot
- Intake so that we could have faster cycle times
- Mechanum Drive for maneuverability
- Far and Near Shooting so it's hard to play defense on us
- Be an existing design because we're a new team and don't have experience to do our own thing.
We decided that the RI3D met these conditions well and would be good for us. Based on the CAD model we built the RI3D. It was NOT build in three days for us.
The GoBilda RI3D features a dual flywheel setup with a diverter to chose which launcher the balls go to. This was designed so that it could do the pattern well. To intake three balls we have to intake one and then switch the diverter. We think that the diverter was not beneficial to us but overall, we believe the RI3D is perfect for us this year.
When we finished, we noticed a few issues with the design.
- We had built a few things wrong and needed to fix them
- Sometimes artifacts ended up in a position where the feeders couldn't get them
- Sometimes the diverter got stuck
To fix both the wobbly intake and Diverter getting stuck we added supports to the intake structure and plates to stop the diverter.
Another improvement was that we added a few guides so that the feeder could always reach the balls.
We then began thinking of other improvements we could make. One of the first things we did was taking the odometry from the starter bot and putting it in the RI3D and adding autoaim.
We wanted a few things
- More automation in the code
- Automatically switching diverter
- Automatically turning intake on and off
- Automatically parking
- AN AUTO
- remembering where we are after the auto
- color/distance sensors so we know where the balls are and what they are
- Generally improve accuracy
- Lights on the back of the Robot so the driver could know where the artifacts are and how many we have
We also wanted PedroPathing to make our auto programming easier. PedroPathing is a robot control library that uses PID controllers to drive the robot better and allow you to drive to a specific point on the mat which makes autos a lot easier. We installed PedroPathing and began tuning the robot, we had a few issues understanding how tuning worked but we researched it and figured it out.
We planned on going to a scrimmage on March 1st so we had a deadline to get as many improvements done as possible.
One of the first things we did was use the color/ distance sensors to automatically switch the diverter. Besides Auto Aim this is the most impactful automation for the drivers.
We also began working on an auto program. We used a command system to program our autos as this makes it easier and quicker to make changes. We only have a single auto program, but we have it so that you can select different versions like a near or far in the init_loop().
While we are based in Florida, we wanted to have practice in actual matches. Our driver and our coach went to the North Carolina scrimmage. The scrimmage was great for us! Our driver go a ton of experience and we were able to know what we had to do to improve our robot. During the scrimmage we ended up in second during the Qualification matches. Team 26520, the NC Avengers chose us for the playoffs and we won!
We learned some things from the scrimmage
- Our flywheels need to be off at the end of the match
- our intake needed to be sturdier, during the scrimmage the gears powering the intake disconnected multiple times.
- our intake was on too much. We took in to many artifacts and we got fouls for carrying more than three artifacts and sometimes shooting outside the launch zone.
- we should know when to stop feeders based on distance sensors
- we should have a single button to shoot all as we had to press a bunch of buttons to shoot three balls
- we should have a button to auto park the robot as parking is hard
- we should add a far auto because many times our alliance partners couldn't do their auto because of ours.
- Odometry is very susceptible to small angle changes in starting position. During the first Playoff our auto aim was completely off because of this and we did not score much.
- We rebuilt the intake frame to have it be sturdier by making the frame taller and adding a cross beam and we added Loctite to the gear screws. This helped the intake be more stable and not fall apart. The crossbeam is also perfect for the googly eyes which are extremely important!
- To solve the flywheels being on and the intake being on we added some logic to our code to turn them off when not needed.
- We made it so that when the color sensors detected that a ball left then the feeders would stop. When we tell the robot to shoot it will shoot.
- We added some logic to the code so that when Y is pressed all balls are launched.
- We learned that automation in teleop is important
- We learned that critical screws should be locktited.
- Odometry is great, but it is susceptible to small changes in starting position.
- The diverter is not the greatest as it increases our cycle times because we have to wait for it to flip when intaking and shooting.
- If we had a whole season to redo, we would likely choose a different robot design the RI3D was great for our first year but has some limitations like the diverter.
To track goals, we had checkboxes on our engineering log. We also used GitHub issues a little.
- For information on how we develop skills see the Connect Award
- For more detail on robot systems see the Control Award
- For how we recruit people into FIRST look at look at Reach Award
Would be good to add mathematical analysis:
- Shot accuracy (Standard Deviation)
- Expected value of trying for pattern in Auto