ROS与C++入门教程-nodelet-运行Nodelet
ROS与C++入门教程-nodelet-运行Nodelet
说明:
- 介绍如何运行一个Nodelet
准备:
- 我们将假设nodelet_tutorial_math已经被编译并且roscore正在运行
rosmake nodelet_tutorial_math
roscore
启动管理器manager
- nodelet需运行在NodeletManager节点管理器内。
- 节点管理器是一个c++程序,它被设置为监听ROS服务,并且是动态加载节点的可执行文件。
- 在这种情况下,我们将运行一个独立的管理器,但在许多情况下,这些管理器将嵌入在运行的节点中。
rosrun nodelet nodelet manager __name:=nodelet_manager
- 为了清楚起见,我们已将此节点重命名为nodelet_manager
启动节点
- Nodelet也通过使用nodelet可执行文件远程启动。
- 这个代码做什么?
- 这里调用的nodelet可执行文件将联系nodelet_manager并要求它实例化nodelet_tutorial_math/Plus Nodelet一个实例。
- 如果在nodelet中应用这些代码,它可以传递名称,nodelet1,以及任何重新映射,。
- 参数也出现在右边的命名空间中。
rosrun nodelet nodelet load nodelet_tutorial_math/Plus nodelet_manager __name:=nodelet1 nodelet1/in:=foo _value:=1.1
- 列出话题:
rostopic list
- 显示:
/foo
/nodelet1/out
- 列出节点
rosnode list
- 显示:
/nodelet1
/nodelet_manager
测试:
- 新终端,发布话题
rostopic pub /foo std_msgs/Float64 5.0 -r 10
- 新终端,显示节点内容
rostopic echo /nodelet1/out
- 显示:
Will show: 6.1 which is 5.0 + 1.1 .
在roslaunch文件中使用
- 下面是一个示例启动文件(在nodelet_tutorial_math包中可用),其中多个nodelet在同一独立管理器上运行:
<launch>
<node pkg="nodelet" type="nodelet" name="standalone_nodelet" args="manager"/>
<node pkg="nodelet" type="nodelet" name="Plus"
args="load nodelet_tutorial_math/Plus standalone_nodelet">
<remap from="/Plus/out" to="remapped_output"/>
</node>
<rosparam param="Plus2" file="$(find nodelet_tutorial_math)/plus_default.yaml"/>
<node pkg="nodelet" type="nodelet" name="Plus2" args="load nodelet_tutorial_math/Plus standalone_nodelet">
<rosparam file="$(find nodelet_tutorial_math)/plus_default.yaml"/>
</node>
<node pkg="nodelet" type="nodelet" name="Plus3" args="standalone nodelet_tutorial_math/Plus">
<param name="value" type="double" value="2.5"/>
<remap from="Plus3/in" to="Plus2/out"/>
</node>
</launch>
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号