将 arg 添加到启动文件

Posted

技术标签:

【中文标题】将 arg 添加到启动文件【英文标题】:Add arg to launch file 【发布时间】: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>

【问题讨论】:

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

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

<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>

【讨论】:

以上是关于将 arg 添加到启动文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将程序添加到系统服务实现开机自启动

CentOS 7 添加开机启动项

如何将启动图像添加到 Sencha Touch 2 应用程序?

Cordova cli 使用 7.5mb 的默认启动屏幕/图标将 res 文件夹添加到 /www

如何将文件夹添加到由 maven cargo 插件启动的 Tomcat 容器的类路径中

如何将 node.js 添加到这个启动 SonarQube 的 docker-compose 文件中?