This is an old revision of the document!


Poppy Software

Poppy uses pypot for control. It is a python library : http://poppy-project.github.io/pypot/index.html On the top of pypot are libraries for Poppy creatures : https://github.com/poppy-project

The quick install consists in:

  • install pypot :
     sudo pip install pypot 
  • install your popppy creature. For instance for poppy humanoid :
     sudo pip install poppy_humanoid 
  • to check that the libraries are installed correctly, execute with python the code:
    from poppy_humanoid import PoppyHumanoid
    poppy = PoppyHumanoid()

A good guide can be found here: https://github.com/HumaRobotics/poppy-examples/blob/master/doc/softwareGuide/softwareGuide.pdf. More technical details about pypot, you can look at installation of pypot.

In detail, this is how I installed the software

In detail, this is how I installed the software

  • install the python pypot library :
    sudo easy_install pypot

    or

    sudo pip install pypot
  • install the poppy_humanoid library: download Poppy model
     git clone https://github.com/poppy-project/poppy-humanoid.git 
  • then go to the where-you-downloaded-poppy-humanoid/software folder and install with the terminal command
    python setup.py install
  • To check if everything is installed correctly, you can run the following code from folder where-you-downloaded-poppy-humanoid/software. If it runs without raising an error, everything is probably installed correctly:
    import time
    import math
    import json
    import pypot.robot
    ergo = pypot.robot.from_json('poppy_torso/configuration/poppy_torso.json')

If you have trouble detecting your motors, you can follow the step 2 of https://forum.poppy-project.org/t/first-start-of-poppy and run in python

import pypot.dynamixel
dxl_io_upper = pypot.dynamixel.DxlIO('PORT_UPPER_BODY')
dxl_io_lower =  pypot.dynamixel.DxlIO('PORT_LOWER_BODY')
print dxl_io_upper.scan(range(60))
print dxl_io_lower.scan(range(60))
  • Simple motor command :
    from poppy_humanoid import PoppyHumanoid
    import time
    import pypot.robot
     
    poppy = PoppyHumanoid() # or poppy = pypot.robot.from_config(poppy_config)
    poppy.head_z.compliant =False
    poppy.head_z.max_torque=20
    poppy.head_z.goal_position=20
    poppy.head_z.goto_position(-20,3)
    time.sleep(5)
    print "before moving"
    poppy.head_z.goto_position(40,3, wait=True)
    print "after moving"

code

code

importer des fonctions
import time
import math
import json
import pypot.robot
from pypot.primitive.move import MoveRecorder, Move, MovePlayer
 
#se connecter au robot
ergo = pypot.robot.from_json('poppy_torso/configuration/poppy_torso_broken.json')
 
#on met le robot debout: tous les moteurs a 0
for m in ergo.motors:
    m.compliant=False
    m.goal_position=0.0
 
#imprimer tous les noms des moteurs
for x in range(0,14):
   print "motor ",x," is ", ergo.motors[x].name
 
#indiquer quels moteurs on relache
indices=[10,11,12,13]
for m in [ergo.motors[x] for x in indices]:
   m.compliant=True
 
 
#commencer l'enregistrement
move_recorder = MoveRecorder(ergo, 50, ergo.motors)
move_recorder.start()
print "start"
 
#duree de l'enregistrement
time.sleep(6)
 
#arreter l'enregistrement
print "stop"
move_recorder.stop()
 
for m in range(0,14):
  ergo.motors[m].compliant=False
 
 
#sauvegrader le fichier sous le nom 'my_nice_move.txt'
with open('my_nice_move.txt', 'w') as f:
     move_recorder.move.save(f)
 
 
#rejouer le mouvement sauvegarde sans le fichier
with open('my_nice_move.txt') as f:
     m = Move.load(f)
 
ergo.compliant = False
 
move_player = MovePlayer(ergo, m)
move_player.start()

Other examples can be tested from https://github.com/HumaRobotics/poppy-examples

  • poppy_software.1449069222.txt.gz
  • Last modified: 2019/04/25 14:08
  • (external edit)