본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2025 ROS 스터디] 이승찬 #2주차 - ROS의 컨셉 / 명령어와 도구

반응형

ROS 용어

  • Node : 최소 단위의 실행 가능 프로세서
    • ROS의 가장 큰 특징
  • Package : 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것 (패키지의 묶음 == 메타 패키지)
    • 5,000개 +@ 존재
    • 재활용 가능
  • Message : 노드 간의 데이터를 주고 받는 것

  • Topic : 단방향 연속성을 지닌 통신방법 (about 90%)
    • 1:1, 1:N, N:N 가능
    • Publisher → Subscriber

  • Service : 양방향 단일성을 지닌 통신방법
    • Client → Server : 서비스 요청
    • Server → Client : 서비스 응답

  • Action : 양방향 다회성을 지닌 통신방법
    • Client → Server : 액션 목표 전달
    • Server → Client : 액션 피드백 (중간결과) 전달
    • Server → Client : 액션 결과 전달


메시지 통신 개념

  1. Master 구동 : XML-Remote Procedure Call / roscore
  2. Subscriber Node 구동 : rosrun 패키지이름 노드이름
  3. Publisher Node 구동 : rosrun 패키지이름 노드이름
  4. Publisher 정보 알림 : Master → (new publisher info) → Subscriber Node
  5. Publisher Node에 접속 요청 : TCPROS 접속 요청
  6. Subscriber Node에 접속 응답 : 접속 응답에 해당되는 자신의 TCP URI 주소와 포트번호 전송
  7. TCP 접속 : TCPROS 이용 → Publisher Node 와 직접 연결
  8. 메시지 전송 : Publisher Node → (Message) → Subscriber Node / (Topic)
  9. 서비스 요청 및 응답 : 1회성으로 서비스 요청 및 응답 수행, 이후 접속 단절

예제 - Turtlesim


메시지 통신

 

  • 메시지는 노드 간에 데이터를 주고받을 때 사용하는 데이터의 형태
    • 토픽, 서비스, 액션 → 모두 메시지 사용
    • 단순 자료형 : int, float, bool
    • 메시지 안에 메시지를 품고 있는 간단한 데이터 구조 : geometry_msgs/PoseStemped
    • 메시지들이 나열된 배열과 같은 구조 : float32[] ranges


+@ 추후에 다루어 볼 것들

Name : 노드, 메시지가 가지는 고유의 식별자

TransForm(좌표 변환) : 각 조인트(joint)들의 상대 좌표 변환

Client Library : 다양한 프로그래밍 언어 지원


ROS 명령어 (리눅스랑 비슷하네유)

ROS shell 명령어

★★★ roscd : 지정한 ROS 패키지의 디렉터리로 이동

★☆☆ rosls : ROS 패키지의 파일 목록 확인

★☆☆ rosed : ROS 패키지의 파일 편집

★☆☆ roscp : ROS 패키지의 파일 복사

☆☆☆ rospd : ROS 디렉터리 인덱스에 디렉터리 추가

☆☆☆ rosd : ROS 디렉터리 인덱스 확인

ROS 실행 명령어

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

★★★ rosrun : 노드 실행

★★★ roslaunch : 노드를 여러개 실행 및 실행 옵션 설정

★★☆ rosclean : ROS 로그 파일 검사 및 삭제

ROS 정보 명령어

★★★ rostopic : ROS 토픽정보 확인

★★★ rosservice : ROS 서비스 정보 확인

★★★ rosnode : ROS 노드 정보 확인

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

★★★ rosbag : ROS 메시지 기록, 재생

★★☆ rosmsg : ROS 메시지 정보 확인

★★☆ rossrv : ROS 서비스 정보 확인

★☆☆ rosversion : ROS 패키지 및 배포 릴리즈 버전 정보 확인

☆☆☆ roswtf : ROS 시스템 검사

ROS catkin 명령어

★★★ catkin_create_pkg : 패키지 자동 생성

★★★ catkin_make : 캐킨 빌드 시스템에 기반을 둔 빌드

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

★★☆ catkin_prepare_release : 릴리즈할 때 사용되는 로그 정리 및 버전 태깅

★★☆ catkin_generate_chanelog : 릴리즈할 때 CHANGELOG.rst 파일 생성 또는 업데이트

★★☆ catkin_init_workspcae : 캐킨 빌드 시스템의 작업 폴더 초기화

★☆☆ catkin_find : 캐킨 검색

ROS catkin 명령어

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

★★☆ rosinstall : ROS 추가 패키지 설치

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

☆☆☆ roslocate : ROS 패키지 정보 관련 명령어

☆☆☆ roscreate-pkg : ROS 패키지 자동 생성 (구 rosbuild 시스템에서 사용)

☆☆☆ rosmake : ROS 패키지를 빌드 (구 rosbuild 시스템에서 사용)


ROS 도구

RViz (ROS Visualization Tool)

  • ROS의 3D 시각화툴
    • 센서 데이터의 시각화
    • 레이저 거리 센서의 거리 데이터
    • RealSense, Kinect, Xtion 등의 Depth Camera의 포인트 클라우드 데이터
    • 3차원 공간에서 거리값을 점으로 나타내서 데이터 저장
    • 카메라의 영상 데이터
    • IMU 센서의 관성 데이터
  • 로봇 외형의 표시와 계획된 동작을 표현
    • Unified Robot Description Format
  • Navigation
  • Manipulation
  • 원격 제어

0122 일정 때문에 막강이 조금 남았슴다.. 빠르게 학습 후 블로깅 추가로 할께여.... 😢

반응형