Clogo

Clogo est un interpréteur LOGO écrit en Clojure.  Il permet de controller un robot tortue Lego NXT2, mais fonctionne aussi indépendamment.

Logo est un langage de programmation … adaptation de Lisp … essentiellement connu pour la fameuse tortue graphique – http://fr.wikipedia.org/wiki/Logo_(langage)

Pour quoi faire?

  • Pour apprendre la programmation aux enfants par le biais de la traditionnelle tortue Logo
  • Pour expérimenter avec Clojure, avec beaucoup d’effets secondaires (comme dessiner à l’écran ou commander un robot)
  • Pour jouer avec les Lego Mindstorms et construire un « robot tortue » sachant se servir d’un crayon

Comment ça marche?

Vous pouvez essayer Clogo très facilement.  Même si vous n’avez pas de Lego Mindstorms, vous pouvez programmer en LOGO et commander la tortue pour dessiner à l’écran. Tout ce qu’il vous faut est soit leiningen soit maven pour compiler l’application.

git clone https://github.com/japonophile/clogo.git

  • Avec leiningen:
    lein compile
    lein uberjar
    java -jar target/clogo-0.1.0-SNAPSHOT-standalone.jar
  • Avec maven:
    mvn install
    java -jar target/clogo-0.1.0-SNAPSHOT-jar-with-dependencies.jar

Voir le Cours Rapide de cLOGO pour découvrir ce que vous pouvez faire avec clogo.

Instructions pour compiler Clogo et s’interfacer avec le robot tortue Lego NXT2

Si vous voulez jouer avec le robot Lego NXT2, vous aurez besoin de:

  • Maven
  • Lejos NXJ (Java pour LEGO Mindstorms)
  • Bluecove (librairie bluetooth pour se connecter au robot tortue)

Note: Je suis sur Mac OSX et n’ai pas testé les autres plateformes.

Voici les étapes à suivre:

  1. Télécharger la librairie Lejos: leJOS_NXJ_0.9.1beta-3.tar.gz from http://sourceforge.net/projects/lejos/files/lejos-NXJ/
  2. L’installer dans votre répo Maven local:
    mvn install:install-file -Dfile=leJOS_NXJ_0.9.1beta-3/lib/pc/pccomm.jar -DgroupId=lejos.pc -DartifactId=pccomm -Dversion=0.9.1-beta3 -Dpackaging=jar
    mvn install:install-file -Dfile=leJOS_NXJ_0.9.1beta-3/lib/nxt/classes.jar -DgroupId=lejos.nxt -DartifactId=classes -Dversion=0.9.1-beta3 -Dpackaging=jar
  3. Installer et builder bluecove (2.1.1-SNAPSHOT)
    git clone https://github.com/jarias/bluecove.git
    mvn install
  4. Au moyen de Maven, compiler l’interpréteur LOGO et le logiciel embarqué pour la tortue NXT2.  Il vous faut spécifier le chemin d’accès à leJOS, parce que le compilateur sera utilisé pour compiler le logiciel de la tortue.
    mvn install -Pnxt -Dnxj.home=/Users/yourhome/leJOS_NXJ_0.9.1beta-3
  5. Fabriquer le robot tortue.  Celui-ci devra avoir 2 moteurs pour se déplacer et tourner, et un moteur pour contrôler le crayon.  Une fois le robot construit, il vous faut configurer l’interfacer bluetooth et associer le processeur NXT2 avec votre ordinateur.
  6. Embarquer le logiciel LogoTurtle.nxd / LogoTurtle.nxj sur le processeur NXT2 (au moyen du cable USB fourni avec les Lego Mindstorms); et démarrer votre robot. Le texte suivant devrait s’afficher sur l’écran LCD: “connecting…”.
  7. Démarrer l’application sur votre ordinateur.
    java -jar target/clogo-0.1.0-SNAPSHOT-jar-with-dependencies.jar
    Après quelques secondes, l’application devrait essayer de se connecter automatiquement à la tortue via bluetooth. Chaque commande de l’interpréteur LOGO sera ensuite envoyée au robot pour exécution.

Bon amusement!

Cours Rapide cLOGO

Voici quelques commandes que vous pouvez utiliser:

Commandes pour dessiner

  1. AVANCE X / RECULE X
  2. GAUCHE Y / DROITE Y  (Y en degrés)
  3. LEVECRAYON / BAISSECRAYON
  4. MONTRETORTUE / CACHETORTUE

Constructions programmatiques

  1. REPETE N [ ... ]
  2. POUR NOMPROC ... FIN : définition d’une procédure appelée NOMPROC qui pourra ensuite être réutilisée.  Il est également possible de passer des paramètres à la procédure comme POUR NOMPROC :PARAM1 ... FIN où :PARAM1 est un paramètre d’entrée que la procédure pourra ensuite utiliser par son nom PARAM1 (sans le préfixe “:”).
  3. DONNE NOMVAR VALEUR : définir une variable NOMVAR avec une certaine VALEUR qui peut aussi être une expression.

Expressions

  1. Clogo supports les opérateurs préfixes et infixes:
    • Préfixes: SOMME X YDIFFERENCE X YPRODUIT X Y and QUOTIENT X Y.
    • Infixes: X + YX - YX * Y and X / Y.
  2. Les parenthèses sont aussi acceptées dans les expressions

Ecrire à l’écran

  1. ECRIS X
  2. Clogo a deux variables prédéfinies
    • POS : la position de la tortue (x et y)
    • CAP : l’orientation de la tortue (en degrés)

Exemples:

  • Dessiner un carré
    POUR CARRE :COTE
    AVANCE COTE
    DROITE 90
    FIN
  • Dessiner un cercle (en réalité, un polygone à 36 faces)
    POUR CERCLE
    REPETE 36 [ AVANCE 1 DROITE 10 ]
    FIN

Contribuer

Clogo était une expérience / un projet perso pour apprendre la programmation à mes enfants et leur permettre de s’amuser avec les Lego Mindstorms au travers du langage LOGO.  Je l’ai testé sur Mac uniquement (OSX Lion-Mavericks) et la tortue était une création originale (qui contient aussi quelques pièces non-incluses dans le set NXT2).

N’hésitez pas à essayer Clogo et à contribuer si vous aimez.

Passez le message en postant sur Twitter ou en bloggant à propos de Clogo est aussi une excellente façon de m’apporter votre soutient.

Licence

Copyright © 2014 Antoine Choppin

Distribué sous licence EPL (Eclipse Public License), même licence que Clojure.