FRC 9312 NERD Spark - 2023 Build Thread

We’re not an official card carrying member of the open alliance yet but I thought we would share some of what we have.

A quick introduction, NERD Spark is a community based team started by INNOVATE Albion,

(Introducing INNOVATE Albion).

We pull from the Albion, MI community but also from a Canton, MI which is where I live and where my FTC team, The N.E.R.D.bots ( are based. We run as a single team with mentors and students on both sides, dividing up both the programming and design work fairly evenly. Albion focuses on Drive Train and Manufacturing, Canton focuses on tooling. Both sides have their set of programmers. Albion, with close access to the field, will do all the auton tuning and Canton will develop all the base level code.

We program in both LabVIEW and JAVA. We find that LabVIEW helps us with tuning with it’s better debugging interface while JAVA seems to be more universally supported.

We CAD in Solidworks.

Albion CAD team has been hard at work finalizing the chassis. This is our MK4i chassis. We attempted to make the sizing completely reconfigurable but SW wasn’t behaving so we didn’t completely get there. Chassis size is 30"x24". Everything is machined on our 4’x4’ shopSabre using Aluminum 6061-T6 for the flat pieces and 5052-H32 for the formed pieces. We have a sponsor form those pieces on their brake press.

As you can see it is an undersided design. All electronics are mounted and accessed from the bottom. The battery is also bottom mounted. We developed a quick change battery design that slides in and locks down. Still in testing so we’re not quite sure if this will work. The undersided design choice was driven by the need for both sides to work somewhat independently. Not having to worry about electronics on the top side allows the Canton Design team more flexibility.

Duck to the Future 2023 Chassis CAD

This is the accompanying battery cart with compatible quick change mounting. There are 2 NOCO 3 port battery chargers.

Battery Dolly CAD

We are starting to cut the chassis with the goal of having a running chassis by the end of next week.

Will be posting code development and testing soon.

Happy to answer questions and hear feedback.


I can’t find 9312 on the blue Allaince lol

1 Like

I think we were the last to register and blue alliance hasn’t caught up.


Week 2 progress report:

Competition chassis was started and completed this week and we hopped onto wiring. Was able to pull a long Saturday and got the chassis wired.

Pushed some initial LabVIEW code in to just test some electrical and mechanical hardware. Tuning still needs to happen a lot.

Chassis weighs in at 30lbs without battery.

Our quick change battery design needs a little tweaking. It’s a bit loose and we need to redesign the holding bracket to be a bit more secure. But the clearance for installing and removing the battery seems to be good.

We held a STEM event at our STEM hub INNOVATE Albion which we creatively called STEM Saturday. We had a bunch of FLL, FTC and FRC activities and about 25 kids showed up. It was the first time since kick off that the Canton and Albion sides got a chance to bond and work with each other. It was good to see the cohesiveness start to gel.

Canton Design team started experimenting with a cone catcher design:

Testing showed that the cone dropped tip first followed a fairly repeatable trajectory. Lining up the robot left and right will be a bit tricky. We are working on a long catcher and asking programming to develop some assists.

Lastly, programming was able to develop in JAVA code that was fairly well tuned.

Driver took it out for a spin to provide some feedback on teleop handling.

Auton and Vision programming groups are making progress but nothing to report or show yet.

Design is still working through arm and linear motion designs which we hope to finalize in a week or two.

As always, we welcome all comments, questions and feedback.


We finally showed up!!..


I’d love to learn more about the folks on your team. Does everyone have just FTC experience or do you have prior FRC experience? How long have you been prepping for this season?

Impressive stuff so far!


Y’all don’t look like rookies, keep up the good work!


Thanks. @Akash_Rastogi and @JamesCH95. This is high praise, in deed.

I’ve coached FRC with another team for the past 8 years so I know my way around. I have 3 students and 2 mentors who came with me when I started this new team. But the rest are from my FTC team or recruited this year.

I also have really phenomenal corporate sponsor in 2 local businesses, Caster Concepts ( and Conceptual Innovations (, who use FRC as a the crux of their recruiting for their businesses. They have gone all in, purchased a building, which we turned into INNOVATE Albion (

Starting this FRC team was a little bit rushed this year. I had planned on waiting a year and doing it next year. Hence getting one of the last rookie team numbers this season.

Conceptual hires HS students from local FRC teams as interns each summer and part of the lure is we pay them to help develop what they are passionate about and what they know which inevitably is FRC tech. One student last summer developed the quick change battery system and another worked on developing a reconfigurable swerve chassis. Both certainly gave us a good jump start.

This is the first year we’re programming in JAVA and most of our designers know the FTC environment well but are slowly learning to work with new COTS and manufacturing capabilities.

I definitely wouldn’t call us a rookie team.


Very cool!

Impressive sponsors!

Best of luck in your non rookie year!

Week Three Progress Report:

We made an auton code to make the robot park on the charging station. We set the roll on the gyro to zero in the beginning. When button L1 is pushed it uses a P gain to target finding flat ground which is zero. Then we used R1 to move the wheel angles to 45 degrees so that it has a manual break.

On Sunday, we visited an FLL team, The Blue Goggles, to mentor them, as they are the only FLL from Michigan to go to Worlds. We talked about their project, their robot game, and their presentation. In the future, we plan on helping them make a model of their solution in CAD. We also plan on helping the team prepare for their FTC debut by teaching them Java and Solidworks.

We launched the official NERD Spark website. On the website, we include information about our team and sponsors. We plan on using this to release tutorials and helpful resources for other teams. We also finished the sponsorship packet, which helps us explain to sponsors what we need and how their generous donations will help our team.


Week 4 Progress Report:


CAD was completed this week. We have started to create proof of concepts/prototypes to shake out the design completely and make sure the CAD doesn’t have any mistakes, i.e. missing holes or random interferences. Instead of aluminum cut on the CNC router, we’re first laser cutting out of 1/8" MDF. Cheaper, faster and allows us to make sure all we have all of the hardware and COTS components.

Here is a complete CAD download:

General design strategy is to build a lightweight single DOF arm on a “inclinovator”. The arm will also have a wrist joint with grippers powered by NEO 550’s on a 20:1 57 sport gearbox. Originally we were going with pneumatics to power the grippers but we needed the grippers to open to different positions and thus the motors were necessary. It adds weight but gives us flexibility in our design as we move into software and tuning. In the end the arm/gripper is estimated via SW to be about 11lbs, 24" long.

The arm is able to reach into the cone catcher, do ground pickup, reach to the substation shelf pickup, and drop off on all levels of the scoring stations. We did a lot of testing on sliding the cone tip first down the ramp and we believe that will be the fast, most consistent means of intake.


On Sunday, the Blue Goggles, an FLL team visited Nerd HQ 2 along with a few of our team members. There, we helped them design their solution for this year’s problem in CAD. The topic was sustainable energy, and they came up with a house with a magnifying glass on the roof to get a heat system from a renewable source: the Sun. This week, our team members designed the house in Solidworks and in the process, helped teach the FLL team an intro to CAD. We made a brainstorming board to see what the restraints and functional requirements are.


We finally were able to get the PlayingWithFusion TOF Can distance sensor working. Thanks @JaredL for posting the solution here:

Within an hour, programming had mounted the sensor on to the robot:

And had programmed a simple PID, really only P, to make the robot wall surf at about 2".

Our plan is to use this sensor to auto park in the correct location in front of the substation slide automatically.

As always, we welcome all comments and questions.

Half way through the build season, hope everyone is staying sane.


Apologies for not having kept this build thread up. It has been a crazy 3 weeks trying to prep for a week 1 event. Having gotten through our week 1 event at FIM Jackson, here’s a summary of what worked and what didn’t work.

What went wrong:

Wednesday night while most of our team was at Spring Arbor University helping to setup the field, we got reports from our drive team that they were seeing erratic behavior in our arm and wrist. Wrist which should only have 180 degrees of rotation programmed in decided to rotate 720 degrees. Arms would stop working suddenly. Grippers were also intermittent.

We reviewed code on Thursday prior to inspection and tried a few things in programming. We have a state machine to control the inclinavator/arm combination and we thought some of the triggering conditions were off. It suddenly started to work but we were not sure why. We called ourselves lucky and rushed to get inspected.

Friday morning we pushed code through an untested laptop, which is probably the dumbest thing I have ever done at competition. It seemed to have bricked the RIO forcing us to reformat. We sent a mentor back to our HQ, luckily 15 min away, to grab the desktop we typically used for programming and were able to make it onto the field 3 minutes late. We were the first match. Thanks to FTA’s and ref’s for allowing us the extra time.

First match was a disaster. Arm went limp as on Wednesday. It would work in the middle of the match and then go dead again. After that match, after probing all states and variables in software and realizing the code was not the issue, we searched thru the entire robot to find a single severed CAN wire connected to our bucket. When the bucket rotated to a certain position, the CAN wire would reconnect and give us momentary control.

CAN wire was replaced and our bot remain functional for the first half of the next match. Mid match, the 2 belts on the second stage of our arm drive train ripped teeth off and the arm fell past our hard stop. We had no spare belts. They were ordered a week prior but would not arrive until Saturday morning.

We reclocked the belt so that the broken teeth would not be on the smaller sprocket, also super glued and gorilla tape the teeth onto the belt. Believe it or not, that would continue to hold up for the next 6 matches.

In the next few matches, we got a cone stuck, a cube stuck, we were dropping cones and our robot played D for a bit too much of the match time. It was not until the second to last qual match that everything finally came together. Drivers, human player, robot seemed to finally sync up and agree to work together.

What went right:

We were the 1st pick of the 8th alliance, paired up with 2 capable robots that could do cubes to our cones. Robot stayed healthy and driving improved dramatically. We were cycling 8-9 cones. I think our drive coaching decision making got better although not completely optimal. In general, the robot and drive team did remarkably well considering the rocky start we had on Friday.

In both finals matches, a single mistake cost us the match, a dropped cone in finals 1 and a failure to achieve a balance in auton in finals.

Preparing for FIM Lakeview 1:

  1. A ton of drive practice.
  2. Implement a vision assisted alignment to make drop off faster.
  3. Improved bucket design to allow the cone to be captured more securely
  4. Implement a cube intake strategy

Goals are:

  1. 100% auton balance
  2. 9-11 cones per match
  3. No dropped cones from the human player
  4. No dropped cones from the robot

As always, we welcome all comments and questions.


Season Recap

Lakeview Recap,

We seeded number one at Lakeview (week 4) and we were honored to play with the WiredCats (5675) and I Am Robot (4810) and picked up our first blue banner. A combination of a reasonable schedule and a healthy robot throughout the entire tournament were the keys to our success.

Changes to the robot included a 100% engaged center auton which used the gyro to mark when the robot was climbing back onto the charge station and then used odometry to travel a given distance, then used gyro again to micro move to ensure a good balance. The trigger to stop moving was when the gyro started to go back down to level. We also doubled up the belting on the arm’s last 2 stages to reduce the stress each belt carried.

MSC Recap,

We were placed on the Aptiv field after the reshuffle and had the misfortune of getting a schedule that had a SOS score, according to, of .95. We were glad to be able to play with our friends 8608, the Alpha Bots, and 3603, Cyber Coyotes. Highlight of our matches was going up against the number 2 seed, 123, 2337, 33 and pulling off an upset.

Changes to the robot included moving from LabVIEW code to JAVA in order to implement path planner to get a 2 cone auton. JAVA team had been working on code since the beginning of the build season and it was now their turn. We struggled to trust it all tournament. In a practice match we had flipped on the charge station and were concerned there were inconsistencies in our pathing that would make us likely to flip again. The lack of an untethered practice field at MSC made it so that testing could only happen during matches and I was dead set against showing any potential alliance captain our “suspect” auton. In the end, when we had nothing to lose, we ran the 2 cone smooth side and it performed flawlessly on the pick up. Drop off was always throw of the dice.


With MSC behind us, we were convinced that a 3 cone auton was required to seed well and be picked early at Worlds. We focused on a 3 cone, ground auton inspired by 862, Lightning Robotics. We ran it in all 10 matches and I believe it picked up the 2 outside cones 8 out of 10 times. We delivered the first 2 cones 100% of those times and the 3rd was an easy push in during teleop.

Ironically, we were chosen by the #1 seed, 2075, Enigma Robotics and 973, Greybots, who wanted us to only run our center cross and balance. We had not run our center auton since States and neglected to implement it into JAVA and thus we switched back over to LabVIEW. The RIO 2 has a removeable micro SD card which houses all of the software and so switching from JAVA back to LabVIEW was as simple as switching cards.

Because of subtle changes in our drive motors, settings of the auton were not perfectly tuned. We failed to balance during the first match. Tuning the balance was fairly straight forward but we also were failing to deliver the preloaded cone to the top node. Small tweaks in wrist angle and gripper opening angle finally allowed us to consistently deliver the cone in Finals 1 on the Johnson field. Had we run our center auton even once during quals, we would have seen these issues and fixed them fairly quickly on the practice fields. Instead, it was a mad scramble in the pits behind the stands where the stakes could not be any higher. The programming and pit team performed well under pressure with excellent guidance from Greybots and Enigma.

We made it to Einsteins, which still seems like a dream. We are incredibly grateful to be able to play with and against robots of such high caliber. We are thankful that 2075 and 973 gave us the time to get our “stuff” in order and thankful to have as capable of a team as 4607, CIS, to be subb’d in when we failed our climb on the charge station in Eisteins Match 1. We were told that the blue charge station on Johnson had caught a bunch of team in quals. Our lower bumper and chassis height made us susceptible for getting caught up. Unfortunately we would be blue and on the Johnson field for much of Eisteins. Even though we wouldn’t be back on the field, we are grateful to have stepped onto Einsteins at least once.

Keys to our success:

Chassis Design by Week 1:

We stepped into the season already with a solid chassis design that worked with SDS MK4i. We had inherited the design from 5205’s 2022 season. Our lead CAD mentor and our lead designer spent the week 1 adding the belly loaded battery mounting system. By the end of week 1, we were cutting pieces off our ShopSabre 48"x48" CNC router. By the end of week 2, we had a fully wired skateboard chassis that was ready for programming and drive practice. This early start in programming allowed us to add and tune auto turning algorithms in teleop and start playing with algorithms for the charge station balance. Without the CNC router, manufacturing would have been far slower. It probably would have taken 2X longer to get the chassis running and testing.

The chassis design was essentially a skateboard on top of which allowed us to add tooling. By separating chassis from tooling so distinctly, design teams for tooling were allowed to progress at a different pace than chassis. Chassis was able to be launched into manufacturing without any fear that it would need to be changed at a later date.

No Ground Intake:

The complexity of a ground intake would have forced us into far more prototyping and testing. As a rookie team with limited design experience, we made the early decision of not doing a complicated ground intake or a secondary handoff. This allowed us to focus on a simple arm design and an even simpler bucket design.

LabVIEW and then JAVA:
Just as we had inherited a chassis design from 5205, we also inherited LabVIEW code. I also had a highly competent sophomore LabVIEW programmer. She improved the teleop performance, added the arm code, and added a fairly straight forward auton routine. By sticking with LabVIEW, our JAVA team had an additional 6 weeks of time to get complicated code such as path planner and vision debugged. Getting LabVIEW done early also allowed us to transfer all of the arm settings directly into JAVA without much testing or tuning. LabVIEW’s superior debugging environment allowed us to prove out hardware faster and made transitioning to JAVA smoother.

Last Words:
Appreciate everyone who stopped by our pit at Worlds to say hi and learn about our robot. We are going to clean up our code and post it here in the coming weeks. CAD hasn’t really changed since we posted it here originally.

As always, we welcome all questions and comments.


I cannot tell you how excited we all were when we realized you were still available during our turn on alliance selection lol. Me and the mentors and our kid on the field were all freaking out because you were one of our top picks. It was awesome playing with you guys and I hope you guys have as successful a year next year! :heart: :heart:


Your quick battery change looks very interesting. Could you explain further how it works?

It allows us to under mount the battery. With the connection semi rigid it automatically aligns so we can minimize size and not need for reach access to make the connection.

What other questions can I answer? CAD is found in above link.

How did you make the connections for the baterry?

It uses the regulation standard Anderson connector.

Do you have any close up pictures from where the battery is connected?

1 Like