【问题标题】:Add arg to launch file将 arg 添加到启动文件
【发布时间】:2016-10-24 11:36:36
【问题描述】:

我没有使用命令行运行包,而是创建了一个启动文件

命令行:

rosrun image_view image_saver image:=/the-rgb-image-topic

启动文件:

<launch>
  <node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME">
    <remap from="image" to="/camera/rgb/image_raw"/>
  </node>
</launch>

现在我想为此做同样的事情:

rosrun image_view image_saver image:=/camera/depth/image _encoding:=16UC1

如何将参数添加到启动文件..

我想我应该这样开始

<launch>
  <node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME">
    <remap from="image" to="/camera/rgb/image_raw"/>

  <node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME">
    <remap from="image" to="/camera/depth/image"/>
  </node>
</launch>

【问题讨论】:

  • @alextoind:如果我理解正确,OP 想要在启动文件中设置参数。 arg 标记将用于在启动时将参数传递给启动文件。
  • @luator,是的,您可能是对的,但您也可以使用&lt;arg&gt; 标签的default 属性来提供答案中的默认行为以及对该参数的外部访问,如果需要。

标签: parameter-passing command-line-arguments launch ros depth


【解决方案1】:

要将任意参数传递给启动文件中的节点,您可以使用node tagargs 属性:

<node name="image_saver" pkg="image_view" type="image_saver" args="_encoding:=16UC1" ...>

但是,在这种特定情况下,有一个更好的方法:_encoding 不仅仅是一些任意参数,而是一个由ROS Parameter Server 处理的参数。虽然它可能会起作用,但使用args 属性,更好的方法是使用param tag

<node name="image_saver" pkg="image_view" type="image_saver">
    <remap from="image" to="/camera/depth/image" />
    <param name="encoding" value="16UC1" type="string" />
</node>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    相关资源
    最近更新 更多