Webots. Webots is a free and open-source 3D robot simulator used in industry, education and research.

The Webots project started in 1996, initially developed by Dr. Olivier Michel at the Swiss Federal Institute of Technology (EPFL) in Lausanne, Switzerland and then from 1998 by Cyberbotics Ltd. as a proprietary licensed software. Since December 2018, it is released under the free and open-source Apache 2 license.

Webots includes a large collection of freely modifiable models of robots, sensors, actuators and objects. In addition, it is also possible to build new models from scratch or import them from 3D CAD software. When designing a robot model, the user specifies both the graphical and the physical properties of the objects. The graphical properties include the shape, dimensions, position and orientation, colors, and texture of the object. The physical properties include the mass, friction factor, as well as the spring and damping constants. Simple fluid dynamics is present in the software.

Webots uses a fork of the ODE (Open Dynamics Engine) for detecting of collisions and simulating rigid body dynamics. The ODE library allows one to accurately simulate physical properties of objects such as velocity, inertia and friction.

Webots includes a set of sensors and actuators frequently used in robotic experiments, e.g. lidars, radars, proximity sensors, light sensors, touch sensors, GPS, accelerometers, cameras, emitters and receivers, servo motors (rotational & linear), position and force sensor, LEDs, grippers, gyros, compass, IMU, etc.

The robot controller programs can be written outside of Webots in C, C++, Python, ROS, Java and MATLAB using a simple API.

Webots offers the possibility to take screenshots and record simulations. Webots worlds are stored in cross-platform *.wbt files whose format is based on the VRML language. One can also import and export Webots worlds and objects in the VRML format. Users can interact with a running simulation by moving robots and other objects with the mouse. Webots can also stream a simulation on web browsers using WebGL.

Web interface 

Since August 18, 2017, the robotbenchmark.net website has offered free access to a series of robotics benchmarks based on Webots simulations through the Webots web interface. Webots instances are running in the cloud and the 3D views are displayed in the user browser. From this web interface, users can program robots in Python and learn robot control in a step-by-step procedure.

Controller programming example 

This is a simple example of C/C++ controller programming with Webots: a trivial collision avoidance behavior. Initially, the robot runs forwards, then when an obstacle is detected it rotates around itself for a while and then resumes the forward motion.

#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;
}

Main fields of application 
 Fast prototyping of wheeled and legged robots
 Research on robot locomotion
 Swarm intelligence (Multi-robot simulations)
 Artificial life and evolutionary robotics
 Simulation of adaptive behaviour
 Self-Reconfiguring Modular Robotics
 Experimental environment for computer vision
 Teaching and robot programming contests

Included robot models 

A complete and up-to-date list is provided in the Webots user guide.

 AIBO ERS7 and ERS210, Sony Corporation
 BIOLOID (dog), Robotis
 Boe-Bot
 DARwIn-OP, Robotis
 E-puck
 Hemisson
 HOAP-2, Fujitsu Limited
 iCub, RobotCub Consortium
 iRobot Create, iRobot
 Katana IPR, Neuronics AG
 Khepera mobile robot I, II, III, K-Team Corporation
 KHR-2HV, KHR-3HV, Kondo
 Koala, K-Team Corporation
 Lego Mindstorms (RCX Rover model)
 Magellan
 Nao V2, V3, Aldebaran Robotics
 MobileRobots Inc Pioneer 2, Pioneer 3-DX, Pioneer 3-AT
 Puma 560, Unimate
 Scout 2
 Shrimp III, BlueBotics SA
 Surveyor SRV-1, Surveyor Corporation
 youBot, KUKA

Cross compilation and remote control support 
 E-puck
 DARwIn-OP and Robotis OP2
 NAO
 Thymio II

See also 
 ROS
 E-puck

References

External links 

 Cyberbotics

Robotics simulation software
1996 software
1996 in robotics
Driving simulators