Ros node启动与关闭

1. ros运行单位:

Ros程序运行的单位是ros node。

2. ros 节点的启动:

(1)初始化ros节点:通过调用ros::init()接口实现;可以通过参数指定默认节点名字,之所以是默认,是因为在命令行执行程序时,是可以修改节点名字的。

(2)启动ros节点:通过调用ros::NodeHnadle创建NodeHnadle实例nh实现,第一次创建实例时,会调用ros::start(),此时启动本节点。

3. ros节点关闭:

(1)通过调用ros::shutdown()接口,关闭ros节点,此接口会关闭订阅话题、发布话题、请求服务以及提供服务。

(2)在最后一个ros::NodeHnadle对象销毁时,会自动调用ros::shutdown(),以此关闭ros节点。

4. 检测ros节点是否已经关闭:

(1)ros::ok()接口:返回false,说明节点已经关闭。

(2)ros::isShuttingDown()接口:返回true,说明ros::shutdown()被调用,但是节点比一定结束。

注:所以一般使用ros::ok()判断,但是在不会结束的节点,例如“ prolonged service callback”中,则只能使用ros::isShuttingDown(),因为此节点不会关闭,疑惑这是什么节点?

5. 中断:

(1)在ros::init()选项中,有一选项ros::init_options::NoSigintHandler,决定是否安装默认SIGINT处理函数,若不带此参数,则安装,程序在收到SIGINT信号(ctrl+c)时,ros::ok()返回false,节点可以走关闭流程。若带此参数,需要自己安装SIGINT处理函数,以保证节点可以结束。

6. 参考:

http://wiki.ros.org/roscpp/Overview/Initialization and Shutdown

7. 代码示例:

https://github.com/ahuer2435/ros_beginner/blob/master/catkin_ws/src/boot_node/src/node_boot_shutdown.cpp

最新文章

  1. Maven的pom.xml 配置详解
  2. Unity垃圾回收
  3. ASP.NET中处理异常的几种方式
  4. 错误:variable `xxx' has initializer but incomplete type
  5. codevs3945 完美拓印
  6. Nginx反向代理,负载均衡配置
  7. hprof教程
  8. poj 2411 Mondriaan's Dream(状态压缩dp)
  9. 开源搜索引擎Iveely 0.8.0
  10. LVS服务原理以及搭建(理论+干货)
  11. 漫谈Java IO之 Netty与NIO服务器
  12. Django建站+Vuejs前端
  13. [svc]cfssl模拟https站点-探究浏览器如何校验证书
  14. 未能加载文件或程序集"CheckRegister"或它的某一个依赖项.参数错误. (异常来
  15. Spring Boot打包war jar 部署tomcat
  16. ElasticSearch查询 第三篇:词条查询
  17. vue-cli 添加到生产环境问题总结
  18. OpenGL学习—04--彩色立方体
  19. Verilog 奇数分频
  20. aes加密在linux下会生成随机key的解决办法

热门文章

  1. demo板 apt-get install stress
  2. docker 运行jenkins及vue项目与springboot项目(三.jenkins的使用及自动打包vue项目)
  3. pytest 教程
  4. django+nginx+uwsgi_cent0s7.4 部署
  5. 【LeetCode 84】柱状图中最大的矩形
  6. linux内核源码——内存管理:段页式内存及swap
  7. 10.2-linux文件与目录管理
  8. LR之分析
  9. 2018-2019-2 20175126谢文航 实验四《Android开发基础》实验报告
  10. php使用curl抓取网页自动跳转问题处理