본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2025 ROS 스터디] 신채영 #2주차 - ROS 용어, 도구

반응형

1. 기본 용어

1) Node (노드) : 최소 단위의 실행 가능한 프로세스. 각 노드는 메세지 통신으로 데이터를 주고 받는다.

2) Package (패키지) : 노드 실행을 위한 정보 등을 묶어 놓은 것

3) Message (메세지) : 메세지는 integer, floating, point, boolean과 같은 정수 형태. 이를 통해 노드 간의 데이터를 주고 받는다. 

 

2. 메세지 통신 종류

1) Topic (토픽)

 실시간으로 전송되는 단방향성 메세지. 일방적으로 계속 데이터를 보내야하는 경우에 사용한다. 1:1,1:N, N:1, N:N 통신이 가능하다.

 Publisher: 정보를 발행하는 쪽.  Subscriber: 정보를 수신하는 쪽

 

2) Service (서비스)

 양방향, 일회성 통신(메세지를 한 번만 송수신).

 Service Client: 서비스를 요청하는 쪽, Service Client: 서비스를 요청받아 정해진 프로세스를 수행하고 응답하는 쪽

 

3) Action (액션)

 피드백이 존재하는 통신 방식. task가 복잡하거나, 시간이 오래 걸릴 경우에 주로 사용된다. 중간 결괏값(Feedback)을 받을 수 있다는 장점이 있다.

 Action Client ≈ Service Client, Action Client  Service Client

 

 

3. 메세지 통신의 개념

1) 마스터구동(roscore) : 실행되는 노드들의 정보를 관리하고, 노드 간의 통신을 연결시켜주는 매개체.

2) Subscriber 노드 구동 : Subscriber 노드는 마스터에 노드 이름, 토픽 이름, 메세지 타입, 네트워크 정보를 전달한다.

3) Publisher 노드 구동(rosrun [패키지이름] [노드이름]) : Subscriber 노드와 마찬가지로 마스터 노드에 노드 이름, 토픽 이름, 메세지 타입, 네트워크 정보를 전달한다.

4) 마스터는 받은 노드의 정보를 바탕으로 Subscriber 노드에게 Publisher 정보를 알린다.

5) Subscriber 노드는 마스터에게 받은 퍼블리셔 정보를 이용하여 Publisher 노드에 접속을 요청한다.

6) Publisher가 Subscriber의 접속 요청에 응답하여 자신의 URI 주소와 포트번호를 전송한다.

7) TCPROS를 통해 Publisher 노드와 Subscriber 노드가 직접 연결된다.

8-1) Publisher는 Subscriber에 토픽을 전송한다. (연속적으로)

8-2) Publisher는 Subscriber에 서비스를 전송한다. (일회성으로) (서비스 요청과 응답이 수행되면 접속을 끊는다.)

 

4. ROS 도구

1) Command-Line Tools (명령어) : 중요 명령어만 정리

  1> ROS 실행 명령어

      - roscore: master - ROS 네임 서비스, rosout - 로그 기록, parameter server - 파라미터 관리

      - rosrun: 노드 실행

      - roslaunch: 노드를 여러 개 실행하고 실행 옵션을 설정

      - rosclean: ROS 로그 파일을 검사하거나 삭제함

 

  2> ROS 정보 명령어

      - rostopic: 토픽 정보 확인

      - rosservice: 서비스 정보 확인

      - rosnode: 노드 정보 확인

      - rosparam: 파라미터 정보 확인 및 수정

 

  3> ROS catkin 명령어

      - catkin_create_pkg: 패키지 자동 생성

      - catkin_make: catkin 빌드 시스템에 기반을 둔 빌드

      - catkin_eclipse: catkin 빌드 시스템으로 생성한 패키지를 이클립스에서 사용할 수 있게 변경

      - catkin_prepare_release: release할 때 사용되는 로그 정리 및 버전 태깅

      - catkin_generate_changelog: release할 때 CHANGELOG.rst 파일 생성 또는 업데이트

      - catkin_init_workspace: catkin 빌드 시스템의 작업 폴더 초기화

 

  3> ROS 패키지 명령어

      - rospack: ROS 패키지와 관련된 정보 표기

      - rosinstall: ROS 추가 패키지 설치

      - rosdep: 해당 패키지의 의존성 파일 설치

 

 

2) Rviz    

  1> ROS의 3D 시각화툴

  2> 로봇 외형의 표시와 계획된 동작을 표현

  3> 내비게이션

  4> 매니퓰레이션

  5> 원격제어

Rviz를 통해서 카메라, 라이다, 초음파 등등 각종 센서의 값을 시각화할 수 있다. Rviz의 화면 구성은 아래의 사진과 같다.

 

3) RQT

  로봇 시스템을 모니터링, 시각화, 제어하기 위한 플러그인 기반의 GUI 프레임워크이다. GUI 형태로 ROS를 이용할 수 있고, GUI Tool 제작이 간단해질 수 있는 도구이다.

  Qt 를 기반으로 하기 때문에 유저들이 자유롭게 플러그인을 개발하여 추가할 수 있다.

  이미지 데이터를 시각적으로 화면에 표시하거나(rqt_image_view), 현재 동작하는 노드와 토픽을 시각적으로 나타내거나(rqt_graph), 실시간으로 토픽 데이터를 플롯(rqt_plot)할 수 있다.

 

<rqt_graph>

 

<rqt_plot>

 

 

4) Gazebo

  로봇 개발에 필요한 3차원 시뮬레이션을 위한 로봇, 센서, 환경 모델을 지원하는 3차원 시뮬레이터. 실제와 근사한 결과를 얻을 수 있다. ROS와 높은 호환성을 가진다.

  센서 데이터를 생성할 때 노이즈를 추가할 수 있도록 지원한다. 이를 통해 실제 환경과 비슷하게 시뮬레이션할 수 있다.

반응형