{"id":5552,"date":"2018-10-30T17:04:16","date_gmt":"2018-10-30T16:04:16","guid":{"rendered":"https:\/\/blog.generationrobots.com\/?p=5552"},"modified":"2023-03-29T10:38:06","modified_gmt":"2023-03-29T08:38:06","slug":"cozmo-sdk-deux-methodes-pour-se-connecter-au-robot","status":"publish","type":"post","link":"https:\/\/www.generationrobots.com\/blog\/fr\/cozmo-sdk-deux-methodes-pour-se-connecter-au-robot\/","title":{"rendered":"Cozmo SDK : deux m\u00e9thodes pour se connecter au robot"},"content":{"rendered":"\n<html>\n <body>\n  <h2 class=\"wp-block-heading\" id=\"h-objectif-se-connecter-a-cozmo-et-executer-un-script-python\">\n   <strong>\n    Objectif : se connecter \u00e0 Cozmo et ex\u00e9cuter un script python\n   <\/strong>\n  <\/h2>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    <strong>\n     <span style=\"color: #00ccff;\">\n      Dur\u00e9e :\n     <\/span>\n     15 minutes\n    <\/strong>\n   <\/li>\n   \n   \n   <li>\n    <strong>\n     <span style=\"color: #00ccff;\">\n      Niveau de difficult\u00e9 :\n     <\/span>\n     facile\n    <\/strong>\n   <\/li>\n   \n   \n   <li>\n    <strong>\n     <span style=\"color: #00ccff;\">\n      Objectif :\n     <\/span>\n     se connecter \u00e0 Cozmo et ex\u00e9cuter un script Python\n    <\/strong>\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-les-prerequis\">\n   <strong>\n    Les pr\u00e9requis\n   <\/strong>\n  <\/h2>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    Avoir install\u00e9 et activ\u00e9 Cozmo SDK (consulter notre tutoriel\n    <a class=\"catalogue\" href=\"\/blog\/fr\/comment-activer-le-mode-sdk-de-cozmo\/\" title=\"Cozmo SDK : comment activer le mode SDK de Cozmo\">\n     Cozmo SDK : comment activer le mode SDK de Cozmo)\n    <\/a>\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-explication-sur-les-connexions-au-robot-cozmo\">\n   Explication sur les connexions au robot Cozmo\n  <\/h2>\n  \n  \n  <p>\n   Une fois que les connexions physiques entre le robot Cozmo, le smartphone et le PC sont effectu\u00e9s, il faut lancer le script Python. Que se passe-t-il une fois que ce dernier est ex\u00e9cut\u00e9 ?\n  <\/p>\n  \n  \n  <p>\n   Lorsque vous lancez un script Python pour le robot Cozmo, une connexion doit se faire entre Cozmo et votre ordinateur. Cette connexion, ainsi que la communication avec le robot\u00a0sont g\u00e9r\u00e9es au travers d&rsquo;une instance de l&rsquo;objet\n   <em>\n    <a href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.robot.html#cozmo.robot.Robot\">\n     cozmo.robot.Robot\n    <\/a>\n   <\/em>\n   . Cette instance permet de prendre le contr\u00f4le du robot.\n  <\/p>\n  \n  \n  <p>\n   L&rsquo;instance\n   <em>\n    cozmo.robot.Robot\n   <\/em>\n   est cr\u00e9\u00e9e \u00e0 la connexion. Il existe plusieurs mani\u00e8res de l&rsquo;initialiser. Dans ce tutoriel, nous allons abord\u00e9 les deux mani\u00e8res les plus simples, que sont les m\u00e9thodes\n   <em>\n    run_program()\n   <\/em>\n   et\n   <em>\n    connect()\n   <\/em>\n   . Il existe une m\u00e9thode plus avanc\u00e9e que nous verrons dans un autre tutoriel.\n  <\/p>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-se-connecter-au-robot-les-methodes-run-program-et-connect\">\n   Se connecter au robot : les m\u00e9thodes run_program() et connect()\n  <\/h2>\n  \n  \n  <h3 class=\"wp-block-heading\" id=\"h-methode-1-cozmo-run-program\">\n   M\u00e9thode 1 : cozmo.run_program()\n  <\/h3>\n  \n  \n  <p>\n   Pour g\u00e9rer facilement la connexion \u00e0 Cozmo, le fabricant Anki a mis en place une la fonction\n   <em>\n    run_program(),\n   <\/em>\n   qui rend le processus de connexion tr\u00e8s simple.\n  <\/p>\n  \n  \n  <p>\n   La fonction\n   <em>\n    run_program()\n   <\/em>\n   prend en param\u00e8tre une fonction. Cette fonction est ex\u00e9cut\u00e9e lorsque la connexion au robot est obtenue. Par exemple, lorsque\n   <em>\n    cozmo.run_program(fonction_a_executer)\n   <\/em>\n   est ex\u00e9cut\u00e9e,\n   <em>\n    run_program()\n   <\/em>\n   passera en param\u00e8tre\u00a0l&rsquo;instance de\n   <em>\n    cozmo.robot.Robot\n   <\/em>\n   obtenue, \u00e0 la fonction\n   <em>\n    fonction_a_executer\n   <\/em>\n   .\n  <\/p>\n  \n  \n  <p>\n   Voici un exemple complet o\u00f9 le script se connecte au robot, dit \u00ab\u00a0Hello world\u00a0\u00bb, affiche \u00ab\u00a0C&rsquo;est fini\u00a0\u00bb et se termine :\n  <\/p>\n  \n  <div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <\/div> <pre class=\"language-python code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-python code-embed-code\">import cozmo<br\/>&#039;&#039;&#039;<br\/>  La fonction &#039;run_program&#039; prend en param\u00e8tre la fonction &#039;program_cozmo&#039;<br\/>  La fonction &#039;program_cozmo&#039; re\u00e7oit en param\u00e8tre le pointeur vers l&#039;instance de cozmo obtenue <br\/>&#039;&#039;&#039;<br\/>def program_cozmo(robot: cozmo.robot.Robot):<br\/>  robot.say_text(&quot;Hello world&quot;).wait_for_completed()<br\/>  print(&quot;C&#039;est fini&quot;)<br\/>  # le programme se termine<br\/><br\/>cozmo.run_program(program_cozmo)<\/code><\/pre> <\/div><\/div>\n\n  \n  <p>\n   Il existe une deuxi\u00e8me m\u00e9thode, que nous allons voir ci-dessous.\n  <\/p>\n  \n  \n  <h3 class=\"wp-block-heading\" id=\"h-methode-2-cozmo-run-connect\">\n   M\u00e9thode 2 : cozmo.run.connect()\n  <\/h3>\n  \n  \n  <h4 class=\"wp-block-heading\" id=\"h-connexion-au-device-mobile\">\n   Connexion au device mobile\n  <\/h4>\n  \n  \n  <p>\n   Vous pouvez aussi utiliser la fonction\n   <em>\n    cozmo.run.connect()\n   <\/em>\n   . Cette fonction g\u00e8re une connexion vers l&rsquo;application Cozmo qui tourne sur votre tablette ou mobile qui est connect\u00e9 \u00e0 votre ordinateur.\n   <em>\n    connect()\n   <\/em>\n   prend en param\u00e8tre la fonction \u00e0 ex\u00e9cuter lorsque la connexion est obtenue. Par exemple si vous ex\u00e9cutez la fonction\n   <em>\n    cozmo.run_connect(fonction_de_connection)\n   <\/em>\n   ,\n   <em>\n    connect()\n   <\/em>\n   passera une instance de\n   <a class=\"reference internal\" href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.conn.html#cozmo.conn.CozmoConnection\" title=\"cozmo.conn.CozmoConnection\">\n    <code class=\"xref py py-class docutils literal notranslate\">\n     <span class=\"pre\">\n      cozmo.conn.CozmoConnection\n     <\/span>\n    <\/code>\n   <\/a>\n   \u00e0 la fonction\n   <em>\n    fonction_de connection\n   <\/em>\n   .\n  <\/p>\n  \n  \n  <h4 class=\"wp-block-heading\" id=\"h-connexion-au-robot\">\n   Connexion au robot\n  <\/h4>\n  \n  \n  <p>\n   Ensuite, dans la fonction appel\u00e9e, il faut demander la connexion au robot. C&rsquo;est le r\u00f4le de\n   <em>\n    wait_for_robot()\n   <\/em>\n   . La fonction\n   <a class=\"reference internal\" href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.conn.html#cozmo.conn.CozmoConnection.wait_for_robot\" title=\"cozmo.conn.CozmoConnection.wait_for_robot\">\n    <code class=\"xref py py-meth docutils literal notranslate\">\n     <span class=\"pre\">\n      cozmo.conn.CozmoConnection.wait_for_robot()\n     <\/span>\n    <\/code>\n   <\/a>\n   retourne une instance de\n   <code class=\"xref py py-class docutils literal notranslate\">\n    <span class=\"pre\">\n     <a class=\"reference internal\" href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.robot.html#cozmo.robot.Robot\" title=\"cozmo.robot.Robot\">\n      Robot\n     <\/a>\n    <\/span>\n   <\/code>\n   qui contr\u00f4le un unique robot.\n  <\/p>\n  \n  \n  <p>\n   Cette fonction dispose d&rsquo;un timeout si aucune connexion au robot n&rsquo;est obtenue. Le timeout de connexion est de 5 secondes par d\u00e9faut mais peut \u00eatre modifi\u00e9 en utilisant le param\u00e8tre &lsquo;timeout&rsquo;\n   <code class=\"descname\">\n    wait_for_robot\n   <\/code>\n   <span class=\"sig-paren\">\n    (\n   <\/span>\n   <em>\n    timeout=10\n   <\/em>\n   <span class=\"sig-paren\">\n    )\n   <\/span>\n  <\/p>\n  \n  \n  <p>\n   Voyons un exemple complet o\u00f9 le script se connecte au robot avec la fonction\n   <em>\n    connect()\n   <\/em>\n   , dit \u00a0\u00bb\n   <em>\n    Hello world\n   <\/em>\n   \u00a0\u00bb et se termine :\n  <\/p>\n  \n  <div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <\/div> <pre class=\"language-python code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-python code-embed-code\">import cozmo<br\/><br\/>def run(conn):<br\/>  # conn est la connexion au device tablette ou mobile<br\/><br\/>  # on demande la connexion au robot <br\/>  robot = conn.wait_for_robot()<br\/>  <br\/>  # et voil\u00e0 !<br\/>  robot.say_text(&quot;Hello world&quot;).wait_for_completed()<br\/><br\/># appel de connect<br\/>cozmo.run.connect(run)<\/code><\/pre> <\/div><\/div>\n\n  \n  <h3 class=\"wp-block-heading\" id=\"h-comment-connecter-cozmo-avoir-une-retour-camera-et-une-visualisation-de-l-environnement-3d\">\n   Comment connecter Cozmo, avoir une retour cam\u00e9ra et une visualisation de\u00a0 l&rsquo;environnement 3D\n  <\/h3>\n  \n  \n  <p>\n   Nous allons vous montrer ici comment d\u00e9marrer une connexion au robot et\n   <strong>\n    afficher une vue cam\u00e9ra\n   <\/strong>\n   ou\n   <strong>\n    la visualisation 3D de l&rsquo;environnement du robot\n   <\/strong>\n   .\n  <\/p>\n  \n  \n  <p>\n   Cette fonctionnalit\u00e9 est disponible quelle que soit le mode de connexion ci-dessus.\n  <\/p>\n  \n  \n  <figure class=\"wp-block-image alignnone\">\n   <a href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/10\/cozmo_vue_camera.png\">\n    <img fetchpriority=\"high\" decoding=\"async\" width=\"300\" height=\"238\" alt=\"Vue de la cam\u00e9ra de Cozmo\" class=\"wp-image-5567\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/10\/cozmo_vue_camera-300x238.png\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/cozmo_vue_camera-300x238.png 300w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/cozmo_vue_camera.png 640w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\n   <\/a>\n   <figcaption class=\"wp-element-caption\">\n    Vue de la cam\u00e9ra de Cozmo\n   <\/figcaption>\n  <\/figure>\n  \n  \n  <figure class=\"wp-block-image alignnone\">\n   <a href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/10\/cozmo_vue_3d.png\">\n    <img decoding=\"async\" width=\"300\" height=\"236\" alt=\"Vue 3d de l'environnement de Cozmo\" class=\"wp-image-5568\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/10\/cozmo_vue_3d-300x236.png\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/cozmo_vue_3d-300x236.png 300w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/cozmo_vue_3d-768x603.png 768w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/cozmo_vue_3d.png 800w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\n   <\/a>\n   <figcaption class=\"wp-element-caption\">\n    Vue 3d de l&rsquo;environnement de Cozmo\n   <\/figcaption>\n  <\/figure>\n  \n  \n  <p>\n   Pour\n   <em>\n    run_program,\n   <\/em>\n   on ajoute des param\u00e8tres \u00e0 l&rsquo;appel de la fonction pour indiquer les vues souhait\u00e9es :\n  <\/p>\n  \n  <div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <\/div> <pre class=\"language-python code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-python code-embed-code\"># connexion avec run_program et les vues cam\u00e9ra et 3d<br\/>cozmo.run_program(program_cozmo, use_viewer=True, use_3d_viewer=True)<\/code><\/pre> <\/div><\/div>\n\n  \n  <p>\n   Pour\n   <em>\n    connect()\n   <\/em>\n   , il existe deux autres fonctions d\u00e9di\u00e9es aux affichages des vues\n   <em>\n    <a href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.run.html#cozmo.run.connect_with_tkviewer\">\n     connect_with_tkviewer()\n    <\/a>\n   <\/em>\n   et\n   <em>\n    <a href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.run.html#cozmo.run.connect_with_3dviewer\">\n     connect_with_3dviewer()\n    <\/a>\n   <\/em>\n   . Cette seconde fonction peut prendre un param\u00e8tre pour activer la vue camera (\n   <em>\n    enable_camera_view=False).\n   <\/em>\n  <\/p>\n  \n  <div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <\/div> <pre class=\"language-python code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-python code-embed-code\"># connexion au device mobile<br\/>cozmo.run.connect(run)<br\/><br\/># connexion au device mobile avec vue camera<br\/>cozmo.run.connect_with_tkviewer(run)<br\/><br\/># connexion au device mobile avec vue 3d<br\/>cozmo.run.connect_with_3dviewer(run)<\/code><\/pre> <\/div><\/div>\n\n  \n  <p>\n   Votre robot Cozmo est d\u00e9sormais connect\u00e9 \u00e0 votre ordinateur. Vous pouvez maintenant commencer l&rsquo;exploration de l&rsquo;API Python de Cozmo, ainsi que des fonctionnalit\u00e9s du SDK que nous pr\u00e9sentons dans les tutoriels de la s\u00e9rie \u00ab\u00a0Cozmo SDK\u00a0\u00bb.\n  <\/p>\n  \n  \n  <p>\n   Remarque : A la fin de l&rsquo;ex\u00e9cution de\n   <em>\n    run_program,\n   <\/em>\n   le code\n   <em>\n    sys.exit()\n   <\/em>\n   est d\u00e9clench\u00e9. Celui-ci va interrompre l&rsquo;ex\u00e9cution du script appelant. Ce n&rsquo;est pas le cas pour les connexions avec les fonctions\n   <em>\n    connect()\n   <\/em>\n   .\n  <\/p>\n  \n <\/body>\n<\/html>","protected":false},"excerpt":{"rendered":"<p>Objectif : se connecter \u00e0 Cozmo et ex\u00e9cuter un script python Les pr\u00e9requis Explication sur les connexions au robot Cozmo Une fois que les connexions physiques entre le robot Cozmo, le smartphone et le PC sont effectu\u00e9s, il faut lancer le script Python. Que se passe-t-il une fois que ce dernier est ex\u00e9cut\u00e9 ? Lorsque[&#8230;]<br \/> <a class=\"button\" href=\"https:\/\/www.generationrobots.com\/blog\/fr\/cozmo-sdk-deux-methodes-pour-se-connecter-au-robot\/\" style=\"float:right;\">Read this article &gt;&gt;<\/a><\/p>\n","protected":false},"author":188,"featured_media":5590,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1128],"tags":[],"class_list":["post-5552","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-education"],"_links":{"self":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/comments?post=5552"}],"version-history":[{"count":19,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5552\/revisions"}],"predecessor-version":[{"id":13159,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5552\/revisions\/13159"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media\/5590"}],"wp:attachment":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media?parent=5552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/categories?post=5552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/tags?post=5552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}