본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2023 ROS 스터디] 성동현 #3주차 - ROS 기본 프로그래밍

반응형

안녕하세요! 이번에는 ROS 스터디를 통해 공부한 3주차 내용을 리뷰해보려고 합니다!!

그런데 현재 ROS가 설치되어있는 노트북이 물리적 충격으로 인해 고장이 나 저장되어 있던 실습 사진을 올리지 못하게 되었습니다...

그래서 일단은 영상이미지를 사용하고 후에 실습사진으로 대체하려고 합니다.

이제 본격적으로 리뷰를 시작하겠습니다!!

 

3주차의 내용은 앞선 1주차, 2주차에서 배우거나 구성한 시스템과 지식들을 이용해 본격적으로 프로그래밍을 시작하는 내용이었습니다.

 

제일 먼저 학습한 내용은 좌표 표현 방식이나 단위에 대한 내용이었습니다.

 

패키지 설정 파일 수정에 대한 내용은 html의 코드 방식을 알고 있다면 매우 친숙하게 느껴질 형식입니다.

 

 

이제 ros를 시작하는 시점에서 그닥 중요하지 않지만 <descripition> 과 같은 부분은 위키페이지에 그대로 기술되어 올라가기 때문에 후에 더 중요하게 다뤄질 내용입니다.

 

 

이제 본격적으로 프로그래밍을 하는 내용입니다.

 

먼저 퍼블리셔(publisher)와 서브스크라이버(subscriber) 노드에 대한 소스 코드 작성 방법입니다.

퍼블리셔(publisher) 코드
서브스크라이버(subscriber) 코드

그 후 rosrun ros tutorials topic topic_publisher라는 명령어를 통해 퍼블리셔(publisher)를 실행시켜주면 해당 화면이 뜨게 됩니다.

 

하지만 이때 서브스크라이버(subscriber)가 실행되지 않았기 때문에 제대로 연결된 것이 아닙니다.

rqt를 통해 이를 명확히 확인할 수 있는데 노드가 하나밖에 없기 때문에 메세지를 제대로 수행할 수 없습니다.

 

 

 

 

이후 서브스크라이버(subscriber) 코드까지 실행시켜주면 제대로 연결된 것을 rqt를 통해 확인 할 수 있습니다.

 

 

이때 주의해야 할점은 하나의 노드가 무조건 하나의 역할만 수행하는 것이 아니라 다양한 역할도 수행할 수 있음을 명심해야 합니다.

 

다음으로는 파라미터에 대해 설명하려고 합니다.

파라미터 부분이 전자의 서브스크라이버(subscriber) 코드와의 다른 점은 무작정 콜백함수가 대기하지 않는 점입니다.

대신 연산자를 매개변수로부터 받은 값으로 변경하고 콜백함수 처리루틴을 실행되고 루틴 반복을 위한 sleep 처리 과정이 들어갑니다.

 

그리고 파라미터를 사용할 시 코드가 실행되는 도중에 method를 변경하여 연산방식을 바꾸는 등 다양한 방식으로 활용이 가능합니다.

 

파라미터를 끝으로 오늘 리뷰는 여기서 마치도록 하겠습니다.

부족한 글 읽어주셔서 감사합니다!

반응형