Comment avoir plusieurs robots simulés à partir d'un unique robot réel

Bonjour @pcfc,

cette possibilité devrait être intégré par défaut dans les prochaines version des robots!

la réelle difficulté est de créer une interface permettant d’offrir une configuration optimale pour l’ensemble des utilisateurs, mais ça, c’est notre problème :wink:

la configuration en elle-même est assez simple et tient en quelques lignes de code placées au bon endroit:

Pour programmer ou visualiser un robot Poppy il vous faut une instance de celui-ci qui s’exécute quelque part

Une fois c’est software à disposition, vous pouvez lancer autant d’instanciation de robot que vous le souhaitez grâce à:

Cette ligne de commande:

poppy-services --poppy-simu --http --http-port 8081 --snap --snap-port 7071 -nb poppy-ergo-jr

Attention, il ne peut y avoir qu’une instance par port! Ainsi, si vous souhaitez en lancer plusieurs, il vous faudra incrémenter la valeur des paramètres snap-port et http-port,
Par exemple:

poppy-services --poppy-simu --http --http-port 8082 --snap --snap-port 7072 -nb poppy-ergo-jr

ces lignes de commande doivent être exécutées dans un terminal (que vous pouvez ouvrir comme indiqué sur l’image ci-dessous)

Ensuite, compléter simplement les paramètres dans snap et dans le visualisateur, à savoir:

  • host (hôte) = <nom_du_robot>.local qui seras toujours le même (c’est la où sont hébergé les instancse des robots)
  • Port = la valeur donnée lors de l’exécution de la commande terminal. Dans notre exemple 7071 ou 7072 pour snap et 8081 ou 8082 pour le visualisateur. (n’oubliez pas, dans le visualisateur, de cocher (ou re-cocher) la case synchroniser pour actualiser les paramètres)

Si vous disposer d’un robot réel, son instance sera toujours disponible sur snap-port 6969 et http-port 8080.

En pratique, il suffira de modifier la valeur de la variable port dans votre projet snap pour contrôler tel ou tel robot ; ou même de supprimer cette variable globale pour la remplacer par une variable “local” (spécifique à un sprite) et ainsi pouvoir contrôler plusieurs robots dans le même projet snap (un robot par sprite, chacun avec une valeur de port différente)

Comment automatiser le procéder. Exécuté 10 fois la même commande à chaque début de cours sur chaque robot peut vite devenir éprouvant :confounded:, alors il vous suffit d’ajouter ces lignes de commande à la suite de celles présentes dans le fichier de lancement accessible sur votre robot à cette adresse http://<nom_du_robot>.local:8888/edit/poppy_src/puppet-master/launch.sh à la fin de chaque commande d’instanciation ajouter le symbole &, exemple:

poppy-services --poppy-simu --http --http-port 8081 --snap --snap-port 7071 -nb poppy-ergo-jr &
poppy-services --poppy-simu --http --http-port 8082 --snap --snap-port 7072 -nb poppy-ergo-jr &
poppy-services --poppy-simu --http --http-port 8083 --snap --snap-port 7073 -nb poppy-ergo-jr &

Puis redémarrer le robot. Attention une erreur dans ce fichier empêcherais le démarrage automatique des différents services du robot…

Il n’y à pas de contrainte ou de limitation particulières, outre que tous les robots (ou ordi) host soit sur le même réseau que l’ordi où seras exécuté snap et le visualisateur.