文章目录
roscpp
初始化函数
ros::init()
是节点中第一个调用的函数,参考。一般是将 argc
,argv
还有这个节点的名字传入。
Handler
ros::Handler
类。关于消息,服务在第一篇中已经说过。
Timer
创建定时器,每隔一段时间会自动调用函数。感觉像是 ROS 里面自带的多线程。
比如写传感器节点时,希望传感器每隔一段时间发布传感器信息,就可以用定时器。
补充:ROS Time
ROS 中有两种时间,ROS Time
与 Wall Time
。ROS Time
指 ROS 网格中的时间。在非仿真环境下和 Wall Time
相同,就是当前时间。但是在仿真环境,或者数据包回放时,这个时间可以被修改(加速,减速),但是 Wall Time
不行。
两种时间类型。Time
指时刻,Duration
指时间间隔。
ros::Time cur = ros::Time::now(); // get current time
注意时间!!在 Rosbag 中有两个时间戳,外层的是记录这个数据包时候的时间,数据里面 header 才是真正数据发布的时间,不要弄混了。
定时器创建
CallbackQueue
回调队列,用于管理和响应 ROS 回调函数。
补充 ros spinning
ROS 将线程模型隐藏,通过 spin 机制调用。单线程 spin:
// one way
ros::init(argc, argv, "my_node");
ros::NodeHandle nh;
ros::Subscriber