LEGO Mindstorms NXT is a universal platform, that offers robot construction possibilities, as well as programming solutions. When it comes to Mindstorms NXT programming, LEGO offers a programming environment, that allows for algorithm synthesis using simple flowchart-like visual language. Thanks to the openness of the platform number of open programming solutions emerged, for languages such as C/C + +, Java, etc. The examples include LeJOS/iCommand, and NQC. Some early attempts for providing a Prolog-based solution are within the Legolog Project. Unfortunately the project did not offer a general API, and supported only the older Mindstorms RCX version.
PLNXT is a Prolog API for the Mindstorms NXT platform. It is researched and developed within the HeKatE Project, aimed at providing a high-level rule-based programming solution.
Basing on the review of existing solutions, the requirements of a new Prolog API for NXT has been formulated:
PLNXT provides the following features:
All of these (except for simulator) actually wrap the Mindstorms NXT Communication Protocol.
Any other implementation of the communication layer can be created based on file nxt_actions_dummy.pl. Restriction is that the names of the exported predicates must remain the same. There is also no possibility to provide anything new without including it in the sensomotoric layer. Why? The communication layer is a part of the project, detached to allow putting various alternate versions into its place only. It should not be directly used in the projects based on PlNXT. There is no such need.
To implement complex control algorithms, it is necessary to use mechanisms for delaying actions and make them conditional on certain events.
Implementation of these mechanisms occurs in the threads
module. It provides triggers (callbacks) and timers using SWI Prolog threads. Trigger fires an action when some event occurs. Timer fires an action after a specified period of time.
The minimum knowledge needed to use the PLNXT:
These materials are part of the AGH Laboratory - LEGO Mindstorms site.
on-line docs
20.02.2009: Download release PlNXT-M0
09.05.2010: Download release PlNXT-M3.1
If you have not used the Mindstorms NXT yet, I recommend the LEGO instruction. Nice, colorful, with pictures. :) If you are too lazy for that, start with a LEGO Mindstorms NXT brief description, necessary to use PLNXT. There is a knowledge of the NXT platform there, reduced as it can be.
Download and unzip the current version of PLNXT. You can find it in the download section.
Various communication modules require different environment preparation:
nxt_actions_serial
– using local serial port,nxt_actions_icommand
– using iCommand (Java),nxt_actions_sockets
– using TCP sockets.
Temporarily, it is possible to use only the serial
module. Soon this will be corrected. Therefore, further instructions are prepared only for this module.
If you already have a properly prepared environment (see setup), you can move on and write simple programs. I encourage you to review ''first steps''.
See links at the AGH Laboratory - LEGO Mindstorms site.
Copyright © 2006-9 by the HeKatE Project
PLNXT has been develped by the HeKatE Project, see http://hekate.ia.agh.edu.pl
PLNXT is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
PLNXT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with PLNXT. If not, see http://www.gnu.org/licenses/.
Please contact if:
E-mail: holownia(_at_)agh.edu.pl or gjn(_at_)agh.edu.pl
For developers.