Exécuter un code python directement sur mon ordinateur vs sur le robot (LeapMotion exemple)

Bonjour,

Je participe à un projet où on nous demande de contrôler le robot Poppy-Ergo-Jr avec la LeapMotion pour reproduire certains mouvements.

Nous devons développer une application en utilisant le langage de programmation Python.

Actuellement, pour tester mon application je dois exécuter le code python en local sur la raspberry qui contrôle le robot

Je voudrais pouvoir exécuter ce code directement sur mon ordinateur connecté à la Raspberry.

J’ai installé toutes les bibliothèques nécessaires sur mon PC. Lorsque dans mon application j’instancie simplement un Poppy ergo :

jr = PoppyErgoJr ()

L’application ne peut pas se connecter au robot et affiche l’erreur suivante :

could not open port u’/dev/ttyama0’

Quelq’un a t’il déjà rencontré ce genre d’erreur et réussi à controler le robot à distance en ce connectant sur la raspberry ? Merci d’avance pour votre aide.

Bonjour @GugahBrz,

Je ne suis pas sure de tout comprendre… j’ai donc plusieurs questions avant de pouvoir te répondre:

  • où branche tu le LeapMotion
  • qu’appel tu «mon application»
  • qu’appel tu «contrôler le robot à distance» il y a plusieurs niveau de contrôle…

bref il me faudrait beaucoup plus de détails sur ton projet car pour le moment certain élément se “contredise” :wink:

dans ce cas, la Raspberry ne sert que de relais d’information, autant brancher directement les moteurs à ton ordinateur… mais on peut imaginer plein d’autres choses…

dit m’en plus :wink:

Bonjour @tibo,

Le LeapMotion est branché sur mon ordinateur.

C’est simplement un fichier .py a faire l’instantiation du Poppy et du Leap.

Avec «à distânce» je veux dire lancer le code python sur l’ordinateur, et pas sur la raspberry.

Je pense, mais je n’ai aucune idée de comment faire la connexion entre les moteurs et l’ordinateur, sans la plaque.

Dans ce cas, l’unique option c’est de lancer les fichers .py sur la plaque ? Donc je dois créer une «listener» pour le Leap dans la raspberry ?

Le projet c’est simple, je veux simplement brancher le Poppy et le Leap sur mon ordinateur et lancer un code python pour controler le robot avec le Leap.

Je peux vous donner des informations plus spécifiques si vous voulez :slight_smile:

Merci Beaucoup !

Quand je conecte la raspberry avec mon ordinateur par cable ethernet, je suis capable d’acceder par ssh à la raspberry, donc je peu lancer le code suivante:

    jr = PoppyErgoJr()
    jr.m3.goal_position = 30

Ça marche.

Par contre, si je lance le meme code sur mon ordinateur, j’obtiens l’erreur suivante:

could not open port u’/dev/ttyama0’

Ce port est configure sur la raspberry dans le fichier poppy_ergo_jr.json, ça veut dire que, peut-être, il manque dans mon code des instructions pour acceder de mon ordinateur a ce port dans la raspberry. Je n’ai pas trouvé dans la documentation poppy comment le faire.

Merci encore :slight_smile:

Bonjour @GugahBrz,

je comprends mieux.

Petit recap:

  • Les moteurs sont des servomoteurs possédant des microcontrôleurs internes pilotés par un driver propriétaire (dynamixel)
  • Ces servomoteurs sont branchés à un contrôleur (un ordi, ici une Raspberry).
  • Une partie de la bibliothèque pypot (rédiger en python) se charge de faire le liens entre les servomoteurs et le contrôleur. (commandes “bas-niveau”)
  • Une autre partie se charge d’exécuter les commandes “haut-niveau” (e.g. fonction goral_positioin)
  • Ces deux parties demandent l’exécution d’une seconde bibliothèque qui est spécifique à la créature utilisée (ici Poppy ErgoJr).
  • Une dernière partie de la bibliothèque pypot se charge de l’API (qui permet de contrôler le robot via des requêtes URL comme avec snap!) et aussi du serveur web permettant d’afficher la “home page”, etc.

Cela étant dit, si tu souhaites exécuter des fonctions de pypot (rédigées en python), tu dois le faire sur la machine où sont branchés les moteurs. donc si tu souhaites l’exécuter sur ta machine, il faut 1: installer python et les bibliothèques nécessaire (tu l’as fait) ET 2: connecter les moteurs à ton ordi (avec un connecteur usb2dynamixel) et 3: plusieurs petits détails à configurer (car c’est une utilisation peu courante avec ErgoJr)
OU
Tu peux exécuter ton code python sur ta machine mais en utilisant les requêtes URL pour contrôler le robot et non les fonctions natives en python comme goal_position qui doivent s’exécuter sur la machine où sont branchés les moteurs.
Tu peux fouiller un peu plus sur le forum… il y a plusieurs post autour de l’API (e.g utiliser-rest-apis)

J’espère que c’est plus clair pour toi et que ça va te servir à mieux structurer ton projet.
J’attends tes prochaines question :wink:

1 Like

Merci beaucoup @tibo !

Je vais essayer l’api !

Je vous tiens au courant :slight_smile:

1 Like