Я посмотрел поближе, и оказалось, что у узлов робота есть поле синхронизации, которое гарантирует, что мировые шаги приостановлены, пока шаги робота не будут выполнены. (это также упоминается во втором ответе Фабьена в исходном вопросе)
Если синхронизация имеет значение ИСТИНА (по умолчанию), симулятор будет ожидать вызова функции контроллера wb_robot_step всякий раз, когда необходимо сохранить симуляцию и контроллер синхронизирован. Так, например, если шаг моделирования (WorldInfo.basicTimeStep) составляет 16 мс, а шаг управления - 64 мс, то вебботы всегда будут выполнять ровно 4 шага моделирования в течение одного шага управления. После 4-го шага моделирования Webots будет ждать следующего шага управления контроллера (вызов wb_robot_step (64)).
https://cyberbotics.com/doc/reference/robot#synchronous -versus-asynchronous-controller
Я бы предположил, что для (интенсивных) подходов ML или облачного выполнения было бы лучше активировать syn c, чтобы избежать беглого шага по моделированию физики / мира. Если вы хотите тренироваться на разных скоростях реакции для своего робота, возможно, будет реализована случайная модуляция (мс до нескольких секунд) счетчика шагов робота во время выполнения, чтобы имитировать настройку asyn c. Но поправьте меня, если есть лучший подход.