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

How do we know if a sensor value has been updated or not?

传感器通常启用wb_XXX_enable(tag, sampling_period), 并且可以使用 wb_XXX_get_values(tag).

检索传感器值

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

一个天真的方法是保存值并在每个循环中比较它,但如果传感器值没有改变,它就不会起作用。

假设您在控制器的第一步启用所有传感器(如果不是这种情况,此方法也有效,但有点复杂,因为您需要为每个传感器添加时间偏移):

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