< >
Home » ROS与C++入门教程 » ROS与C++入门教程-nodelet-运行Nodelet

ROS与C++入门教程-nodelet-运行Nodelet

ROS与C++入门教程-nodelet-运行Nodelet

说明:

  • 介绍如何运行一个Nodelet

准备:

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>

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ROS与C++入门教程