Valor 6800 - 2022 Reveal

When I started Valor, I was the only software mentor available to help the students. At the time I was an embedded engineer working on Internet of Things software deployments in C and C++. Therefore I thought it was best for the students to use that as I could support them better when they had questions.

I no longer code in C++, and our other software mentors don’t know C++, but we still stick with it now. This is mainly for 2 reasons:

  • C++ is something most students will learn in college, and therefore using it in high school will better prepare them for their post-high school careers. Additionally, almost all CS students in high school use Java so C++ allows them to explore new areas and learn more outside of the classroom
  • We have built a state-based code infrastructure over the past 5 years and onboarding new students into our process is insanely easy now. We do a diagram–>code process that forces students to illustrate their ideas on paper first before moving to code. Then, they implement their ideas in a very structured setup that improves every year. Very easy for the mentors to support

On a Mac, the code compiles extremely quickly. On windows, not so much…

My immediate answer would be no.

If your mentors feel they could support in C++ better than Java due to their work or something, then yes by all means. If your team can’t do the things they want in Java (custom memory management, advanced object oriented or polymorphism techniques), then yes. But for most teams, the teachers helping the program use Java and they don’t need extra stuff, so therefore my recommendation would be to stick with Java.

One last comment I would like to make is Java is the most used language in FRC. So therefore helping other teams or getting help from other teams is easier with Java. This past year, the mentors had to spend a lot of time and effort working with our students to translate 2910 & 2767s swerve code into C++ as they all used Java. It was not an easy task… I will say for us in the long run, it was totally worth it as we fit it into our existing state structure and easily added/removed features through the season.


Out of curiosity mostly, any chance you could give ballpark estimates on that compilation time difference?

If you dont mind sharing how did you connect the hooks to the circular tubing? Is that a 3d printed holder that you just slot the tubing into then bolted?

Sure thing!
The Circular tubing was just regular 1/16 wall versatube. Inside of this we pressed in an ash wood dowel the full length to help with any buckling issues associated with the tube.
On the topside with the hooks: Outside of the tube were markforged printed spacers with 2 aluminum hooks. These were then sandwiched together with 3 through bolts. Additionally we added a markforged spacer that was slightly smaller than the diameter of the pipe to dampen our swinging.

On the bottom side: Essentially the same thing, but with some doubler plates to press the large bushings into.


Hey, are you going to release the CAD?