programmation pour la robotique, TP 2

Table of Contents

Dans ce TP nous allons utiliser la modélisation par MDP pour résoudre un problème (avec peu d'actions et peu d'états). Nous allons nous intéresser à un problème de chemin dans un graphe, mais à la différence de ce que vous avez pu voir (en INFO1 ou ailleurs), les transitions sont incertaines.

1. Le lac gelé!

Original English Version here

C'est l'hiver. Vous jouez avec vos amis au frisbee dans le parc quand un lancer incontrôlé a pour effet de faire tomber le frisbee au milieu du lac. L'eau est gelée sur presque toute la surface mais il y a quelques trous dans lesquels la glace a fondu. Si vous vous retrouvez au-dessus de l'un de ces trous, vous tomberez dans l'eau glacée. En ce moment, il y a une pénurie mondiale de frisbees, il est donc impératif que vous alliez chercher le frisbee sur le lac et que vous le rameniez. Attention, la glace est glissante, et vous ne vous déplacerez pas forcément dans la direction que vous avez choisie.

Le lac sera modélisé par un graphe, représenté informellement par une illustration comme ci-dessous:

SFFFFFFF
FFFFFFFF
FFFHFFFF
FFFFFHFF
FFFHFFFF
FHHFFFHF
FHFFHFHF
FFFHFFFG

Chaque lettre correspond à un sommet, et il existe un arc entre un sommet et chacun de ses voisins (haut/bas/gauche/droite).

Les lettres indiquent ce que contient chaque état:

S
votre position initiale sur la le lac gelé
G
la position du frisbee
F
le sol est gelé sur ce sommet
H
il y a un trou

Le but est donner une suite d'actions pour rejoindre le sommet G, à partir de votre position initiale S en évitant les trous H. Ces actions sont au nombre de 4 (gauche/bas/droite/haut) et indiquent vers quel sommet voisin vous voulez vous rendre. Attention, ce n'est pas parce que vous décidez d'aller dans une direction que vous y arriverez : vous pouvez glisser et vous retrouver aléatoirement sur un autre sommet voisin !

2. Modélisation par un processus de décision markovien

Rappel: Un MDP est un tuple (S,A,H,T,R,γ) avec

  • S l'ensemble des états
  • A l'ensemble des actions
  • H l'horizon
  • T la fonction de transition (aussi appelée dynamique)
  • R la fonction de récompense
  • γ la dévaluation

Dans notre cas, il y aura :

  • 64 états numérotés de 0 à 63 de gauche à droite et de haut en bas,
  • 4 actions (demander un déplacement à gauche/bas/droite/haut) numérotées de 0 à 3
  • H est infini. Les séquences d'actions S à G les plus courtes sont de longueurs 14 mais il existe des séquences plus longues (et infinies).
  • Pour les transitions, on suppose que la dynamique est connue et donc que l'on connaît les probabilités de transitions. Dans l'implémentation de OpenAI Gym, la dynamique est définie comme suit :
    • pour les sommets s étiquetés G ou H:
      • on reste sur s quelle que soit l'action, en d'autres termes
      • aA,T(s,a,s)=1 ssi s=s, T(s,a,s)=0 sinon;
    • pour les sommets s étiquetés par S ou F:
      • pour toute action a, le résultat peut être de manière équiprobable celui d'aller dans la direction a ou la direction a1 ou la direction a+1;
      • si une action est "impossible", par exemple se diriger vers le haut dans l'état intiale, on considère qu'elle ramène dans l'état actuelle;
  • la récompense est 1 si on se trouve dans l'état étiqueté par G, et 0 sinon.
  • la dévaluation est arbitrairement mise à 0,9.

3. Utilisation de OpenAI Gym

Le site OpenAI Gym propose des modèles d'environnement pour de nombreuses tâches de robotique et plus généralement d'apprentissage par renforcement. Il sert principalement à tester et comparer de nouveaux algorithmes. La tâche qui nous intéresse aujourd'hui est Frozen Lake.

Par le module python gym on peut charger ces environnements et créer un agent qui interagit avec eux.

Le but du TP est de créer un agent pour cet environnement, et de lui faire apprendre un une politique π par les deux algorithmes vus la dernière fois (itération de la politique, itération de la valeur) qui permette à l'agent de récupérer le frisbee de manière fiable.

4. Les étapes du TP:

  1. Téléchargez le carnet ici (clic-droit puis sauvegarder le lien pour éviter les problèmes d'accent dus à l'encodage des pages USPN/LIPN)
  2. Ouvrez une fenêtre de votre navigateur sur colab
  3. Chargez le carnet (FileOpen Notebook …)
  4. Lisez/évaluez/complétez le notebook
  5. Sauvegardez le carnet, et téléchargez-le (FileDownload .ipynb)
  6. Connectez-vous à l'ENT, et à la page du cours de robotique
  7. Soumettez votre carnet sur l'interface de rendu pour la semaine concernée

4.1. Remarques

Vous pouvez installer jupyter notebook sur votre ordinateur personnel et travailler en local. Il vous faudra dans ce cas veiller à installer jupyter et les bibliothèques nécessaires.

Author: Joseph Le Roux

Created: 2025-01-07 Mar 11:52