1.定时器的作用

定时器即以一定的频率定时的调用一个回调函数

2 使用定时器

1. 创建一个定时器的工作原理非常类似于创建一个订阅者:

createTimer(Duration period, const TimerCallback& callback, bool oneshot = false,bool autostart = true)

参数的解释:

Duration period:时间间隔
callback:回调函数名
oneshot(默认为false):如果设置为 true,只执行一次回调函数,设置为 false,就循环执行。
autostart(默认为true):如果为true,返回已经启动的定时器,设置为 false,需要手动启动, 如time.start()。

2.定时器回调函数的格式:

void timerCallback(const ros::TimerEvent& e);

3.例子

1.普通定时器

#include "ros/ros.h"
#include<iostream>
using namespace std;
void callback1(const ros::TimerEvent& time_e)
{ROS_INFO("Callback 1 triggered");//cout<<time_e.current_real<<endl;//当前触发的时间,参考上面的解释
}void callback2(const ros::TimerEvent&)
{ROS_INFO("Callback 2 triggered");
}int main(int argc, char **argv)
{ros::init(argc, argv, "timer_test");ros::NodeHandle n;ros::Timer timer1 = n.createTimer(ros::Duration(0.1), callback1);//0.1s运行一次callback1ros::Timer timer2 = n.createTimer(ros::Duration(1.0), callback2);//1s运行一次callback2ros::spin();return 0;
}

2. 回调函数是类成员函数

class Test{void ROSInit(int argc, char **argv);void callback(const ros::TimerEvent& time_event);
}void Test::ROSInit(int argc, char **argv)
{ros::init(argc, argv, "talker");ros::NodeHandle n;ros::Timer timer1 = n.createTimer(ros::Duration(0.1), &Test::callback,this);ros::spin();return 0;
}void Test::callback(const ros::TimerEvent& time_event)
{ROS_INFO("Callback  triggered");
}

&Test::callback 获取函数指针,调用入口,this 指针说明这是哪个对象


wiki参考_Timer

ROS教程(七):定时器相关推荐

  1. MVC5+EF6 入门完整教程七

    原文:MVC5+EF6 入门完整教程七 本篇我们针对表格显示添加一些新功能. 前面我们已经讲解过表格显示数据了,现在我们添加三个常用功能: 对显示结果进行排序.过滤.分页. 文章提纲 理论基础/前置准 ...

  2. ROS教程(3)---静态NAT配置及应用 (

    ROS教程(3)---静态NAT配置及应用  ( 转载于:https://blog.51cto.com/80812345/983093

  3. MongoDB 教程七: MongoDB和PHP结合开发

    视频:MongoDB 教程七: MongoDB和PHP结合开发 Linux上安装 MongoDB PHP扩展 在终端上安装 你可以在linux中执行以下命令来安装MongoDB 的 PHP 扩展驱动 ...

  4. Ubuntu18.04 LTS Melodic ROS 教程:使用URDF创建一个虚拟机器人模型

    Ubuntu18.04 LTS Melodic ROS 教程:使用URDF创建一个虚拟机器人模型 Building a Visual Robot Model with URDF from Scratc ...

  5. c语言第七章函数笔记,我的C语学习笔记-C语言教程(七).doc

    我的C语学习笔记- C语言教程(七) C语言教程---第一章: C语言概论 C语言教程---第二章: 数据类型.运算符.表达式 C语言教程---第三章: C语言程序设计初步 C语言教程---第四章: ...

  6. ROS教程(二):创建工作空间(图文)

    ros教程:创建工作空间 文章目录 前言 一.工作空间? 二.创建一个工作空间 1.创建目录 2.编译 前言 使用catkin创建一个工作空间 一.工作空间? 在ROS系统下,我们所有的项目都放在一个 ...

  7. ROS入门七 机器人建模——URDF

    ROS入门七 机器人建模--URDF urdf ufdf介绍 语法 创建机器人URDF模型 创建机器人描述功能包 创建URDF模型 在rviz中显示模型 改进URDF模型 添加物理和碰撞属性 使用xa ...

  8. STM32CubeMX 实战教程:定时器中断实验(LL 库)

    1.资源的获取:关注博主并点赞对应博客,并在文章下留言邮箱索取: 2.资源的类型:获取资源仅限于免费公开文章或粉丝免费专享文章,不包括付费文章:   博主分享不易,请给三连哦(关注 + 点赞 + 收藏 ...

  9. 汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解

    原文链接:汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解 PLC数据存储原理简介 H123U小型PLC内部采用的是32位的处理器,PLC中的数据处理和电脑中的数据处理基本是一致的 ...

  10. 静态时序分析简明教程(七)]端口延迟

    端口延迟 一.写在前面 1.1 快速导航链接· 二.端口延迟 2.1 输入有效 2.2 输出有效 2.3 set_input_delay 2.3.1 -clock clock_name 2.3.2 - ...

最新文章

  1. 这份GitHub 2.3k星的ML论文清单拿好,工作用得上
  2. ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法
  3. php代码冗余度检查插件,合并ThinkPHP配置文件以消除代码冗余的实现方法
  4. nik collection滤镜
  5. 修改C:\WINDOWS\system32\drivers\etc\hosts 文件有什么作用
  6. hdu3613(扩展KMP)
  7. 第十一届蓝桥杯java B组第二场-试题A: 门牌制作
  8. java 链表中倒数第k个结点
  9. 里面有面和点_鲜虾韭菜水晶饺,皮薄馅大,晶莹剔透,一不小心就变成了面点高手...
  10. hadoop--HDFS概述
  11. Python 各种运算符 布尔运算 迭代器
  12. js高级(类和对象)
  13. apache禁用不安全的http法_tomcat禁用不安全的HTTP方法
  14. 75.58 亿美元成交!美国最大规模 5G 毫米波频谱拍卖
  15. pq 中m函数判断嵌套_PowerQuery 进阶之 M 函数学习
  16. 雨人网络E卡通免费上网的方法
  17. 双向可控硅晶片光耦(TLP160J TLP260J TLP525G)基本原理及应用实例
  18. 51Nod 1007 正整数分组
  19. 佛罗里达大学计算机科学,佛罗里达大学计算机工程硕士专业排名最全内幕详尽分析...
  20. ubuntu绘图软件

热门文章

  1. Comsol学习——经典案例:水净化反应器
  2. 史上最详细的Maven安装教程
  3. 如何格式化128GU盘为fat32?
  4. 数论入门 2021-2-28
  5. 如何关闭mac的SIP
  6. VsCode中文输出为乱码的原因及解决方法
  7. matlab线性同余发生器,线性同余法生成伪随机数
  8. python scratch ev3_如何在scratch上连接乐高ev3?
  9. 如何用Mac线刷小米手机
  10. 数学模型——人口增长模型(基于python)