Question

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!

Was it helpful?

Solution

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/

OTHER TIPS

I used this one, I don't know whether you have checked it out or not:

http://www.norgesgade14.dk/bluetoothlibrary.php

This library provides support for reading various sensor data over a bluetooth connection as well as support for controlling motors.

Moreover the library can be easily modified, and I found it extremely easy to reconfigure it.

I came across this thread last year, while working on a project using C++ to control a robot arm. I used 2 NXT bricks and 5 motors.

You can find the original NXT++ 0.6 library here:
http://nxtpp.clustur.com
https://sourceforge.net/projects/nxtpp/forums/
Unfortunately this site is not being updated.

I forked a new version NXT++ 0.7 with some fixes, and support for multiple bricks, via USB or Bluetooth: https://github.com/dbworth/nxt-plus-plus
See the Readme file for details.

Another user, Piotr, has added support to NXT++ 0.6-2 for the HiTechnic sensor multiplexor and Lego color sensor:
http://wmii.uwm.edu.pl/~artem/downloads.html

Regards,
David.

Lets see the demonstration of possibilities of NXT++, the histogram filtering, https://www.youtube.com/watch?v=PDYtjWgvsxg it is based on the latest version supporting multiplexers, from http://wmii.uwm.edu.pl/~artem and download section,

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top