初始化选项
ros::init_options::NoSigintHandler
不安装 SIGINT 句柄.这种情况下你需要自己安装SIGINT句柄来保证节点在退出时候会正确的关闭 . SIGINT的默认操作是终结一个进程,所以如果你想自己处理 SIGTERM 你需要使用上面的选项.
ros::init_options::AnonymousName
匿名节点名称,增加一个随机数在节点名的后面,使得节点名唯一。
ros::init_options::NoRosout
不向/rosout 话题广播 rosconsole
关闭节点
ros::shutdown()
当调用ros::shutdown()函数来关闭节点是,会终结所有开放的订阅,发布,服务,调用。
默认的roscpp也会安装SIGINT句柄用来检测Ctrl-C,并自动为你关闭节点。
关闭节点测试
有两种方法来检查关闭的状态。最常见的是 ros::ok() 。当ros::ok()返回false时节点已经关闭,通常这样使用
while(ros::ok())
{.......}
另外一种方法是使用 ros::isShuttingDown() 方法。这种方法会在调用而不是执行完ros::shutdown()时立即返回true,一般不鼓励使用这种方法,但在有些情况下很有用,例如要测试一个长久运行的服务回调节点是否被要求关闭并且回调是否需要退出,就需要使用ros::isShuttingDown(),ros::ok()在这里不起作用,因为回调在运行的时候节点不能关闭。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)