Code templates and Student-Centered Policy discussion

We can play “who’s a true Scotsman” all day. Is Eigen verboten?

So…perhaps somewhere in between?

  • Open Source code implementing algorithms - OK
  • Closed Source code implementing algorithms - Not OK
  • Open/Closed Source code directly “coordinating” the robot - Not OK

Where does that leave something like Sylib’s “improved motor velocity controller” - OK, up to the point where speed values are put in place in a coordinated autonomous/“macro” manner. How to phrase that concisely? Admittedly a significant challenge.

PID/AutoPIDTuners/PathGenerators/Followers/etc, IMO should be allowed (provided they are open source, authored by anyone). Non-team members authoring autonomous routines (including those called by a driver-action during driver control), not allowed. Though I suppose even that phrasing might catch-up Sylib…


This is a fair point. I guess there needs to be a bit of nuance and interpretation.

“I found this program called 127C Toss Up Code and downloaded it straight onto my robot and it just worked, yes my dad hired an engineer to write it but it’s on GitHub so that’s fine right?” is pretty clearly wrong. In my opinion “This professional software engineer wrote this cool library in his free time and it does the PID by magic” is fine because that’s equally valid for any team, so that’s just the level playing field you start from. GPS strip sensor works by magic that almost no team can explain but (for the, erm, slight fee of buying it) anybody can use it so it’s also the level playing field you all start from.

There’s a line somewhere you have to draw of course, and I’m not sure where exactly it is, but I certainly don’t think we should be DQing every middle school team using PID. And also if you restrict advanced tools to just the teams that can prove that they “earned” them then suddenly you create an even bigger gap between the teams stuck with the most basic programming and teams that can convince a judge/RECF rep that they definitely understand this magical pure pursuit library so they get all that code for essentially free.


Yea, that’s the problem. It falls into the “I know it when I see it” category.

I’ve seen it at worlds when a team has technical issues and has no clue how their code works.


I will report every single middle school team for G2 violations that uses a PID, can’t explain what problem it solves, and adult mentor tuned it for them.

Let’s work from that common issue today and back towards nuanced :slight_smile:

End of the day, that is the problem we are encountering more and more, not teams who are working through problems.

My concern with templates are teams using them without any idea of what they are doing and causing them to outperform teams who do the work.

There is a list (LONG) of poor behaviors with regards to G2/R2 that all teams should be aware of.

I hope I do not have to have many discussions with teams that result in the students suffering for poor decisions - usually, they learn and grow.


That almost seems a suitable punishment…


Correct me if I’m wrong, but doesn’t the Vex-provided firmware use a PID when motors are sent spin at velocity commands?

Perhaps the reply of "Well, that’s different, all teams are using that (or have the option to). " is fair. That said, all teams (with effort), can find open source, published code use it.

I don’t know the details, but from what I gather PROS has designs to improve the ability to find “templates”:

I, for one, think this is great and should be encouraged. Does my stance increase the likelihood of non-team-skill-level code appearing? Yes. Do I condone the type of example James points out? Absolutely not. Just stating my personal cost-benefit analysis, including what “student-centered” means in my opinion, is that raising the floor brings more benefits than even a “templates may be used only to the degree that their inclusion represents the skill of the team” type of rule.

Thank you for listening to my TED talk…I’ll try to make this my last post on the topic…


I was thinking about that while writing a response - teams who are telling you “I wanted my robot to move forward 20 inches” and uses functions accordingly are very different from teams “I wanted my robot to move forward 20 inches and my coach told us to use this function and tuned it for us” … Two distinct scenarios. Unfortunately, we are seeing the latter more and more than the former. The former is a team working to its skill level, the latter is G2 issue.

Sincerely, I do not want to get into every single situation, I think all want a level playing field where teams are coming to events at their skill level and without undue adult interference.

1 Like

Yeah. It’s also worth mentioning that vex includes fairly complicated control within the brain/motors/devices themselves. So… how much are participants expected to be able to explain at the end of the day.

1 Like

Indeed they do.

Were you intending to describe the Drivetrain object in VEXCode? Because that’s exactly what it does. Heck, students can’t even tune the PID constants for it if they wanted to.

And if the questions posted on this forum and discord are any indication, I can pretty confidently say that the vast majority of students using the drivetrain object have little to no idea how it actually works. You might have a lot of G2 violation forms to fill out…


Nope- specifically a function written by the coach, told the students to use it, and the coach tuned it for them. Team could not explain the function, could not apply it to their robot on their own. That was a situation we encounter in the past, definitely meets a G2 Student-Centered violation. New reporting process requires educating the coach and documenting the incident. If repeated behavior, then it escalates to follow up steps in G1/G2 process.

Now, using a function drive forward in VEXcode - just fine as team is using tools provided to all. Team can decide how to get their robot to the destination - spin motor for number of rotations, spin for a specific amount of time, write their own function, learn from a tutorial and implement a version that suits their needs… all these are Student-Centered.

We are concerned with adult behavior with G2.

With R2 we are looking at the robot’s performance and seeing if it lines up with the team’s skill level.

Hope that clears it up.


It’s really funny because I’ve coded my own PID before and I also coded encoder odom on a noncompetition robot, but I still have no idea how the drivetrain object works. While there is some info about it in the VexKB articles and the code documentation, there isn’t nearly enough to understand what’s going on. One place I haven’t checked though is the “definitions” section of vexcode pro, so idk if that gives more info about the tuning and things like that.


Taking liberties here, but I think there is agreement that this specific conduct is outside the bounds of what we expect from VRC.

I think what we (taking liberties, perhaps for @sazrocks and @AlecMiller - opt out if I misrepresent your views) is that the efforts to curtail these instances will likely have a chilling effect on (what I think the 3 of us) believe to be legitimate uses of non-team developed, open-source code.

I believe this will not only “lower the floor” but also “lower the ceiling”. For example, this post where a student wants to use Eigen to improve their odometry code would seemingly be barred from using Eigen unless they are:

  prepared to demonstrate they can write their own version of the routine.

I think, at the least, what I’m looking for is not necessarily agreement on where to draw the line, but acknowledgement that where RECF/GDC seem to be heading with where this line will be drawn will have adverse affects on legitimate student-centered activities.


I’m still not sure what line in the sand you’re advocating (or at least the general area where you think the line in the sand should be, obviously this requires a bit of interpretation and “I know it when I see it” judgement calls).

Earlier you seemed to be implying that basically any middle school team using PID would be a G2 violation if they didn’t understand the math behind PID. You also said that an example of having a function that didn’t work, looking up code on stack overflow that was to able to sort of do what they needed, and then heavily modifying it to achieve their goal was an example of a violation if they didn’t understand what was wrong with their code to begin with. But now it seems the line you’re drawing is “if a coach wrote the code for them, that’s a problem, but if a team is just using tools provided to all it’s fine even if they don’t understand fully or even at all how it works.”

Obviously if a coach said “there’s a thing called PID, you should use it” and explained nothing more, or worse either tuned the PID themselves or even completely implemented it for the team themselves and never taught them how any of it works, that’s a violation.

But if a team does research on their own that makes them realize they should use a magic function from a library, or even if a coach suggests they use a magic function from a library in a way that makes them have a good idea what problem that magic library solves, I think that’s fine. And obviously it’d be awesome if the coach uses that as a teaching opportunity to introduce some math about how the function works or whatever because that makes it more educational, but I don’t think we need to have judges giving them a pop quiz on how it works and if they fail we initiate CoC proceedings.

For instance for PID, I think the bar of understanding is that you could say that PID is something that makes a robot go to a position and slow down as it gets nearer rather than just jerking to a stop, and if you did any tuning you need to be able to describe the process you used to tune it even if it’s just saying you followed a guide you found online. That indicates to me that they understand what the code on their robot is doing and how it got there, so they’ve demonstrated that the robot represents their skill level.

I guess the line I’m drawing here is "they should be able to describe what any libraries or templates or whatever they use do and why that library or template or whatever was chosen, even if they don’t know how that library or template or whatever actually does whatever it does to a level we arbitrarily deem sufficient.


You got it :slight_smile: and I think we are all on the same page. I used PID MS example, as the team did not why or how to make it work in their code - yet magically they have autonomous coding skills scores that rival veteran HS teams. Yes there are wickedly smart MS coders out there - that reveals itself very quickly through a quick interview. We are looking specifically for G2 / R2 issues that are egregious and unfair to all the other teams that are putting the effort to learn and perform at their level.

One authentic tip that has is extremely important - put comments in your code - for example:
// We used the VEXcode Drive Train code for our initial implementation, we found that it was too inconsistent
// for our Autonomous Coding Skills routine. We saw a post on VEXForum that this other drive
// library existed. We did tested across multiple turns and straight runs and found it was more
// accurate!

This will demonstrate the you made about demonstrating why a library was chosen, and how it was determined to be effective.

Commenting also has the benefit of educating your teammates about decisions made in changes to the code.

EP Summit, seems a lot more issue in VIQRC at younger age group there are more G2 not Student-Centered.

I applaud teams that share ideas and teach others. Just remember there are adults who tell teams what to do.


Another thought on the situation is going back to ye olde days of english class where you had to write an essay.

Should your parents write it for you, then when it’s discusion time, you have no clue about it’s contents? Absolutely not!
Can you ask your parent to spell-check? Yes, but your parent is not rewritting the essay, just saying “hey, apple is spelled le not el”.
Is an essay good without sources? Yes, but it can be better.
Do you have to conduct your own research and quote that? Impressive but impractical.
Are you expected to fully comprehend the intensive science from multiple fields, hundreds of scientists, and a lot of research? No, but you have to understand a little in order to properly add it to an essay.
If left alone, without access to the sources you used to wrote your essay, would you be able to reproduce it? Probably not, but there’s some photographic memory people out there.
Is plagerism okay? Heck no! Cite those sources and be able to explain them.

Honestly, Im proud of myself for this anaolgy, so hope it helps!


My roboteers can. One of the early sessions is about the programming in the brain and how it works. It feeds the following discussions about the LED / touch sensor and the rotational sensors in the motors.

1 Like

I highly doubt you’re able to just explain basic calculus to a bunch of middle schoolers real quick. The percent speed control on the motors used PID.

That’s great! It’s unfortunate that there aren’t enough Fosters for every VRC team. In the team workshop that we run every season here in AZ I try to get across the basics of how each sensor works, as well as basic PID constants as well. From a judging perspective, I think that students that demonstrate a deeper understanding of how the components on their robot work should be rewarded. However, I hope we can agree that a team shouldn’t be worried about a G2/R2 violation if they aren’t able to explain how the VEX PID on their motors works.

One does not need to understand calculus in a mathematical sense to be able to understand PID. It’s enough to simply explain that in this context “derivative” = “velocity”, and that “integral” is just an accumulation of your error, along with suitable analogies such as a car stopping at a stoplight, etc. Middle Schoolers absolutely can understand the concepts behind PID.



For an intuitive approach to calculus…

start at about 1 min in where he talks about a circle.

Well, they responded, Can teams use coding templates for PID/Odometry? : Robot Events. Honestly, this is probably the best outcome. Their response does not surprise me, but it could have ended up very badly.