主要内容

rateControl

以固定频率执行循环

描述

rateControl对象使您能够以固定频率运行循环。它还收集关于循环迭代时间的统计信息。使用等待在循环中暂停代码执行,直到下一个时间步骤。循环操作每DesiredPeriod几秒,除非所附代码的操作时间更长。对象使用OverrunAction属性来确定它如何处理较长的循环操作时间。默认设置,“滑”,则立即执行循环LastPeriod大于DesiredPeriod.使用“下降”导致等待方法等待的下一个倍数DesiredPeriod到达以执行下一个循环。

提示

操作系统的调度分辨率和其他系统活动的级别可能会影响速率执行精度。因此,在执行MATLAB时,精确的速率定时限制在100 Hz®代码。要提高性能和执行速度,请使用代码生成。

创建

描述

例子

rateObj= rateControl (desiredRate创建一个对象,该对象以基于系统时间的固定速率操作循环,并直接设置DesireRate财产。

属性

全部展开

循环的期望执行速率,以Hz为单位的标量指定。当使用等待,循环操作为DesiredRate秒,除非循环时间更长。然后根据指定的参数开始下一个循环OverrunAction

执行之间的期望时间间隔,以秒为单位的标量指定。这个性质等于的倒数DesiredRate

自构造或重置后经过的时间,以秒为单位的标量指定。

的最近两次调用之间的时间间隔等待,指定为标量。默认情况下,LastPeriod设置为直到等待第一次被调用。打完第一个电话后,LastPeriod=TotalElapsedTime

处理溢出的方法,指定为以下字符向量之一:

  • “下降”-等待到下一个时间间隔等于的倍数DesiredPeriod

  • “滑”-立即再次执行循环

每个代码段调用等待在执行结束时。

对象的功能

等待 暂停代码执行以达到预期的执行速度
统计数据 过去执行周期的统计信息
重置 重置对象

例子

全部折叠

创建一个运行在1hz的速率对象。

r = rateControl(1);

开始一个循环使用rateControl对象内部来控制循环执行。在执行重置计时器的循环之前重置对象。打印迭代和时间消耗。

重置(右)i = 1:10 time = r.TotalElapsedTime;流('迭代:%d -时间流逝:%f\n',我等待,时间)(r);结束
迭代:1 -时间流逝:0.002921迭代:2 -时间流逝:1.001767迭代:3 -时间流逝:2.001443迭代:4 -时间流逝:3.001479迭代:5 -时间流逝:4.002085迭代:6 -时间流逝:5.001422迭代:7 -时间流逝:6.001002迭代:8 -时间流逝:7.001471迭代:9 -时间流逝:8.001282迭代:10 -时间流逝:9.001391

每次迭代以1秒的间隔执行。

创建一个rateControl对象运行在20hz。

r = rateControl(20);

控件启动循环和控制操作rateControl对象。

I = 1:30你的代码放在这里等待(r);结束

得到循环操作后的对象统计。

统计数据(r)
统计=带有字段的结构:周期:[0.0556 0.0461 0.0500 0.0503 0.0555 0.0427 0.0501…]numperiod: 30 AveragePeriod: 0.0500标准差:0.0021 NumOverruns: 0

创建一个rateControl对象运行在20hz。

r = rateControl(2);

控件启动循环和控制操作对象。

I = 1:30你的代码放在这里等待(r);结束

显示rateControl循环操作后的对象属性。

disp(右)
rateControl with properties: desiredate: 2 DesiredPeriod: 0.5000 OverrunAction: 'slip' TotalElapsedTime: 15.0191 LastPeriod: 0.5001

重置该对象以重新启动时间统计。

重置(r);disp(右)
属性:DesiredRate: 2 DesiredPeriod: 0.5000 OverrunAction: 'slip' TotalElapsedTime: 0.0029 LastPeriod: NaN

版本历史

在R2016a中介绍

全部展开

另请参阅

(ROS工具箱)|||

Baidu
map