Découvrez nos
ressources

Activité : AlphAI télécommandé


Matériel nécessaire :

  • 1 ordinateur/robot
  • 1 robot minimum ou simulation dans le logiciel
  • Arène optionnelle pour activités (course de robot)

Configuration logiciel :

  • configuration d'exemple : dépend de la mise en situation du code

Durée :

1 à 2 heures

Age :

+ 14 ans

Les + de cette activité :

  • Peut être réalisée avec le simulateur
  • Très bonne introduction à la programmation

Dans cette activité de programmation Python, les élèves apprennent à envoyer des commandes au robot en fonction des touches enfoncées au clavier, puis à organiser une course de robots.

[Contenu vidéo à venir]

Prise en main du robot

Le module alphai.py permet d’envoyer au robot des instructions écrites en python.

Pour que le module fonctionne, le logiciel « AlphAI » doit être lancé. Vous pouvez vous connecter à un robot AlphAI (ou à sa version simulée).

Dans votre éditeur Python favori, créez un nouveau projet à l’emplacement de votre choix et configurez l’environnement Python pour qu’il contienne le module alphai en tapant dans la console IPython ou un terminal :

pip install alphai-api

Cette commande va télécharger et installer le module et ses dépendances.

Ouvrez un nouveau document python ou redémarrez la console, recopiez-y puis exécutez le code suivant :

from alphai import *

motor(30, -30, 5)

Si la première ligne du programme cause une erreur, c’est que la librairie alphai n’a pas été installée correctement. Si la ligne motor(30, -30, 5) cause une erreur, c’est probablement que le logiciel AlphAI n’a pas été démarré.

S’il n’y a pas d’erreur, vous observez le robot (ou le robot simulé dans le logiciel) tourner sur lui-même pendant 5 secondes.

La commande motor(left, right, duration) envoie les valeurs left et right aux moteurs gauche et droit du robot pendant la durée duration, après quoi il s’arrête. Les valeurs left et right doivent être comprises entre -50 et +50. Si la durée n’est pas précisée, alors le robot continue d’avancer jusqu’au prochain appel motor(0,0).

⚠️ Il est possible et parfois utile d’effectuer la connexion dans votre script python plutôt qu’en cliquant « connexion » dans le logiciel, en utilisant les fonctions connect_bluetooth(n) (en remplaçant n par le numéro de votre robot) ou connect_wifi(), ainsi que disconnect() pour se déconnecter.
Le code dans ce cas-là se présente ainsi :

from alphai import *

connect_bluetooth(n)
motor(30, -30, 5)

disconnect()


Vous trouverez à la droite de cette page, dans les annexes à télécharger, la documentation de la bibliothèque alphai-api qui contient l’ensemble des fonctions incluses dans la librairie alphai. Consultez-la dès maintenant pour en prendre connaissance.

Premier script

Vous allez à présent créer un script Python dans votre environnement de programmation favori.

Créez un nouveau fichier Python et recopiez le code suivant :

from alphai import *


if _ _name_ _ == '_ _main_ _':
    connect_bluetooth(n)
    motor(30,30,1)
    disconnect()

Puis exécutez-le : le robot avance pendant une seconde puis s’arrête.

La commande motor(left, right, duration)envoie les valeurs left et right aux moteurs gauche et droit. Ces valeurs doivent être comprises entre -40 et +40. Naturellement, on arrête le robot avec motor(0, 0).

Vous trouverez à la droite de cette page, dans les annexes à télécharger, la documentation de la bibliothèque alpha-api qui contient l’ensemble des fonctions incluses dans la librairie alphai. Consultez-la dès maintenant pour en prendre connaissance.

Programmation d’une séquence

Pour faciliter la suite de votre codage, définissez les cinq fonctions suivantes. Faites des fonctions très simples : chacune doit seulement réaliser un appel à la fonction motor.

forward()

Fait avancer le robot tout droit.

backward()

Fait reculer le robot.

stop()

Arrête le robot.

left()

Fait pivoter à gauche le robot.

right()

Fait pivoter à droite le robot.

Enfin, créez une fonction walk_around() qui fait faire une séquence d’actions au robot en utilisant ces cinq fonctions. Testez-la en l’appelant dans le bloc main.

Programmation du téléguidage

Lecture des touches pressées

À l’aide de la fonction de l’API wait_for_key (voir les explications en dernière page) et d’une boucle while dans la fonction main, imprimez dans la console avec la fonction print les touches pressées sur le clavier. Pour éviter d’écrire une boucle infinie, prévoyez une touche spéciale qui permet de quitter la boucle, par exemple la touche « échap » (« esc » en anglais) :

keys = []

while "esc" not in keys:

    # n’oubliez pas l’indentation

Programmation du téléguidage

Toujours à l’aide de la fonction wait_for_key et d’une boucle while, créez une fonction remote_control()qui réagit aux touches directionnelles de telle sorte que le robot se déplace selon les instructions données au clavier. Pour récupérer la dernière touche enfoncée, sélectionnez le dernier élément dans la liste grâce à l’indice -1. Attention : la liste peut être parfois vide !

Pensez à faire stopper le robot lorsqu’aucune touche n’est pressée. Testez votre code en téléguidant le robot !

Pour aller plus loin

Nous allons pouvoir organiser des courses entre vos robots téléguidés, mais vous aurez aussi intérêt à améliorer votre programme en ajoutant de nouvelles commandes comme proposé ci-dessous… Ces améliorations ne sont que des propositions, n’hésitez pas à créer vos propres améliorations !

Différents virages

Créer deux nouvelles fonctions que vous pourrez utiliser lorsque la fonction wait_for_key renvoie une liste de plusieurs touches :

forward_left()

Fait avancer le robot vers la gauche lorsqu’on appuie simultanément sur les flèches du haut et de gauche. Ainsi on pourra faire faire au robot à la fois des virages serrés avec left() (flèche de gauche seule) et des virages larges avec forward_left() (flèches du haut et de gauche).

forward_right()

De même fait avancer le robot vers la droite lorsqu’on appuie simultanément sur les flèches du haut et de droite.

Freinage et boost

Ajouter des variables d’entrée à toutes vos fonctions pour pouvoir moduler la vitesse du robot, ou la force des virages, en fonction d’autres touchez qui seront pressées.

Par exemple ajoutez une variable d’entrée speed à toutes vos fonctions (par exemple forward(speed)), et appelez les fonctions avec une vitesse plus faible lorsqu’on appuie en même temps sur la barre d’espace (freinage), et plus forte lorsqu’on appuie en même temps sur la touche « x » (« boost »).

Pilotez votre robot et ajustez les paramètres de vitesse pour réussir à rendre le robot le plus maniable et le plus rapide possible. N’oubliez pas de vous exercer également à doubler des concurrents !

Programmation d’une séquence

Sur la touche de votre choix, faire réaliser au robot une petite chorégraphie, par exemple pour célébrer la victoire !

Bilan et retours d'expérience

En programmation, la liste des fonctions accessibles d’un programme s’appelle API, pour Application Programming Interface, Interface de Programmation d’Application. Elle est utilisée par les programmeurs pour savoir comment interagir avec le programme. Vous trouverez l’API du module python alphai en suivant ce lien : https://drive.google.com/file/d/1C4ovPW_eH5KFz5Y9JvSrzLhtmdOpcp6-/view