본문 바로가기
기계공학부 시절의 기록/ROS일기

ROS강의 CH.4 중요컨셉

by juhyeonglee 2021. 4. 13.
728x90
반응형

오픈매니퓰레이터X를 갖고 동작시키면서 도대체 어떤 원리로, 어떤 데이터들이, PC와 제어기, 모터들 사이에서 흐를까, 어디에 존재하고 어디로 이동할까가 너무 궁금하다.

이를 알아야 내가 새로운 프로그램을 만들고 수정할 수 있을 것이다.

 

 

1. 노드/패키지/메세지 개념

1) 노드 : 하나의 기능을 수행하는 소스코드

 

출입문 검문 프로그램을 개발한다고 상상해보자. 얼굴인식.

a. 카메라로부터 사진(raw data)를 받아오고

b. 영상처리. Filter 1,2,3,4를 통해 얼굴의 특징을 추출

c. DB와 매칭하여 몇 %일치하는지 매기기

d. Pass or Fail 출력

기존에는 하나의 프로젝트파일에 원테이크로 위의 일련의 과정을 담은 소스코드를 짰다면

ROS에서는 각각의 기능을 하나의 노드로 나누어 개발한다.

그래서 누군가 개발해 놓은 기능의 노드를 가져와 활용할 수도 있다.

이미 존재하는 노드들을 찾아 쓴다면 개발 속도는 말할 것도 없이 빠를 것.

---> ROS의 가장 큰 의의 : Global, 전세계인 모두가 협력해 로봇을 개발하고 공유.

 

2) 패키지 : 하나의 서비스를 제공하기 위해 필요한 노드들의 집합

출입문 검문 프로그램의 a~d 기능들을 수행하는 각각의 노드들을 모아 묶은 것이 출입문 검문 패키지가 된다.

서로 다른 패키지이지만 겹치는 노드들이 많을 수 있다.

어떤 기능이 필요한지 생각하고

그 기능을 수행하는 노드들이 있는지 찾아보고

있다면 가져다가 활용하고 없다면 만들어 공유한다.

 

3) 메세지 : 노드간의 통신 방법

a. 토픽 

- 단방향

- 연속적

- 때문에 cpu, 컴퓨팅 자원 소모가 상대적으로 크다.

- 가장 많이 활용되는 메세지 유형

 

publisher --> subscriber

 

b. 서비스

- 양방향

- 일시적

 

c. 액션

- 양방향

- 일시적

- 서비스와 차이점 : 보다 복잡한 일, 오래걸리는 일을 수행할 때, 중간 결과값을 받아볼 수 있다.

 

 

요청

client ----------> server

 

 

결과보고

server ------------------> client 

 

 

2. 메시지 통신 개념

노드간의 메시지 통신 : ROS에서 가장 기본이 되는 기술적 포인트

출처 : ROBOTIS OpenSourceTeam YOUTUBE

마스터구동

roscore

노드정보관리해 노드간의 통신을 연결하는

 

노드구동

노드이름, 토픽이름, 메시지형태를 마스터 노드에 등록하게 된다.

출처 : ROBOTIS OpenSourceTeam YOUTUBE

노드가 생성되면 마스터에 관련 정보를 등록하게 되고

Subscriber노드와 Publisher노드간의 정보가 일치할 때, 데이터를 전달해준다.

이렇게 마스터를 통해 노드간 통신이 확인되면 sub노드는 pub노드에 접속요청을 하고 

출처 : ROBOTIS OpenSourceTeam YOUTUBE

결국에는 마스터 없이 노드간 통신이 이루어진다.

출처 : ROBOTIS OpenSourceTeam YOUTUBE

Turtlesim 예제

출처 : ROBOTIS OpenSourceTeam YOUTUBE

 

 

 

 

 

 

출처)

www.youtube.com/watch?v=skqzz_xQQXg&list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw&index=5

이 모든 강의를 제공해주신 표윤석박사님과 ROBOTIS에 감사드립니다.

728x90
반응형

댓글