NXT SDK, HDK and BDK finally released by LEGO
Today, LEGO finally released
Now, community, lift off!
- the NXT driver interface specification and necessary tools for creating third-party programming environments (SDK)
- the documentation for the executable file format on the NXT
- the documentation and schematics for the NXT and related sensors (HDK)
- the communications protocols to the NXT brick (BDK)
Now, community, lift off!
Then we Mac owners could benefit from a full working product. As you probaly already know, we can't use the Bluetooth feature, because it doesn't work under Rosetta emulation.
But it will come. Some day...
There is even a circuit schematic of the NXT brick.
and look at all these shiny C headers in the SDK!
Almost unbelievable when remembering the dark old times of RCX hacking...
PS: First time comment poster, love this site.
I'll ask around again.
The Fantom appears to be a very low-level interface API. It basically allows locating an NXT then locating a "Module" inside, and read/write from "Module" I/O Map. what is this "Module"? There seems to be no documentation of the standard "Modules" in the NXT. Here's where a higher level
API should be but it will be hard making one without proper documentation!
Fantom allow also sending a direct command to the NXT. Great! From the example I now know that sending 0x03, 0x00, 0x18, 0x10, 0x00 makes a tone. What else can I send ?!?!?
In short, the Fantom API may give us the tools to interact with the NXT from a PC, but it is like having an F-16 with no "User Manual"...
The executable file specifications seems like a detailed description of the low-level program files. I hope it makes NBC more clear (NBC documentations isn't too good...),
but for the average user - it doesn't help much...
The hardware description is pretty informative, allthough I felt it keep the discussion on the "features" level and doesn't get into enough details. They do give the schematics
(this surprised me, I must admit) but reading these requires a good knowledge of electronics
and it would still be difficult to make a third-party firmware from this data. A 25 pages file doesn't describe such a complex hardware.
Also, I was expecting LEGO to give VIs (i.e Blocks) to make extensions for the NXT-G, allowing e.g. I2C communication (which will allow using many third-party sensors with NXT-G) etc.
I imagine it's got to be frustrating at LEGO most days - we (the consumers) don't ever seem to be happy... negative posts, "I don't see this... I don't see that..."
We all seem to forget this is a TOY! A very advanced toy, but it is still a toy...
How about let's give LEGO a little time... we're all complaining but the majority of people don't even have a NXT kit yet.
Sorry to be so negative in a comment, but I'm just a consumer and all I can think is how I'd feel if I were an exec at LEGO... they're proud of getting the product out the door, but all they keep hearing are complaints.
Okay... I'm done.
Gonna go get an ice cream and take some deep breaths.
Perhaps you failed to peruse the Bluetooth Developer Kit (BDK) before you posted.
For details on Modules, see p. 18 in Appendix 1 in the Bluetooth Developer Kit (BDK).
For details on Direct Commands, see Appendix 2 in the BDK.
I think LEGO has done an excellent job so far of providing potential NXT hackers with lots of information and tools to make the hacker's job easier. But half the fun of hacking is having to figure out some things on your own! Be patient, be persistent, and be clever. I'm sure there are many intelligent people out there who realize how lucky they are to have even the current documentation and are currently working on simplifying things for the rest of us.
As for the direct command set - the BDK indeed give a list of these.
As for the modules - the BDK give the list of IDs, but without the memory map of each module, Fantom is useless...
I'm sorry for being a pain, but wasn't there an MDP program? Didn't any MDP write a higher-level API, or was these SDKs not available to MDP mmbers also?
Lots of good info in the motors. Now I just have to learn about PID!
Shoot me an email when you can...
For me the thing that makes the wait tough is - knowing that the MDP have had access to the SDK and other information for their projects, wish all the work they did, in terms of Bluetooth applications to control the NXT be made available in the form of samples.
Reading thru the SDK documentation is tough without start up samples. Once again I know that LEGO's primary concern is to get the units out to the students; hackers and enthusiasts come second.
Tnoy Buser posted an article on Mindstorms NXT Bluetooth on OSX.
I don't know if that's of any help since I don't have any Mac (yet) or even NXT (yet - good news on that for Europe by the way, dates have been moved from oct 15 to sep 21 for non-english versions. Go LEGO!).
And if it doesn't help; I've read that LEGO will indeed provide a universal binary - although I haven't seen any official statement or date estimate on this - hope the MDPers who run this site can ask and get a definitive answer on this ;-)
Jim, how do I email you? I can't find email addresses anywhere on this forum.
I am at gordon L buchanan @ gmail . com (no spaces).
One of those hidden in full view things!
Guy: I would have been very dissappointed if Lego had constrained programmers to using some pre-packaged wrappers.
If I had been accepted as an MDP I would have considered I had done a good job by encouraging & supporting Lego to publish such excellent documentation.
I certainly intend to have fun creating my own software interface layers with this info.
Joubarc, Christer: Yes somewhere in the NXT software documentation Lego say there is a Mac Universal binary on the way. I guess the delay is to do with National Instruments development schedule.
With the Bluetooth Development Kit is should be possible for a Mac-Intel programmer to write a native app for remote control or transferring programs.
There is certainly a lot of information.
Appendix 2 of the Bluetooth Dev Kit, "Direct Commands" describes messages including "SetOutputState", (page 6), "SetInputType" and "GetInputValues", (both on page 7).
(I am embarrased)
I must have gone thru the document a couple of times but somehow didnt read thru each command. The names SetOuputState and GetInputValues didn't ring a bell.
Thanks once again.
I meant to be sympathetic and write that: there is a lot of information to read through in order to find the few lines you are looking for.
Hehe. And if you think you were impatient, believe me, the MDP was ahead of the curve on that point as well. Hehe.
I'd also like to get additional information on the SetInputMode command. I know how to configure all sensors but the coolest one - the sonar. Any information would be greatly appreciated since I need it for my library.
Project Site: http://nxtpp.sourceforge.net/
thanks for your responses!!