2017-05-16 7 views
2

파이썬으로 작성된 두 개의 다른 노드와 C++로 작성된 다른 노드가 있습니다. 그들은 기본적으로 같은 일을하고 있습니다. 비올라 죤스 또는 돼지 같은 다른 방법으로 바나나를 찾고 있다고 가정 해 봅시다. 그래서, 그들의 이름은 다음과 같습니다ROS에서 실행 파일로 여는 동안 노드를 전환 할 수 있습니까?

노드 1 : object_detector_hog_node

노드 2 : object_detector_viola_node

내가 노드가 열립니다있는 선택 매개 변수를 지정할. 그런 일을 할 수 있습니까?

실행 파일에있는 경우 사용할 수 없다는 것을 알고 있습니다. 또한, 두 개의 노드를 열고 매개 변수를 확인하고 노드 중 하나를 제거하고 싶지 않습니다.

답변

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