2014-11-14 3 views
0

일부 메시지와 함께 다른 메타 패키지 B와 다른 메시지가있는 ROS 메타 패키지 A가 있다고 가정 해 보겠습니다. 서로 의존성을 가지지 않고 A와 B를 msgs 메커니즘으로 통신 할 수 있습니까? 내 목표는 사용자가 메타 패키지 A를 복제하고 패키지 B를 완전히 독립적으로 빌드하고 패키지 B를 대칭으로 복제하고 패키지 A와 독립적으로 빌드하고 시작하는 특정 노드가 복잡한 메시지와 통신하도록 허용하는 것입니다. 심지어 가능할까요?독립형 ROS 패키지

다니엘

답변

1

내가 아는 한, 이것은 불가능합니다.

패키지 A가 패키지 B에 정의 된 메시지 유형을 사용한다고 가정 해 봅시다.이 메시지 유형을 사용하려면 생성 된 헤더 파일을 포함해야합니다. 이는 B를 A의 종속성으로 추가하는 경우에만 가능합니다.

내가 생각할 수있는 두 가지 해결책이있다 (그들은 당신을 위해 가능 여부는 나도 몰라) :

  1. 당신은 별도의 패키지 C 모든 메시지 A의 정의와 B를 움직일 수 (메시지 만 포함하고 그 이상은 포함되지 않음). A와 B는이 새로운 패키지 C에 종속되지만 서로간에 종속 관계가 없습니다.

  2. 다른 해결책은 이미 ro가 정의한 표준 메시지 유형 만 사용하는 것입니다. 전송하는 데이터가 표준 메시지 유형 중 하나에 들어 맞는 경우 이는 물론 실현 가능한 솔루션입니다.

+0

나는 이미 언급 한 첫 번째 해결책을 사용합니다. 그것은 깨끗하고 컴팩트하지만 "코드 순수성"이며 다른 메커니즘이 있기를 바랬습니다. 공개적으로 만들고 싶은 두 번째 메타 패키지와 내 개인적인 목적으로 만 만든 두 번째 메타 패키지 (전체 그룹)는 두 가지 메타 패키지에서 같은 형식으로 메시지를 넣기로 결정했습니다. 기여자가 첫 번째 메타 패키지의 출력물로 이러한 메시지를 사용할 수있게하고, 두 프로젝트를 모두 빌드하고자한다면 메시지 노드 중 하나에 CATKIN_IGNORE를 추가하면 모든 것이 매력처럼 작동합니다. 감사합니다. –