FRC 2059 The Hitchhikers 2024 Build Thread

Placeholder

8 Likes

It’s cool that you guys are starting an open alliance thread! Excited to see what you guys will do this year

1 Like

2024 Open Alliance Build Thread

Welcome to FRC Team 2059, The Hitchhiker’s 2024 Season Build Thread! We are going into our team’s 14th season and we are excited to use this build thread to share our team’s progress.

About Our Team

The Hitchhikers are a veteran team based in Apex, North Carolina. We meet at Optimist Farm in a building that our long-time partners, the Optimist Club Of Raleigh, have provided for us to use. Our team is made up of 33 members representing 11 different schools from all over Wake and Johnston County. Our team was formed in 2010 with a group of 5 students. We themed our team based on the book series The Hitchhiker’s Guide to The Galaxy written by Douglass Adams. You can find references to the book everywhere in our team, from our robot’s names to the design of our t-shirts. Our team prides itself on our achievements such as the imagery and gracious professionalism awards, and our many banners. This past season we were fortunate enough to have placed 10th overall in the North Carolina District and were picked as a wild card to advance to and compete at the World Championship in Houston. We hope you can get to know our team through this build thread and see all of the amazing things we do.

Team Links

GitHub
The Blue Alliance
Website
Instagram
Facebook
Youtube

5 Likes

Looking forward to this one.

2023 Off-Season In Review

We have had a very productive off-season this year. In this post, we would love to share what we did and how we plan on moving forward. I know this is a bit late with the new season starting, but I hope you can enjoy it nonetheless.

Our Goals

Immediately after the end of our last competition, we began planning what we would do during the off-season. We created a large document with many different goals that we had. Once we had created many goals, we worked together and chose goals that were achievable for the off-season. The goals that we chose to follow up could be categorized into the following groups:

  • New Member Recruitment and Training
  • Fundraising
  • Outreach

To keep this post organized, we will go section by section and explain our goals and how we completed them.

New Member Recruitment and Training

Recruitment:

At the end of the 2022 season, due to many of our members graduating, we were left with only 4 members. After heavy recruitment, we were able to bring our members up to about 25 members. Due to members graduating and a few losing interest in the program, our numbers were brought to about 20 members at the beginning of the off-season. Our goal for the start of the season was to have around 30 members, but no more than 35 as we believed the team would be a bit overcrowded and difficult to manage.

Having just competed at the World Championships, we had built a reputation for people in our community. This reputation compelled many people to apply for the team. Our members also invited friends and classmates to join the team. Through both of these methods, we amassed 20 applicants and we accepted 18 of them. As of right now, we work on a first come first serve basis (due to our previous necessity of members) though we hope to implement more merit-based acceptance criteria.

Safety Training:

As per every year, with an influx of new members, we needed to do training to show the new members the ropes and to give the returning members a refresher. The first training event that we did was our safety and tools training meeting. We hold this training annually as we know that safety is of the utmost importance. In this training, we had a basic safety presentation, which was followed by a quiz on the content to make sure that everyone was retaining the information. Then we split into groups and each member was able to get hands-on experience with each of the power tools.

Swerve Drive Training:

The second training meeting that we had was more focused. We decided to do a swerve drive-specific meeting, where we built our new swerve modules to give members the experience of how the modules are put together and how they work (we plan to disassemble and reassemble the modules once the season begins to follow the rules). This meeting was very informational for the new members as they got to gain experience in building something hands-on before the season and were able to practice using the different tools in a practical sense.

CAD Training:

We have also begun our initial CAD training. We helped everyone download the SolidWorks software and begin an online course that SolidWorks provided. We plan to continue the CAD training into the season.

Other Trainings:

We have also been able to sneak in training in some of our meetings. We had multiple problems with the previous robots (our demo robots) such as broken chains and small design flaws. We were able to train our members on troubleshooting and finding the source of a problem.

Thundering Herd Of Robots (THOR):

We participated in the THOR off-season competition this year. We took this opportunity to allow the new members to experience competition and how it feels to be on pit crew and drive team. We rotated our driver, operator, technician, and human player while leaving a previous member of drive team as drive coach so they could coach the new drivers through the process. This was very effective and everyone was given a chance to be on drive team. After alliance selection, we allowed our most experienced drivers to drive the robot for playoffs. Thanks to all of the hard work of our drivers and our alliance members (Alliance Captin: 4828 - Roboeagles & 2nd Pick: 6512 - Coastal Catastrophe), we were able to win the competition. Overall it was a great learning experience for all members and we had loads of fun!

Fundraising

Our fundraising efforts during our last off-season weren’t very strong. Thankfully we were able to use previous funds during the 2023 build season. This year, if we were to qualify for the World Championship we would not have enough money from just student dues and mentor volunteer grants. We decided to make a tough call and increase the student dues for this year, so we had more money to work with. We also encouraged our business team to apply for grants and sponsorships.

REV Robotics Sponsorship

A big sponsorship that we were given this year was REV Robotics sponsorship. This sponsorship was one of the motivating reasons for our team to apply for an open alliance as we were encouraged by REV to apply. We are working to create a group of members who will follow up on the different activities for the REV Robotics sponsorships.

Local Business Sponsors

A new approach for this year was to reach out to local businesses, that members had connections, and ask for them to sponsor us. This approach was very successful as we were able to acquire four sponsorships and have one currently pending. We were also able to use connections with employees to apply for grants such as Red Hat.

Chipotle Fundraiser

Along with trying this new approach we also decided to partner with Chipotle for a fundraiser. Chipotle designated four hours for us to get a portion of the profit from the people who attended our fundraiser. We advertised this on our socials and had members of our team invite friends and family. After it all, we got 33% of the profit which amounted to about $100, which isn’t an enormous amount though anything helps.

In all our efforts in fundraising have been great, though we hope to establish our business team more and have a member (who isn’t a co-captain) take charge. In the future, we hope to have more regular business meetings and define more responsibility for each member of the subteam.

Outreach

This off-season, we made it one of our top priorities to host more outreach events. In the previous off-season, we didn’t dedicate much time to planning many different events as we didn’t have many experienced members to guide the planning process. We emphasized the importance of hosting outreach events and started planning them anytime we could.

Outreach Subteam

Previously, the burden of planning these outreach events would fall on the captains, so we wanted to divide the work up more evenly. This year with more than 20 experienced members, we were able to form an outreach subteam. This was a great accomplishment as we had bi-weekly meetings to plan the different outreach events. Also in dividing up the workload, we were able to allow for more creativity and unique ideas from everyone. Some examples of outreach events we did are multiple showcases of our robots at the NC State Engineering Summer Camp and a team volunteering at an FLL Challenge Competition.

Demos:

We hosted multiple demos through the off-season. At a few of our demos, we had problems with our demo robots. This was a big challenge as they would interfere with the demos that we were having. These problems taught our team to think quickly and come up with a solution, whether that was a temporary fix or running the robot’s other subsystems. They also acted as a reminder of the importance of testing the robot before we use it. These lessons and skills that we learned can be taken into the season to help improve our team.

Optimist Club Events

We also worked closely with The Optimist Club of Raleigh (our partners who provide our build space). We participated in many of their events. We attended their roadside cleanup, where we picked up trash from the side of the road along a 2-mile stretch of road. They also annually host a Christmas tree sale, where many of our members work multiple shifts to help sell the Christmas trees.

FLL Team Mentoring:

A few of our members have also worked to help start and mentor an FLL Challenge team. We hosted a small demo with our robots to gain interest in the community to join the FLL Challenge team. This was a mutually beneficial relationship as our members learned a lot about working with kids.

Our outreach endeavors have been very successful. We hope to continue this success by planning even more outreach events where we can inspire more people to learn more about STEM.

Conclusion

This off-season was a great one for us and we are proud of all of the amazing things we were able to do. We look forward to this coming season and to continuing the momentum that the off-season generated into the season. We are so excited to see all of the amazing robots that everyone builds for Crescendo!

1 Like

(A Very Late) Build Season Week 1 Update

A summary of what we’ve been doing for the past week.

Kickoff
We hosted our own kickoff at one of our team members’ houses. After the game was released, we split up into groups and immediately started analyzing the game and potential strategies. We’ll discuss more about the strategies that we’ve come up with later. This year we decided to dedicate our kickoff to strategy planning because we have historically lacked in strategy planning and we didn’t properly discuss it. We reconvened after breaking down the game and the rules and talked about specific things that we each noticed.

Strategies/Ideas:

Robot Starting Height <27”

This would give us the advantage of being able to drive under the stage and essentially make our team indefensible as we don’t have to drive through the “choke points”. The only drawback of doing this is that the robot will have to be a lot more compact and have to put more functions into a smaller robot. We expect many teams to design their robot so that it can drive under the stage, so even if we don’t end up designing our robot to be under 27”, we will still be able to foresee other teams’ plans.

Amp Scoring vs. Speaker Scoring

We realized that to make scoring in the amp worth it, we will need to cycle twice in the amp, use the amplification, and then cycle once in the speaker. This amp cycling would give us 7 points. While if we cycled thrice in the speaker we would only receive 6 points. While the difference is only 1 point, if we take the fact we have other members on the team who can score into an amplified speaker into account, we believe that cycling amp is very beneficial. We also believe since the kitbot has a shooter that almost all teams will have at least the ability to score into the speaker.

Trap Scoring / Ensemble Ranking Point

In our opinion, trap scoring will be the most difficult because you have to both climb and score into the trap. We think that the trap is also very important for the ranking point, though we don’t foresee this ranking point being scored very often during the first few district qualifiers as it requires at least 2 onstage robots and one trap or another onstage robot with a harmony bonus or the high note scored.

Choke Points

We found that there are 2 major choke points for both teams, which are at the edge of each wing in between the human player-side wall and the stage. (Image below) These choke points are why we believe in having a robot that can go under the stage, as they can completely avoid the choke points and have a more open field.

Source Visibility

We have realized that since the source is on the other side of the field and the stage blocking the visibility of the drivers, the source may be difficult to see. To combat this issue, we plan to add driver vision and build an intake that can easily and quickly pick up the notes without the need to be precise.

Source Human Player

Human players at the source must be careful dropping the pieces down on the floor before a robot reaches the source as opponents can grab pieces from the opponents’ source without receiving a penalty if they aren’t in contact with the opponent who is in the source zone.

Amp Human Player

Needs to be in constant communication with the drive coach on when to press buttons. We are thinking that the team that has their human player on the amp will be on the amp side driver station so there is clear visibility between the two of them.

Amp Side Driver’s Station

The amp side driver’s station will be secluded from the other drivers due to the speaker. Along with that, the speaker’s automatic counter will also create noise which could make it difficult for a team to communicate with the amp side drivers. We have to make sure that the drivers are constantly communicating and working together as this game is very teamwork dependent.

Auto Paths:
After kickoff, we also decided how we wanted to approach auto. One thing we noticed off the bat was that controlling the 5 notes in the center of the field would be important. Picking a note from the centerline would essentially cut the cycle time in half, which means that whichever team gets control of those center notes will be able to score much faster. With this, we realized that in our auto we want to grab or at least be set up to grab one of these center notes.

We guessed that in our auto we will be able to score at least 2 notes and have possession of a 3rd. So this gave us 3 options: 2 speaker (2S), 1 speaker 1 amp (1A 1S), or 2 amp (2A). We broke down the points for all of the different possible autos. We also decided to look 1 cycle (including our alliance members shooting into the speaker) ahead into tele-op to account for the amplified speaker being used during tele-op.

We think that having an amplification ready to go early on would be advantageous as our teammates and us will be able to take advantage of the centerline notes to cut our cycle time in half and score in an amplified speaker early on. These findings on the table were just very surface level and a quick calculation, though we want to later look more deeply into this and see which auto will be best.

Build Design & Prototyping:
After analyzing the game we were able to define how and what we wanted to score. We decided quite early on that we wanted to be able to score in the speaker, amp, and trap. As mentioned earlier, we also plan to have our robot starting height under 27” so that it can go under the stage.

Intake:
Immediately, we decided that to be a competitive team we would need a ground intake (especially for auto as you need ground intake to score more than one game piece during auto). We came up with two general options for a ground intake, over the bumper or under the bumper. Due to the bumpers needing to essentially cover the entire perimeter of the robot (< ½ gap), we ruled out any possible intakes that would use a gap in the bumper. We made a short list of the pros and cons of both types of intakes to see which one would be most optimal.

After a long discussion and attempted prototypes, we decided that an over-the-bumper intake would allow for a quick intake of a game piece. We were also interested in using an over-the-bumper intake to score in the amp. We had seen multiple videos that proved that if you could get at least a 45-degree angle you could shoot the note down into the amp.

Prototype #1:

This was a very crude “prototype”, this was mainly used to test optimal wheel types for intake.

Prototype #2:

Our first prototype of the intake we were able to test the concept of the rollers and worked on the spacing of the wheel.

Prototype #3: (Latest Prototype)

The intake had the proper distance between roller bars and we have been able to use it to test out the angle between the roller bars. We have also used our make-shift amp to test the concept of shooting down into the amp.

Shooter:

The shooter is in concept very simple. We had a few things that we wanted to test out though such as using two wheels on one side, using one wheel on each side, and the wheel radius. We found that using a wheel with a larger radius would shoot the note farther, though we wanted to attempt to see whether it was worth using one large wheel or two smaller wheels. In the end, we concluded that two 1.5-inch radius wheels on the same side would allow us to shoot the note farthest while minimizing the size of the wheels and therefore the design.

Prototype #1:

Our initial prototype of the shooter had one wheel that was used to shoot the note out. We swapped out different types of wheels to test which one shot the wheel best. We found that while some wheels shot the note better, they also damaged the note.

Prototype #2:

A second shooter variation where we tested using two wheels on one side. We compared this to our first prototype of the shooter to see whether we would get more power with a larger radius wheel or two smaller radius wheels on the same side. We found that the two smaller radius wheels worked better and took less space on the robot.

(Lost to time) (This prototype was disassembled before benign documented)

We have also been toying with the idea of somehow using the shooter to score in the amp, though we are waiting on our next prototype to see how that plays out.

2 Likes

Week 2 Update

This week we have mainly been working on developing the design of our robot.

Intake

Progress on the intake has been stagnant as we reason through different designs. One key advancement we have made is the decision to have a subsystem that moves the note from the intake to the shooter without a handoff system. We drew inspiration from viewing videos like Citrus Circuits’ 5-piece auto, where even though their robot was covered up we realized that the speed at which their robot was able to do things, they most likely did not have a hand-off system, rather a continuous line that feeds into their shooter.

Another thing that we have been doing is rather than creating a prototype immediately, we have been CADing the intake and planning it out before we begin fabrication of the prototype.

“Failed” Intake Prototype

For our next prototype of the intake, we wanted to test driving both roller bars with one motor using belts to transfer rotation and gears to invert rotation. After creating a viable design in CAD, we planned to physically build the prototype. One problem with creating this prototype was to make sure that the gears meshed and the belts were properly tensioned the cuts would have to be very precise. This wouldn’t be a problem if we were able to use our CNC machine though due to a few problems, the CNC machine is out of order. We attempted to be as precise as possible but in the end, the holes were just a bit off. This attempt gave us first-hand experience with the saying "It works in CAD ". We were also able to learn that if we want to use gears to invert the rotation, we will most likely need to machine the part.


CAD of Failed Intake

Shooter

We began to work on a more finalized design for our shooter. We spent a lot of the week working on this prototype, it consists of two 2" radius wheels on one side. After testing the prototype it ended up working very well.

Shooter Prototype Test

We have also been working on an idea to allow the shooter to also score amp. We came up with the idea that the shooter would be able to rotate 360°.

Then while angling the shooter backwards, we can slowly spit the note out by running the shooter wheels backwards. We plan to pair the shooter with an elevator that would allow us to elevate to the amp’s height and climb.

Moving forward we plan on working on figuring out the delivery system that will take the note from the intake to the shooter and what will actuate the shooter (push the nose into the wheels to shoot it).

Climber/Elevator

For our robot to be under 27" in starting configuration and score in the amp, we realized that we would need an elevator that raises our amp scoring subsystem. After thinking about packaging we realized that we could use this elevator to climb as well.

When thinking about elevator designs, we looked back at our old robot designs. Specifically, our 2018 and 2022 robots, had great elevators. 2018 we had a 3-stage elevator that could extend 10’ up, while in 2022 we had a compact elevator design that was able to lift the robot. So far we have taken our 2022 elevator design and made some adjustments to fit this year’s robot design.


Anubhav holding the elevator

Programming:

Our programming subteam has been working on two things mainly: new member training and Limelight 3 Setup.

Since a majority of our programming subteam are seniors and the rest are new members, it is key that our experienced members train our new members on how to program and troubleshoot the robot.

While our new members are learning programming, some of our experienced programmers have been working on getting the new limelight set up and ready to use. Previously we used the Limelight 2+ and during the off-season, we thought it would be a great time to upgrade to the Limelight 3.

2024 Robot Name

After a long consultation of our team’s book of lore, The Hitchhiker’s Guide to the Galaxy, and a team vote, we decided that this year’s robot name will be Max Quordlepleen or Max Q. for short. Max Q is a musician and entertainer at Milliways, The Restaurant at the End of the Universe, and The Big Bang Burger Bar.

image
An image of Max Quordlepleen is represented above

Robot Disassembling

After procrastinating for as long as possible, we finally completely took apart our 2023 robot (Lunkwill) and parts of our 2022 robot (Baube). We stripped Lunkwill of all of its parts, keeping some for later inspiration and reusing otters for this year’s robots. Lunkwill is now our test bot for our prototypes and is a flat, swerve bot. Baube had many useful parts such as wheels and hex shafts that we scrapped for this year’s robot. We are very sad to have to take apart these robots though we know that their parts will be used to create many more great robots.


Lunkwill being deconstructed


Test Bot Lunkwill

Field Element Setup

We finally finished the creation of our field elements to test our prototypes and eventually this year’s robot. We opted to combine the amp and the speaker to save space.


Installation of the new field elements

Build Space Upgrades and Rearrangement

To install our new field elements, we had to make some space so that it would fit and have space to be used. To do this we had to clean up (declutter) and move a few of our tables. This inspired us to clean up some other areas in our build space to make room for vital things. With this newfound space, we were able to install 2 computers, one for our programmers and one for CAD and other general uses. This has greatly increased our productivity and we are excited to utilize these new work spaces.


New build space computer set up

1 Like

Week 3 & 4 Update

We have been working hard during these past two weeks to get our design finalized, finish prototypes, and create finalized parts. I was planning on uploading a separate week 3 post, I was feeling a bit lazy last week so here is a combined week 3 and 4 summary.

CAD:

A sneak peek at our current CAD for Max Q.

Mechanical:

Intake:

In our previous “failed” prototype, we decided that we could not use a single motor to drive the intake without getting the piece machined. For reasons discussed later, our CNC machine was unavailable, which left us in an awkward position on how to proceed. We decided to make our next prototype using two motors spinning in opposite directions that would be driven by belts and mounted closer to the pivot point of the intake. This would decrease the amount of weight that would have to be pivoted. We proceeded and created a crude, but effective prototype.

A video of our double motor-driven prototype

While using these belts was effective, we found the two motors that needed to be mounted on the intake weighed a lot and weren’t worth the extra weight. Also having to use two extra belts increased the points of failure. While creating the double motor, belt-driven intake, we found an old piece that we had machined for the exact gears we wanted to use. This was amazing as we could transfer over the holes from the old piece and make our intake driven by a single motor. We modified our previous, primarily belt-driven, intake to use gears instead.

We also wanted to make a stop/funnel so the note would be positioned in the correct place for the hand-off system. Our solution was to take a piece of plastic that we had lying in our build space and duct tape it onto our intake as an arc to capture the note, push it to the center, and stop it from flying into the robot. This worked surprisingly well, but since this plastic is so flexible we foresee that it may be damaged in competition. We are opting for a bent piece of Lexan shaped in an arc similar to the plastic for our final product.

A video of the plastic stop in action

With this, our intake worked perfectly and we had a good vision of how we wanted to design our final intake. We designed the intake in CAD and sent the side panels off to be CNC’d (which our CNC machine had finally been fixed). After a quick 30-minute cut, we got our cut Lexan panels. We took apart our old prototype and using many of the same parts we assembled a mostly final intake. We still need to create the Lexan stop and mount it to the robot.

Below are some other things that we decided to change relating to our intake:

Hand-off System Vs. Separate Note Delivery System:

We have been grappling with whether or not we wanted to create an entirely different system to deliver the not from the intake to the shooter or have a simple hand-off system. In a previous build thread post, I mentioned that we had decided on using a note delivery system, but this was premature as we hadn’t quite fully weighed the pros. and cons of each idea.

Motor Type and Motor Placement for Intake:

Our team primarily uses Neos as our motor of choice. Discluding the Neo Vortex (as we haven’t ordered enough to use it on our intake), We had 2 options for our intake motor, the Neo V1.1 and the Neo 550. The Neo V1.1, while larger and heavier, is much more powerful and has more torque. The Neo 550 is smaller and faster, though has less torque. We decided on using the Neo 550 because for the intake we didn’t need to have a lot of torque to just pick up a note. This Neo 550 also allows us to mount the motor farther out by the wheels, which refuses the amount of belts we need to use.

Outtake (Shooter + Amp + Trap Scorer):

Our shooter has seen some massive progress in the past two weeks. After finishing our first shooter prototype and mounting it onto our test robot, we continued to iterate on the design making it more refined. We also added the ability to tilt the shooter and adjust the angle. While this was all amazing, we had noticed some lackluster performance of our shooter. The note just wasn’t able to shoot from the distance that we wanted it to. After looking at the design of the horizontal wheel, we realized that the note wouldn’t reform immediately and was slipping on the shooter wheels and not shooting as far.

We rethought our design taking inspiration from different ideas online. We saw that many people were using two sets of vertical wheels to launch the note. The vertical wheel seemed much more effective than the horizontal wheel because the note wouldn’t slip as much as it reforms almost instantly in the new direction it was being compressed. We modified our previous shooter design to use vertical wheels and after testing it once, we knew that this was much more effective than our original design.

Stepping away from our shooter, for the sake of packaging we thought that it would be important that we combined either our shooter or intake with the amp/trap scorer. After long conversations regarding which one it should be packaged with, we decided on the shooter. As described in week 2’s post, the shooter would rotate so the shooter wheels would be facing the floor, then the roller bar that actuates our shooter would run in reverse and place the note into the amp. A similar idea for the trap placement except for the shooter being on an elevator so it can extend to the height of the trap from the chain. Since this and the shooter are so closely linked, we have to finish our shooter design and mount it with tilt controls before we can work on the amp placer.

Shooter Elevator:

The shooter elevator design has been completely finalized. However, we are still making prototypes for the shooter elevator. Our main reasoning behind this is to gain practice before making our final parts. These past two weeks we have been working on finishing and duplicating our prototype. With both of them done we mounted them onto our test robot to test the elevators. This worked perfectly, so we are getting ready to make our final shooter elevator by gathering all of the parts. We are also looking into getting a few of our parts for the shooter elevator machined to lessen human error and create a more reliable elevator.

A video of the shooter elevator prototypes in action

Climber:

We plan on having a separate elevator for a climber. We decided to separate our shooter elevator from our climber because to score the trap we must raise our shooter while we are on the chain. As far as prototypes for our climber, we haven’t done much except create the hooks for the climber. You can see our plan for the climber on our CAD.


Our hook prototypes

Final Robot Chassis:

We have finalized our chassis dimensions to be 28’’ x 30’’. With these dimensions, we have cut the frame rail and a belly pan for the chassis and assembled them with our new set of swerve drive. We also have three pieces of frame rail that will be running inside the robot to support the different parts that we will attach to the robot. After cutting the three pieces, we attached two of them and are waiting to attach the final one until we have the final parts for the robot. We have also begun working on attaching our mostly final intake onto the chassis.

Programming

Our programming team has been working on three main things:

  • Orange Pi Camera and April Tag Detection System
  • New member training
  • Swerve Drive Drift Debugging

Camera & April Tag System:

This is what our programming team lead, MJ, had to say about the vision system.

Last year, we were using a Limelight 2+ for most of our vision processing. The goal was to remove as much load from the human driver as possible by simply pressing a button and going to score field elements using AprilTags. Unfortunately, due to significant latency and lag with the Limelight, our results were often inaccurate, and we wasted a lot of time having to stop to read the tag. In a best-case scenario, we would get 10-15 FPS with very low resolution (480p) and 100ms of latency. Here’s what we were doing last year:

Path Planning in a Target-Centered Reference Frame (as described on PhotonVision’s website):

  • Step 1: Assume your robot needs to be at a fixed Pose2D relative to the target.
  • Step 2: When triggered, read the most recent vision measurement - this is your actual pose. Generate a trajectory to the goal position.
  • Step 3: Execute the trajectory.

Last year (and even now), there was no publicly available implementation for this, so I decided to spend my winter break creating my implementation. The basic idea is that if you set your robot’s starting position to the origin (0,0), and you read the AprilTag’s 3D pose, you can generate 2 interior waypoints and get your robot to follow a path to the tag. In practice, however, we quickly found that our Limelight was too slow in processing images on the move, which meant that we had to stay still to get a clear and accurate reading of the AprilTag before generating a path to it. The getPoseAmbiguity() method would constantly return values that were above 0.5, generating inaccurate images (you want values less than 0.2). We ended up dropping vision in competitions and relied fully on human control.

This year, we decided to switch our vision system. We are using a separate coprocessor, the Orange Pi 5. We are also using a global shutter camera that has a ~95-degree FOV. The total cost of this setup was roughly $200 from Amazon, compared to the $400 for a Limelight from last year.

Performance-wise, the results speak for themselves. We can do AprilTag detection in 720p with roughly 10ms of latency and 120 FPS, for half the cost. This allows us to do two things:

  1. On-the-fly trajectory generation: We can path plan in a target-centered reference frame while the driver is translating and rotating the robot on the field, without having to stop. The low latency helps, but the main feature of our new setup that allows this is the fact that we are using a global shutter camera, which reduces motion blur, ensuring accurate readings, which has been confirmed via the getPoseAmbiguity() method. Currently, we can get accurate distance and angle readings from around 132 inches, or 3.3 meters.
  2. But the biggest improvement has come in the code. I decided to switch the Holonomic controller we are using in the GoToTag command from the native WPILib implementation from the SwerveControllerCommand to the new implementation in PathPlannerLib. Using PathPlannerLib has another big advantage over last year. In my original implementation last year, I was using the standard generateTrajectory method in WPILib. This would work fine for generating trajectories when the yawAngle to the tag was +/- 10 degrees from 180 (straight on), but with skewed angles, more aggressive splines were needed in the trajectory to account for rotation error. This was a red herring for about a year, and I spent countless months trying to figure out a better solution. Today, I finally stumbled upon the solution: Bézier curves. A Bézier curve needs to take 4 points of type Pose2d: in our case, the starting position, 2 interior waypoints between the robot and the AprilTag, and the AprilTag’s position (the end). Using the FollowPathHolonomic method, which is part of PathplannerLib, I was able to create an object of type PathPlannerPath, which takes in a list of bezierPoints in the form of a list of Translation2d objects. To create a bezier path, the bezierFromPoses (part of PathPlannerLib) method is used, which takes in 4 Pose2d objects. I also upped the max acceleration and velocity in the path constraints, and the result is not only a more accurate path to the tag but also one that is much faster.

MJ eloquently describes and demonstrating how the April Tag detection system works

New Member Training:

Our new programming members have been putting their programming skills to the test by programming our 2022 robot, Baube. After swiftly creating a working tele-op that allowed for the robot to be driven remotely, they began work on an auto. They are currently working on getting an auto working for Baube.

Our programming team attempting an autonomous to drive Baube in a straight line

Swerve Drive Drift Debugging:

While our programmers were working on the April Tag system, they found that there is a slight drift during tele-op; it appears that there is a discrepancy in the commanded and actual motor controller outputs. MJ has been compiling the information and his findings in another Chief Delphi post. If you think you might have any ideas or are simply interested in learning more, please read the Chief Delphi post.

Miscellaneous

CNC Machine

Moving into the new season, we realized that our CNC machine was having problems. After looking closer into it more closely, we realized that there was an algae bloom that had grown in the CNC coolant system. Our solution was to take apart the CNC end mill and, using an air compressor, we blew all foreign objects from the end mill. Also when taking the end mill apart, we found that the o-rings were damaged, so we bought the new o-rings and replaced the damaged ones. We have also observed that there may potentially be a slight drift in the z-axis, though we are working on diagnosing the problem. The CNC is working well enough for us to cut the pieces that we need.

We have also been working with other teams in Wake County who don’t have access to their own CNC mills. If your team would be interested in having us CNC a part for you, you can email us at [email protected], and we will try to help you as best as we can.

2 Likes