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:
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>