LabVIEW for LEGO MINDSTORMS and LabVIEW for Education

cancel
Showing results for 
Search instead for 
Did you mean: 

Intellectual Property concerns w.r.t. NXT-G bytecode programs?

Here's one to run up the chain of command and back down again:  if I want to write a program or lead a project which adapts or transforms the compiled RXE files created by NXT-G, do I need to worry about LEGO or NI's intellectual property interests?  I have a few specific situations I want to get feedback on:
 
  1. Suppose I want to start a web site which teaches users to create their own RXE files with a hex editor.  Am I allowed to publish a quick reference table of instructions, and guides for interacting with devices?  Most of the content would need to come from the executable file specification document, so that kind of guide could be considered direct copyright violation.
  2. If I do (1) above, am I allowed to publish the contents of RXE files created in NXT-G, to demonstrate how to properly interact with the NXT's devices to get the behavior we want?  RXE files created in NXT-G are huge so I imagine NI could say "this is our copyrighted motor control code, so you need a license to use it."
  3. Once NXT-G's RXE file output is well understood, would NI and LEGO allow the open source community to build an open source NXT-G replacement, with a similar graphical environment and identical language constructs, which creates output exactly like NXT-G would create?
  4. Would NI or LEGO be opposed to someone building an "RXE file deflater" which optimizes NXT-G-created RXE files by removing unnecessary instructions?

Thanks again!

0 Kudos
Message 1 of 7
(9,182 Views)
I can't say I'm necessarily qualified to answer this, but no one else seems to be stepping up to the plate.  Do not construe this as an "official" response from NI, as I have not run anything "up the chain of command" as you put it.  As such, I will skip your question #1.  However, for the rest:

If I do (1) above, am I allowed to publish the contents of RXE files created in NXT-G, to demonstrate how to properly interact with the NXT's devices to get the behavior we want?  RXE files created in NXT-G are huge so I imagine NI could say "this is our copyrighted motor control code, so you need a license to use it."

I am skeptical that the output from a compiler could be considered "copyrighted". Would you have the same concerns when publishing the ASM generated by a C compiler?

Once NXT-G's RXE file output is well understood, would NI and LEGO allow the open source community to build an open source NXT-G replacement, with a similar graphical environment and identical language constructs, which creates output exactly like NXT-G would create?

While the NXT-G environment and language is not nearly as complex as the full-blown LabVIEW Professional package, I think you would find it non-trivial to duplicate the functionality it contains(LabVIEW has been in development for 20 years!). LabVIEW is also currently protected by a collection of patents regarding graphical programming languages(please lets not debate the pros and cons of software patents), so I would certainly caution you should you choose to engage in such an endeavor. There are frequently rumblings of creating an open-source graphical development language/environment like LabVIEW on the LAVA usergroup forums (http://www.lavausergroup.org), however, if you'd like to look into this further

4. Would NI or LEGO be opposed to someone building an "RXE file deflater" which optimizes NXT-G-created RXE files by removing unnecessary instructions?

I can certainly see the benefit of this for advanced users. However, the "unnecessary instructions" you refer to are likely code to protect against bad input parameters being passed to the motors or sensors. Most of the range checking and similar code is not done in the firmware but in the blocks - and thus ends up in the RXE files. While you may be able to shrink the compiled program size, you are not removing "useless" instructions.

J

Message Edited by Jason King on 09-02-2006 11:17 PM

Jason King
LabVIEW R&D
National Instruments
0 Kudos
Message 2 of 7
(9,125 Views)
Thanks for your replies.  I work for a bank, and the environment here trains you to ask questions and get clear answers before doing anything potentially risky.  Doing something previously unknown and saying "nobody ever told me I couldn't" can get you fired -- so it just felt natural to ask.  Sorry for the odd questions.
 
Regarding copyright interests in compiler output:  your compiled output is very large compared with the language-construct input provided by the user.  If the user compiles a one-icon program and gets a 7 KB RXE file -- and that one-icon program initializes two motors and their rotation counters, applies power to both, and runs a loop which constantly reads and adjusts power levels to both motors to keep the bot driving straight until both wheels have turned 15 rotations, then stops both motors -- there is some NI-built program logic in there.  People using other languages have been talking about not getting the automatic nice behaviors that NXT-G gives you, so they have to write motor control code and whatnot.  NI might view that as a competitive advantage, and might not want to see RobotC and NBC and the other replacement environments copy those sets of instructions.
 
Personally I hope they don't -- there seems to be a real "open to the community" vibe in what I've seen published on mindstorms.com so far -- but I don't want to assume they won't protect these interests.  I want to be explicitly told "yes you may reverse-engineer the contents of the RXE files created by NXT-G and you may use the contents of those files in any way you want -- as long as you don't touch any of NXT-G's internal files or resources when you do it."
 
Regarding building an alternative environment:  I'm thinking of coaching an FLL team in a resource-poor elementary school, and I was just thinking how cool it would be to have the kids develop on an XNA program running on an Xbox 360 (and plug the NXT into one of the 360's USB ports) instead of using a PC.  With a high-enough-resolution display, you could even get two, three, or four kids 'programming' at once, with four wireless controllers.  🙂  That "wouldn't that be cool" idea started me thinking about the vast number of obstacles in the way of that kind of thing.  The profit potential for such a project would be very low, so I assume I'd have a hard time getting support from NI or LEGO.  Getting Microsoft to allow a non-MS-approved peripheral to communicate with an XNA program could also be very difficult.
 
Maybe I should start a new thread about this -- describe the wish list, and then detail each of the many project-killing obstacles and see if the community thinks they're as project-killing as I do.
0 Kudos
Message 3 of 7
(9,079 Views)
Any word on this?
0 Kudos
Message 4 of 7
(9,021 Views)
I know things have been busy there, but I wanted to follow up again.  Any word on this yet?
0 Kudos
Message 5 of 7
(8,848 Views)
(I can't find the option to edit the above post, so I'll make a new one.  Sorry...)
I just want to say:  I'm bugging NI about this again now because:
1)  Microsoft just released the XNA toolkit, so now an amateur can write code that targets the Xbox 360.
2)  The Xbox 360 has USB ports, and in theory Microsoft could be convinced or paid to allow communication with the NXT.
3)  The Xbox 360 is cheaper than a comparably powerful desktop or laptop computer, so an underpriviledged school might more easily use an Xbox 360 in a classroom that already has a TV for NXT development.  An Xbox 360 is also easier to transport and hook up than a desktop PC.  Since grade-school LEGO tinkering is best done in an area with a lot of floor space -- and computer labs tend to not have a lot of open floor space -- this makes the Xbox 360 an attractive development platform for kids.  (There might also be families that don't want to put a PC in their kids' room but will put an Xbox 360 there.)
4)  In January I'm taking CSCI 9210, "Type Systems Behind Programming Languages".  The entire grade for this class comes from a project due by the end of the class, and since it's a language-transformation-related problem, I might consider doing a basic version of this for my class project.  (I expect I would have a "download this to NXT" button that instead pops up a full-screen hex editor like display showing what .RXE file it WOULD have sent to the NXT brick.)
 
I just want to make sure that I will be allowed to reverse-engineer NXT-G-created RXE files and "steal" motor control logic, sensor interface code, etc.  If I put this much work into this project, I would also plan on releasing it on the Internet.
 
(This will be the only class I'm taking this coming semester, so I would be able to spend a lot of time on this project -- aside from lots of reading, this would be my only homework.  I haven't even started the class yet though, and I would need to get instructor approval before making this my class project.)
0 Kudos
Message 6 of 7
(8,840 Views)
Last week, LEGO published the source to the NXT FW.

http://mindstorms.lego.com/Overview/NXTreme.aspx

I believe that it should have all the information for connecting to the NXT and all the information on the rxe file format, assuming they published the entire FW source.

I'm not an expert on their license, so I would recommend that you read it to understand the restrictions on what can be developed with the information found in the open-sourced code.

- john
0 Kudos
Message 7 of 7
(8,826 Views)