Utiliser REST APIs

L’API de Snap (sur le port 6969) n’est pas très bien conçue, elle à été faite pour faciliter la cration des blocs en Snap, mais elle peut cependant être facilement utilisée avec des requêtes GET depuis n’importe quel language.
Une façon simple de l’appréhender est de regarder est d’inspecter directement le code.

##Liste des url à utiliser avec l’APIs:

Une liste complet est disponible à l’adresse:

http://<nom_du_robot>:6969/

En voici un petit résumé:

###Moteurs:

Récupérer un groupe de nom de moteur:

http://<nom_du_robot>:6969/motors/<alias>

nb: quand <alias>=motors, renvoie le nom de tout les moteurs.

Récupérer les noms de tout les groupes de moteur:

http://<nom_du_robot>:6969/motors/alias

###Registre:

Récupérer la valeur d’un registre pour un moteur:

 http://<nom_du_robot>:6969/motors/<nom_du_moteur>/get/<nom_du_registre>

Registre existant en lecture:

  • present_position
  • present_speed
  • present_load
  • present_temperature
  • present_voltage
  • led (seleument pour xl320)

Récupérer les positions de tout les moteurs:

http://<nom_du_robot>:6969/motors/get/positions

Modifier la valeur d’un registre:

http://<nom_du_robot>:6969/motors/set/registers/<nom_du_moteur>:<nom_du_registre>:<valeur>;<nom_du_moteur>:<nom_du_registre>:<valeur>; etc

Registre existant en écriture:

  • goal_position
  • goal_speed
  • torque_limit
  • compliant
  • led (seleument avec xl320)

Plus d’info sur: support.robotis/dynamixel: xl-320 (moteurs Ergo_Jr)

###Fonction pypot:
Fonction goto: (où la valeur est en degrés et la durée en seconde)

http://<nom_du_robot>:6969/motors/set/goto/<nom_du_moteur>:<valeur>:<durée>;<nom_du_moteur>:<valeur>:<durée>; etc

Fonction ikpy (cinématique inverse): (pour Ergo_Jr: <chain>=chain)

  • "Allez à" (où x,y,z sont en mètre et la durée en seconde)

      http://<nom_du_robot>:6969/ik/<chain>/goto/<x>/<y>/<z>/<durée>
    
  • "Où est" (Récupérer la position de l’extrémité d’un bras (ou jambe etc), renvoie x,y,z en mètre)

      http://<nom_du_robot>:6969/ik/<chain>/endeffector
    

Fonction QRcode: <marker>= tetris caribou lapin

http://<nom_du_robot>:6969/detetct/<marker>

###Programmation par démonstration:

Enregistrer un nouveau mouvement:

  • Start record:

      http://<nom_du_robot>:6969/primitive/MoveRecorder/<nom_mouvement>/start/<nom_moteurs>;<nom_moteurs>; etc
    
  • Stop record:

      http://<nom_du_robot>:6969/primitive/MoveRecorder/<nom_mouvement>/stop
    

Récupérer la liste de tout les enregistrements:*

http://<nom_du_robot>:6969/primitive/MovePlayer

Jouer un eregistrement:

  • Play move

      http://<nom_du_robot>:6969/primitive/MovePlayer/<nom_mouvement>/start/<speed>
    
  • Play move in inverse

      http://<nom_du_robot>:6969/primitive/MovePlayer/<nom_mouvement>/start/<speed>/backwards
    
  • Stop move

      http://<nom_du_robot>:6969/primitive/MovePlayer/<nom_mouvement>/stop
    

###Primitives

Récupérer la liste de tout les primitives

http://<nom_du_robot>:6969/primitives

Récupérer la liste de tout les primitives active

http://<nom_du_robot>:6969/primitives/running

Jouer une primitive (<action>= start / stop / pause / resume)

http://<nom_du_robot>:6969/primitive/<nom_primitive>/<action>
1 Like