Как мы узнаем, было ли обновлено значение датчика?

Датчики обычно включаются с помощью wb_XXX_enable(tag, sampling_period), а значения датчиков можно получить с помощью wb_XXX_get_values(tag).

Как мы узнаем, являются ли значения, полученные с помощью wb_XXX_get_values(tag), новыми значениями?

Наивный подход - сохранять значения и сравнивать их для каждого цикла, но он не будет работать, если значения датчиков не изменились.


person Inbae Jeong    schedule 04.07.2019    source источник


Ответы (1)


Предполагая, что вы включаете все свои датчики на первом этапе контроллера (если это не так, этот метод также работает, но немного сложнее, так как вам нужно добавить смещение по времени для каждого датчика):

  1. На каждом шаге для каждого датчика вы можете получить период выборки с помощью period = wb_XXX_get_sampling_period(tag).
  2. Затем вы можете получить текущее время моделирования и преобразовать его в миллисекунды: int time = 1000 * wb_robot_get_time()
  3. Наконец, вы можете сравнить время с периодом выборки датчика, если по модулю 0, это означает, что датчики были только что обновлены: bool updated = time % period == 0.
person David Mansolino    schedule 04.07.2019
comment
Это должно быть wb_XXX_get_sampling_period(tag) вместо wb_XXX_et_sampling_period(tag) - person Olivier Michel; 04.07.2019