You might have noticed that there’s a sudden burst of teams posting links to their prior year’s code and CAD drawings on Chief Delphi. Wondering why? Read on.
R13 of the 2015 Rules states:
Software and mechanical/electrical designs created before Kickoff are only permitted if the source files (complete information sufficient to produce the design) are available publicly prior to Kickoff.
So, if you have that great robot vision program from previous years, or that crazy 5 CIM continuously variable gearbox from last year’s bot, and want to use it on this year’s robot, you need to publish the design.
What does publish mean? The examples in the rules all say:
post it in a generally accessible public forum
make the code available to all Teams
A story. Last year at a competition I was asked to consult on a robot’s control system issue. We spent quite a bit of time going through the source code of the robot to see what the issue was. Reading the source code, it was clear to me that the code represented many years worth of work. I took a note of the team’s number because I was interested in reviewing the code later at home.
After the competition, I took a look around for the team’s code, and wasn’t able to find it online anywhere. That’s not right.
The concept behind R13 is that the work product – the robot and its code – represents the work of the current team. Requiring sharing of designs and source code helps level the playing field and increases the quality of robots from all teams. It deliberately reduces the (big) advantage that veteran teams have over new ones.
Finally, a personal note. I love reading team’s robot code, and would love to see more published code to look at.
So, there you go. Publishing your code and designs = good.
Would making CAD files downloadable on your team’s website (in an accessible place like a Resources tab or something) be sufficient to satisfy R13? Do you have to advertise it in a post on a public forum like Chief Delphi?
It’s pretty bare-bones, but it should be possible to iterate quickly to add more teams to the list! Also, there will be more than just a single Chief Delphi link for each of them shortly.
EXAMPLE 4: A different Team develops a similar solution during the fall, and plans to use the developed software on their competition ROBOT. After completing the software, they post it in a generally accessible public forum and make the code available to all Teams. Because they have made their software publicly available before Kickoff, they can use it on their ROBOT.
EXAMPLE 5: A Team develops a transmission during the fall. After completing the project, they publish the CAD files on a generally accessible public forum and make them available to all Teams. Because they have made the design publicly available before Kickoff, they can use the design to create an identical transmission, fabricated after Kickoff, for use on their 2015 ROBOT.
My reading of this is that “make available” is posting it on your site, and that posting on a “generally accessible public forum” means CD or the FIRST forums. The other teams that are posting are thinking something similar, and I’ve had in person conversations with other teams that read this the same way.
Finally, I’ll point out that the ultimate decisionmaker on this would be a robot inspector at the event.
Having worked for the US Navy for the past 27.5 years, let me quote somebody who’s been working there longer than me:
The code-posting rule doesn’t have anything prohibiting the posting of obfuscated code, not to mention “as-is” code. The requirement (the past few years) has simply been that the code is publicly available before kickoff. As far as I know, no one intentionally obfuscates their code, but there is certainly a significant quantity of code published that is “not ready for sharing”.
Though we are working on creating a release thread about one portion of our Labview code. Our students last year created Roboscript. An autonomous scripting language that can be changed during the queuing line or even while your robot is being set up.
The post will go into more detail, but you run it like this:
drive(50%, 2s);
(this is an example that probably wouldn’t work, but it is similiar to this). This would tell it to drive forward at 50% power for 2 seconds. The new version 2.02 allows the programmer to do things like “if sensor2 is active then do this else do that”. It is similar to javascript in it’s syntax.
I think that the intent behind the rule is that your team is making a good-faith effort to make the code publicly available to any FRC team that would want it. The idea (as I understand it) is that everyone is on a level playing field before Kickoff, so anyone that wants the code should be able to find it.
The tricky part is how easily they should be able to find it. Posting on CD is definitely sufficient, but I’m not sure where that line is between easy to find and hard to find.
Just an FYI for the CAD side of that rule. You must make the CAD it’s self available. Not just pictures of the CAD. I could easily see people not understanding that and just posting pictures of CAD models.