Ethical dilemma? You decide.

[size=]Ethical dilemma? You decide. I’m proud of the fact that I teach my students ethics and core values. We never take a win at all costs approach. They learn to like the “man in the mirror”.

Here’s the scenario:
For the fist time, our team has entered the world of CNC programming. Our off season goal centered around learning the machine and program. We got as far as creating geometry to make our own gear boxes on our CNC mill. We were inspired by AndyMark and their new Toughbox Nano Tube when we saw it at IRI.

Reading the rules, it sounds like we can not use any of the programming we created. Do you agree? That’ll be sad but we’ll live with it. Because we were teaching ourselves, we invested about 60 hours of work. At least the second time will be shorter.

Ideas? Suggestions? Here are the rules from 2010:

<R24> Individual COMPONENTS or MECHANISMS retrieved from previous ROBOTS and used on 2010 ROBOTS must have their undepreciated cost included in the 2010 ROBOT cost accounting, and applied to the overall cost limits.

<R25> Prior to the Kick-off: Before the formal start of the Robot Build Season, teams are encouraged to think as much as they please about their ROBOTS. They may develop prototypes, create proof-of-concept models, and conduct design exercises. Teams may gather all the raw stock materials and COTS COMPONENTS they want. But absolutely no final design, fabrication, or assembly of any elements intended for the final ROBOT is permitted prior to the Kick-off presentation.

Example: A TEAM designs and builds a two-speed shifting transmission during the fall as a training exercise. When designing their competition ROBOT, they utilize all the design principles they learned. To optimize the transmission design for their ROBOT, they improve the transmission gear ratios and reduce the size, and build two new transmissions, and place them on the ROBOT. All parts of this process are permitted activities.

Example: The same TEAM realizes that the transmission designed and built in the fall perfectly fits their need for a transmission to drive the ROBOT arm. They build an exact copy of the transmission from the original design plans, and bolt it to the ROBOT. This would be prohibited, as the transmission – although fabricated during the competition season – was built from detailed designs developed prior to kick-off.

Example: A TEAM developed an omni-directional drive system for the 2008 competition. Over the summer of 2009 they refined and improved the control software (written in C) to add more precision and capabilities. They decided to use a similar system for the 2010 competition. They copied large sections of unmodified code over into the control software of the new ROBOT (also written in C). This would be a violation of the schedule constraint, and would not be allowed.

Example: The same TEAM decides to use the LabView as their software environment for 2010. Following kickoff, they use the previously-developed C code as a reference for the algorithms and calculations required to implement their omni-directional control solution. Because they developed new LabView code as they ported over their algorithms, this would be permitted.

Example: 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 generally available, under the terms of Rule <R67> it is considered COTS software and they can use it on their ROBOT.

<R33> COTS items from ROBOTS entered in previous FIRST competitions or COTS items that are no longer commercially available may be used under the following conditions:
A. The item must be functionally equivalent to the original condition as delivered from the VENDOR (e.g. a part that has non-functional label markings added would be permitted, but a part that has device-specific mounting holes added would be prohibited), and
B. The item must satisfy[/size] ALL applicable 2010 FRC materials/parts use rules.

It seems like the really simple thing to do would be to make your CNC code publicly available, on the off chance that absolutely nothing that you mill in that piece needs to be changed. Change aspects of the design, and then it is legal anyway.

Ooh, YMTC!

Let’s look at the rules first:
does not exactly apply here. It’s not a COTS component, though it is inspired by one.

may be what you really need to look at. Definition of COTS:

COTS – A “Commercial, Off-The-Shelf” COMPONENT or MECHANISM, in its unaltered, unmodified state. A COTS item must be a standard (i.e. not custom order) part commonly available from the VENDOR, available from a non-team source, and available to all teams for purchase…]
• Example 3: a team obtains openly available design drawings from a professional publication during the pre-season, and uses them to fabricate a gearbox for their ROBOT during the build period following kick-off. The design drawings would be considered a COTS item, and may be used as “raw material” to fabricate the gearbox. The finished gearbox itself would be a FABRICATED ITEM, and not a COTS item.

But: Does the CNC code, developed by the team, fall into the “design drawings” or the examples given in <R25>?

I’d actually suggest going with the last example in : You have machine code, and you post it somewhere with appropriate caveats about there may be much better ways to do this, this is only expected to work on this machine type, etc. Now that’s COTS machine code, so you can use it. Or you tweak the design a bit.

Given the situation described, I’d say that that code is a Fabricated Item. Until it’s tweaked or rewritten or posted in a generally accessible public forum to make it either Fabricated Item after Kickoff or COTS, it’s not legal. But it’s not robot code…but it’s used to make stuff on the robot…

If you decide to do a different gearbox design, then that code will need to be tweaked, so it’s appropriately timed for fabricated items. Bonus if you improve it for more speed in fabrication.

Your CNC code is the equivalent of a “final design” which <R25> says is not permitted if it was done before the kickoff presentation.

The COTS loophole will let you skirt the restriction by “publishing” the design. I assume that’s your dilemma: do you go by the spirit of the rules (no design prior to kickoff) or the letter of the rules (COTS designs are okay, and published team designs count as COTS)?

I think you have two ways of feeling good about your team’s ethics. The hard way is to create a new design, calling upon your experience in creating the old one. The easier way is to modify your existing design to be more specific to the robot you will be building for the 2011 competition.

This rule isn’t even worth worrying about.

What are the odds you’ll want to use what you already did in it’s EXACT configuration? Not very high, most likely. You’ll probably want to change the distance between wheels, the exact position of the gearbox in the tubes, the mounting points for motors, provisions for tensioners, etc.

We have a family of parts that has not changed in two years and isn’t likely to change again this year. We have machine code for our CNC mill to make each of the three parts that theoretically could be used from two years ago but every year it becomes more obvious that the previous year’s code, while workable, needs to be optimized to lessen run time, lower tool wear, increase accuracy, etc and never actually stays the same.

I would argue that all you would have to do is delete all your selected geometry from your toolpaths, go back in an hour after kickoff, reselect the geometry and you’ve satisfied the rule about previous design. You wouldn’t even need to delete all of it, but then you have another question of how substantial do changes have to be for it to be “different”. Can you delete a toolpath to drill one hole and then redo it and call it different?

A lot of teams walk this fine line every year. Many of them are very respected and well-known teams, all have very respectable people on them, and none of whom I would consider to be “cheaters”. No matter what is said in this thread, however, it is ultimately your decision what to do. My Advice: Do what would make your grandmother proud.

Sincerely, Bryan Culver

Strictly speaking, isn’t the CNC program the design of the process used to create the robot part, rather than necessarily an element of the design of the part itself? I grant that the design of the part and the design of the CNC program might certainly be codependent, but fundamentally, they’re separate things. Completion of one does not necessarily imply completion of the other—it would be quite reasonable to contend that the design of the part depends on the lessons learned from the implementation of the CNC program, and that the “final design” of the part is incomplete until the results of a trial run are analyzed and deemed satisfactory.

And although FIRST hasn’t said so explicitly, I give serious credence to the idea that the robot rules must be assumed to only apply to actual parts of the robot, unless otherwise specified. (If you read the LabView example as applying to non-robot code, it opens up a world of unenforceable insanity.)

Put another way, logically, if you were to instantiate the part design, you’d get the part. But if you instantiate the CNC program, you get a machine following a toolpath—and maybe a part as well, but only if you decided to cut metal (or whatever the part is made of) rather than thin air.

And in any event, like Chris and Cory said: if you’re still uncomfortable, make any one tiny geometric change, and it’s unambiguously no longer the same part. (The old part can rightly be called a prototype, if you happened to make any. Don’t use the prototypes in competition.)

Following my own chain of reasoning, I disagree that posting it publicly would be a remedy under the rules—stuff that isn’t part of the robot has no particular reason to be (or to become) COTS.

Aside: See here

Example: The same TEAM realizes that the transmission designed and built in the fall perfectly fits their need for a transmission to drive the ROBOT arm. They build an exact copy of the transmission from the original design plans, and bolt it to the ROBOT. This would be prohibited, as the transmission – although fabricated during the competition season – was built from detailed designs developed prior to kick-off.

This would seem to say it all in your case, substituting “code” for “plans”. As Cory has said, a little examination of the CNC code will show that some improvements can be made in the code. You can move things around, make more efficient use of programming space, etc. The skills are already there, this could be a great opportunity for your students to practice and learn.