0

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

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

一种天真的方法是保存值并为每个循环进行比较,但如果传感器值没有改变,它就行不通。

4

1 回答 1

2

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

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