본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2023 ROS 스터디] 김예진 #2주차 - ROS 용어 및 도구

반응형

2주차에는 여러가지 ROS의 기본을 쌓는 시간이 되었다.

 

먼저 ROS프로그램을 사용할 때 필수적인 용어 들과 프로그램의 구현 과정을 알 수 있었다.

강의를 요약하자면

Node : 최소단위의 실행 가능한 프로세서를 가리키는 용어로써 하나의 실행 가능한 프로그램으로 생각하면 된다. ROS에서는 최소한의 실행단위로 프로그램을 나누어 작업하게 된다. 각 노드는 메시지 통신으로 데이터를 주고 받는다. 

Package : 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것. 또한 패키지 묶음을 메타패키지라 하여 따로 분리한다. 

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

Topic : 단방향 통신 방식 (Publisher : 메시지를 날리는 주체, Subscriber : 메시지를 받는 주체) 

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

 

- 메시지 통신 개념 

1. 마스터 구동 : $ roscore 

2. 서브스크라이버 노드 구동 : $ rosrun 패키지이름 노드이름 

3. 퍼블리셔 노드 구동 : $rosrun 패키지이름 노드이름 

4. 퍼블리셔 정보 알림 : 마스터는 서브스크라이버 노드에게 새로운 퍼블리셔 정보를 알린다. 

5. 퍼블리셔 노드에 접속 요청 : 마스터로부터 받은 퍼블리셔 정보를 이용하여 TCPROS 접속을 요청 

6. 서브스크라이버 노드에 접속 응답 : 접속 응답에 해당되는 자신의 TCP URI 주소와 포트번호를 전송  

7. TCP 접속 : TCPROS를 이용하여 퍼블리셔 노드와 직접 연결한다. 

8. 메시지 전송 : 발행자 노드는 서브스크라이버 노드에게 메시지를 전송 (토픽) 

9. 서비스 요청 및 응답 : 1회에 한해 접속, 서비스 요청 및 서비스 응답이 수행되고 서로 간의 접속을 끊는다. 서비스는 토픽과 달리 1회에 한해 접속하고 서비스 요청 및 서비스 응답이 수행한 후 서로간의속을 끊는다. 즉, 1회성이다. 

 

 

 

다음으로는 

 RViz에 대한 소개와 함께 실습을 진행하였다.

순조롭게 진행되는 듯 하였으나 

 

에러가 발생하였고 구글링도 해보고

팀원 분들이 올려주신 많은 글을 읽어보고 블로그를 참조해보았다.

그러나 결론적으로 이 에러는 컴퓨터에 내장되어 있는 카메라를 사용할 때 발생할 수 있는 에러라는 것을 알았다.

현재 usb로 연결하여 사용할 수 있는 카메라가 없는 상태라 이 부분은 바로 해결할 수 없는 에러로 판단하였다.

그래서 카메라는 안켜지지만 프로그램 구현 과정이라도 즐겨보았다......

 

추가적으로 그래프와 플롯까지 실행시켜보는 시간을 가졌다.

 

 

2주차를 진행하며 그래도 한 주 해보았다고 거북이를 등장시키는 과정이 수월해진 것조차 뿌듯했다.

그러나 카메라를 켜보지 못한 것이 매우 아쉬웠다. 또한 실습과정에서 허둥지둥하면서 하다보니 성공시키고 나면 어떤 과정으로 정리해두어야 할지 잘 떠오르지가 않는다...! (잘 정리해서 올리시는 팀원분들의 글을 보면서 진짜 감사하고 대단하다고 느낀다.)

좀 더 시간을 많이 투자하여 공부하도록 해야할 것 같다!!!

반응형