2016-11-30 16 views
0

実行時(私がroslaunchを呼び出すとき)、既知のディレクトリに新しいサブディレクトリを作成し、そのパスを2つの異なるノードにrosparam 。ros launchを使用してディレクトリを作成し、そのパスを別のノードに渡します。

.launchファイルを編集するにはどうすればよいですか?

たとえば、私は~/datacaptureというフォルダを持っています。 roslaunchを使用するたびに、現在の時刻(つまり~/datacacpture/20161129_1352/)に基づいてサブディレクトリを作成し、それをrosparamsを使用していくつかのノードに渡したいとします。

さらに、私が何をしたいのか、ここでは一例roslaunchファイルで説明するために:私はそれが見えるようにしたいどのような

<launch> 
    <node 
    name="node_A" 
    pkg="pkg_A" 
    type="A" 
    output="screen" 
    > 
    <param name="dataDumpFolder" value="???" /> 
    </node> 

    <node 
    name="node_B" 
    pkg="pkg_B" 
    type="B" 
    output="screen" 
    > 
    <param name="dataDumpFolder" value="???" /> 
    </node> 
</launch> 

はこれです:これは、任意のは不可能である

<launch> 
    #1) create a new folder using current date. 
    #2) pass it's filepath into a variable. let's call the variable, NEW_FOLDER_FILE_PATH 


    <node 
    name="node_A" 
    pkg="pkg_A" 
    type="A" 
    output="screen" 
    > 
    <param name="dataDumpFolder" value="NEW_FOLDER_FILE_PATH" />  
    </node> 

    <node 
    name="node_B" 
    pkg="pkg_B" 
    type="B" 
    output="screen" 
    > 
    <param name="dataDumpFolder" value="NEW_FOLDER_FILE_PATH" /> 
    </node> 
</launch> 
+2

適切な名前のフォルダを作成し、[パラメータ化された起動ファイル]で 'roslaunch'を呼び出すシェルスクリプトを書く方が簡単です(http://wiki.ros.org/roslaunch/XML/arg)。 – mikkola

答えて

1

一般的な方法。また、(a)roslaunchはこのためのものではなく、(b)エラー処理が面白くなるというのは良い考えではありません。

共有フォルダ名を必要としない方法がある場合、または事前に決定してそのファイルを引数として起動ファイルに渡すことができる場合、またはファイル名を提供するノードをサービスとしてまたはラッチされたトピックを介して)、これが望ましい場合があります。これは、必要なフォルダを作成し、その名前をstdoutに出力する小さなシェルスクリプトを書くことです。これにより、<param name="dataDumpFolder" command="your script" />を使用することができます。値を使用する前に空白を削除する必要があるかもしれません。

関連する問題