我们如何知道传感器值是否已更新?
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)
检索的值是否是新值?
一个天真的方法是保存值并在每个循环中比较它,但如果传感器值没有改变,它就不会起作用。
假设您在控制器的第一步启用所有传感器(如果不是这种情况,此方法也有效,但有点复杂,因为您需要为每个传感器添加时间偏移):
- 在每个步骤中,对于每个传感器,您可以使用
period = wb_XXX_get_sampling_period(tag)
获得采样周期。
- 然后就可以得到当前的模拟时间,换算成毫秒:
int time = 1000 * wb_robot_get_time()
- 最后,你可以将时间与传感器的采样周期进行比较,如果模数为0,则表示传感器刚刚更新:
bool updated = time % period == 0
。
传感器通常启用wb_XXX_enable(tag, sampling_period)
,
并且可以使用 wb_XXX_get_values(tag)
.
我们如何知道使用 wb_XXX_get_values(tag)
检索的值是否是新值?
一个天真的方法是保存值并在每个循环中比较它,但如果传感器值没有改变,它就不会起作用。
假设您在控制器的第一步启用所有传感器(如果不是这种情况,此方法也有效,但有点复杂,因为您需要为每个传感器添加时间偏移):
- 在每个步骤中,对于每个传感器,您可以使用
period = wb_XXX_get_sampling_period(tag)
获得采样周期。 - 然后就可以得到当前的模拟时间,换算成毫秒:
int time = 1000 * wb_robot_get_time()
- 最后,你可以将时间与传感器的采样周期进行比较,如果模数为0,则表示传感器刚刚更新:
bool updated = time % period == 0
。