본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2025 ROS 스터디] 이성빈 #2주차 - ROS용어,명령어,도구

반응형

이번 2주차에는 ros에서 사용하는 용어 및 간단한 명령어 몇가지에 대한 강의를 들었다.

가장 먼저 ros 용어로 Node,Package,Message 3가지가 있는데, 노드는 최소 단위의 실행 가능한 프로세서를 가리키는 용어이다. 간단하게 하나의 프로그램이라고 생각하면 된다. 패키지는 하나이상의 노드, 노드 실행을 위한 정보를 묶어놓은것인데 간단하게 노드 여러개가 있으면 하나의 패키지가 되는 개념이라고 보면 된다. 그다음 메시지는 노드간의 주고 받는 데이터 이다. 노드끼리 서로 데이터를 주고 받을때 이를 메시지 라고 하는 것이고 메시지는 int,float와 같은 변수 형태이다.

 

그다음으로는 Topic,publisher,subscriber이다. 간단하게 설명하면 publisher는 데이터를 제공하는 애 이고 subscriber는 데이터를 받는 애이다. Topic은 이때 주고받는 데이터이다. 강의에 나온 예시로 publisher가 센서의 값을 제공을 하고 subscriber가 센서의 값을 받는다. 이때 센서의 값은 topic인 것이다. 그리고 이 3가지의 특징으로는 topic에 대해서 publisher와 subsciber는 N:N의 통신이 가능하다. 밑의 사진과 같이 1:1로 통신이 가능하고 1:3으로도 하나의 topic 데이터를 하나의 publisher가 여러 subscriber에게 통신을 할 수 있다.

 

이 topic,publisher,subscriber와 비슷한 개념으로 service,service server,survice client 개념과 action,action server, action client 개념 2가지가 있는데 이중에서 topic 개념을 대부분의 상황에서 활용한다고 한다. service와 topic의 차이는 service는 양방향 통신으로 데이터 전송을 요청시에만 작동을 한다는 점이다. action은 이둘과 비슷하게 클라이언트가 서버에게 특정 목표를 요구하면 action에서는 서버가 클라이언트에게 정보를 보내거나 특정 코드를 수행하는 과정에서 중간중간 피드백을 전달하는 점이 있다는 것이다.action은 시간이 오래걸리는 작업이라 중간중간 피드백이 필요한 상황에서 사용한다고 한다.

 

 

그다음으로는 메시지 통신 개념에 대해 강의에서 소개했다. 메시지 통신은 9단계 구성으로

1.마스터 구동
2.서브스크라이버 노드 구동
3.퍼블리셔 노드 구동
4.퍼블리셔 정보 알림
5.서퍼블리셔 노드에 접속요청
6.서브스크라이버 노드에 접속 응답
7.tcp접속
8.메세지 전송
9.서비스 요청및 응답

이 9가지 구성으로 메시지는 통신한다.

솔직히 메시지 통신에 대해서는 완벽히 이해를 하지 못하여 여러번 더 봐야겠다.

아래 사진은 저번에 우리가 ros설치 후 테스트 예제로 썼던 turtlesim의 메시지 통신 방법이다.

 

 

마지막으로 네임에 대해서 설명했는데 네임은 노드,메시지가 가지는 고유의 식별자이다.

 

강의 에서 용어 설명은 이정도로 마쳤고 다음으로 명령어에 대해서 설명을 했다. 강의에서 소개한 명령어와 각 명령어의 중요도는 다음과 같다.

 마지막으로 ros도구에 대해서 설명했는데 여기서 소개한 도구는 3가지로 RViz라는 시각화 툴 rqt라는 gui툴 마지막으로 gazebo라는 3D시뮬레이터 3가지에 대해서 소개를 했다. RViz는 국민대 자율주행자동차 대회를 준비했을때 한번 사용만 해봤고 1주차 스터디에서도 한번 보았다. 간단하게 센서,모터등 여러가지 정보들을 시각화 해주는 툴이라고 생각하면 된다. 그다음 rqt라는 플러그인이 있는데 이것은 다양한 활용용도가 있다. action,service,topic 타입의 구조를 확인가능하고, roslaunch의 gui버전으로 활용가능하고, 노드들의 관계도와 같은 흐름을 확인하는 그래프,노드간의 의존관계를 표시하는 그래프, 실행중인 노드들의 cpu사용률,스레드수 와같은 것들을 확인하는 기능도 있다. 그리고 데이터 로깅이나 노드들에서 발생하는 에러 메시지도 확인 가능하고, 로봇에 사용되는 플러그인을 추가하여 로봇툴도 사용가능하며, 다양한 시각화 툴도 가지고 있으며 아까 말했던 RViz와 rqt는 연동되어 서로 데이터를 모니터링 및 시각화할 수있게 가능하다. 마지막으로 Gazebo는 로봇 개발에 필요한 물리엔진을 탑제한 3D시뮬레이터 이다. 로봇을 실제로 돌려보기 전에 Gazebo를 활용하여 시뮬레이션하며 실제 로봇 개발에 도움을 주는 도구이다.

위 사진들은 강의에서 turtlesim으로 rqt를 실행해본 사진이다.

RViz를 실행해보는것이 있었지만 RViz는 따로 센서같은것이 없어서 하지 못했다. 하지만 저번 스터디에서 라이더센서를 RViz를 활용하여 시각화 하는것을 봤기에 어떤식으로 돌아가는지는 알것같다.

반응형