Simulateur Johnny 2.0

Ressources :
- Johnny2_simu_Cpp.7z : source C++
(nécessite la librairie OpenCV)
- Johnny2_simu_Java.7z : source Java
- Johnny2_simu.jar : jar exécutable
Description :
Ce simulateur permet de simuler le comportement de Johnny 2.0 dans deux conditions lumineuses, lumière au centre et lumière sur les bords, tout en observant l’ensemble des paramètres et variables internes de robot. Il est également possible de modifier certains paramètres pendant la simulation, comme les valeurs synaptiques, et d’attribuer des "récompenses" et des "punitions" pour influencer le comportement du robot.
Affichage de la simulation :
- Environnement

À droite de l’environnement sont affichés des informations sur la simulation et des boutons permettant de contrôler le déroulement de la simulation :
-affichage des capteurs de lumière : ces histogrammes indiquent la quantité de lumière reçue par chaque capteurs.
-affichage du nombre de pas : indique le nombre de cycle de simulation écoulés depuis le début de la simulation.
-bouton de changement de lumière : permet d’échanger les conditions d’éclairage : lumière au centre (par défaut) et lumière sur les bords. Ce changement permet de tester les capacités d’adaptation du robot aux variations de son environnement.
-bouton de démarrage/pause : permet de lancer la simulation ou la mettre en pause.
-bouton stop : arrête et réinitialise la simulation. Le compteur est remis à 0.
-bouton d’enregistrement : lorsqu’il est activé, le simulateur va à chaque pas, écrire les valeurs internes dans un fichier texte
Johnny2_simu.txt
. Une ligne s’écrit sous la forme :pas capteurG capteurD bumper moteurG moteurD astrocyteG astrocyteD synapseG+ synapseG- synapseD+ synapseD- valeur_interneG valeur_interneD conditions_lumineuses
- Système neuronal

À droite du réseau, des réglettes permettent de visualiser et modifier les valeurs internes :
- récompense et punition permettent d’attribuer une valeur de récompense ou de punition qui sera pris en compte au prochain changement de valeur des astrocytes. Ils permettent d’influencer l’apprentissage indépendamment des valeurs internes.
- synapses : ces réglettes affichent la valeur actuelle des quatre poids synaptiques du réseau (gauche excitateur, gauche inhibiteur, droite excitateur, droite inhibiteur), et permettent de les modifier.
- Courbes des valeurs internes

- valeurs du capteur de luminosité gauche (jaune)
- valeurs du capteur de luminosité droit (jaune)
- valeurs des synapses gauches, excitateur (jaune) et inhibiteur (bleu)
- valeurs des synapses droits, excitateur (jaune) et inhibiteur (bleu)
- valeur de sortie des astrocytes gauche et droit (vert). Cette valeur vient s’ajouter aux poids synaptiques. Contrairement au robot physique, Lorsque la valeur interne des astrocytes passe en négatif, la fréquence et l’amplitude augmente pour permettre au robot de se tester rapidement des solutions. Cette variation n’a pas été implémenté sur le robot physique en raison des limitations de son microcontrôleur.
- vitesse des moteurs gauche et droit (rouge).
Expériences :
Dans un premier temps, le robot augmente progressivement sa vitesse, puis heurte un mur. Après quelques collisions, il associe la collision à l'absense de lumière, et adope un comportement photovore et tourne autour de la source lumineuse (0:30). Puis, comme le capteur du coté de l'ombre ne permet plus de détecter une collision, le robot adopte un comportement semi-photovore n'utilisant qu'un seul capteur (0:55) et tourne autours de la source lumineuse dans l'autre sens. Après quelques tours sans collision, il recommence à se diriger vers l'obscurité (1:30), et le cycle recommence. On change alors les conditions lumineuses (1:53). Le robot, photovore, se dirige vers le mur. Après collision, il avance doucement, et finit par adopter un comportement photophobe lui permettant de rester loin des murs (2:35).