节点的启动与关闭 ros::init()解析(c++)
1.初始化roscpp 节点
ros::init() API链接:http://docs.ros.org/api/roscpp/html/init_8h.html
在node代码中在调用其它roscpp函数前,首先调用ros::init()函数
例如:
ros::init(argc, argv, "my_node_name");
ros::init(argc, argv, "my_node_name", ros::init_options::AnonymousName);
函数原型:
void ros::init(<command line or remapping arguments>, std::string node_name, uint32_t options);
argc和argv:解析命令行重映射参数
node_name:节点名,在ros系统中,节点名必须唯一;如果重名节点被运行,那之前的节点就会自动关闭。
options:选项参数,明确roscpp的一些具体的行为
初始化节点只是简单地从命令行参数和环境中确定像节点名、名字空间以及重映射。它不会与主节点master交互。
1) 初始化选项
ros::init_options API链接:
http://docs.ros.org/api/roscpp/html/namespaceros_1_1init__options.html
2)获取你的命令行参数
ros::removeROSArgs() API链接:
http://docs.ros.org/api/roscpp/html/init_8h.html
2.启动roscpp节点
最常用的启动roscpp节点的方式就是创建ros::NodeHandle实例:
ros::NodeHandle nh;
二、节点的关闭
1.关闭节点
节点会在调用ros::shutdown()函数时被关闭,这将杀死所有该节点相关的订阅者,发布者,服务请求,服务提供...
2.关闭测试
有两种测试关闭状态的方法。
最常用的方法是ros::ok(),一旦ros::ok()返回false,节点就已经被关闭了。
使用方法:
while(ros::ok())
{
...
...
...
}
另一种是使用ros::isShutDown()方法。当ros::shutdown()函数被调用时,该函数返回true.
在一个持久的服务回调函数中使用该测试函数测试是否应该结束,这时候不能使用ros::ok()来测试,因为节点在回调函数运行时无法完成shutdown
自定义的SIGINT句柄:信号中断句柄。
使用方法:
#include <ros/ros.h>
#include <signal.h>
void mySigintHandler(int sig)
{
// Do some custom action.
// For example, publish a stop message to some other nodes.
// All the default sigint handler does is call shutdown()
ros::shutdown();
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "my_node_name", ros::init_options::NoSigintHandler);
ros::NodeHandle nh;
// Override the default ros sigint handler.
// This must be set after the first NodeHandle is created.
signal(SIGINT, mySigintHandler);
//...
ros::spin();
return ;
}
节点的启动与关闭 ros::init()解析(c++)的更多相关文章
- Elasticsearch源码分析 | 单节点的启动和关闭
本文主要简要介绍Elasticsearch单节点的启动和关闭流程.Elasticsearch版本:6.3.2 相关文章 1.Google Guice 快速入门 2.Elasticsearch 中的 G ...
- ros节点启动和关闭相关
Ros node启动与关闭 1. ros运行单位: Ros程序运行的单位是ros node. 2. ros 节点的启动: (1)初始化ros节点:通过调用ros::init()接口实现:可以通过参数指 ...
- Ros node启动与关闭
1. ros运行单位: Ros程序运行的单位是ros node. 2. ros 节点的启动: (1)初始化ros节点:通过调用ros::init()接口实现:可以通过参数指定默认节点名字,之所以是默认 ...
- ROS节点的初始化及退出详解(ros::init、SIGINT、ros::ok、ros::NodeHandle
https://haoqchen.site/2018/04/28/ROS-node-init/ #include "ros/ros.h" #include <signal.h ...
- PXC节点启动与关闭
PXC节点启动与关闭 最后关闭的PXC节点是安全退出时. cat /var/lib/mysql/grastate.dat,其中safe_to_bootstrap: 1,再次启动集群是则先启动该节点 s ...
- 「从零单排canal 04」 启动模块deployer源码解析
基于1.1.5-alpha版本,具体源码笔记可以参考我的github:https://github.com/saigu/JavaKnowledgeGraph/tree/master/code_read ...
- Oracle 10g RAC 启动与关闭
一. 检查共享设备 一般情况下,存放OCR和Voting Disk的OCFS2 或者raw 都是自动启动的. 如果他们没有启动,RAC 肯定是启动不了. 1.1 如果使用ocfs2的 检查ocfs2 ...
- Oracle 10g RAC启动与关闭命令
一. 检查共享设备 一般情况下, 存放OCR 和 Voting Disk 的OCFS2 或者raw 都是自动启动的. 如果他们没有启动,RAC 肯定是启动不了的. 1.1 如果使用ocfs2的,检查o ...
- Oracle 10gR2 RAC 启动与关闭
一. 检查共享设备 一般情况下, 存放OCR 和 Voting Disk 的OCFS2 或者raw 都是自动启动的. 如果他们没有启动,RAC 肯定是启动不了的. 1.1 如果使用ocfs2的,检查o ...
随机推荐
- Spring Boot使用layui的字体图标时无法正常显示 解决办法
在html文件使用字体图标并且预览时正常,但是启动工程后显示不正常,浏览器调试界面显示字体文件无法decode: Failed to decode downloaded font: xxxxx 如图所 ...
- 子序列个数(fzu2129)
子序列个数 Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- js-ES6学习笔记-Class(6)
1.类相当于实例的原型,所有在类中定义的方法,都会被实例继承.如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”. 2.父类的静态方法,可 ...
- java中获取系统变量
System.getProperty("java.version") 用来获取系统变量.getProperty()这个方法是获取指定键指示的系统属性的.以下是通过System.ge ...
- 从零开始学习html(十一)CSS盒模型——上
一.元素分类 在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <div>.<p>.<h1 ...
- ActiveReports 报表控件V12新特性 -- 可定制的安装设置
ActiveReports是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForms / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求 ...
- 葡萄城报表V11 SP2新版本震撼发布!
葡萄城报表正式发布 v11.2 版本,强势推出国内首创的基于HTML5的在线报表设计器,从此报表设计告别桌面应用程序,随时随地修改报表,真正跨平台操作,从而使任何报表用户更快速的响应报表业务变化! 在 ...
- Emmagee app性能测试工具使用教程
Emmagee app性能测试工具使用教程 by:授客 QQ:1033553122 简介 Emmagee是网易杭州研究院QA团队开发的一个简单易上手的Android性能监测小工具,主要用于监控单个Ap ...
- LeetCode题解之Swap Nodes in Pairs
1.题目描述 2.问题分析 对两个节点进行交换操作 3.代码 ListNode* swapPairs(ListNode* head) { if( !head || head->next == N ...
- bootstrap使用基础
1.为了适应跨屏浏览,Bootstrap为单元格预定义了4种class ,分别对应于手机.ipad.笔记本电脑.台式机. <div class="row"> <d ...