Simuler Ned avec Webots

Qu’est ce que Webots ?

« Webots est un simulateur robotique open-source et multiplateformes. Il a été conçu pour un usage professionnel et est largement utilisé dans l’industrie, l’éducation et la recherche. Il fournit un environnement de développement complet pour modéliser, programmer et simuler des robots. Cyberbotics Ltd. maintient Webots comme son produit principal sans interruption depuis 1998. » (source).

Vous pouvez télécharger gratuitement Webots sur le site de Cyberbotics.

Note

Pour réaliser ce tutoriel, nous avons utilisé Ubuntu 18.04 et Webots R2021a.

Introduction

  • Courant été 2021, Ned a été ajouté sur Webots. Vous pouvez avoir plus d’informations sur le site de Cyberbotics.

  • En téléchargeant Webots et en exécutant le sample Webots de Ned sur celui-ci, vous serez en mesure de contrôler ses articulations et sa pince avec votre clavier, mais aussi exécuter une démo.

  • Voici comment le sample Webots de Ned se présente :

    Ned

Objectifs

  • Comme Ned est basé sur des technologies open-source, il est important pour nous de détailler comment nous avons ajouté Ned sur Webots.

  • Si vous êtes curieux, que vous voulez en savoir plus concernant Webots et créer votre propre projet avec Ned, ce tutoriel est fait pour vous.

  • Vous n’avez pas besoin de connaissances particulières à propos de Webots mais nous vous conseillons de suivre les différents tutoriels présents sur le site de Webots qui sont rapides et très clairs.

Note

Vous pouvez trouver le code source de ce projet dans le dossier YOUR_PATH/webots/projects/robots/ned. Vous pouvez également le trouver sur le github de webots:https://github.com/cyberbotics/webots/tree/released/projects/robots/niryo/ned

Explication de l’interface utilisateur de Webots

Webots est composé de quatre fenêtres différentes. Après avoir exécuté le sample Webots de Ned, vous devriez avoir cet écran :

Ned
  1. La vue 3D

  2. L’éditeur de texte

  3. L’arborescence de la scène

  4. La console

Dans ce tutoriel, nous allons expliquer l’intérêt de chaque fenêtre et comment les utiliser pour Ned.

Note

Vous pouvez trouver toutes les informations concernant ces fenêtres sur le guide proposé par Cyberbotics.

La vue 3D

Description

Il s’agit de la fenêtre principale, qui décrit l’ensemble de la scène mais c’est également l’endroit depuis lequel nous pouvons contrôler le robot. Pour décrire une scène sur Webots, nous l’appelons « world ». Si vous voulez contrôler Ned avec votre clavier, il vous suffit de cliquer sur cette fenêtre avec votre souris et ensuite d’utiliser votre clavier.

Vous pouvez trouver le « world » que nous avons créé dans /webots/projects/robots/niryo/ned/protos.

Pour contrôler Ned, vous pouvez utiliser ces commandes :

Launch demo --> D
Move joint_1 --> A and Z
Move joint_2 --> Q and S
Move joint_3 --> W and X
Move joint_4 --> Y and U
Move joint_5 --> H and J
Move joint_6 --> B and N
Open Close Gripper --> L or M
Launch Pick and Place --> P

Note

N’hésitez pas à essayer toutes les différentes commandes de contrôle. Vous avez également une demo « joints » et une démo « pick and place » prêtes à être lancées.

Vous avez dû remarquer que, jusqu’à présent, le sample Webots de Ned est une salle de classe avec une table, des chaises et deux tableaux. Tous les objets autres que Ned proviennent de Webots. Cyberbotics fournit une bibliothèque avec différents types d’objets pour vous permettre de créer facilement votre propre « world ».

Avertissement

Sur Webots, tous les objets s’appellent « PROTO node ». Nous vous conseillons vivement de suivre ce lien pour comprendre ce qu’est un « PROTO node ».

Ajout d’un nouveau « PROTO node » dans le « world »

Si vous voulez modifier l’environnement de Ned et ajouter par exemple une « pomme » vous pouvez le faire en suivant ces étapes :

Cliquez sur le bouton « Add a node » :

Ned

Ensuite, sélectionnez « PROTO node (Webots Projects) » et recherchez la pomme :

Ned

Vous devriez maintenant voir une pomme dans la vue 3D, n’hésitez pas à la mettre où vous le souhaitez.

Ajout de votre propre « PROTO node » dans le « world »

Webots dispose d’un grand nombre de « PROTO node » différents, mais comment ajouter les votres ? Cette question est cruciale car nous n’utilisons pas ce format pour notre produit.

Si vous cherchez une solution pour implémenter vos propres modèles dans Webots, vous pouvez utiliser le paquet urdf2webots de Cyberbotics.

Note

Dans notre cas, pour Ned, nous utilisons des fichiers URDF, DAE, STL et XACRO. Vous pouvez trouver toutes les informations concernant les fichiers XACRO ici. Vous pouvez également trouver des informations à propos des fichiers URDF en suivant ce lien.

Pour utiliser ce paquet, ouvrez un terminal et suivez ces commandes :

pip install urdf2webots

cd /YOUR_FOLDER_WITH_YOUR_FILE.xacro

python3 -m urdf2webots.importer --input=YOUR_FILE.xacro --disable-mesh-optimization

Vous devriez avoir votre « PROTO node » généré dans le même répertoire que votre fichier XACRO.

L’étape suivante consiste à ajouter ce « PROTO node » dans le répertoire de Webots : /webots/projets/robots/niryo/ned/protos

Maintenant, vous pouvez cliquer à nouveau sur le bouton « add a proto » et cette fois, sélectionnez « PROTO node (Current Project): »

Ned

Ensuite, vous devriez voir votre fichier PROTO dans la liste. Il suffit de le sélectionner puis de l’ajouter.

Ned

Note

Dans notre cas, nous avons créé deux « PROTO nodes », l’un appelé « Ned » et l’autre « NedWithoutGripper ».

Maintenant que nous avons abordé la fenêtre 3D ainsi que comment ajouter un modèle de Webots, ou votre propre modèle, intéressons-nous à la partie contrôleur.

L’éditeur de texte

Description

L’éditeur de texte vous permet de modifier le code source et créer votre propre contrôleur pour le robot. Dans Webots la majeure partie des contrôleur sont édités en C. Chez Niryo, nos robots sont programmés en Python, nous avons donc créé un contrôleur Python en plus d’un contrôleur C.

Vous pouvez trouver les fichiers contrôleurs du sample Webots de Ned ici : /webots/projects/robots/niryo/ned/controllers.

Note

Nous vous recommandons vivement de jeter un coup d’œil à la documentation de Webots pour apprendre comment programmer vos propres contrôleurs. Si vous voulez créer un nouveau contrôleur, rendez-vous dans la barre d’outils, et cliquez sur « Wizards » , puis sur « New Robot_Controller… ». Vous pouvez ensuite sélectionner le langage de programmation que vous souhaitez.

L’arborescence de la scène

Description

L’arborescence de la scène est une représentation hiérarchique du monde actuel. Vous y trouverez tous les « PROTO nodes » que vous avez inclus dans votre monde. Si vous-en sélectionnez un, vous pourrez voir toutes ses caractéristiques.

Par exemple, si vous sélectionnez le « PROTO node » de Ned, vous pourrez voir :

  • sa position

  • sa rotation

  • son nom

  • le contrôleur utilisé (très important, c’est ici que vous pouvez changer le contrôleur que vous souhaitez utiliser)

Ned

La console

Description

La fenêtre de console a pour but d’afficher les sorties de la compilation et du contrôleur. Si vous voulez débuguer votre code ou afficher un message pour l’utilisateur, vous pouvez le faire ici.

Par exemple, lorsque vous exécutez le sample Webots de Ned, vous obtenez ceci sur la console :

Ned

Parcourir le fichier « PROTO » de Ned

Le dernier sujet très important avant de terminer ce tutoriel est d’en apprendre un peu plus sur la façon dont le fichier « PROTO » de Ned est fait.

Dans ce fichier PROTO node, vous trouverez toutes les caractéristiques du robot dont Webots a besoin. Vous trouverez le nom, le contrôleur utilisé, les coordonnées…

Vous pouvez les trouver ici :

Ned

Mais dans ce fichier, vous trouverez également toutes les caractéristiques de modélisation dont Webots aura besoin pour simuler les mouvements de Ned. Par exemple, quelles articulations, quelles mâchoires… De plus, grâce à l’URDF, le fichier « PROTO » contient la physique que Webots utilisera pour faire bouger le robot correctement.

Si nous nous concentrons sur le « joint_1 » de Ned, vous retrouverez les informations suivantes :

Ned

Note

C’est ici que Webots comprend que le « joint_1 » peut être considéré comme un moteur rotatif, c’est-à-dire qu’il peut tourner autour d’un axe. C’est de cette façon que Webots parvient à simuler avec perfection la physique du robot.

C’est parti

Vous êtes maintenant prêt à utiliser le sample Webots de Ned et vous amuser autant que vous le souhaitez avec. Vous pouvez manipuler toutes les articulations ainsi que le gripper de Ned.

N’hésitez pas à partager vos réalisations sur les réseaux sociaux avec #niryo !