1. Catkin workspace?
1) Catkin이라는 용어에 대해서 아래 링크에 정리를 잘해주셨다.
[Linux/ROS] ROS???? 용어 정리
ROS??? 로봇 응용 프로그램을 개발하기 위한 운영체제와 같은 로봇 플랫폼. 로봇 개발할 때 필요한 하드웨어 추상화, 아위 디바이스 제어, 일반적으로 사용되는 기능의 구현, 프로세스간의 메세지
jungmonster.tistory.com
2) 위의 링크에서 기술된 것과 같이 Catkin은 'ROS를 사용하기 위한 빌드, 패키지 관리, 패키기 간의 의존 관계 등을 편리하게 사용할 수 있다'가 역할이자 주요한 기능이다.
3) 이 기능을 통해서 custom으로 제작한 message, service, topic, action, launch file 등을 실행, 수정 등이 가능하다. (자세한 내용은 후에 블로그에 업데이트 예정)
2. Workspace 생성
1) 환경
- OS : Linux (ubuntu 18.04)
- ROS : melodic
2) catkin_ws 폴더 생성
$ mkdir -p ~/catkin_ws/src |
3) workspace 빌드
- 예를 들어 ROS에서 사용할 message를 새로 만들었거나, github를 통해 외부 패키지를 가져오는 등의 경우 ROS에서 사용할 수 있도록 하기 위해 아래 명령어가 필요하다.
- 새로 만들거나 외부에서 가져오는 파일들은 src내에 저장한다.
$ cd ~/catkin_ws $ catkin_make |
- 다음과 같이 2개의 폴더가 자동으로 생성된다.
- 또한 src폴더 내에 파일이 하나 생성된다. (darknet_ros는 빌드 후 git에서 받은 외부 소스)
4) 용어 설명
- catkin_make : catkin을 이용한 작업 과정에서 쓰이는 도구
일반적으로 CMake 작업환경의 컴파일, 빌드 작업이 가능한 cmake와 make가 합쳐져 있는 도구라고 생각하면 된다. - catkin_ws : catkin을 이용해서 작업할 수 있는 공간
package나 source의 수정, 빌드, 설치를 할 수 있는 폴더 - catkin_ws/build : source 폴더의 파일들을 빌드하기 위해 CMake가 호출되는 곳
CMake와 catkin의 캐쉬정보와 다른 중간 매개체의 파일을 보관 - catkin_ws/devel : catkin_make를 통해 빌드된 타깃이 배치되는 곳, 실행파일이 생성
해당 폴더 내 setup.bash를 실행하면 빌드된 launch, source, msg, srv 등을 사용할 수 있음 (ROS 환경에 등록)
3. 예시
1) 위에서 언급한 git에서 받은 외부 소스를 예를 들어보겠다.
- ros 설치할 때는 해당 소스의 관련된 msg나 action이 없었으나, 소스를 git에서 받고 빌드를 하게 되면 사용할 수 있게 된다.
- src 폴더 내에서 아래와 같은 명령어로 다운로드가 가능하다.
$ git clone --recursive https://github.com/leggedrobotics/darknet_ros.git |
- 다운 받은 소스 내부는 darknet의 프로그램, ros에서 사용되는 msg와 launch파일 등으로 구성되어 있다.
2) 빌드
- 아래와 같은 명령어로 빌드를 한다. (명령어 뒤의 옵션은 아래의 링크에서 참조)
$ cd ~/catkin_ws $ catkin_make -DCMAKE_BUILD_TYPE=Release |
REP 128 -- Naming Conventions for Catkin Based Workspaces (ROS.org)
[REP Index] [REP Source] REP:128 Title:Naming Conventions for Catkin Based Workspaces Author:Tully Foote, Dirk Thomas Status:Active Type:Informational Content-Type:text/x-rst Created:16-Oct-2012 Post-History:03-Jul-2014 This REP provides naming conventions
www.ros.org
3) 결과
- setup.bash로 환경에 등록하고 ros master를 실행하고 빌드된 소스의 launch파일이 실행되는지 확인해본다.
$ source ~/catkin_ws/devel/setup.bash $ roscore |
$ roslaunch darknet_ros darknet_ros.launch |
- ros msg도 아래의 명령어로 확인이 가능하다, 뒤에 붙인 grep Bounding은 Bounding이름이 들어간 것만 출력이 되게 하는 옵션 명령어이다.
$ rosmsg list | grep Bounding |
4. 마무리
- msg나 srv 혹은 source나 launch파일을 custom으로 만들고 빌드하는 것은 ros package를 통해서 가능하다.
- 다른 소스들도 가능하니 테스트해보길 바란다.
'Robot > ROS' 카테고리의 다른 글
ROS 소개 및 설치 (0) | 2021.05.21 |
---|
댓글