Résumé de section


  • Aujourd'hui nous allons prendre le contrôle du robot virtuel en le programmant avec Python ! Objectif : lui faire faire un petit numéro à l'intérieur de son arène rectangulaire !

    Au passage nous découvrirons également quelques commandes linux.

    1. Testez quelques commandes linux

    • Ouvrir un terminal
    • Voir le contenu de votre dossier : ls
    • Voir tous les détails de ce contenu : ls -l, (-l pour "list")
    • Voir également les fichiers cachés : ls -a, (-a pour "all"), ou ls -al
    • Voir où se trouve votre dossier dans l'arborescence des fichiers : pwd
    • Voir le contenu d'autres dossiers : ls Bureau, ls -al Documents, etc.
    • Remarquez que vous n'êtes pas obligé de retaper tout à chaque fois : 1) vous pouvez taper sur la flèche du haut du clavier pour afficher (puis modifier) vos précédentes commandes ; 2) quand vous tapez une commande, vous pouvez à tout moment taper sur la touche tabulation qui essaiera de faire une "complétion automatique", c'est à dire deviner la suite de ce que vous voulez taper
    • Utiliser .. pour faire référence au dossier parent : ls .. est équivalent à ls /home/tp-home007
    • Voir les dossiers de la racine : ls /
    • Changer de dossier, par exemple : cd Documents
    • Vérifiez que vous avez effectivement changé de dossier : pwd
    • Voir où se trouve le programme "python" : which python
    • Voir tous les fichiers qui se trouvent dans le même dossier : ls /usr/bin
    • Voir la version de python : python --version, ou bien python -V
    • En fait nous n'allons pas utiliser ce python version 2, mais un python version 3 : python3 -V
    • Voir où se trouve ce fichier "python3" : which python3

    2. Démarrer Python

    C'est parti ! Démarrez Python en tapant : python3, l'invite de commande python >>> apparaît, désormais vous pouvez taper des commandes Python.

    • Essayez la même commande que tout à l'heure ls : un message d'erreur apparaît ! ls est une commande linux, mais pas une commande Python !
    • Affichez votre premier message dans Python : print("Hello World!")
    • Vous pouvez utiliser Python comme une calculatrice, par exemple : 1+1
    • Maintenant nous allons utiliser Python pour commander le robot AlphAI ! (ou plutôt, aujourd'hui, son avatar simulé). Ouvrez un autre terminal et lancez le logiciel AlphAI : ~tdeneux/alphai, le logiciel se lance, le petit robot simulé apparaît en bas à droite.
    • Retourner dans le terminal Python, il vous faut d'abord importer la librairies des fonctions permettant de commander le robot : import alphai
    • Si la commande import alphai ne fonctionne pas, quitter python avec la commande exit() puis entrer dans le terminal la commande pip3 install alphai-api, puis relancer python.
    • Faire tourner le robot sur lui-même pendant 5 secondes : alphai.motor(-20,20,5)
    • Devinez par vous même comment il faut utiliser la fonction alphai.motor pour diriger le robot
    • Remarquez que le troisième argument est facultatif : que se passe-t-il lorsqu'on ne le met pas ? (on peut aussi mettre la valeur None, ce qui a le même effet)
    • Bravo ! Mais pour aller plus loins avec le robot, il va falloir apprendre un peu plus Python maintenant :)

    3. Apprendre à apprendre

    Plutôt que de vous donner un cours de Python ici, nous allons vous aider à trouver vous-mêmes les informations sur Internet. En effet, vous êtes ici également pour apprendre à apprendre par vous-mêmes !!

    • Cherchez la documentation officielle de Python sur Google
    • Choisissez la langue française si vous le voulez et sélectionnez "Tutoriel"
    • Il y a beaucoup de texte pour commencer, il peut être utile de tout lire, mais aujourd'hui nous n'allons "ne lire que ce qui est vraiment important" -> ne passez que 5 minutes à lire en diagonale les parties 1 (Mise en bouche) et 2 (Mode d'emploi de l'interpréteur)
    • Lisez dans le détail la partie 3 (Introduction formelle à Python), et à chaque fois qu'il y a des exemples, testez-les vous-mêmes dans le terminal Python ! 
    • Vous n'avez pas besoin de tout taper, notez bien que dans chaque fenêtre jaune vous pouvez cliquer les chevrons >>> en haut à droite pour n'afficher que la partie que vous voudrez copier-coller
    • Vous n'êtes pas forcément obligés de tester TOUS les exemples, mais l'important est que vous compreniez tout. Faites appel à l'enseignant si vous avez un problème de compréhension.
    Récapitulons ce que vous avez appris dans cette partie 3 :
    • les nombres
    • les chaînes de caractères
    • les listes
    • tout à la fin, la boucle infinie "while"

    4. Tourner en rond

    Pour tester ces nouvelles connaissances, écrivez un code basé sur la boucle while pour faire faire au robot simulé des cercles de plus en plus rapidement.

    5. Autres instructions de contrôle de flux

    • Poursuivez la lecture de la documentation Python et apprenez les instructions : if, for, range, break, continue, else, pass (arrêtez-vous après la section 4.5)
    • Nous allons utiliser maintenant les capteurs du robot pour prendre des décisions en fonction de ce qu'il perçoit. Commençons par la commande alphai.get_blockade() qui indique si le robot est bloqué à cause d'un mur : vérifiez qu'elle renvoie False lorsque le robot n'est pas bloqué, et True lorsqu'il est bloqué par un mur.
    • En utilisant les instructions while, if, else, alphai.get_blockade et alphai.motor, écrivez un code Python pour que le robot aille tout droit lorsqu'il n'est pas bloqué, et se retourne lorsqu'il est bloqué par un mur.

    6. Les scripts

    Les codes Python que nous écrivons sont de plus en plus longs, et les écrire dans la console Python devient de moins en moins pratique. Nous allons donc utiliser plutôt des scripts dorénavant.
    • Quittez la console Python avec exit(), vous retournez dans terminal linux, ne le fermez pas
    • Ouvrez votre éditeur de texte préféré et créez un nouveau fichier Python (il doit se terminer par l'extension .py, par exemple tp2.py)
    • Ecrivez dans le fichier la ligne
    print("Hello World!")
    • Dans le terminal allez dans le dossier où vous avez créé ce fichier en utilisant la commande cd, et exécutez le ainsi : python3 tp2.py, et: vérifiez que Hello World! s'affiche
    • Ecrivez maintenant puis exécutez le code suivant :
    import alphai
    alphai.motor(-20,20,2)
    alphai.motor(30,30,2)
    • Comme vous pouvez le constater les 3 commandes ont été exécutées à la suite l'une de l'autre

    7. Les fonctions

    • Lisez la suite du tutoriel sur les fonctions
    • Créez des fonctions pour faire avancer et tourner le robot qui soient plus simple d'usage que alphai.motor
    • Inventez une nouvelle chorégraphie pour le petit robot simulé ! Vous pourrez également utiliser alphai.set_distance(True) pour activer le capteur ultrason puis alphai.get_distance() pour mesurer la distance entre le robot et le premier mur.

    8. Utiliser l'éditeur geany

    Vous avez vu qu'on peut utiliser Python en entrant des commandes dans la console, ou en exécutant un script. Nous allons désormais utiliser un éditeur léger, geany, pour écrire et exécuter les scripts. Il demande quelques étapes de configuration la première fois :
    • Créer le dossier de configuration : mkdir -p ~/.config/geany/filedefs/
    • Y copier une configuration standard : cp /public/kn/filetypes.python ~/.config/geany/filedefs/
    • Lancez geany (vous pouvez le faire depuis le menu Démarrer) et ouvrez le fichier Python que vous aviez créé précédemment
    • Vous pouvez vérifier qu'il n'a pas d'erreur de syntaxe avec F8 (ou menu Construire > Compile)
    • Vous pouvez l'exécuter dans un terminal avec F5 (ou Construire > Execute) (n'oubliez pas d'avoir lancé ~tdeneux/alphai au préalable)

    9. Contrôler le vrai robot

    A présent, vous avez tous les éléments en main pour prendre le contrôle du vrai robot avec Python ! Connectez vous avez le robot en Bluetooth dans l'interface graphique AlphAI comme vu au premier cours, puis lancez votre script : désormais il contrôle le vrai robot !

    10. Suivre la piste

    Ecrivez votre code Python pour que le robot suive la piste à l'intérieur de l'arène. Vous aurez besoin de nouvelles fonctions de la librairie alphai, notamment pour utiliser les 5 capteurs infra-rouges qui regardent le sol. Vous trouverez la documentation de cette librairie dans le document joint. Notez différentes manières d'importer la librairie ; vous pouvez écrire :
    import alphai
    alphai.motor(-20,20,2)

    ou
    import alphai as ai
    ai.motor(-20,20,2)

    ou encore
    from alphai import motor

    motor(-20,20,2)

    ou encore
    from alphai import *

    motor(-20,20,2)

    Une fois que le robot sait suivre la piste, ajoutez les fonctionnalités suivante :
    • Il s'arrête et attend s'il y a quelqu'un devant lui sur la piste
    • Si on le déplace en-dehors de la piste, il sait la chercher et se remettre dessus !
    Conseils (au cours de la séance nous allons en ajouter, revener voir régulièrement si vous voulez) :
    • Utilisez les fonctions pour écrire tout d'abord des comportements simples, par exemple une fonction pour avancer d'une certaine distance, pour tourner d'un certain angle, etc.