|
|
| Line 1: |
Line 1: |
| | == Welcome to Logo for NXT == | | == Welcome to Logo for NXT == |
| | + | |
| | + | [[Image:nxtlogo.gif]] |
| | | | |
| | * [[NXT Logo Overview|Overview]] | | * [[NXT Logo Overview|Overview]] |
| Line 5: |
Line 7: |
| | * [[NXT Logo User Guide]] | | * [[NXT Logo User Guide]] |
| | | | |
| − |
| |
| − | [[Eurologo2007 Workshop]]
| |
| − |
| |
| − | This page contains information about the project of programming NXT in Logo language.
| |
| − |
| |
| − | The project is under intensive development, and there are no releases yet. '''the first preview will come in the very start of September'''
| |
| − | However, the projet is open-source and the latest development version is available in the [http://webcvs.robotika.sk/cgi-bin/cvsweb/robotika/src/imagine/nxt/logo/current/ CVS].
| |
| − |
| |
| − | [[Image:nxtlogo.gif]]
| |
| − |
| |
| − | == Features ==
| |
| − |
| |
| − | * Implemented in Imagine and [[NBC|Next Byte Codes]] (NBC)
| |
| − | * Three levels of use:
| |
| − | # Interactive Imagine project with direct GUI controls that allow interfacing with NXT robot over Bluetooth
| |
| − | # Loadable imagine library (nxt.imt) that contains set of procedures for direct control of NXT robot over Bluetooth from your Imagine projects
| |
| − | # Interpreter of Logo running on the NXT that can run logo programs (with restricted syntax), which can communicate with Imagine projects and control the robots motors and sensors.
| |
| − |
| |
| − | == Motor & Sensor procedures ==
| |
| − |
| |
| − | (motor m cmd arg)
| |
| − |
| |
| − | where m is the number of motor(s) as in NBC:
| |
| − | 0 - motor A
| |
| − | 1 - motor B
| |
| − | 2 - motor C
| |
| − | 3 - motors AB
| |
| − | 4 - motors AC
| |
| − | 5 - motors BC
| |
| − | 6 - motors ABC
| |
| − |
| |
| − | and cmd is one of (with the corresponding argument, similar to NBC):
| |
| − | onfwd power
| |
| − | onrev power
| |
| − | off (ignored)
| |
| − | float (ignored)
| |
| − | fwdr [power regmode]
| |
| − | revr [power regmode]
| |
| − | fwds [power turnpct]
| |
| − | revs [power turnpct]
| |
| − | onrot [power angle]
| |
| − | rst kind (1-4)
| |
| − |
| |
| − | (readmotor m cmd)
| |
| − |
| |
| − | where cmd is one of:
| |
| − | rotations
| |
| − | tacho
| |
| − | blocktacho
| |
| − |
| |
| − | (sensor N)
| |
| − |
| |
| − | (setsensor N type)
| |
| − |
| |
| − | where type is number according to NBC:
| |
| − | 0 - raw
| |
| − | 1 - switch
| |
| − | 2 - temperature
| |
| − | 3 - refl
| |
| − | 4 - angle
| |
| − | 5 - light active
| |
| − | 6 - light inactive
| |
| − | 7 - sound db
| |
| − | 8 - sound dba
| |
| − | 9 - custom
| |
| − | 10 - lowspeed
| |
| − | 11 - lowspeed with 9V
| |
| − | 12 - high speed
| |
| − | add the following constants for adjusting the output:
| |
| − | 32 - boolean output (0/1)
| |
| − | 64 - transition count
| |
| − | 96 - period counter
| |
| − | 128 - percentage (0-1023 value normalized to 0-100)
| |
| − | 160 - temperature in C
| |
| − | 192 - temperature in F
| |
| − | 224 - angle steps
| |
| − | 31 - slope mask
| |
| − | 224 - mode mask
| |
| − |
| |
| − | == Supported primitives ==
| |
| − |
| |
| − | NXT Logo supports the following primitive procedures and operations:
| |
| − |
| |
| − | # Arithmetic: ''<tt>add, sub, mul, div, mod, neg</tt>''
| |
| − | # Logic: ''<tt>and, or, xor, not</tt>''
| |
| − | # Bitwise: ''<tt>bitand, bitor, bitxor, bitnot</tt>''
| |
| − | # Lists and words: ''<tt>first, bf, last, bl, item, se, list, word</tt>''
| |
| − | # Maps & co.: ''<tt>map, apply, foreach, run, remote</tt>''
| |
| − | # Loops and conditions: ''<tt>repeat, while, foreach, if, ifelse</tt>''
| |
| − | # Predicates: ''<tt>empty? number? list? word? equal? gt? lt? ge? le? member?</tt>''
| |
| − | # Variables and procedures: ''<tt>make, let, to, op, stop, erase, launch</tt>''
| |
| − | # NXT file handling: ''<tt>load, printto, fopen, fwrite, fread, fclose, fremove</tt>''
| |
| − | # Sounds: ''<tt>tone, sound</tt>''
| |
| − | # Motors, sensors: ''<tt>motor, readmotor, sensor, setsensor, battery</tt>''
| |
| − | # Other: ''<tt>wait, random, print, draw, ascii, char, boot, gc, fm</tt>''
| |
| − |
| |
| − | The expressions must be in prefix notation. Variables are used the same way as in Logo - as "name when referring to variable name, and as :name when referring to its value. There are global variables as well as local variables, lexical scoping as usual in Logo.
| |
| − |
| |
| − | The <tt>(remote "expression)</tt> operations allow to start evaluating an expression on NXT when started from PC, and vice-versa. This can be used for communication. Of course, one could then easily say, for example:
| |
| − |
| |
| − | remote "|[print "hello]|
| |
| − |
| |
| − | or
| |
| − |
| |
| − | remote "|[my_program 123]|
| |
| − |
| |
| − | or read value of remote variable:
| |
| − |
| |
| − | remote "|:var|
| |
| − |
| |
| − | However, one has to keep in mind that BlueTooth communication is slow due to switching of the direction of the transceiver and receiver. Therefore, it is preferable to implement higher-level functions and procedures that can run on NXT brick autonomously. Logo programs have about 30kb of memory available - for storing both the logo programs and data, however, programs can load/erase data and code from NXT files that are stored in the large flash.
| |
| − |
| |
| − | == Examples ==
| |
| − |
| |
| − | Some sample code for Logo for NXT is in the [http://webcvs.robotika.sk/cgi-bin/cvsweb/robotika/src/imagine/nxt/logo/current/examples Examples folder].
| |
| − |
| |
| − | == Syntax ==
| |
| − |
| |
| − | Detailed syntax is shown in the file [http://webcvs.robotika.sk/cgi-bin/cvsweb/~checkout~/robotika/src/imagine/nxt/logo/current/syntax.txt?content-type=text%2Fplain syntax.txt].
| |
| − |
| |
| − | == Reference Guide ==
| |
| − |
| |
| − | More detailed description of all commands and the system are located here:
| |
| − | [http://webcvs.robotika.sk/cgi-bin/cvsweb/~checkout~/robotika/src/imagine/nxt/logo/current/reference_guide.html Logo for NXT Reference Guide].
| |
| − |
| |
| − | == Internals ==
| |
| − |
| |
| − | Short specification of the Logo for NXT internals is in the file
| |
| − | [http://webcvs.robotika.sk/cgi-bin/cvsweb/~checkout~/robotika/src/imagine/nxt/logo/current/specification.txt?content-type=text%2Fplain specification.txt].
| |
| − |
| |
| − | == Publications ==
| |
| − |
| |
| − | * [[Media:eurologo2007_nxtlogo.pdf|Eurologo 2007 paper]] and [http://webcvs.robotika.sk/cgi-bin/cvsweb/~checkout~/robotika/src/imagine/nxt/logo/doc/nxtlogo.ppt presentation]
| |
| | | | |
| | __notoc__ | | __notoc__ |