加载中…
个人资料
孤峰乔木
孤峰乔木
  • 博客等级:
  • 博客积分:0
  • 博客访问:38,140
  • 关注人气:24
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

ROS基础--Ros node启动与关闭

(2017-08-17 18:29:33)
标签:

ros基础

分类: ros基础

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

 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有