我没有使用命令行运行包,而是制作了一个启动文件
命令行:
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>
最佳答案
要将任意参数传递给启动文件中的节点,您可以使用 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>
关于parameter-passing - 将 arg 添加到启动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37969527/