ros::spin()的理解 | 您所在的位置:网站首页 › spinning什么意思 › ros::spin()的理解 |
ros::spin()的理解
在程序到达ros::spin()之前按照一系列规则,设定一系列话题订阅者。 这些订阅者就开始嗷嗷待哺,等待话题进来,但这时候订阅者的嘴还没有打开。 然后就到ros::spin(),这可以理解为一个动作,打开订阅者的嘴。这样订阅者们可以开始接受话题,最重要的是进入回调函数! 当然,最开始的时候,没有话题进来,spin()是堵塞在这里的。 一旦有话题进来, 一系列订阅、回调、发布等等动作在spin()这里不断在进行,只要有合适的话题,相应的订阅者就订阅,然后直接进行回调。 int main(int argc,char** argv) { ros::init(argc, argv, "message_filter_node"); // 相当于给一个命名空间 ros::Time::init(); ros::NodeHandle n; Scan2 scan; // 默认构造 Odom_calib.Set_data_len(12000); Odom_calib.set_data_zero(); ros::spin(); // 主程序到这里往下不再进行,等待话题进来回调就行 return 0; }Scan2 scan; 这一句默认构造构造出一系列的话题订阅和发布的规则,一系列订阅者。但是嘴还没张开。 程序会接着往下走,一直到: ros::spin();的时候, 把订阅者的嘴们张开,开始订阅话题并产生回调。 |
CopyRight 2018-2019 实验室设备网 版权所有 |