ros::init
ros::init ( argc, argv, "my_node_name" );
ros::init ( argc, argv, "my_node_name", ros::init_options::AnonymousName );
ros::init ( argc, argv, "my_node_name", ros::init_options::NoSigintHandler );
ros::init(argc, argv, "my_node_name");是最基本的初始化方式,用于创建一个节点并指定节点名称为 "my_node_name"。
ros::init(argc, argv, "my_node_name", ros::init_options::AnonymousName); 在基本初始化的基础上,使用了匿名节点名称,这允许在运行时为节点生成唯一的名称,通常用于避免节点命名冲突。
ros::init(argc, argv, "my_node_name", ros::init_options::NoSigintHandler); 除了指定节点名称外,使用了 `ros::init_options::NoSigintHandler`。这表示在按下Ctrl+C时,ROS不会处理SIGINT信号。通常,ROS会捕获SIGINT信号并进行清理工作,但使用`NoSigintHandler`选项可以禁用这种默认行为。
ros::NodeHandle
节点定义即初始化方式
ros::NodeHandle nh_; //通常用于topic和service的调用 普通定义
ros::NodeHandle private_nh_("~"); //通常用于参数的调用 //私有句柄定义
ros::NodeHandle nh_("some_namespace"); //可以,但通常不用
节点句柄初始化方式 | ROS真正寻找(resolve)的参数 |
ros::NodeHandle nh_; | /node_namespace/param_name |
ros::NodeHandle private_nh_("~"); | /node_namespace/node_name/param_name |
ros::NodeHandle nh_("some_namespace"); | /node_namespace/some_namespace/param_name |