ROS学习之 cpp定时器
2016-07-18 17:40
1421 查看
wiki链接: http://wiki.ros.org/roscpp/Overview/Timers
http://wiki.ros.org/roscpp_tutorials/Tutorials/Timers
关于定时器,在ROS学习之cpp教程(http://blog.csdn.net/shiyue0010/article/details/51925666)的第六部分已经学习过了,这里详细补充几点.
createTimer()方法有很多重载方法,通常的原型如下:
ros::Timer ros::NodeHandle::createTimer(ros::Duration period, <callback>, bool oneshot = false);
参数说明:
period:定义了定时器回调函数调用间隔,ros::Duration(0.1)定义了一个匿名类作为period参数,表示每隔0.1s调用一次定时器回调函数
<callback>:定时器回调函数,可以是一般函数,类成员方法,仿函数对象等等
oneshot:确定该定时器是一次性定时还是持续调用
参数 ros::TimerEvent时间事件结构体
ros::TimerEvent
ros::Time last_expected
上次回调理想发生时间
ros::Time last_real
上次回调实际发生时间
ros::Time current_expected
本次回调理想发生时间
ros::Time current_real
本次回调实际发生时间
ros::WallTime profile.last_duration
上次回调持续时间
1) 一般函数
2) 类成员方法
3) 仿函数对象
cpu时间:是指运行程序指令所实际消耗的cpu的时间,不包含其它程序占用cpu时导致实际耗时增加的情况
ros::Timer在可以获得ROS Clock的情况下会使用它(计算流逝时间),而通常,它只会运行在时间模拟情况,这导致定时的不准确.
如果希望定时器一直使用壁钟时间,ros提供了ros::WallTimer,它与ros::Timer使用方法相同,仅仅把Timer改为WallTimer而已
http://wiki.ros.org/roscpp_tutorials/Tutorials/Timers
关于定时器,在ROS学习之cpp教程(http://blog.csdn.net/shiyue0010/article/details/51925666)的第六部分已经学习过了,这里详细补充几点.
1.创建一个定时器
ros::NodeHandle::createTimer()方法创建定时器对象.createTimer()方法有很多重载方法,通常的原型如下:
ros::Timer ros::NodeHandle::createTimer(ros::Duration period, <callback>, bool oneshot = false);
参数说明:
period:定义了定时器回调函数调用间隔,ros::Duration(0.1)定义了一个匿名类作为period参数,表示每隔0.1s调用一次定时器回调函数
<callback>:定时器回调函数,可以是一般函数,类成员方法,仿函数对象等等
oneshot:确定该定时器是一次性定时还是持续调用
2.回调函数原型
void callback(const ros::TimerEvent&);参数 ros::TimerEvent时间事件结构体
ros::TimerEvent
ros::Time last_expected
上次回调理想发生时间
ros::Time last_real
上次回调实际发生时间
ros::Time current_expected
本次回调理想发生时间
ros::Time current_real
本次回调实际发生时间
ros::WallTime profile.last_duration
上次回调持续时间
3.回调函数的类型
与消息,服务回调函数类似,定时器回调函数也有三种类型,这里就不再赘述了1) 一般函数
2) 类成员方法
3) 仿函数对象
4.壁钟定时器
壁钟时间:相对于cpu时间,是指实际运行程序流逝的时间,包含了在执行程序时,实际发生的状况,比如此时有很多其它程序或者I/O操作等.cpu时间:是指运行程序指令所实际消耗的cpu的时间,不包含其它程序占用cpu时导致实际耗时增加的情况
ros::Timer在可以获得ROS Clock的情况下会使用它(计算流逝时间),而通常,它只会运行在时间模拟情况,这导致定时的不准确.
如果希望定时器一直使用壁钟时间,ros提供了ros::WallTimer,它与ros::Timer使用方法相同,仅仅把Timer改为WallTimer而已
相关文章推荐
- ip与int之间的转化函数
- ip与int之间的转化函数
- ip与int之间的转化函数
- ip与int之间的转化函数
- ip与int之间的转化函数
- ip与int之间的转化函数
- Cpp环境【Uva11572】【Vijos2788】唯一的雪花(并没有雪花=_=)
- C语言中函数strlen等的实现
- c/c++ 数组和指针的一些不同之处
- 下面对 C++ 静态数据成员的描述中,正确的是?
- c#调用第三方c++嵌套结构体内联体方式
- 用c++ 通过thrift2 访问hbase数据库
- 下面有关c++线程安全,说法错误的是?
- C++ 程序延时处理的几种方法
- C++ vector容器find查询函数
- Cpp环境【Uva10815】【Vijos2785】安迪的第一本字典
- c语言指针之排序两数大小
- C语言 10进制转16进制
- ROS学习之 cpp参数服务器
- CF55D Beautiful numbers (数位DP)