Цикл Webots While не работает с getTime ()

Я использую цикл while, чтобы выполнять функцию в течение определенного времени. Я использую Webots и функцию getTime (), чтобы получить время симуляции. Проблема в том, что программа вообще не входит в функцию цикла, и когда я возвращаю ее, она вылетает. цикл while выглядит следующим образом:

     tim=float(robot.getTime())
     tim2=float(robot.getTime())
     while tim2-tim<0.581:
         right(5.211,5.211)
         tim2=float(robot.getTime())

Может кто-нибудь помочь мне понять, почему это не работает?


person George Tsoufis    schedule 20.07.2018    source источник
comment
Хорошо, если цикл пропущен: может быть, tim2-tim не меньше 0,581 ... пробовали ли вы разные значения для этого порога?   -  person meissner_    schedule 20.07.2018
comment
Я пробовал много разных пороговых значений, и то же самое происходит снова. + tim и tim2 назначаются друг за другом, что намного меньше 0,581 секунды.   -  person George Tsoufis    schedule 20.07.2018
comment
Конечно, похоже, что разница во времени минимальна, но поскольку мы не знаем ни значений, ни реализации ... и приоритет оператора в вашем условии кажется правильным.   -  person meissner_    schedule 20.07.2018
comment
ну, функция right заставляет робота вращаться вправо. единственные команды, которые он имеет в нем, - это назначение скорости двигателей. желаемая функция этого блока - вращать робота вправо в течение 0,581 секунды.   -  person George Tsoufis    schedule 20.07.2018


Ответы (1)


Вам нужно вставить вызов robot.step () внутри цикла while, иначе симуляция Webots не будет продвигаться, и время останется прежним.

person Olivier Michel    schedule 30.07.2018