{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Si vous utilisez ipython 3.x, cette ligne ne sert à rien mais ne gêne pas !\n", "# Avec ipython 2.7, cette ligne est nécessaire pour la syntaxe 'fonction print'.\n", "from __future__ import print_function, division " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Il faut installer les modules Python *pypot*, *poppy-creature* et *poppy-torso* :\n", "- votre PC doit être connecté sur internet\n", "- **Windows** : ouvrir la fenêtre de commande et taper `pip install pypot poppy-creature poppy-torso`\n", "- **Mac OS X** : ouvrir un terminal et taper `sudo pip install pypot poppy-creature poppy-torso`\n", "- **GNU/Linux** : ouvrir un terminal et taper `sudo pip install pypot poppy-creature poppy-torso` (`pip` ou `pip3` en fonction de votre installation)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from pypot.vrep import from_vrep\n", "from poppy.creatures import PoppyTorso" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Cette ligne crée un objet de type PoppyTorso et le connecte sur le simulateur V-Rep :\n", "poppy = PoppyTorso(simulator='vrep')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Echo de la liste des moteurs:\n", "poppy.motors" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut accéder à un moteur directement par son nom :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.l_shoulder_y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut accéder à la position courante (en degrés) d'un moteur :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.l_shoulder_y.present_position" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La liste par compréhension de toutes les positions des moteurs :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "[m.present_position for m in poppy.motors]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Le dictionnaire en compréhension des paires (nom_moteur, posiition_moteur) :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "{m.name: m.present_position for m in poppy.motors}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "À tout moment, vous pouvez ré-initialiser le simulateur :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.reset_simulation()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Maintenant on fait tourner la tête de -45° en 2 secondes :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.head_z.goto_position(-45, 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "goto_position peut prendre un argument wait : ceci permet d'enchainer des mouvements. (wait=True va attendre que le mouvement soit fini avant dexécuter la ligne suivante; wait=False envoie la nouvelle position et passe directement à la ligne suivante:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.head_z.goto_position(45, 2, wait=False)\n", "poppy.head_y.goto_position(-30, 2, wait=True)\n", "poppy.head_z.goto_position(0, 2, wait=True)\n", "poppy.head_y.goto_position(20, 1, wait=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interaction avec des object" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On va utiliser l'interface *io* du robot pour interagir avec des objets." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "io = poppy._controllers[0].io" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Créons un cube devant Poppy :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "name = 'cube'\n", "position = [0., -0.2, 0.8] # X, Y, Z\n", "sizes = [0.1, 0.1, 0.1] # in meters\n", "mass = 0.1 # in kg\n", "io.add_cube(name, position, sizes, mass)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Faisons bouger le bras gauche de Poppy pour entrer en contact avec le cube :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.l_arm_z.goto_position(-30,3)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.l_arm_z.goto_position(0,3)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "io.get_object_position('cube')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "io.get_object_orientation('cube')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }