Académique Documents
Professionnel Documents
Culture Documents
Trois fichiers Python vous seront utiles pour l’ensemble des TPs de ce module. Chacun définit
différentes classes d’objets, et peut être importé comme un module Python dans d’autres scripts. Un
test unitaire peut être lancé en exécutant chacun de ces fichiers.
Robot : définit un objet de type robot par la donnée de son identifiant (numéro), de son type de
dynamique (ex : simple intégrateur), de son vecteur d’état et de son vecteur de commande.
Fleet : définit un objet de type flotte de robots par la donne du nombre de robots la composant,
et d’un tableau d’objets de classe Robot.
Graph : définit un objet de type graphe par la donnée du nombre de nœuds le composant, sa
matrice d’adjacence ainsi que sa matrice de Laplace.
RobotSimulation : définit un objet de type « simulation d’un robot » par la donnée du robot à
simuler, des instants de début et de fin ainsi que du pas de temps de la simulation. Il permet
également de stocker les valeurs des vecteurs d’état et de commande du robot à chaque instant
simulé.
FleetSimulation : définit un objet de type « simulation d’une flotte de robots » par la donnée
du nombre de robots, d’un tableau d’objets de type RobotSimulation, ainsi que des différentes
grandeurs temporelles déjà décrites pour la classe RobotSimulation.
Une fois validés en simulation à l’aide de ces fichiers, vous pourrez implémenter votre code sur le
simulateur Python de Robotarium, puis déposer vos expérimentations en ligne sur
https://www.robotarium.gatech.edu/
Un fichier Consensus.py vous est donné comme base de départ. Il définit la flotte composée des 6
robots (type simple intégrateur en deux dimensions) ainsi que la valeur initiale de leurs états (tirée
aléatoirement) et le graphe de communication.
I.1) De quel type est le graphe de communication défini dans le code ? (vous pouvez vous aider de la
méthode plot de la classe Graph pour le visualiser)
I.3) On s’intéresse maintenant au cas où la topologie de communication est définie par un graphe en
« anneau » comme représenté sur la figure ci-dessous (le numéro dans la légende est celui du robot) :
Faites de même en supprimant une, puis deux, liaison(s) de communication entre les robots.
I.4) On souhaite enfin transmettre une consigne constante de position (valeur du consensus) à la flotte.
En choisissant le premier robot comme « leader », modifiez le calcul de sa commande pour permettre
à la flotte de converger en position vers la référence souhaitée. On utilisera un gain kt différent du gain
kp utilisé pour le consensus. On pourra prendre par exemple comme consigne de référence en position
(xr, yr) = (2,2).
I.5) Implémentez le code développé à la question I.4 sur le simulateur Python de Robotarium. Testez
et validez (le réglage des gains peut être mis à jour par rapport à la question I.4).
I.6) Déposez votre code sur la plateforme en ligne de Robotarium afin de réaliser une expérimentation.