제일 우선, 아래 명령어로 내가 만들 프로젝트(=패키지)를 초기화 한다.
$cd ~/catkin_ws/src
$catkin_create_pkg my_package rospy
이렇게 하면, ~/catking_ws/src 폴더 안에 my_package라는 폴더가 만들어 지고, 그 안에 코드 작성에 필요한 기본적인 파일(대표적으로 CMakeList.txt, package.xml)들과 폴더가 생성된다.
이제 package 폴더 안의 src 폴더에 들어가서 파이썬 코드를 작성하면 된다.
소스 코드 작성이 끝나면, roscore를 실행 해 준 다음, 아래와 같이 소스코드를 실행하면 된다.
$roscore
$rosrun my_package 실행소스파일.py
뒷장에서 설명을 하겠지만, 주고 받을 데이터 자료형을 기본형이 아니라 만들어서 사용하거나, 다른 사람이 만들어 놓을 것을 가져와서 사용하는 경우, 이를 소스코드에서 인식시켜 주기 위해서 catkin_make를 실행시켜 줘야 한다. 이때 catkin_make가 하는 역할은 사용자가 사용할 자료형에 맞춰서 클래스를 만들어 주는 것이다. 이 절차는 다음과 같이 수행 한다.
- 데이터(토픽) 자료형을 선언할 파일을 작성한다. (msg, srv, 또는 action 폴더에서)
- 자료형을 CMakelist.txt 에서 선언한다.
-- find_package 에서는 사용할 자료형 package를 선언한다. (기본은 당연히 rospy, std_msgs)
이때, 중요한 점은 'message_generation' 이라고 하는 사용자 정의 자료형을 사용하겠다는 선언이다.
-- add_message (또는 add_service, add_action)에서는 실제 추가한 *.msg, *.srv, *.action 파일을 등록한다.
-- generate_messages는 앞서 find_package에서 등록한 'message_generation"과 연결이 되는 부분으로 사용자가 '만들어줄 자료형 '안에' 어떤 기본 자료형 또는 다른 패키지의 자료형이 사용될 지를 정의하는 부분이다.
-- CMakeList.txt의 마지막 수정은 catkin_package 부분인데, 사용자 정의 자료형을 만들어진 message_generation과 연결되어 message_runtime (메시지를 새로 만들어 주겠다.)를 추가해 주어야 한다.
- 이제, package.xml 파일을 수정해 보자.
-- CMakelist.txt에서 이미 수정을 했는데, 동일한 작업을 package.xml에서 하는 것이 처음이 이해가 되지 않았는데, 현재까지 이해한 바로는 (아직 명확하게 설명한 자료는 찾기 못했음) CMakelist는 catkin make를 통한 빌드 과정에서 사용하는 일종의 '환경변수' 파일이고, package.xml은 실행 단계에서 사용하는 라이브한 문서라는 것이다.
-- <depend> 태그는 <build_depend>와 <exec_depend>를 통합한 테그인데, message_generation만 특이하게, <build_depend>에서 사용하는 문구와 <exec_depend>에서 사용하는 문구가 서로 달라서 (CMakeList.txt의 선언문과 연결됨) 구분하고, 나머지는 모두 <depend>로 추가해주면 된다.
'ROS' 카테고리의 다른 글
ROS1-10 서비스 예제 - 서비스 메시지 준비하기 (0) | 2022.07.27 |
---|---|
ROS1-09 토픽 예제2 - 사용자가 정의한 자료형 (0) | 2022.07.26 |
ROS1-08 토픽 예제1 - 기본 자료형을 사용하는 경우 (0) | 2022.07.26 |
ROS1-06 노드간 데이터를 주고받는 방식 3가지 (0) | 2022.07.26 |
ROS1-05 노드 실행방법 (0) | 2022.07.19 |