Ir al contenido
Español

Tu primer programa

Tu primer programa hace avanzar el robot y lo detiene delante de una pared. Es corto, pero tiene todo lo que necesita cualquier programa.

from controller import Robot
robot = Robot()
timeStep = int(robot.getBasicTimeStep())
# Get the devices of the starter robot by name
leftWheel = robot.getDevice("left wheel motor")
rightWheel = robot.getDevice("right wheel motor")
frontDist = robot.getDevice("frontDist")
# Sensors must be enabled before use
frontDist.enable(timeStep)
# Let the wheels turn without limit, and start driving forward
leftWheel.setPosition(float("inf"))
rightWheel.setPosition(float("inf"))
leftWheel.setVelocity(3.0)
rightWheel.setVelocity(3.0)
# The main loop: each step, the simulation advances by timeStep milliseconds
while robot.step(timeStep) != -1:
distance = frontDist.getValue()
print("Distance to the wall in front:", round(distance, 3), "m")
if distance < 0.05: # Closer than 5 cm: stop
leftWheel.setVelocity(0)
rightWheel.setVelocity(0)
print("Wall reached!")
break
  1. Crea el robot. Robot() conecta tu programa con el robot del simulador.
  2. Obtén el paso de tiempo. La simulación avanza en pasos de unos pocos milisegundos. getBasicTimeStep() da el paso del mundo.
  3. Obtén los dispositivos. Cada motor y cada sensor se encuentran por su nombre. Son los nombres que les diste cuando construiste tu robot.
  4. Activa los sensores. Un sensor no da ningún valor hasta que se activa. El paso de tiempo le indica cada cuánto actualizarse.
  5. Bucle. robot.step(timeStep) hace avanzar la simulación un paso y devuelve -1 cuando la simulación termina. Todo lo que hace tu robot ocurre dentro de este bucle.
  1. Guarda el programa como hello.py.
  2. Abre game/worlds/mapping_example_1.wbt y carga el robot inicial con el botón LOAD de la derecha.
  3. Carga hello.py con el botón LOAD de la izquierda y pulsa el botón de inicio.

El robot avanza, y la consola de Webots muestra la distancia a la pared que tiene delante hasta que el robot se detiene. Si en su lugar ves un error, consulta Solución de problemas.

  • Cambia la velocidad de 3.0 a 6.0. ¿Qué pasa cerca de la pared?
  • Haz que el robot se detenga a 10 cm en lugar de a 5 cm.
  • Imprime también el tiempo con robot.getTime().

A continuación, aprende a avanzar y girar en Movimiento.