2017-05-16 2 views
2

Pythonで書かれた2つのノードと、C++で書かれた2つのノードがあります。彼らは基本的に同じことをやっている。ビオラ・ジョーンズや豚のようなさまざまな方法でバナナを探しているとしましょう。だから、彼らの名前は、次のとおりです。ROSで起動ファイルを開いてノードを切り替えることはできますか?

ノード1:object_detector_hog_node

ノード2:object_detector_viola_node

私は、ノードが開きますかを選択するパラメータを割り当てます。そのようなことは可能でしょうか?

私は、起動ファイルの中では使用できないことを知っています。また、私は2つのノードを開き、パラメータをチェックしてノードの1つを殺したくありません。

答えて

3

はいこれが可能です。あなたはそれが引数use_hogを追加起動すると

<launch> 
    <arg name="use_hog" default="true" /> 

    <group if="$(arg use_hog)"> 
    <node type="object_detector_hog_node" ... /> 
    </group> 

    <group unless="$(arg use_hog)"> 
    <node type="object_detector_viola_node" ... /> 
    </group> 
</launch> 

:バイナリの選択のために、それは、ブール引数を使用するのが最も簡単です。あなたはまた、デフォルト値を省略することができます

roslaunch your_package object_detector.launch use_hog:=false 

引数を提供していないとき、それはエラーが発生しますヴィオラ・ジョーンズの実行を使用するために豚の実行

roslaunch your_package object_detector.launch use_hog:=true 

を使用します。

詳細はsee the ROS wikiです。

+0

'node'タグで' if'/'unless'を直接使うこともできます。そうすれば' group'は必要ありません。 'group'を使うと、内部で複数のことができるという利点があります。 – luator

関連する問題