После вашего издания приведу более конкретный ответ. Мой предыдущий ответ остается верным, но носит более общий характер.
Когда контроллер синхронизируется (случай по умолчанию поля Robot.synchronization ), Webots ожидает, что контроллер вызовет функцию wb_robot_step (int duration) для выполнения шагов моделирования .
Поэтому, если вы хотите выполнить один шаг из контроллера (например, при нажатии на Ctrl + 1
, вам просто нужно вызвать функцию wb_robot_step (int duration) один раз.
Чтобы проиллюстрировать это, следующий контроллер выполняет один шаг моделирования каждые 3 секунды:
"""Perform one simulation step after some event."""
from controller import Robot
import time
robot = Robot()
timestep = int(robot.getBasicTimeStep())
while True:
time.sleep(3) # Wait 3 real seconds to simulate a blocking event.
print 'Perform a simulation step.'
robot.step(timestep)