아래의 코드를 이용해서 lena.jpg 이미지를 띄워보자

 

코드

 

 

12행 : Mat 클래스의 img 객체를 선언

13행 : imread 함수를 이용하여 lena.jpg를 Mat 형태로 반환하여 img에 저장

21행 : namedWindow함수를 이용하여 "image"라는 이름의 새 창을 생성

22행 : imshow 함수를 이용하여 "image" 창에 img에 저장된 이미지 출력

24행 : waitKey함수를 이용하여 키보드에 입력 신호가 들어올 때까지 대기(이미지 창을 대기)

 

코드를 모두 작성하였다면 실행시키기 전에 lena.jpg 이미지를 인터넷을 통해 다운로드 받거나

opencv 폴더 안에서 찾아서 현재 사용 중인 Visual Studio 프로젝트 폴더 안에 넣는다.

 

 

결과 화면

 

'OpenCV' 카테고리의 다른 글

기본 자료형 클래스(3)  (0) 2020.03.20
기본 자료형 클래스(2)  (0) 2020.03.10
기본 자료형 클래스(1)  (0) 2020.03.10
프로젝트 생성 및 설정  (0) 2020.03.08
OpenCV 설치 및 환경 변수 설정(Window)  (0) 2020.03.08

환경 변수 등록을 마쳤다면 Visual Studio를 실행한 후 파일 -> 새로 만들기 -> 프로젝트를 클릭한 후

Visual C++ -> Windows 데스크톱에 Windows 데스크톱 마법사를 클릭, 프로젝트 이름을 정한 후

솔루션용 디렉터리 만들기를 해제하고 확인을 누른다. 그다음 빈 프로젝트를 클릭한 후 프로젝트를 생성한다.

 

 

프로젝트를 생성 하였다면 OpenCV를 사용하기 위한 설정을 할 것이다.

우선 환경에 맞게 프로젝트 상단 툴바에 x86이라고 되어 있는 부분을 64비트에 맞게 x64로 변경한다.

Debug 모드로 설정이 되어 있는 걸 볼 수 있는데 해당 부분의 Debug 모드와 Release 모드 둘 다 다음 3단계의 과정을 진행한다.

 

처음으로 프로젝트 > (프로젝트이름) 속성 항목을 선택하고 C/C+ -> 일반 -> 추가 포함 디렉터리를 선택하고

편집을 누르고 $(OPENCV_DIR)\include를 추가한다.

 

 

다음으로 링커 -> 일반 -> 추가 라이브러리 디렉터리 항목을 선택하고 편집을 누르고

$(OPENCV_DIR)\x64\vc15\lib라고 입력한다.

 

 

마지막으로 링커 -> 입력 -> 추가 종속성 항목을 선택하고 편집을 누른 뒤

opencv_world420d.lib (Debug 모드), opencv_world420.lib (Release 모드)를 입력한다.

 

(OpenCV 버전에 따라 파일명이 바뀔 수 있으니 확인 후 진행)

 

 

해당 과정까지 마쳤다면 Visual Studio에서 만든 프로젝트에서 OpenCV를 사용할 준비를 마쳤다.

다음에는 실제로 OpenCV를 사용해서 이미지를 출력해 볼 것이다.

'OpenCV' 카테고리의 다른 글

기본 자료형 클래스(3)  (0) 2020.03.20
기본 자료형 클래스(2)  (0) 2020.03.10
기본 자료형 클래스(1)  (0) 2020.03.10
OpenCV 사용 이미지 띄워보기  (0) 2020.03.10
OpenCV 설치 및 환경 변수 설정(Window)  (0) 2020.03.08

리눅스 환경에서만 사용하던 OpenCV를 윈도우 환경에서 사용해보려고 한다.

(Visual Studio 2017 사용)

 

우선 OpenCV를 설치해야 하는데 공식 사이트(https://www.opencv.org/)로 들어가서 RELEASES 메뉴에서

윈도우 패키지를 다운로드한다.

 

다운을 다 받으면 C:\ 아래에 압축을 해제를 하고 그러면 C:\ 아래에 opencv라는 폴더가 생길 것이다.

 

압축 해제까지 되었다면 OpenCV를 사용하기 위해 환경 변수를 등록할 것이다.

 

컴퓨터 제어판에서 시스템 -> 고급 시스템 설정 -> 고급 -> 환경변수로 들어간 후에

사용자 변수에 새로 만들기를 한 후 다음과 같이 등록한다.

 

 

마찬가지로 Path를 더블클릭한 후 다음과 같이 등록한다.

 

여기까지 되었다면 OpenCV 설치와 환경 변수 등록이 모두 완료되었다.

다음 글에서는 Visual Studio에서 OpenCV를 사용하기 위한 설정과 실제 OpenCV 함수를 사용해 볼 것이다.

'OpenCV' 카테고리의 다른 글

기본 자료형 클래스(3)  (0) 2020.03.20
기본 자료형 클래스(2)  (0) 2020.03.10
기본 자료형 클래스(1)  (0) 2020.03.10
OpenCV 사용 이미지 띄워보기  (0) 2020.03.10
프로젝트 생성 및 설정  (0) 2020.03.08

1. roscore을 새로운 터미널에서 동작시킨다. (하나의 roscore만 실행 가능하다.)

 

rocore

 

2. 터틀심을 실행시킨다.

 

rosrun turtlesim turtlesim_node

 

3. 터틀심의 거북이를 조종하기 위해서 키보드 값을 받아오는 노드를 실행시킨다.

 

rosrun turtlesim turtle_telop_key

(실행을 시켰다면 키보드를 이용해 거북이를 움직여보자!)

 

turtlesim_node와 turtle_teleop_key 노드는 topic을 통해 통신한다. turtle_teleop_key는 키의 입력을 발행(publishing)하고, turtlesim은 키의 입력을 전달받기 위해 같은 topic을 구독(subscribing)한다. 그럼 이제 rqt_graph를 이용해 node와 topic이 어떻게 동작하고 있는지 확인해 보자.

 

4. rqt_graph를 실행하여 그래프를 확인해보자.

만약 rqt가 설치되어 있지 않다면 설치해주자.

 

sudo apt-get install ros-melodic-rqt

sudo apt-get install ros-melodic-rqt-common-plugins

 

rosrun rqt_graph rqt_graph

 

 

 

5. rostopic 명령어를 통해 토픽의 리스트를 확인, 토픽의 값 확인, 메시지 타입 확인 등을 할 수 있다.

 

rostopic list

 

rostopic ehco /turtle1/cmd_vel

(위에서 그래프를 보면 알 수 있듯이 토픽 이름은 /turtle1/cmd_vel이다.)

 

rostopic type /turtle1/cmd_vel

(해당 명령어를 실행하면 geometry_msgs/Twist 결과를 볼 수 있을 것이다.)

 

메시지를 자세히 알아보기 위해 rosmsg를 이용하자.

rosmsg show geometry_msgs/Twist

 

 

6. 이쯤 됐으면 해당 토픽의 메시지를 조작하여 거북이를 움직일 수 있다는 생각이 들지 않는가?

 

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

 

/turtle1/cmd_vel 토픽의 geometry/Twist 메시지를 publish 해주는 명령어이다.

(실행해보면 거북이가 움직이는 것을 볼 수 있다.)

 

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

(옵션 r을 추가해 주면 계속해서 거북이가 움직이는 것을 볼 수 있다.)

 

rostopic hz 등 다른 옵션들도 해보길 바란다.

 

7. 데이터의 흐름을 볼 수 있는 그래프를 이용해 데이터 흐름을 보자

 

rosrun rqt_plot rqt_plot

 

rqt_plot이 실행 됐다면 토픽명을 입력하여 해당 토픽의 값에 따른 그래프의 흐름을 볼 수 있다.

'ROS' 카테고리의 다른 글

7. ROS 노드 이해하기  (0) 2020.01.24
6. ROS 용어 정리2  (0) 2020.01.24
5. ROS 용어 정리  (0) 2020.01.13
4. ROS 패키지 생성  (1) 2020.01.10
3. ROS 파일시스템  (0) 2020.01.09

1. roscore를 실행(roscore 실행은 ROS를 사용할 때 가장 먼저 해야 하는 일이다.)

 

roscore

 

(만약 roscore가 실행되지 않고 Permission 메세지를 보낸다면, ~/.ros 폴더를 관리자 권한으로 바꿔주면 된다.)

sudo chown -R <사용자명> ~/.ros

 

2. roscore가 실행 됐다면 새로운 터미널 창을 열고 현재 실행 중인 노드의 리스트를 확인해보자.

 

rosnode list

(보이는 것과 같이 /rosout 노드 하나만 보일 것이다.)

 

3. 해당 노드의 정보를 보고 싶을 때는 info 옵션을 쓰면 된다.

 

rosnode info /rosout

 

4. 이제 rosrun으로 노드를 실행시켜보자.

 

rosrun turtlesim turtlesim_node

 

 

 

5. 다시 노드의 리스트를 확인해보자.(그럼 turtlesim 노드가 리스트에 추가되어 있을 것이다.)

 

rosnode list

 

 

6. 노드를 실행할 때 노드의 이름을 정해 줄 수 있다.(다음과 같은 방식으로 여러 개의 turtlesim을 실행 가능하다.)

 

rosrun turtlesim turtlesim_node __name:=my_turtle

 

rosnode list

 

 

참고자료:

http://wiki.ros.org/ko/ROS/Tutorials/UnderstandingNodes

'ROS' 카테고리의 다른 글

8. ROS 토픽 이해하기  (1) 2020.01.24
6. ROS 용어 정리2  (0) 2020.01.24
5. ROS 용어 정리  (0) 2020.01.13
4. ROS 패키지 생성  (1) 2020.01.10
3. ROS 파일시스템  (0) 2020.01.09

13. 캐킨

캐킨(catkin)은 ROS의 빌드 시스템을 말한다. ROS의 빌드 시스템은 기본적으로 CMake(Cross Platform Make)를 이용하고 있어서 패키지 폴더에 CMakeLists.txt라는 파일에 빌드 환경을 기술 하고 있다. ROS에서는 CMake를 ROS에 맞게 수정하여 ROS에 특화된 캐킨 빌드 시스템을 만들었다. 캐킨은 ROS Fuerte 버전부터 알파테스트를 시작하여 Groovy에서 코어 패키지들이 캐킨으로 전환 됬으며, Hydro 버전부터 대부분 패키지에 적용되어 사용되고 있다. 캐킨 빌드 시스템은 ROS와 관련된 빌드, 패키지 관리, 패키지 간의 의존관계 등을 편리하게 사용할 수 있게 한다. 현시점에서 ROS를 사용한다면 ROS빌드(rosbuild)가 아닌 캐킨을 사용해야 한다.

 

14. ROS 빌드

ROS 빌드(rosbuild)는 catkin 빌드 시스템 이전에 사용되었던 빌드 시스템이고 지금까지도 사용하는 사용자들이 있기는 하지만 이는 ROS 버전의 호환성을 위해 남겨둔 것이지 공식적으로는 추천하지 않는다. 만약 rosbuild 빌드 시스템을 사용한 이전 패키지를 사용해야만 한다면 rosbuild를 catkin으로 변경하여 사용하기를 추천한다.

 

15. roscore

roscore는  ROS 마스터를 구동하는 명령어이다. 같은 네트워크라면 다른 컴퓨터에서 실행해도 된다. 단, 멀티 roscore를 지원하는 특수한 경우를 제외하고는 roscore는 같은 네트워크에서 하나만 구동된다. ROS를 구동하면 사용자가 정해놓은 ROS_MASTER_URI  변수에 기재된 URI 주소와 포트를 사용하게 된다. 사용자가 설정해놓지 않았으면 URI 주소로 현재의 로컬 IP를 사용하고, 11311 포트를 사용한다.

 

16. rosrun

rosrun은 ROS의 기본 실행 명령어이다. 패키지에서 하나의 노드를 실행하는 데 사용된다. 노드가 사용하는 URI 주소와 포트는 현재 노드가 실행 중인 컴퓨터에 저장된 ROS_HOSTNAME 환경 변숫값을 URI 주소로 사용하며, 포트는 임의의 고윳값으로 설정된다.

 

17. roslaunch

rosrun이 하나의 노드를 실행하는 명령어라면 roslaunch는 여러 노드를 실행하는 개념이다. 이 명령어를 통해 하나 그 이상의 정해진 노드를 실행시킬 수 있다. 그 밖의 기능으로 노드를 실행할 때 패키지의 파라미터나 노드 이름 변경, 노드 네임스페이스 설정, ROS_ROOT 및 ROS_PACKAGE_PATH 설정, 환경변수 변경 등 많은 옵션을 갖춘 노드 실행에 특화된 ROS 명령어이다.

 

roslaunch는 *.launch 파일을 사용하여 실행 노드에 대한 설정을 해주는데 이는 XML(Extensible Markup Language)에 기반을 두고 있으며, XML 태그 형태의 다양한 옵션을 제공한다.

 

18. bag

ROS에서 주고받는 메시지의 데이터는 저장할 수 있는데 이때 사용되는 파일 포맷을 bag라고 하며 확장자로 *.bag를 사용한다. ROS에서는 이 bag을 이용하여 메시지를 저장하고 필요할 때 이를 재생하여 이전 상황을 그대로 재현할 수 있다. 예를 들어 센서를 이용한 로봇 실험을 실행할 때, 센서 값을 bag를 이용하여 메시지 형태로 저장한다. 이 저장된 메시지는 같은 실험을 수행하지 않아도 저장해둔 bag 파일을 재생하는 것으로 그 당시의 센서값을 반복해서 사용할 수 있다. 특 rosbag의 기록, 재생의 기능을 활용하면 반복되는 프로그램 수정이 많은 알고리즘 개발에 매우 유용하다.

 

19. 네임

노드, 파라미터, 토픽, 서비스에는 모두 네임(name)이 있다. 이 네임을 마스터에 등록하고 각 노드의 파라미터, 토픽, 서비스를 사용할 때 이름을 기반으로 검색, 메시지를 전송한다. 또한 네임은 실행할 때 변경할 수 있기 때문에 매우 유연하고, 같은 노드, 파라미터, 토픽, 서비스라고 하여도 다른 네임으로 중복하여 사용할 수 있다. 이러한 네임의 사용으로 ROS는 큰 규모의 프로젝트, 복잡한 구조의 시스템에도 적합하다.

 

20. 클라이언트 라이브러리

ROS는 사용되는 언어의 의존성을 낮추기 위해 클라이언트 라이브러리(client library)로 각종 언어의 개발환경을 제공한다. 주요한 클라이언트 라이브러리로는 C++, Python, Lisp 등이 있으며, 이외에도 Java, Lua, .NET, EusLisp, R 등의 언어들을 사용할 수 있다. 이를 위해 roscpp, rospy, roslisp, rosjava, roslua, roscs, roseus, PhaROS, rosR 등의 클라이언트 라이브러리가 개발되었다.

 

참고자료:

ROS 로봇 프로그래밍(표윤석)

'ROS' 카테고리의 다른 글

8. ROS 토픽 이해하기  (1) 2020.01.24
7. ROS 노드 이해하기  (0) 2020.01.24
5. ROS 용어 정리  (0) 2020.01.13
4. ROS 패키지 생성  (1) 2020.01.10
3. ROS 파일시스템  (0) 2020.01.09

1. 마스터

마스터는 노드와 노드 사이의 연결과 메시지 통신을 위한 네임서버와 같은 역할을 한다.

roscore 명령어로 실행 가능하며, 마스터 없이는 노드 간의 접속, 토픽과 서비스 같은 메시지 통신을 할 수 없다.

ROS_MASTER_URI 변수에 기재된 URI 주소와 포트를 가진다.

기본 값으로 URI 주소는 현재 로컬 IP를 가지며 포트는 11311을 사용한다.

 

2. 노드

노드는 ROS에서 실행되는 최소 단위의 프로세서를 지칭한다.

ROS에서는 하나의 목적에 하나의 노드를 작성하길 권하며, 재사용이 쉽게 구성하여 개발하기를 권한다.

예를 들어 모바일 로봇의 경우, 로봇을 구동하기 위하여 각 프로그램을 세분화시킨다.

즉, 센서 드라이브, 센서 데이터를 이용한 변환, 장애물 판단, 모터 구동, 엔코더 입력, 내비게이션 등 세분화된 작은 노드들을 이용한다.

노드는 구동과 함께 마스터에 노드 이름과 publisher, subscriber, service server, service client에서 사용하는 토픽 및 서비스 이름, 메시지 형태, URI 주소와 포트를 등록한다. 이 정보들을 기반으로 각 노드는 노드끼리 토픽과 서비스를 이용하여 메시지를 주고받을 수 있다.

 

3. 패키지

패키지는 ROS를 구성하는 기본 단위이다. ROS의 응용프로그램은 패키지 단위로 개발되며 패키지는 최소한 하나 이상의 노드를 포함하거나 다른 패키지의 노드를 실행하기 위한 설정 파일들을 포함하게 된다. 더불어 각종 프로세스를 구동하기 위한 ROS 의존성 라이브러리, 데이터셋, 설정 파일 등 패키지에 필요한 모든 파일을 포함하고 있다.

 

4. 메타패키지

메타 패키지는 공통된 목적을 지닌 패키지들의 집합을 말한다. 예를 들어 Navigation 메타 패키지는 AMCL, DWA, EKF, map_server 등 10여 개의 패키지로 구성되어 있다.

 

5. 메시지

노드는 메시지(message)를 통해 노드 간의 데이터를 주고받는다. 메시지는 integer, floating, point, boolean과 같은 변수 형태이다. 또한 메시지 안에 메시지를 품고 있는 간단한 데이터 구조나 메시지들이 나열된 배열과 같은 구조도 사용할 수 있다.

단방향 메시지 송수신 방식의 토픽과 양방향 메시지 요청/응답 방식의 서비스를 이용한다.

 

6. 토픽

토픽(topic)은 "이야깃거리"이다. 퍼블리셔(publisher) 노드가 하나의 이야깃거리에 대해서 토픽으로 마스터에 등록한 후, 이야깃거리에 대한 이야기를 메시지 형태로 퍼블리시한다.

이 이야깃거리를 수신받기를 원하는 서브스크라이버 노드는 마스터에 등록된 토픽의 이름에 해당하는 퍼블리셔 노드의 정보를 받는다. 이 정보를 기반으로 서브스크라이버 노드는 퍼블리셔 노드와 직접 연결하여 메시지를 토픽으로 송수신하게 된다.

 

7. 퍼블리시 및 퍼블리셔

퍼블리시(publish)는 토픽의 내용에 해당하는 메시지 형태의 데이터를 송신하는 것을 말한다. 퍼블리셔(publisher) 노드는 퍼블리시를 수행하기 위하여 토픽을 포함한 자신의 정보들을 마스터에 등록하고, 서브스크라이브를 원하는 서브스크라이버 노드에 메시지를 보낸다. 퍼블리셔는 이를 실행하는 개체로써 노드에서 선언한다. 퍼블리셔는 하나의 노드에서 복수로 선언할 수 있다.

 

8. 서브스크라이버 및 서브스크라이버

서브스크라이브(subscribe)는 토픽의 내용에 해당하는 메시지 형태의 데이터를 수신하는 것을 말한다. 서브스크라이버(subscriber) 노드는 서브스크라이브를 수행하기 위하여 토픽을 포함한 자신의 정보들을 마스터에 등록하고, 구독하고자 하는 토픽을 퍼블리시하는 퍼블리셔 노드의 정보를 마스터로부터 받는다. 이 정보를 기반으로 서브스크라이버 노드는 퍼블리셔 노드와 직접 접속하여 메시지를 받는다. 서브스크라이버는 이를 실행하는 개체로서 노드에서 선언한다. 서브스크라이버는 하나의 노드에서 복수로 선언할 수 있다.

 

퍼블리시와 서브스크라이브 개념의 토픽 통신 방식은 비동기 방식이라 필요에 따라서 주어진 데이터를 전송하고 받기에 매우 훌륭한 방법이다. 또한 한 번의 접속으로 지속적인 메시지를 송수신하기 때문에 지속해서 메시지를 발송해야 하는 센서 데이터에 적합하여 많이 사용된다. 하지만 때에 따라서는 요청과 응답이 함께 사용되는 동기 방식의 메시지 교환 방식도 필요하다. 이에 따라, ROS에서는 서비스(service)라는 이름으로 메시지 동기 방식을 제공한다. 서비스는 요청이 있을 때 응답하는 서비스 서버와 요청하고 응답받는 서비스 클라이언트로 나누니다. 서비스는 토픽과는 달리 일회성 메시지 통신이다. 서비스의 요청과 응답이 완료되면 연결된 두 노드의 접속은 끊긴다.

 

9. 서비스

서비스(service) 메시지 통신은 특정 목적의 작업에 해당되는 서비스를 요청하는 서비스 클라이언트와 서비스 응답을 담당하는 서비스 서버 간의 동기적 양방향 서비스 메시지 통신을 말한다.

 

10. 서비스 서버

서비스 서버(service server)는 요청을 입력으로 받고, 응답을 출력으로 하는 서비스 메시지 통신의 서버 역할을 말한다. 요청과 응답은 모두 메시지로 되어 있으며, 서비스 요청을 받으면 지정된 서비스를 수행한 다음에 그 결과를 서비스 클라이언트에 전달한다. 서비스 서버는 정해진 명령을 받아 수행하는 노드에 사용된다.

 

11. 파라미터

ROS에서의 파라미터(parameter)는 노드에서 사용되는 파라미터를 말한다. 흔히 윈도우 프로그램에서 *ini 설정 파일과 같다고 생각하면 된다. 파라미터는 디폴트(default)로 설정값들이 지정되어 있고, 필요에 따라 외부에서 읽거나 쓸 수 있다. 특히 외부에서 쓰기 기능을 이용하여 상황에 따라 설정값을 실시간으로 바꿀수 있기 때문에 매우 유용하다. 예를 들어 외부 장치와 연결되는 PC의 USB 포트나 카메라 캘리브레이션 값, 모터 속도나 명령어들의 최댓값과 최솟값 등의 설정을 지정할 수 있다.

 

12. 파라미터 서버

파라미터 서버(parameter server)는 패키지에서 파라미터를 사용할 때, 각 파라미터를 등록하는 서버를 말한다. 파라미터 서버는 마스터의 한 기능이기도 하다.

 

참고자료:

ROS 로봇 프로그래밍(표윤석)

'ROS' 카테고리의 다른 글

7. ROS 노드 이해하기  (0) 2020.01.24
6. ROS 용어 정리2  (0) 2020.01.24
4. ROS 패키지 생성  (1) 2020.01.10
3. ROS 파일시스템  (0) 2020.01.09
2. ROS 작업공간 만들기  (0) 2020.01.09

우리가 만든 작업 공간 내의 구조에 대해서 간단히 보면 기본적으로 catkin_ws라는 작업공간 내에 src에 CMakeList.txt와 우리가 만든 패키지 디렉터리가 존재할 것이며 그 패키지 내부에는 또한 CMakeList.txt와 package.xml을 기본적으로 가진다.

CMakeList.txt는 cmake 및 catkin_make를 하기 위해 참조하는 텍스트 파일이며 package.xml은 그 패키지에 대한 정보가 담긴다.

 

이제, 패키지를 생성해보자.

1. 우선, 작업공간 내의 src 디렉터리 안으로 들어간다.

 

cd ~/catkin_ws/src

 

2. catkin_create_pkg를 이용해 std_msgs, roscpp, rospy를 의존시키는 beginner_tutorials라는 패키지를 만든다.

 

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

(catkin_create_pkg <패키지명> [의존 1] [의존 2] [의존 3])

 

3. 이제 패키지를 빌드해보자(기본적으로 catkin에서는 각각의 패키지가 아닌 workspace에서 빌드하는 것이 권장됨)

 

cd ~/catkin_ws

catkin_make

 

4. make를 하고 나면 /opt/ros/melodic에서 볼 수 있는 것과 같이 devel 하위 디렉터리에 유사한 구조가 생성된다.

작업 공간을 ROS 환경에 추가하려면 devel 내의 setup.bash 파일을 source 시켜주어야 한다.

 

source ~/catkin_ws/devel/setup.bash

 

5. 패키지를 만들 때 의존시켰던 패키지들을 rospack 명령어를 통해 확인 가능하다.

 

rospack depends1 beginner_tutorials

(depends1이 아닌 depends 옵션 사용 시 종속된 패키지들에 하위 종속된 것들까지 보여준다.)

 

6. 처음 작업공간을 만들 때 catkin_make를 해봤듯이 패키지를 만들었으니 다시 빌드를 해주어야 한다.

(단 앞서 말했듯이 저장소 단위로 make를 해주는게 좋다)

 

cd ~/catkin_ws

catkin_make

 

 

7. 마지막으로 패키지의 package.xml을 수정해보자.

package.xml에는 패키지 이름, 설명, 관리자, 라이선스 등의 정보를 적어 줄 수 있고

또한 의존성 태그를 통해 종속이 필요한 패키지들을 필요에 맞게 수정할 수 있다.

 

참고자료:

http://wiki.ros.org/ROS/Tutorials/CreatingPackage

 

 

'ROS' 카테고리의 다른 글

6. ROS 용어 정리2  (0) 2020.01.24
5. ROS 용어 정리  (0) 2020.01.13
3. ROS 파일시스템  (0) 2020.01.09
2. ROS 작업공간 만들기  (0) 2020.01.09
1. ROS melodic 설치  (0) 2020.01.08

+ Recent posts