Table of Contents

Poppy robot

Poppy robot is a humanoid robot that can be used with its hardware platform or with a simulator. It can be programmed with python, using the pypot library, or it can also have a web interface with snap.

Quick links

Our robots

We currently have 2 Poppy robots:

We have 2 embedded Odroid processors for our Poppy robot:

Set-up your Poppy

PoppyMotorNamingConvention

Set up the hardware

Set-up the 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:

A good guide can be found here: https://github.com/HumaRobotics/poppy-examples/blob/master/doc/softwareGuide/softwareGuide.pdf. More technical details for your first start of Poppy, after installation of pypot, you can also look into poppy_software

Simulator

A poppy simulator is available with vrep simulator. the installation and the control part.

In details, this is what I did

  1. Downloaded vrep simulator
  2. Downloaded the software
    git clone https://github.com/poppy-project/poppy-humanoid.git
  3. in software folder, run
    sudo python setup.py install
  4. To check if everything is installed correctly, you can run the following code. If it runs without raising an error, everything is probably installed correctly:
     from pypot.vrep import from_vrep
    from poppy.creatures import PoppyHumanoid
  5. To instantiate poppy in vrep
    1. Open vrep
    2. run the following code in python:
      from poppy.creatures import PoppyHumanoid
       
      poppy = PoppyHumanoid(simulator='vrep')
    3. check the communication is fine with the following code:
      poppy.motors
       
      poppy.l_shoulder_y
       
      poppy.head_y.present_position
       
      [m.present_position for m in poppy.motors]

Test the installation :

  1. To test that you can control poppy (its head):
    poppy.reset_simulation()
    poppy.head_z.goto_position(-45, 2)
  2. Now let's make the robot's head move.
    1. In python run the control code:
      import time
      import math
       
      current, goal = [], []
      amp=60
      freq=0.5
      t0 = time.time()
       
      while True:
          t = time.time()
       
          # run for 5s
          if t - t0 > 50:
              break
       
          poppy.head_z.goal_position = amp * math.sin(2 * 3.14 * freq * t)
       
       
          current.append(poppy.head_z.present_position)
          goal.append(poppy.head_z.goal_position)
       
          time.sleep(0.04) 
    2. then plot the goal and actual positions:
      import numpy 
      from matplotlib import pyplot
      t = numpy.linspace(0, 5, len(current))
      pyplot.plot(t, goal)
      pyplot.plot(t, current)
      pyplot.legend(('goal', 'current'))
      pyplot.show()

Our configuration

The configuration file used for the robots are available here poppy-config.zip.

The main differences with the original configuration are:

(note: the head is not working when using all other joints)

If you want to change the configuration of Poppy, here are a few explanations about the trickiest parts:

NB: The angle_limit that appears when you look at the corresponding value of a pypot Motor (for example ergo.l_elbow_y.angle_limit) are relative to the offset and orientation.

With the new version of the robot from february 2017, our customized configuration is no more valide and the configuration from pypot (PoppyHumanoid) can be used.

Programming with the visual programming language Snap!

http://nbviewer.ipython.org/github/poppy-project/pypot/blob/master/samples/notebooks/Controlling%20a%20Poppy%20Creature%20using%20SNAP.ipynb

Commands to use Poppy on the simulator vrep and program it with Snap!

Poppy-Torso with snap Poppy Humanoid with snap
1st way: terminal command
poppy-services --vrep --snap poppy-torso
poppy-services --vrep --snap poppy-humanoid
2nd way : python command
from poppy.creatures import PoppyTorso; 
poppy = PoppyTorso(simulator='vrep', use_snap=True) ;
poppy.snap.run();
from poppy.creatures import PoppyHumanoid;
poppy = PoppyHumanoid(simulator='vrep', use_snap=True); 
poppy.snap.run();

All articles on Poppy:

2018/10/25 09:52Kone
2019/09/06 14:54Loan Guilbaud
2019/07/08 16:46Mai Nguyen
2015/10/28 16:14Nicolas Favé
2020/05/29 22:13Mai Nguyen
2018/08/01 17:11Mai Nguyen
2016/02/19 00:09Mai Nguyen
2016/01/20 10:29 
2017/03/03 15:48Maxime Devanne
2015/10/28 13:01 
2015/12/02 14:45Mai Nguyen
2016/06/20 07:23Projet s4 projet 12 année 2016
2015/10/28 13:01 
2015/10/28 13:01 
2017/08/28 21:22Projet s4
2017/08/28 23:35Projet s4