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 : 액션 결과 전달
메시지 통신 개념
- Master 구동 : XML-Remote Procedure Call / roscore
- Subscriber Node 구동 : rosrun 패키지이름 노드이름
- Publisher Node 구동 : rosrun 패키지이름 노드이름
- Publisher 정보 알림 : Master → (new publisher info) → Subscriber Node
- Publisher Node에 접속 요청 : TCPROS 접속 요청
- Subscriber Node에 접속 응답 : 접속 응답에 해당되는 자신의 TCP URI 주소와 포트번호 전송
- TCP 접속 : TCPROS 이용 → Publisher Node 와 직접 연결
- 메시지 전송 : Publisher Node → (Message) → Subscriber Node / (Topic)
- 서비스 요청 및 응답 : 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 일정 때문에 막강이 조금 남았슴다.. 빠르게 학습 후 블로깅 추가로 할께여.... 😢
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2025 ROS 스터디] 김예찬 #2주차-ROS의 용어/명령어/도구 (0) | 2025.01.22 |
---|---|
[2025 ROS 스터디] 황희찬 #2주차- ROS 용어,명령어,도구 (0) | 2025.01.22 |
[2025 ROS 스터디] 홍동형 #2주차 - ROS 용어와 도구 (1) | 2025.01.22 |
[2025 ROS 스터디] 김예찬 #1주차 - ROS 개요 및 설치 (0) | 2025.01.21 |
[2024 ROS 스터디] 이호휘 #2주차-ROS의 용어/명령어/도구 (0) | 2025.01.19 |