我们如何知道传感器值是否已更新?

时间:2019-07-04 03:37:23

标签: webots

传感器通常通过wb_XXX_enable(tag, sampling_period)启用, 并且可以使用wb_XXX_get_values(tag)来检索传感器值。

我们如何知道用wb_XXX_get_values(tag)检索的值是否是新值?

一种幼稚的方法是保存值并在每个循环中进行比较,但是如果传感器值没有变化,它将无法正常工作。

1 个答案:

答案 0 :(得分:2)

假设您在控制器的第一步启用了所有传感器(如果不是这种方法也可以,但是会更加复杂,因为您需要在每个传感器的时间上增加一个偏移量):

  1. 在每个步骤中,对于每个传感器,您都可以使用period = wb_XXX_get_sampling_period(tag)获得采样周期。
  2. 然后您可以获得当前的仿真时间并将其转换为毫秒:int time = 1000 * wb_robot_get_time()
  3. 最后,您可以将时间与传感器的采样周期进行比较,如果模数为0,则表示传感器刚刚更新:bool updated = time % period == 0