def from_poppy_creature(cls, poppy, motors, passiv, tip,
                            reversed_motors=[]):
        """ Creates an kinematic chain from motors of a Poppy Creature.

            :param poppy: PoppyCreature used
            :param list motors: list of all motors that composed the kinematic chain
            :param list passiv: list of motors which are passiv in the chain (they will not move)
            :param list tip: [x, y, z] translation of the tip of the chain (in meters)
            :param list reversed_motors: list of motors that should be manually reversed (due to a problem in the URDF?)

        """
        chain_elements = get_chain_from_joints(poppy.urdf_file,
                                               [m.name for m in motors])

        activ = [False] + [m not in passiv for m in motors] + [True]

        chain = cls.from_urdf_file(poppy.urdf_file,
                                   base_elements=chain_elements,
                                   last_link_vector=tip,
                                   active_links_mask=activ)

        chain.motors = [getattr(poppy, l.name) for l in chain.links[1:-1]]

        for m, l in zip(chain.motors, chain.links[1:-1]):
            # Force an access to angle limit to retrieve real values
            # This is quite an ugly fix and should be handled better
            m.angle_limit

            bounds = m.__dict__['lower_limit'], m.__dict__['upper_limit']
            l.bounds = tuple(map(rad2deg, bounds))

        chain._reversed = array([(-1 if m in reversed_motors else 1)
                                 for m in motors])

        return chain
Creates an kinematic chain from motors of a Poppy Creature.

            :param poppy: PoppyCreature used
            :param list motors: list of all motors that composed the kinematic chain
            :param list passiv: list of motors which are passiv in the chain (they will not move)
            :param list tip: [x, y, z] translation of the tip of the chain (in meters)
            :param list reversed_motors: list of motors that should be manually reversed (due to a problem in the URDF?)