cozmo-sdk-connexion-cozmo-ordinateur-feature-image

Cozmo SDK : deux méthodes pour se connecter au robot

Cette entrée a été publiée dans Cozmo, Education, Tutoriels en robotique, et marquée avec , , , , , , , le par .

Objectif : se connecter à Cozmo et exécuter un script python

  • Durée :  15 minutes
  • Niveau de difficulté :  facile
  • Objectif :  se connecter à Cozmo et exécuter un script Python

Les prérequis

Explication sur les connexions au robot Cozmo

Une fois que les connexions physiques entre le robot Cozmo, le smartphone et le PC sont effectués, il faut lancer le script Python. Que se passe-t-il une fois que ce dernier est exécuté ?

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 sont gérées au travers d’une instance de l’objet cozmo.robot.Robot. Cette instance permet de prendre le contrôle du robot.

L’instance cozmo.robot.Robot est créée à la connexion. Il existe plusieurs manières de l’initialiser. Dans ce tutoriel, nous allons abordé les deux manières les plus simples, que sont les méthodes run_program() et connect(). Il existe une méthode plus avancée que nous verrons dans un autre tutoriel.

Se connecter au robot : les méthodes run_program() et connect()

Méthode 1 : cozmo.run_program()

Pour gérer facilement la connexion à Cozmo, le fabricant Anki a mis en place une la fonction run_program(), qui rend le processus de connexion très simple.

La fonction run_program() prend en paramètre une fonction. Cette fonction est exécutée lorsque la connexion au robot est obtenue. Par exemple, lorsque cozmo.run_program(fonction_a_executer) est exécutée, run_program() passera en paramètre l’instance de cozmo.robot.Robot obtenue, à la fonction fonction_a_executer.

Voici un exemple complet où le script se connecte au robot, dit « Hello world », affiche « C’est fini » et se termine :

import cozmo
'''
  La fonction 'run_program' prend en paramètre la fonction 'program_cozmo'
  La fonction 'program_cozmo' reçoit en paramètre le pointeur vers l'instance de cozmo obtenue 
'''
def program_cozmo(robot: cozmo.robot.Robot):
  robot.say_text("Hello world").wait_for_completed()
  print("C'est fini")
  # le programme se termine

cozmo.run_program(program_cozmo)

Il existe une deuxième méthode, que nous allons voir ci-dessous.

Méthode 2 : cozmo.run.connect()

Connexion au device mobile

Vous pouvez aussi utiliser la fonction cozmo.run.connect(). Cette fonction gère une connexion vers l’application Cozmo qui tourne sur votre tablette ou mobile qui est connecté à votre ordinateur. connect() prend en paramètre la fonction à exécuter lorsque la connexion est obtenue. Par exemple si vous exécutez la fonction cozmo.run_connect(fonction_de_connection)connect() passera une instance decozmo.conn.CozmoConnection à la fonction fonction_de connection.

Connexion au robot

Ensuite, dans la fonction appelée, il faut demander la connexion au robot. C’est le rôle de wait_for_robot(). La fonction cozmo.conn.CozmoConnection.wait_for_robot() retourne une instance de Robot qui contrôle un unique robot.

Cette fonction dispose d’un timeout si aucune connexion au robot n’est obtenue. Le timeout de connexion est de 5 secondes par défaut mais peut être modifié en utilisant le paramètre ‘timeout’  wait_for_robot(timeout=10)

Voyons un exemple complet où le script se connecte au robot avec la fonction connect(), dit « Hello world » et se termine :

import cozmo

def run(conn):
  # conn est la connexion au device tablette ou mobile

  # on demande la connexion au robot 
  robot = conn.wait_for_robot()
  
  # et voilà !
  robot.say_text("Hello world").wait_for_completed()

# appel de connect
cozmo.run.connect(run)

Comment connecter Cozmo, avoir une retour caméra et une visualisation de  l’environnement 3D

Nous allons vous montrer ici comment démarrer une connexion au robot et afficher une vue caméra ou la visualisation 3D de l’environnement du robot.

Cette fonctionnalité est disponible quelle que soit le mode de connexion ci-dessus.

Vue de la caméra de Cozmo

Vue de la caméra de Cozmo

Vue 3d de l'environnement de Cozmo

Vue 3d de l’environnement de Cozmo

Pour run_program, on ajoute des paramètres à l’appel de la fonction pour indiquer les vues souhaitées :

# connexion avec run_program et les vues caméra et 3d
cozmo.run_program(program_cozmo, use_viewer=True, use_3d_viewer=True)

Pour connect(), il existe deux autres fonctions dédiées aux affichages des vues connect_with_tkviewer() et connect_with_3dviewer(). Cette seconde fonction peut prendre un paramètre pour activer la vue camera (enable_camera_view=False).

# connexion au device mobile
cozmo.run.connect(run)

# connexion au device mobile avec vue camera
cozmo.run.connect_with_tkviewer(run)

# connexion au device mobile avec vue 3d
cozmo.run.connect_with_3dviewer(run)

Votre robot Cozmo est désormais connecté à votre ordinateur. Vous pouvez maintenant commencer l’exploration de l’API Python de Cozmo, ainsi que des fonctionnalités du SDK que nous présentons dans les tutoriels de la série « Cozmo SDK ».

Remarque : A la fin de l’exécution de run_program,  le code sys.exit() est déclenché. Celui-ci va interrompre l’exécution du script appelant. Ce n’est pas le cas pour les connexions avec les fonctions connect().