본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2025 ROS 스터디] <문승주> #2주차-<ROS의 중요컨셉, 명령어, 도구>

반응형

1. ROS 용어 정리

1.1 Node

  • ROS 시스템에서 실행 가능한 최소 단위의 프로세스
  • 개발자가 기능별로 자유롭게 분할해 설계
  • 각 노드는 독립적으로 유닛 테스트 가능
  • ROS의 대표적인 특징 중 하나

1.2 Package

  • 하나 이상의 노드와 실행 정보를 묶은 디렉토리 구조
  • 종속 패키지들의 모음은 “메타 패키지(meta-package)”라고 칭함

1.3 Message

  • 노드 간 데이터 통신을 위해 사용하는 데이터 구조
  • 기본 자료형(int32, float64, bool 등)
  • 메시지 내부에 다른 메시지를 포함하거나, 메시지 배열 형식도 정의 가능

메시지 타입

  1. Topic
    • 연속적 단방향 통신
    • 1:1, 1:N, N:1, N:N 모두 지원
    • 네트워크·CPU 사용률이 높음(약 90%)
    • Publisher: 토픽 송신자
    • Subscriber: 토픽 수신자
  2. Service
    • 일회성 양방향 통신
    • 통신 후 세션 종료 → 재사용 시 재연결 필요
    • 비교적 자원 활용 효율적(약 5%)
    • Service Client: 서비스 요청자
    • Service Server: 서비스 제공자
  3. Action
    • Service보다 복잡하거나 장시간 수행되는 작업에 적합
    • 중간 진행 상황(피드백) 제공
    • Action Client: 액션 요청자
    • Action Server: 액션 제공자
  4. Parameter Server
    • 전역 변수(global parameter)를 네트워크 상에 저장
    • 외부에서 변경하거나 실시간 조회 가능
    • Master 기능의 일부

2. 메시지 통신 개념 및 순서

 1. Master구동: XMLRPC(XML-Remote Procedure Call)

 - $roscore

 

 2. Node2 (ex- subscriber) 구동 - (Master: server, Node2: client)

 - $rosrun 패키지이름 노드이름

 

 3. Node1 (ex- publisher) 구동 - (Master: server, Node1: client)

 - $rosrun 패키지이름 노드이름

 

 4. publisher 정보 알림: Master subscriber Node에게 새로운 publisher 정보를 알림 - (Master: server, Node2: client)

 

 5. publisher Node에 접속 요청: 마스터로부터 받은 publisher 정보를 이용하여 TCPROS 접속을 요청 - (Node1: server, Node2: client)

 

 6. subscriber Node에 접속 응답: 접속 응답에 해당되는 자신의 TCP URI 주소와 포트번호를 전송 - (Node1: server, Node2: client)

 

 7. TCP 접속: TCPROS를 이용하여 publisher node와 직접연결 - (Node1: server, Node2: client)

 

 8. 메시지 전송: 발행자 Nodesubscriber node에게 메시지를 전송(Topic) - (Node1: server, Node2: client)

 

 9. 서비스 요청 및 응답: 1회에 한해 접속, 서비스 요청 및 서비스 응답이 수행되고 서로간의 접속을 끊는다


3. 주요 ROS 명령어

3.1 ROS 셸 명령어( ' * ': 중요도)

  • roscd***: 패키지 디렉토리로 이동
  • rosls*: 패키지 내 파일 목록 확인
  • rosed*: 패키지 파일 즉시 편집
  • roscp*: 패키지 파일 복사
  • rospd: 패키지 디렉토리 인덱스 추가
  • rosd: 패키지 디렉토리 인덱스 조회

3.2 ROS 실행 명령어

  • roscore***: Master·rosout·Parameter Server 실행
  • rosrun***: 단일 노드 실행
  • roslaunch***: 복수 노드 실행 및 옵션 설정
  • rosclean**: 로그 파일 정리 및 삭제

3.3 ROS 정보 조회 명령어

  • rostopic***: 토픽 정보 조회
  • rosservice***: 서비스 정보 조회
  • rosnode***: 노드 상태 조회
  • rosparam***: 파라미터 정보 조회·수정
  • rosbag***: 메시지 기록·재생
  • rosmsg**: 메시지 타입 조회
  • rossrv**: 서비스 타입 조회
  • rosversion*: ROS 배포·패키지 버전 조회
  • roswtf: 시스템 상태 진단

3.4 Catkin 빌드 명령어

  • catkin_create_pkg***: 패키지 템플릿 생성
  • catkin_make***: 빌드 시스템 실행
  • catkin_find*: 패키지 경로 검색
  • catkin_init_workspace: 작업 폴더 초기화
  • catkin_prepare_release: 릴리즈 준비
  • catkin_generate_changelog: CHANGELOG.rst 업데이트

3.5 패키지 관리 명령어

  • rospack***: 패키지 정보 조회
  • rosdep**: 의존성 설치
  • rosinstall**: 외부 패키지 설치
  • roslocate: 패키지 위치 검색
  • rosmake: (구 rosbuild) 패키지 빌드

4. 주요 개발 도구

4.1 RViz

  • 3D 시각화 툴
  • 센서 데이터·포인트클라우드·카메라 영상·IMU 데이터 표시
  • URDF 모델 시각화 및 경로 계획
  • 실행 방법:
  • $ roscore
  • 새로운 터미널 실행
  • $ rviz

4.2 RQT

  • GUI 플러그인 기반 도구 모음
  • rqt_graph, rqt_plot, rqt_bag 등 제공
  • 실행 방법:
  • $ roscore
  • 새로운 터미널 실행
  • $ rqt

4.3 Gazebo

  • 물리 엔진 탑재 3D 시뮬레이터
  • ROS와의 높은 호환성
  • 노이즈 조정 및 다양한 로봇 시뮬레이션 지원

5. 추가 참조

반응형