"ros::NodeHandle"的用法:全局vs.私有
2021/7/20 9:06:46
本文主要是介绍"ros::NodeHandle"的用法:全局vs.私有,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
"ros::NodeHandle"的用法
1. 自动启动和结束
ros::NodeHandle
管理着一个内部引用数,使得开启和结束一个节点(node)可以简单地按照下面一行代码完成:
ros::NodeHandle nh;
2. 命名空间(Nnamespaces)
NodeHandles
可以指定一个命名空间给它的构造函数:
ros::NodeHandle nh("my_namespace");
这行代码将创建一个相对于NodeHandle
的域名,<node_namespace>/my_namespace
,而不是直接地表示为<node_namespace>
。
你也可以指定一个父节点的NodeHandle和命名空间,后面可以跟子节点的NodeHandle和命名空间:
ros::NodeHandle nh1("ns1"); ros::NodeHandle nh2(nh1, "ns2");
这将会把nh2
放在<node_namespace>/ns1/ns2
的命名空间下。
全局域名(Global Names)
如果确实需要,你可以指定一个全局域名:
ros::NodeHandle nh("/my_global_namespace");
这样的方式通常不是很推荐,因为它会阻止节点被放进命名空间(如使用roslaunch
)。但是,有时候,在代码中使用全局命名空间也会很有用。
私有域名(Private Names)
使用私有域名比起直接调用一个带有私有域名("~name")的NodeHandle
函数要麻烦一点。相反,你必须创建一个新的位于私有命名空间的NodeHandle
:
ros::NodeHandle nh("~my_private_namespace"); ros::Subscriber sub = nh.subscribe("my_private_topic", ...);
上面这个例子将会订阅话题<node_name>/my_private_namespace/my_private_topic
。
参考
- http://wiki.ros.org/roscpp/Overview/NodeHandles
这篇关于"ros::NodeHandle"的用法:全局vs.私有的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)