<br><br><div class="gmail_quote">On Thu, Dec 30, 2010 at 5:34 PM, Martin Langhoff <span dir="ltr"><<a href="mailto:martin.langhoff@gmail.com">martin.langhoff@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi Walter, list,<br>
<br>
[ disclaimer: this is a hobby project, likely to proceed at very slow<br>
pace, given insane amounts of real work around XOs ;-) ]<br>
<br>
I got a lego nxt 2.0 for xmas! Looking around for how to use it from<br>
Linux, I found NXC (a variant on NQC -- 'not quite C' that compiles to<br>
NXT bytecode). It looks like a really pleasant programming language.<br>
<br>
It's the most compelling env for various reasons -- but the<br>
interesting thing is that there is no GUI for Linux, and that the<br>
MacOSX/Windows GUI looks a lot like Turtle Blocks (but doesn't seem to<br>
be as good ;-) ).<br>
<br>
Here's a good visual summary, put together by a teacher:<br>
<a href="http://www.nebomusic.net/rosettastone.html" target="_blank">http://www.nebomusic.net/rosettastone.html</a><br>
<br>
What I am wondering is what is the smartest path to a TB "mode" or a<br>
friendly fork of TB that exports NXC code?<br>
<br>
After browsing the TB src (looking at master), my observations are<br>
<br>
 - I'm very pleased there's a turtleart.py that runs w/o Sugar! Very nice!<br>
<br>
 - talogo.py could be an inspiration<br>
<br>
 - NXT has very different actions, and fairly specific sensors -- it'd<br>
make sense to have a very different set of blocks available. Also some<br>
blocks have many options. Not sure how to handle these issues.<br>
<br>
Ideas?<br>
<br>
= Notes on languages and NXT tools =<br>
<br>
Notes for anyone else looking into NXT... from most interesting to least<br>
<br>
 - NBC/NXC is the most popular tool by all accounts, actively<br>
maintained, and jspaleta is planning to get it into F15. NBC/NXC<br>
creates programs that download to the NXT CPU and run there -- it's a<br>
nice ARM CPU. Fully features, well documented (free online docs). The<br>
author of NBC/NXC has also published an apparently good book.<br>
<br>
  <a href="http://bricxcc.sourceforge.net/nbc/" target="_blank">http://bricxcc.sourceforge.net/nbc/</a><br>
  <a href="http://www.amazon.com/exec/obidos/ASIN/0973864974/" target="_blank">http://www.amazon.com/exec/obidos/ASIN/0973864974/</a><br>
<br>
  Found this tutorial best outline of NXC usage<br>
  <a href="http://bricxcc.sourceforge.net/nbc/nxcdoc/NXC_tutorial.pdf" target="_blank">http://bricxcc.sourceforge.net/nbc/nxcdoc/NXC_tutorial.pdf</a><br>
<br>
 - There is a python module for it, but it's for Python 2.4, looks<br>
unmaintained, seems very limited in features and it's not clear<br>
whether it creates programs that will execute on the NXT CPU, or just<br>
controls it remotely. Others have reused it and extended it for file<br>
transfers, but it all looks dated; if the NBC/NXC toolchain handles<br>
the actions we need, better.<br>
<br>
   <a href="http://www.danbbs.dk/%7Ekibria/nxt/nxtsh.py" target="_blank">http://www.danbbs.dk/~kibria/nxt/nxtsh.py</a><br>
   <a href="http://chromiteblue.com/archive/projects/nxt/nxt_pull-a-companion-program-for-nxt_push/" target="_blank">http://chromiteblue.com/archive/projects/nxt/nxt_pull-a-companion-program-for-nxt_push/</a><br>
<br>
 - Big chart of options<br>
   <a href="http://www.teamhassenplug.org/NXT/NXTSoftware.html" target="_blank">http://www.teamhassenplug.org/NXT/NXTSoftware.html</a><br>
<br>
cheers,<br>
<br>
<br>
<br>
m<br>
<font color="#888888">--<br>
 <a href="mailto:martin.langhoff@gmail.com">martin.langhoff@gmail.com</a><br>
 <a href="mailto:martin@laptop.org">martin@laptop.org</a> -- School Server Architect<br>
 - ask interesting questions<br>
 - don't get distracted with shiny stuff  - working code first<br>
 - <a href="http://wiki.laptop.org/go/User:Martinlanghoff" target="_blank">http://wiki.laptop.org/go/User:Martinlanghoff</a><br>
</font></blockquote></div><br><br clear="all">I had a similar conversation with the Arduino team in .uy last month. We discussed how I might make a palette class that made it easier to extend Turtle Blocks without having to modify the taconstants.py file. I'll keep you in the loop on that one.<br>
<br>I would recommend as a place to start simply adding a set of blocks to control the motors and access the sensor data. And leave the programming logic to the Sugar Activity.<br><br>Happy to help any way I can. (BTW, v106, not yet released, but in git, has support for the XO camera as an additional sensor... a request from a teacher in .uy.)<br>
<br>Happy 2011<br><br>-walter<br><br>-- <br>Walter Bender<br>Sugar Labs<br><a href="http://www.sugarlabs.org">http://www.sugarlabs.org</a><br><br>