{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "##Decouverte – Niveau 1 - Python\n", "\n", "###TP3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pour commencer votre programme python devra contenir les lignes de code ci-dessous et le logiciel V-REP devra être lancé.\n", "\n", "\n", "- Dans V-REP (en haut à gauche) utilise les deux icones flèche pour déplacer la vue et regarder poppy sous tous les angles.
\n", "- Dans notebook, utilise le raccourci 'Ctrl+Enter' pour éxécuter les commandes." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from poppy.creatures import PoppyTorso\n", "poppy = PoppyTorso(simulator='vrep')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Boucle et memoire

\n", "\n", "

Les dictionnaires

\n", "\n", "Les dictionnaires varient des listes dans l'accès aux éléments.\n", "\n", "Comme nous l'avons vu l'accès aux éléments de la liste se fait grâce à leur numéro d'index.
\n", "Pour accéder aux éléments d'un dictionnaire, nous passons par une clé.\n", "\n", "Essaies les commandes:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print \"\\n------------\\nDico :\"\n", "dico = {}\n", "for m in poppy.motors: dico[m.name] = m.present_position\n", "print dico\n", "\n", "print '\\n------------'\n", "print 'Valeur à la clé head_z :', dico['head_z']\n", "print 'Valeur à la clé head_y :', dico['head_y']\n", "print 'Valeur à la clé l_arm_z :', dico['l_arm_z']\n", "\n", "print '\\n------------\\nDico :'\n", "for m in dico:\n", " print 'cle: ',m\n", " print 'valeur : ',dico[m]\n", " print '-'\n", "print 'fin\\n-------------'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ainsi, il suffit de connaitre la clé pour récupérer l'information associée.
\n", "Cette information stockée peut-être: du texte, une variable, une liste, un dicitionnaire, etc\n", "\n", "Pour récupérer l'ensemble des clés d'un dictionnaire essaies la commande:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "dico = { m.name : m.present_position for m in poppy.motors }\n", "cle = dico.keys()\n", "print cle\n", "\n", "compteur = 0\n", "for m in cle:\n", " compteur = compteur + 1\n", " print 'clé : ', m\n", " \n", "print '\\nNombre total de clé = ', compteur\n", "print \"Nombre d'élément dans la liste 'cle' = \", len(cle)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Boucle while & condition

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Essaies les commandes:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "poppy.head_z.goal_position = 0\n", "poppy.head_z.goal_position = 90\n", "poppy.head_z.goal_position = 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Se passe-t-il quelque chose ? oui / non\n", "- Y-a-t-il un bug ? oui / non\n", "- les commandes s'éxecutent-t-elles? oui / non\n", "- trop vite? oui / non\n", "\n", "Essaies les commandes:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import time\n", "poppy.head_z.goal_position = 0\n", "time.sleep(.1)\n", "poppy.head_z.goal_position = 90\n", "time.sleep(.1)\n", "poppy.head_z.goal_position = 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On comprend mieux ce qu'il se passe: les commandes s'éxecutent trop rapidement pour l'observer.\n", "\n", "On voudrait trouver une méthode pour attendre qu'une condition soit remplie ; autrement dit:\n", "\n", "Tant que (while) 'attendre' est vrai (True) : (faire), si (if) la position du moteur est égale (==) à la position voulue : (faire), 'attendre' devient faux (False).\n", "\n", "Ceci se traduit par:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "attendre = True\n", "\n", "poppy.head_z.goal_position = 90\n", "\n", "while attendre == True:\n", " time.sleep(1)\n", " if poppy.head_z.present_position == 90:\n", " attendre = False\n", " \n", "poppy.head_z.goal_position = 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut même récupérer le temps (approximatif) qu'il a fallu pour effectuer le mouvement.\n", "\n", "Comment ?\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#essaies ton code ici\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# correction\n", "def time_position(m,goal,unite=0.001):\n", " start,attendre,tps=m.present_position,True,0\n", " poppy.head_z.goal_position = goal\n", " while attendre==True:\n", " time.sleep(unite) \n", " if poppy.head_z.present_position == goal: attendre=False\n", " else: tps+=1\n", " poppy.head_z.goal_position = start\n", " return tps\n", "\n", "print time_position(poppy.head_z,90), 'milliseconde'\n", "time.sleep(1)\n", "print time_position(poppy.head_z,90,1), 'seconde'\n", "time.sleep(1)\n", "print time_position(poppy.head_z,90,.1), 'dixième de seconde'\n", "time.sleep(1)\n", "print time_position(poppy.head_z,90,.01), 'centième de seconde'\n", "\n", "for i in range(5): #problème précision\n", " time.sleep(0.5)\n", " print time_position(poppy.head_z,90)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "_________________________________________________________________\n", "\n", "\n", "#### Tu as raté? c'est pas grâve, recommmence, essaies ces lignes pour redémarrer :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "messager.reset_simulation()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Encore buger ? essaies celles-ci :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pypot\n", "poppy.stop_simulation()\n", "pypot.vrep.close_all_connections()\n", "\n", "from poppy.creatures import PoppyTorso\n", "poppy=PoppyTorso(simulator='vrep')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "####Tu as fini? coupes la simulation ici:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pypot\n", "poppy.stop_simulation()\n", "pypot.vrep.close_all_connections()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.9" } }, "nbformat": 4, "nbformat_minor": 0 }