Webots est un simulateur de robot 3D gratuit et open source utilisé dans l'industrie, l'éducation et la recherche.
Le projet Webots a débuté en 1996, initialement développé par le Dr Olivier Michel à l'École polytechnique fédérale de Lausanne ( EPFL ) , puis à partir de 1998 par Cyberbotics Ltd. en tant que logiciel sous licence propriétaire. Depuis décembre 2018, il est publié sous la licence libre et open source Apache 2.
Webots comprend une vaste collection de modèles de robots, de capteurs, d'actionneurs et d'objets librement modifiables. De plus, il est également possible de construire de nouveaux modèles à partir de zéro ou de les importer à partir d'un logiciel de CAO 3D. Lors de la conception d'un modèle de robot, l'utilisateur spécifie à la fois les propriétés graphiques et physiques des objets. Les propriétés graphiques comprennent la forme, les dimensions, la position et l'orientation, les couleurs et la texture de l'objet. Les propriétés physiques comprennent la masse, le facteur de frottement, ainsi que les constantes de ressort et d'amortissement . La dynamique des fluides simple est présente dans le logiciel.
Webots utilise un fork de l'ODE ( Open Dynamics Engine ) pour détecter les collisions et simuler la dynamique des corps rigides. La bibliothèque ODE permet de simuler avec précision les propriétés physiques des objets telles que la vitesse, l'inertie et le frottement.
Webots comprend un ensemble de capteurs et d'actionneurs fréquemment utilisés dans les expériences robotiques, par exemple des lidars, des radars, des capteurs de proximité , des capteurs de lumière, des capteurs tactiles, des GPS , des accéléromètres , des caméras, des émetteurs et des récepteurs, des servomoteurs (rotatifs et linéaires), des capteurs de position et de force, des LED, des pinces, des gyroscopes, des boussoles, des IMU, etc.
Les programmes du contrôleur de robot peuvent être écrits en dehors de Webots en C , C++ , Python , ROS , Java et MATLAB à l'aide d'une API simple.
Webots offre la possibilité de prendre des captures d'écran et d'enregistrer des simulations. Les mondes Webots sont stockés dans des fichiers *.wbt multiplateformes dont le format est basé sur le langage VRML . Il est également possible d'importer et d'exporter des mondes et des objets Webots au format VRML. Les utilisateurs peuvent interagir avec une simulation en cours d'exécution en déplaçant des robots et d'autres objets avec la souris. Webots peut également diffuser une simulation sur des navigateurs Web à l'aide de WebGL .







Interface Web
Depuis le 18 août 2017, le site robotbenchmark.net propose un accès gratuit à une série de benchmarks robotiques basés sur des simulations Webots via l'interface Web Webots. Les instances Webots s'exécutent dans le cloud et les vues 3D s'affichent dans le navigateur de l'utilisateur. À partir de cette interface Web, les utilisateurs peuvent programmer des robots en Python et apprendre à contrôler les robots en suivant une procédure étape par étape.
Exemple de programmation du contrôleur
Il s'agit d'un exemple simple de programmation de contrôleur C/C++ avec Webots : un comportement trivial d'évitement de collision. Au début, le robot avance, puis lorsqu'un obstacle est détecté, il tourne sur lui-même pendant un moment, puis reprend le mouvement vers l'avant.
#include <webots/robot.h> #include <webots/motor.h> #include <webots/distance_sensor.h> #define TIME_STEP 64 int main () { // initialiser Webots wb_robot_init (); // Récupérer le handle et activer le capteur de distance WbDeviceTag ds = wb_robot_get_device ( " ds" ) ; wb_distance_sensor_enable ( ds , TIME_STEP ); // Récupérer le handle et initialiser les moteurs WbDeviceTag left_motor = wb_robot_get_device ( " left_motor " ) ; WbDeviceTag right_motor = wb_robot_get_device ( "right_motor" ); wb_motor_set_position ( left_motor , INFINITY ); wb_motor_set_position ( right_motor , INFINITY ); wb_motor_set_velocity ( left_motor , 0.0 ); wb_motor_set_velocity ( right_motor , 0.0 ); // boucle de contrôle while ( 1 ) { // lire les capteurs double v = wb_distance_sensor_get_value ( ds ); // si obstacle détecté if ( v > 512 ) { // faire demi-tour wb_motor_set_velocity ( left_motor , -600 ); wb_motor_set_velocity ( right_motor , 600 ); } else { // aller tout droit wb_motor_set_velocity ( left_motor , 600 ); wb_motor_set_velocity ( right_motor , 600 ); } // exécuter une étape de simulation wb_robot_step ( TIME_STEP ); } wb_robot_cleanup (); renvoie 0 ; }
Principaux domaines d'application
- Prototypage rapide de robots à roues et à pattes
- Recherche sur la locomotion des robots
- Intelligence en essaim (simulations multi-robots)
- Vie artificielle et robotique évolutive
- Simulation du comportement adaptatif
- Robotique modulaire auto-reconfigurable
- Environnement expérimental pour la vision par ordinateur
- Concours d'enseignement et de programmation de robots
Modèles de robots inclus
Une liste complète et à jour est fournie dans le guide d'utilisation de Webots.
- AIBO ERS7 et ERS210, Sony Corporation
- BIOLOID (chien), Robotis
- Boe-Bot
- DARwIn-OP, Robotis
- E-palette
- Hémisson
- HOAP-2, Fujitsu Limitée
- iCub , Consortium RobotCub
- iRobot Créer , iRobot
- Katana IPR, Neuronics AG
- Robot mobile Khepera I, II, III, K-Team Corporation
- KHR-2HV, KHR-3HV, Kondo
- Koala, K-Team Corporation
- Lego Mindstorms (modèle RCX Rover)
- Magellan
- Nao V2, V3, Aldébaran Robotics
- MobileRobots Inc. Pioneer 2, Pioneer 3-DX, Pioneer 3-AT
- Puma 560, Unimate
- Scout 2
- Crevette III, BlueBotics SA
- Géomètre SRV-1, Surveyor Corporation
- youBot, KUKA