{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Les commandes de bas niveau pour configurer un moteur xl-320" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Importer les modules necessaires." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pypot.dynamixel\n", "import time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Connecter les moteurs au niveau logiciel." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Trouver le port sur lequel est branché le moteur " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['/dev/ttyAMA0']\n" ] } ], "source": [ "print(pypot.dynamixel.get_available_ports())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ouvrir une communication série avec le moteur :" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "dxl_io = pypot.dynamixel.Dxl320IO('/dev/ttyAMA0')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cherche les moteurs connectés sur le bus (il en faut un seul avec l'ID 1 pour la première utilisation) :" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 4, 5, 6]\n", "6\n" ] } ], "source": [ "motors = (dxl_io.scan(range(60)))\n", "print(motors)\n", "print(len(motors))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Modifier l'identifiant d'un moteur (ID) :" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#Remplace l'ID 1 par 2 sur le moteur 1.\n", "#Attention, les moteurs doivents tous avoir une ID différente sur le même bus. \n", "dxl_io.change_id({1:2}) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Retourne la position cible pour le moteur 1 :" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(117.16,)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dxl_io.get_goal_position({1})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Donne un objectif de position pour le moteur 1 :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "dxl_io.set_goal_position({12: 60})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ferme la connexion avec les moteurs :" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [], "source": [ "dxl_io.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Contrôler plusieurs moteurs en continue" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from pypot.dynamixel import autodetect_robot\n", "my_robot = autodetect_robot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Afficher les moteurs de my_robot :" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_robot.motors" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Faire bouger le moteur 2 jusqu'à la position 0 degrés en 2 secondes :" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "my_robot.compliant = False" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [], "source": [ "my_robot.motor_2.goto_position(0,2)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Aller plus loin dans les commandes possibles : \n", "\n", "La documentation de Pypot : https://poppy-project.github.io/pypot/\n", "\n", "Le projet Poppy : https://www.poppy-project.org/fr/" ] } ], "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.2" } }, "nbformat": 4, "nbformat_minor": 0 }