2017-01-06 2 views
1

ROS Indigo를 실행 중입니다. 나는 간단한 문제가 있어야한다. 필자의 스크립트에서 호출 할 수있는 유틸리티 클래스가 패키지에있다. 우리 자신의 패키지 내에서만 호출하면됩니다. 다른 ROS 패키지에서 사용할 필요는 없습니다.ROS catkin 작업 영역 내에서 Python 클래스 정의 및 사용

파일 HandControl.py에 HandControl이라는 클래스를 정의했습니다. 가져 오기를 시도하거나 가져 오지 않고 사용하려고하면 실패합니다. catkin 작업 공간에서 패키지의 루트 또는 스크립트에 넣을 수 있습니까? 어디서나 __init.py__이 필요합니까 (여러 곳을 사용해 보았습니다)?

+1

_ (1) _ 프로젝트 구조를 표시하십시오. _ (2) _ 수입이 실패 할 경우 귀하가 얻는 전체 추적을 보여주십시오. –

답변

1

여기서 Python과 ROS의 표준을 따르는 것이 좋습니다. 스크립트는 일반적으로 /script 디렉토리에 있으며 이 아니고은 다른 python 스크립트로 가져와야합니다. 재사용 가능한 파이썬 코드는 파이썬 모듈을 나타냅니다. 파이썬 모듈은 /src/package_name에 있어야하고 거기에 __init__.py을 만들어야합니다. 이 모듈은 catkin 작업 공간의 모든 곳에서 사용할 수 있습니다. 이 구조가 미래에 구조화에 도움이되는 좋은 기회가 있습니다. 비록 순간적으로 필요하지는 않을지라도. 프로젝트는 일반적으로 성장하고 지침을 따르면 좋은 코드를 유지하는 데 도움이됩니다. 자세한 내용은 체크 아웃이 python doc.

0

에리카,

파이썬으로 작성되었습니다 this 학교 프로젝트를보고 ROS 인디고에서 실행하십시오. /scripts 폴더를 보면 다른 스크립트에서 호출되는 사용자 정의 클래스의 예제를 볼 수 있습니다. /launch에있는 실행 파일을 살펴보면 ROS 노드 구성의 예를 볼 수 있습니다. 아마도 문제 일 것입니다.

+0

은 어떤 사용자 정의 클래스입니까? 표준 ROS 노드처럼 보이는 꽤 많은 부분을 보았습니다. 내 수업은 노드가 아닙니다. –

+0

좋아요, 그래서 내 문제가 다른 곳에 있다고 밝혀졌습니다. 나는 catkin 작업 공간 프로세스를 재실행했고 지금은 수입이가는 한 일을하고 있습니다. 그건 당신의 프로젝트가 귀중한 정신병 검사 였다고 그래서 내가 upvote을 주신 고 감사드립니다. –