8/6 catkin, workspace, package의 역할
일반적으로 프로젝트를 수행할 때, 프로젝트를 담을 파일을 만들고 이 안에서 관련 data들을 저장한다.
마찬가지로, ros를 할 때 프로젝트를 담을 workspace를 만들고 그안에 package를 추가한다. 이 때, 여러 package가 존재하는데 이를 관리하는 것이 catkin 인 것 같다.
catkin : a powerful build and management system
catkin workspace : 최상위 directory로써 모든 package를 담는다.
catkin package : 모든 ros 소프트웨어는 catkin package로써 구성되고 분배된다. workspace와 마찬가지로 그냥 하나의 directory(파일)에 지나지 않는다. node를 위한 sourcecode를 포함하며 유용한 scripts와 환경설정파일 등을 포함한다.
[정리]
하나의 workspace안에 여러 package가 있으며 각각 directory로서 존재한다. 하나의 package안에는 소스코드, 스크립트 등의 파일이 존재한다.
8/7 catkit workspace만들기
1) directory 만들기
$ mkdir -p ~/catkin_ws/src
프로젝트를 저장할 catkin_ws를 만들고 그안에 src파일을 만든다.
2) src에 CMakeLists.txt 생성
$ cd ~/catkin_ws/src
src파일안에 생성하기 위해 src로 이동한다.
$ catkin_init_workspace
CMakeList.txt를 생성한다. 이는 소스코드로 파일이름이 src(source)임을 보고 유추할 수 있다.
3) catkin_ws 디렉토리에서 build
$ cd ..
작업공간을 catkin_ws로 옮긴다
$ catkin_make
작업공간을 catkin_ws로 옮겼지만 신기하게도 src파일 안의 CMakeList.txt를 이용해 build한다. wiki에 따르면 build한다는 것은 사람들이 읽고 쓰는 컴퓨터언어인 소스코드를 컴퓨터에 적용하기위해 컴파일하는 것이라고 한다. 따라서 cmake는 소스코드가되고 이를 컴파일하기 위한 명령문이 catkin_make이다.
그 결과로 catkin_ws에 build 파일과 devel파일이 새롭게 생성되고 그안에는 잡다한 하지만 중요한 여러 파일이 또 생성되어 있음을 볼 수 있다.
http://wiki.ros.org/catkin/commands/catkin_make
$ source devel/setup.bash
build과정으로 생성된 devel파일 안의 setup.bash를 실행하여 그 작업공간이 ros환경의 최상위에 overlay되도록 쉘에 등록한다...? 무슨말인지 모르지만 감은 온다...!
setup.bash를 실행하면 environment variables가 setting되는데 이것이 시스템이 필요한 모든 package와 library 등을 찾게 도와준다고 한다.
$ roslaunch <package이름> 파일명.launch
이전에 ros를 실행할 때 rosmaster를 만들고 또 다른 각각의 창에 새로운 node들을 생성하였지만 roslaunch를 사용하면 한번에 여러개의 노드를 생성할 수 있다고 한다.
'기계공학부 시절의 기록 > ROS일기' 카테고리의 다른 글
200813일기 c++과 ros (0) | 2020.08.13 |
---|---|
github에 push하기 (0) | 2020.08.07 |
[ROS intro] turtlesim node 생성하고 ros와 소통하기 <ROS commandline 정리> (0) | 2020.08.06 |
[ROS intro] node, rosmaster, topic, message (0) | 2020.08.06 |
udacity - robotics software engineer(20.8.01~) (4) | 2020.08.03 |
댓글