Com este artigo vou tentar dar início a uma visão abrangente sobre a programação do RCX, e de uma forma, a programação para Mindstorms, ou seja tijolos programáveis. A LEGO possuía duas formas de programar o RCX, o RoboLab (nas escolas) e o RCX Code (na linha RIS).
Contudo cedo os entusiastas tentaram ir mais além. A LEGO por fim acaba por disponibilizar o Mindstorms SDK 2.5 onde apresenta um conjunto de ferramentas que habilitam o programador a criar para os PBricks (Ver artigo anterior neste blogue).
Por estar muito completo vou replicar aqui uma tabela da wikipedia sobre programação para PBricks da LEGO.
With this article I will try to start a comprehensive view on RCX programming, and in a way, programming for Mindstorms, ie programmable bricks. LEGO had two ways to program the RCX, the RoboLab (in schools) and the RCX Code (in the RIS line).
However, enthusiasts soon tried to go further. Finally, LEGO ends up making available the Mindstorms SDK 2.5 where it presents a set of tools that enable the programmer to create for PBricks (See previous article in this blog).
For being very complete I will replicate here a table from wikipedia about programming for LEGO PBricks.
Name | Device | Program Type | Language type(s) | Notes | Links | |||
---|---|---|---|---|---|---|---|---|
RCX | NXT | EV3 | Runs On Brick | Remote Control | ||||
Actor-Lab | Custom flowchart-like language | |||||||
Ada | Yes | Ada | Requires nxtOSEK | |||||
Ada Interface to MindStorms | Ada | |||||||
App Inventor | Yes | App Inventor | Specific support for LEGO(tm) MINDSTORMS(tm) NXT sensors and motors | |||||
brickOS | Yes | No | No | C/C++ | website | |||
Ch | C/C++ Interpreter | Control Lego Mindstorms in C/C++ interactively without compilation | ||||||
clang | C, C++ | |||||||
CoderZ | Yes | Yes | No | Java | Works with Blockly or with Java (using LejOS). Also includes an online 3D simulator[16] | website | ||
Cpp4Robots | No | No | Yes | Yes | C/C++ | Cpp4Robots is extension(plugin) for Microsoft Visual Studio environment. This extension allows programming of Lego EV3 in native C/C++ language and in Microsoft Visual Studio development environment. This Cpp4Robots extension works with default firmware in EV3 Brick. | website | |
DialogOS | Graphical Flowchart for voice controlled robots | DialogOS combines speech recognition and speech synthesis with robotics, enabling you to build talking robots that react to your voice commands. | ||||||
Enchanting | Drag and drop, similar to NXT-G | Program your robots simply by dragging the line of functions. | ||||||
EV3Basic | No | No | Yes | Yes | Yes | Microsoft Small Basic | website | |
ev3_scratch | Yes | No | Yes | Scratch (programming language) | Scratch code runs in the browser relaying commands to EV3 robot over Bluetooth. | |||
FLL NXT Navigation | Yes | Uses NXT-G and .txt files | ||||||
GCC | C/C++, Objective-C, Fortran, Java, Ada, others | |||||||
Gnikrap | No | No | Yes | Yes | Yes | JavaScript / Scratch like programming | website | |
GNU Toolchain for h8300 | C/C++, ASM | |||||||
HVM | Yes | Development environment for the Java programming language for the Mindstorms EV3, Eclipse-based | Works with Java 1.7. Works with the standard Lego firmware. Does not require a microSD card. Requires a wireless bluetooth dongle for the EV3 | website | ||||
Interactive C | C-style language. | Language developed for the MIT Lego Robot Design Contest | ||||||
jaraco.nxt | Yes | Yes | Python | Python modules providing low-level interfaces for controlling a Lego NXT brick via Bluetooth. Also includes code for controlling motors with an Xbox 360 controller using pyglet. | ||||
LabVIEW | Yes | Yes | Yes | Yes | National Instruments LabVIEW visual programming language (G code) | Core language used to develop Mindstorms NXT software. Can use available add-on kit to create and download programs to NXT, create original NXT blocks or control robot directly via USB or Bluetooth using NXT fantom.dll | ||
LEGO MINDSTORMS EV3 API for .NET | No | No | Yes | No | Yes | .NET, WinJS and C++ | A .NET API for the LEGO MINDSTORMS EV3 brick usable from desktop, Windows Phone and WinRT. With this API, you can connect, control and read sensor data from your LEGO EV3 brick over Bluetooth, WiFi, or USB. | website |
Lego.NET | Anything that can compile to CIL, works best with C# | Does not come with a compiler, converts CIL to machine code | ||||||
Lego::NXT | Yes | No | Yes | Perl | Set of Perl modules providing real-time low-level control of a Lego NXT brick over Bluetooth. | |||
LegoLog | Prolog | Uses an NQC program to interpret commands send from the PC running the Prolog code | ||||||
LegoNXTRemote | Yes | No | Yes | Objective-C | Remote control program for remotely operating and programming a Lego NXT Brick. Supports NXT 2.0 and 1.0, sensors, all 3 motors, automatic "steering" control, and running preloaded programs. | |||
leJOS | Yes | Yes | Yes | Yes | Yes | Java | A java based system for advanced programmers can handle most sensors and things like GPS, speech recognition and mapping technology. Can be interfaced with the Eclipse IDE or run from the command line | |
Lestat | C++ | Allows you to control the NXT directly from any C++ program in Linux. | ||||||
librcx | C/C++ | A library for GCC | ||||||
Logitech SDK | Visual Basic, Visual C++ | Can be combined with an RCX control library such as spirit.ocx from the MindStorms SDK to make use of the Lego Cam | ||||||
Microsoft Visual Programming Language (VPL) | Yes | No | Yes | Graphical flowchart, based on .NET | With the Microsoft Robotics Studio, it uses a native NXT program msrs to send and receive messages to and from a controlling program on a computer via Bluetooth | |||
Mindstorms SDK | Visual Basic, Visual C++, MindScript, LASM | You do not need VB to use the VB features as MS Office comes with a cut down version of VB for making macros | ||||||
Monobrick | Yes | Yes | Yes | C# | .NET 4.5. Firmware running from SD card. | website | ||
NQC | Yes | Yes | NQC, a C-like language | |||||
NXT++ | C++ | Allows controlling the NXT directly from any C++ program, in Visual Studio, Windows. | ||||||
NXT_Python | Yes | No | Yes | Python | NXT_Python is a package for controlling a LEGO NXT robot using the Python language. It can communicate via USB or Bluetooth. | |||
NXT-Python | Yes | No | Yes | Python | Based on NXT_Python, includes additional advanced features, support for around 30 sensors, and multiple brick connection backends. Works on Windows, Linux, Mac. | |||
NXTGCC | Assembly, C, makefiles, Eclipse, etc. | The first GCC toolchain for programming the Lego Mindstorms NXT firmware. | ||||||
nxtOSEK | C/C++ | |||||||
OCaml-mindstorm | OCaml | Module to control LEGO NXT robots using OCaml through the Bluetooth and USB interfaces. | ||||||
OnScreen | A custom language which can be programmed directly on the RCX | |||||||
pbForth | Yes | Forth | No longer developed. | |||||
pbLua | Yes | API for the Lua programming language for the Mindstorms NXT, text-based | pBLua: ... is written in portable C, with minimal runtime requirements; can be compiled on the fly on NXT; is a small, easy to read, and easy to write language; has extensive documentation available online and in dead-tree format, and a very friendly newsgroup | website | ||||
PBrickDev | PBrickDev, a flowchart based language. | Has more functionality than the RIS language, such as datalogs and subroutines/multithreading. | ||||||
PRO-BOT | A kind of Visual Basic/spirit.ocx-based language | Designed for robots which are in contact with the workstation at all times | ||||||
Processing | Yes | Java (Simplified / programmed C-style) | Processing (programming language) is an open source programming language and environment for people who want to program images, animation, and interactions. It is used by students, artists, designers, researchers, and hobbyists for learning, prototyping, and production. To control the NXT with Processing you can use the NXTComm Processing library developed by Jorge Cardoso. | |||||
QuiteC | C | A library for use with GCC and comes with GCC for Windows. | ||||||
RCX Code | Yes | RCX Code, a custom flowchart-based language | Included in the Mindstorms consumer version sold at toystore | |||||
ROBOLAB | Yes | A flowchart language based on LabVIEW | This is the programming environment offered to schools who use MindStorms, supports the Lego Cam. The programming structure simulates a flowchart design structure almost icon by icon. Therefore, it helps users a great deal in terms of translating from a flowchart design to Robolab icons. | |||||
RoboMind | Simple educational scripting language available from Arabic to Ukrainian. | The RoboMind learning environment allows to quickly develop and test scripts for a virtual robot environment. The scripts can then directly be transferred to a Lego Mindstorms NXT robot. It works on the standard firmware. | ||||||
RoboRealm | A multi-platform language that works with IRobot Roomba, NXT, RCX, VEX, and many other popular robotic sets. This language is also capable for video processing using a webcam, this gives your robot excellent vision since it can filter out certain colors, lock-on to a certain area of color, display variables from the robot or computer, and much more. The software works with keyboard, joystick, and mouse. | |||||||
ROBOTC | Yes | Yes | Yes | Yes | An Integrated development environment targeted towards students that is used to program and control LEGO NXT, VEX, RCX and Arduino robots using a programming language based on the C programming language. | ROBOTC gives the ability to use a text-based language based on the C language. It includes built-in debugger tools, as well as (but not limited to) code templates, Math/Trig operations (sin, cos, tan, asin, acos... etc.), user-friendly auto-complete function built into the interface, built-in sample programs. This deserves a special note for its debugging tool. For any developer, you will know how important it is to have a good debugging tool. Among all other robotics programming languages which support Mindstorms platform, RobotC's debugging environment does deserve a special note; although it is not free. | ||
Robotics.NXT | Yes | Yes | Haskell | A Haskell interface over Bluetooth. It supports direct commands, messages and many sensors (also unofficial). It has also support for a simple message-based control of a NXT brick via remotely executed program (basic NXC code included). | ||||
ROS | A Linux based library for writing robots. The stack "nxt" provides interface with the NXT. | |||||||
ruby-nxt | Yes | Yes | Ruby | Provides low-level access to the NXT via Bluetooth as well as some preliminary high-level functionality. | ||||
RWTH – Mindstorms NXT Toolbox | Yes | Yes | MATLAB | Interface to control the NXT from MATLAB via Bluetooth or USB (open-source). | ||||
Simulink (LEGO MINDSTORMS NXT Support) | Yes | Simulink | Provides a one-click rapid programming tool for the NXT. C code is automatically generated from a graphical Simulink model. The code is then deployed and downloaded onto the NXT, from where it can be run. The Mathworks provides an array of graphical blocks that represent the various sensors and actuators that the NXT uses. | |||||
SqLego | Squeak | |||||||
Swift / Robotary | Yes | Yes | Swift (programming language) | Robotary is a Mac robotics studio that uses the Swift programming language. | website | |||
TclRCX | Yes | Tcl | ||||||
Terrapin Logo | LOGO | |||||||
TinySoar | Soar | An implementation of the Soar artificial intelligence architecture that runs on the RCX brick. Soar incorporates acting, planning, and learning in a rule-based framework. | ||||||
TinyVM | Yes | Java | A predecessor to the lejos language. An open source Java based replacement firmware for the Lego Mindstorms RCX microcontroller. | |||||
Transterpreter (The) | Occam | |||||||
TuxMinds | (Linux) GUI for various distributions, an open source IDE based on Qt. Supports a lot of bots. RCX, NXT and Asuro are predefined. | With the XML-based configuration file almost any kind of bot (or microcontroller) can be added. Own equipment can be added in the same manner. | ||||||
URBI by Gostai for Lego Mindstorms NXT | URBI, C++, Java, Matlab | Easy to use parallel and event-driven script language with a component architecture and opensource interfaces to many programming languages. It also offers voice/speech recognition/synthesis, face recognition/detection, Simultaneous localization and mapping, etc. | ||||||
Vision Command | Yes | RCX Code | The official programming language for use with the Lego Cam, that allows you to control your robot with color, motion, and flashes of light. | |||||
XS | Lisp |
Dave Baum criou uma linguagem de programação para os PBricks da LEGO, o NQC "Not Quite C".
Cedo Dave Baum envolve-se nos conjuntos da LEGO Robolab, nomeadamente testa o 9725 ainda antes do seu lançamento. O seu envolvimento leva-o, entre outras suas participações, a escrever o livro "Definitive Guide to LEGO MINDSTORMS", editado em 2000.. o livro apresenta-se como um guia não oficial para o LEGO Mindstorms RIS 1.0 e 1.5. O livro, entre outros aspetos possui em anexo o apêndice C e D, o primeiro sobre ferramentas de programação e o segundo sobre NQC. O livro é acompanhado por um CD com exemplos de programação.
Mais tarde, David Baum lança um livro em equipa denominado "Extreme Mindstorms an advanced guide to Lego Mindstorms", trabalho feito decorrente do encontro MindFest. Tendo por base o RCX 2.0, os diversos autores apresentam outras tantas linguagens de programação: Dave Baum o NQC; Ralph Hempel o pbForth e Luis Villa o LegOS. Sobre Hardware há o contributo de Michael Gasperi no fabrico de sensores caseiros.
Relativamente ao NQC, há um aplicativo que programa e controla até em tempo real, os PBricks da LEGO: o Bricx Command Center - BrixCC. Para saber mais a sua página oficial está aqui (clique na Imagem para a aceder):
Dave Baum created a programming language for LEGO PBricks, the NQC "Not Quite C".
Early Dave Baum gets involved in LEGO Robolab sets, namely tests the 9725 even before its launch. His involvement leads him, among other things, to write the book "Definitive Guide to LEGO MINDSTORMS", published in 2000 .. the book presents itself as an unofficial guide for LEGO Mindstorms RIS 1.0 and 1.5. The book, among other aspects, has appendix C and D attached, the first on programming tools and the second on NQC. The book is accompanied by a CD with programming examples.
Later, David Baum releases a team book called "Extreme Mindstorms an advanced guide to Lego Mindstorms", work done as a result of the MindFest meeting. Based on RCX 2.0, the various authors present many other programming languages: Dave Baum or NQC; Ralph Hempel pbForth and Luis villa LegOS. About Hardware there is the contribution of Michael Gasperi in the manufacture of homemade sensors.
Regarding NQC, there is an application that programs and controls even in real time, the LEGO PBricks: the Bricx Command Center - BrixCC. To know more your official page is here (click on the image to access it):
Finally, and as a challenge, I leave you a link to a site where a PBricks enthusiast, using various procedures, managed to get all the PBricks software back to work on Windows 10 - 64 bits. Click on the image to access.
Para os mais entusiastas e em resumo deixo aqui um link para um site (Lego MindStorms with Linux Mini-HOWTO), datado de 2000, onde se orienta o investigador para usar diversas liguagens e em especial, compatíveis com Linux.
For the more enthusiastic and in summary I leave here a link to a website (Lego MindStorms with Linux Mini-HOWTO), dated 2000, where the researcher is guided to use different languages and, in particular, compatible with Linux.