Webots - Webots

Webots
Wbinterface.png
Coche autónomo en Webots
Desarrollador (es) Cyberbotics Ltd.
Lanzamiento estable
Webots R2021b / 16 de julio de 2021
Repositorio GitHub
Sistema operativo Windows 10, Linux de 64 bits, Mac OS X 10.14, 10.13
Tipo Simulador de robótica
Licencia Apache 2
Sitio web Página web de Cyberbotics

Webots es un simulador de robot 3D gratuito y de código abierto que se utiliza en la industria, la educación y la investigación.

El proyecto Webots comenzó en 1996, inicialmente desarrollado por el Dr. Olivier Michel en el Instituto Federal Suizo de Tecnología ( EPFL ) en Lausana , Suiza y luego a partir de 1998 por Cyberbotics Ltd. como software propietario con licencia. Desde diciembre de 2018, se lanza bajo la licencia Apache 2 gratuita y de código abierto .

Webots incluye una gran colección de modelos de robots, sensores, actuadores y objetos libremente modificables. Además, también es posible construir nuevos modelos desde cero o importarlos desde el software CAD 3D. Al diseñar un modelo de robot, el usuario especifica las propiedades gráficas y físicas de los objetos. Las propiedades gráficas incluyen la forma, dimensiones, posición y orientación, colores y textura del objeto. Las propiedades físicas incluyen la masa, el factor de fricción, así como las constantes de amortiguación y resorte . La dinámica de fluidos simple está presente en el software.

Webots utiliza una bifurcación del ODE ( Open Dynamics Engine ) para detectar colisiones y simular la dinámica de la carrocería rígida. La biblioteca ODE permite simular con precisión las propiedades físicas de los objetos, como la velocidad, la inercia y la fricción.

Webots incluye un conjunto de sensores y actuadores que se utilizan con frecuencia en experimentos robóticos, por ejemplo, lidares, radares, sensores de proximidad , sensores de luz, sensores táctiles, GPS , acelerómetros , cámaras, emisores y receptores, servomotores (rotativos y lineales), sensor de posición y fuerza. , LED, pinzas, giroscopios, brújula, IMU, etc.

Los programas del controlador del robot se pueden escribir fuera de Webots en C , C ++ , Python , ROS , Java y MATLAB utilizando una API simple.

Webots ofrece la posibilidad de realizar capturas de pantalla y grabar simulaciones. Los mundos de Webots se almacenan en archivos multiplataforma * .wbt cuyo formato se basa en el lenguaje VRML . También se pueden importar y exportar mundos y objetos de Webots en formato VRML. Los usuarios pueden interactuar con una simulación en ejecución moviendo robots y otros objetos con el mouse. Los webots también pueden transmitir una simulación en navegadores web utilizando WebGL .

Simulación de un robotis-Op3in Webots
Simulación de un Pioneer 3-AT (Adept Mobile Robots) montado con un SICK LMS 291 en Webots
Simulación de un Pioneer 3-DX (Adept Mobile Robots) en Webots
Un modelo de simulación del robot PR2 en Webots.
Un modelo de simulación del robot Khepera III con pinza en Webots.
Un modelo de simulación de un robot salamandra en Webots que tiene una piel deformable.
Un modelo de simulación del robot Boston Dynamics Atlas en Webots.

interfaz web

Desde el 18 de agosto de 2017, el sitio web robotbenchmark.net ofrece acceso gratuito a una serie de pruebas comparativas de robótica basadas en simulaciones de Webots a través de la interfaz web de Webots. Las instancias de Webots se ejecutan en la nube y las vistas 3D se muestran en el navegador del usuario. Desde esta interfaz web, los usuarios pueden programar robots en Python y aprender a controlarlos en un procedimiento paso a paso.

Ejemplo de programación del controlador

Este es un ejemplo simple de programación de controladores C / C ++ con Webots: un comportamiento trivial para evitar colisiones. Inicialmente, el robot corre hacia adelante, luego, cuando se detecta un obstáculo, gira alrededor de sí mismo durante un tiempo y luego reanuda el movimiento hacia adelante.

#include <webots/robot.h>
#include <webots/motor.h>
#include <webots/distance_sensor.h>

#define TIME_STEP 64

int main() {
  // initialize Webots
  wb_robot_init();

  // get handle and enable distance sensor
  WbDeviceTag ds = wb_robot_get_device("ds");
  wb_distance_sensor_enable(ds, TIME_STEP);
  
  // get handle and initialize the motors
  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);

  // control loop
  while (1) {
    // read sensors
    double v = wb_distance_sensor_get_value(ds);

    // if obstacle detected
    if (v > 512) {
      // turn around
      wb_motor_set_velocity(left_motor, -600);
      wb_motor_set_velocity(right_motor, 600);
    }
    else {
      // go straight
      wb_motor_set_velocity(left_motor, 600);
      wb_motor_set_velocity(right_motor, 600);
    }
    
    // run a simulation step
    wb_robot_step(TIME_STEP);
  }

  wb_robot_cleanup();
  return 0;
}

Principales campos de aplicación

Modelos de robot incluidos

En la guía del usuario de Webots se proporciona una lista completa y actualizada.

Compatibilidad con compilación cruzada y control remoto

Ver también

Referencias

enlaces externos