Caméra non visible Snap!


#1

Bonjour à tous,

J’ai un petit problème à résoudre, peut être une bêtise, mais je ne vois vraiment pas comment le résoudre.

Quand j’ouvre snap! sur mon pc portable j’ai le logo de la caméra qui s’affiche dans l’interface snap!. J’appuie dessus, et je peux lire le flux de ma webcam dans une fenêtre. Tout va bien jusque là.

Puis je me connecte avec l’ip sur la page web du robot. Je sélectionne snap! J’inclus la librairie des robots poppy. je me connecte bien au robot (la connexion est ok). Pourtant le logo de la camera dans snap! n’est pas apparu.

La camera est fonctionnelle sur le robot car je travaille en python sur le traitement d’image dans jupyter.
Avez- vous déjà été confrontéà ce problème ?

Merci d’avance pour vos réponses,
SpaceX

PS: La camera est bien activée quand je regarde dans la configuration du robot dans son interfae web


#2

Bonjour @spaceX,

alors la réponse est assez simple.

tu es sur la version online (la version la plus récente 4.1.2.7)

tu arrive sur la version offline enregistré dans le robot (4.0.10.1) cette version n’intègre pas l’accès à la webcam ET quand bien même :

snap s’exécute directement dans le navigateur web, ainsi les différents bloc récupèrent les informations issu du poste où est exécuté snap (par exemple donne la position de votre souri et non celle d’une éventuelle souri branché sur les port usb du robot) il en va de même pour la webcam.
Donc même si tu utilise la dernière version de snap en “offline, enregistré sur le robot” tu ne pourras accéder qu’a ta camera.

Une solution serais de rajouter une entrer dans l’API snap comme je l’avais décrit ici :
https://forum.poppy-project.org/t/get-picture-from-ergojr-camera-with-api-e-g-for-snap/?source_topic_id=3718
cependant, cette méthode n’ai pas très efficace …


#3

excuse moi @tibo , je vais te demander des précisions car l’informatique n’est pas mon dada ( depuis 2 mois je découvre les serveurs web, il me faut le temps de digérer l’information). En plus de cela ma filliaire est l’électronique, je n’ai pas encore une assez bonne base l’informatique je découvre encore.

Si j’ai bien compris, le robot lance le serveur snap. La page générée (interface web snap) échange des informations entre l’utilisateur et le serveur au moyen de bloc. Ces blocs viennent d’où ? Ils sont enregistrés sur le robot?

Cette version ne peut pas m’afficher la caméra du robot dans snap car il n’y a rien (pas de bloc) qui puisse gérer ce périphérique. je suis toujours dans le bon?


#4

ne t’excuse pas @spaceX le niveau des utilisateurs de la plateforme poppy est très hétérogène, mais c’est tant mieux, les plus aguerries peuvent aider le plus novice, on l’a tous était un jour :wink:

Il n’ai pas toujours évident de se représenter où s’exécute les choses:

au démarrage l’ordinateur du robot lance python.
un robot est instancier, une API est lancé ainsi qu’un serveur web pour générer la homepage poppy.

Depuis la homepage, on peut accéder à ipython notebook ou snap

  • snap s’exécute directement (et uniquement) dans le navigateur de votre ordinateur. Il utilise les requêtes de l’API pour contrôler le robot.
  • ipython s"affiche dans le navigateur de votre ordinateur mais s’exécute sur le robot. Il utilise les commandes native du robot.

Si vous connecter un périphérique (webcam, leapmotion, makey makey, etc) et que vous souhaitez le contrôler

  • en snap, il doit être brancher à votre ordinateur.
  • en python, il doit être brancher à l’ordinateur du robot ou le votre, mais la méthode diffère selon les cas.

une astuce: si vous souhaitez contrôler un périphérique branché sur le robot avec snap,
vous pouvez ajouter des ‘url’ spécifiques dans l’API rendant cela possible. un exemple ici: https://forum.poppy-project.org/t/get-picture-from-ergojr-camera-with-api-e-g-for-snap/
ou exécuter snap dans un navigateur lancé sur l’ordinateur du robot (connectez écran, clavier, souri, et autres périphériques à la Raspberry.)

Concernant snap:
les blocs du robot sont construit à partir des blocs originel de snap. Tout ces blocs robot se clôture par une ‘url’ correspondant à une commande dans l’API. Dans sa, vous pouvez faire ‘clic droit’ editer le bloc pour observer comment il sont construit et remonter jusqu’a l’url de chacun d’eux.
On charge ces blocs robots dans via en ouvrant “un projet snap” contenant les blocs, et quelque variable indispensable. Vous pouvais créer vos propre blocs. Et vous pouvais ajouter des url dans le fichier de l’API poppy_src / pypot / server / snap.py1 via l’arboréssence ipython notebook qui vous permet d’accéder à ce fichier.
à la ligne 362 ajouter
@self.app.get(’/un_nom/<un_paramettre>/<un_deuxieme_paramettre>’)
def ma_fonction(un_paramettre, un_deuxieme_paramettre):
output=do_anythink
return output

Ce projet peut être chargé dans différente version de snap. La dernière enregistré dans le robot est la 4.0.10.1 ; la dernière disponible en ligne est la 4.1.2.7. Il y a eu de nombreuse amélioration de snap entre ces deux versions. Notamment l’icône, ‘execution pas à pas’ ou l’icône permettant de prendre un photo avec la webcam.

J’espère que c’est plus clair :wink:


#5

un grand merci @tibo ! tu m’as montré le lien que je ne comprenais pas ! l’API! je vais essayer de faire quelques recherches sur les APIs (j’imagine qui y en existe des milliers) pour comprendre ce que c’est concrètement.

Tout est clair, un grand merci. Étant donné que le robot n’est pas le mien et qu’il me reste moins de 3 semaines de stage, je ne vais pas m’aventurer dans la modification de l’API.

Je vais essayer de voir si il y a moyen de programmer un mouvement dans un fichier python que j’exécuterai en SSH.