C++ OOP Library for Programming the Lego NXT

Austin Hyde picture Austin Hyde · Dec 18, 2009 · Viewed 10.8k times · Source

A while back, I got a LEGO Mindstorms NXT set for Christmas, and now I would like to program it in C++.

I have looked around, here and other places, and could not find a cross-platform, open source, OOP C++ library that "felt right", including lestat and nxtOSEK.

So, I have decided that unless I can find one I do like, then it would be a great learning experience for me to write my own library.

I have done a little research, and decided it would be easiest to communicate with it over bluetooth, rather than compiling my programs to the NXT machine code.

I would also like this to be done in OOP style, meaning the NXT brick, motors, sensors, etc would exist as objects.

So, my question is: what do I need to know before embarking on this? where can I get good references (besides here, and specific to the NXT)? What are other decent "basic" libraries* for things like Bluetooth communication?

*I am all for using boost and the STL, if necessary, by the way.

Alternatively, I believe in not reinventing the wheel if I don't have to, so if there is a decent C++ OOP bluetooth-communicating NXT library out there, let me know!

Answer

chollida picture chollida · Dec 18, 2009

I've taken a look at doing this before.

Start looking here: http://bricxcc.sourceforge.net/

On this page you can download the source for it. What I ended up doing is compiling my C source code down to byte codes that the NXT brick can understand.

This allowed me to add some custom extensions to C though I did spend alot of time compiling C down to a compact enough form in byte codes that fit into the NXT's memory:)

If you want to use an existing C implementation then check out this chart: http://www.teamhassenplug.org/NXT/NXTSoftware.html

For a list of the NBC(Next Byte Codes) start with this page. I found it extremely helpful.

http://bricxcc.sourceforge.net/nbc/