ROS中spinning主要包括单线程spining和多线程spinning,下面分别介绍各自用法。

1 单线程spining

(1)ros::spin()

ros::spin()是单线程中最简单的形式,如下示例中所有回调函数通过ros::spin()调用,ros::spin()一旦运行起来就不会退出返回(除非主动调用ros::shutdown()或者ctrl+c)。

ros::init(argc, argv, "my_node");
ros::NodeHandle nh;
ros::Subscriber sub = nh.subscribe(...);
...
ros::spin();

(2)ros::spinOnce()

这是单线程的另一种形式,通常主动周期性调用使用(如publish场合),如下所示:

ros::Rate r(10); // 10 hz
while (should_continue)
{... do some work, publish some messages, etc. ...ros::spinOnce();r.sleep();
}

ros::spinOnce将在定时到时刻调用所有等候调用的函数,它可以返回。

2 多线程spinning

(1)ros::MultiThreadedSpinner

MultiThreadedSpinner是blocking spinner,类似于ros::spin()。 可以在它的构造函数指定线程数,如果设置为0或者未指定的话,将在CPU的每个core上创建一个线程。

ros::MultiThreadedSpinner spinner(4); // Use 4 threads
spinner.spin(); // spin() will not return until the node has been shutdown

(2)ros::AsyncSpinner ()

AsyncSpinner不是blocking spin,更好使用, 支持start()stop()功能。 当它被销毁时候,自动会停止。以下例子等效于上面例子功能:

ros::AsyncSpinner spinner(4); // Use 4 threads
spinner.start();
ros::waitForShutdown();

ROS Spinning-----简介相关推荐

  1. ROS学习(十四):ROS Spinning

    ROS 单线程与多线程 Spinning roscpp 不为应用程序指定具体的线程模型. 允许回调函数调用任意数量的线程 必须要调用线程,否则订阅.服务等回调将永远不会被调用 常见的解决方案是,在主函 ...

  2. ROS control-----controller_manager简介

    ros_control中的controller_manager通过硬实时控制环来控制抽象机器人对象hardware_interface::RobotHW,另外支持controller的加载,卸载,启动 ...

  3. ROS Navigation-----amcl简介

    amcl是一种概率定位系统,以2D方式对移动机器人定位. 它实现了自适应(或者KLD-采样)蒙特卡洛定位法,使用粒子滤波跟踪机器人在已知地图中的位姿. 1 算法 概率机器人一书中讲述了许多算法以及它们 ...

  4. 5 ROS的安装与常用操作简介

    5.1 ROS是什么? ROS(Robot Operating System机器人操作系统)是面向机器人的开源的元操作系统(meta-operating system).它能够提供类似传统操作系统的诸 ...

  5. 深入理解ROS技术 【1】ROS下的模块详解(1-65)

    ROS初探--意义.基本模块_Peace-CSDN博客 概述: 初学者要想快速入门,必须对于众多的ROS模块初步有个认识,需要主动地.有计划地查阅.本篇以字典方式,列出所有的Ros下模块,给出初步解释 ...

  6. 干货:机器人开源操作系统ROS

    导读:前不久,John 为大家介绍过物联网开源操作系统,或许大家还记忆犹新.今天,要介绍的是一款机器人领域的开源操作系统:ROS. 简介 ROS,英文全称 Robot Operating System ...

  7. 【无人驾驶系列】基于ROS的无人驾驶系统

    本文是无人驾驶技术系列的第二篇.在上篇解析光学雷达(LiDAR)技术之后,本文着重介绍基于机器人操作系统ROS的无人驾驶系统.文中将介绍ROS以及它在无人驾驶场景中的优缺点,并讨论如何在ROS的基础上 ...

  8. ROS(1和2)机器人操作系统相关书籍、资料和学习路径

    ROS机器人相关书籍与资料(更新日期2017年11月) ROS发展10年了,已经逐渐成为通用的机器人操作系统标准.ROS 2相关资料链接:http://blog.csdn.net/zhangrelay ...

  9. Jetson nano 上使用ROS进行双目摄像头(CSI-IMX219)操作标定

    Jetson nano 上使用ROS进行双目摄像头(CSI-IMX219)操作标定 Nvidia的Jetson nano上使用索尼的IMX219相机操作ROS CSI-IMX219简介 imx219是 ...

  10. ROS wiki系列|ROS wiki初探(自用)

    在进行ROS学习的过程中,我们总是需要借助一些资料来进行学习,其中,ROS wiki是每个ROS人都必不可少会使用到的工具,在ROS学习中我们也经常要使用ROS wiki来查阅一些语法的解析.功能包的 ...

最新文章

  1. 如何在MARKDOWN编辑器设置表格的宽度?
  2. 使用pytorch建立LSTM神经网络训练识别手写数字
  3. androidstudio调试android 源码 jni,在android studio下配置gradle用ndk-build和ndk-gbd编译调试JNI...
  4. MST(最小生成树)的构造
  5. 玩转 SpringBoot 2 快速整合 | JSP 篇
  6. Java二叉搜索树转循环链表,关于java:二叉搜索树转换为单向链表interview1712
  7. SDUT_2012省赛选拔赛2 部分题目
  8. 五人表决器课程设计单片机c语言,数电课程设计五人表决器设计.doc
  9. 在线URL编码加密工具
  10. dht11 java_树莓派使用DHT11温湿度传感器
  11. qgis二次开发环境
  12. 内大计算机学院在哪个校区,2021年福建船政交通职业学院有几个校区,大一新生在哪个校区...
  13. 标准的服务端返回Result封装及使用
  14. 联想z400linux调节屏幕亮度,联想Z400电脑显示屏亮度无法调节怎么办
  15. 迅捷pdf转换成word转换器 4.1 官方版
  16. 【全国大学生IoT设计竞赛】安谋科技灵动赛题国赛一等奖分享:多足仿生机器人
  17. 阿里云ECS的1M带宽能干嘛?(详解)
  18. dreamweaver cs4 css汉化补丁,dreamweaver cs4官方版
  19. vue3父传子,子传父
  20. Java后端实习总结--福州之旅

热门文章

  1. win10 UWP 你写我读
  2. ADC模数转换器(STM32系列)
  3. elementUI时间日期组件设置的默认时间在ie中无法重置
  4. Mybatis执行插入语句后并返回主键ID
  5. 听歌识曲java_Android自定义View之继承扩展(仿网易云音乐听歌识曲)
  6. 优秀产品经理必备的“十个证书”+项目管理工具
  7. 计算机产品选型与配置,高校校园网设备的选型和配置.DOC
  8. python中的screen blit_什么是python中的surface.blit()函数?它有什么作用?这个怎么运作?...
  9. APP弱网络条件下,体验优化之道
  10. 获取手机WiFi Ip地址