ROS의 중요컨셉
용어
Node - 최소 단위의 실행 가능한 프로세서. 하나의 실행가능한 프로그램. 각 노드는 메시지 통신으로 데이터를 주고 받는다.
Package - 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것. 패키지의 묶음을 메타 패키지라 하여 따로 분리한다.
Message - 메시지를 통해 노드간의 데이터를 주고 받는다. 메시지는 int, float, point, bool 같은 변수 타입이다.
메시지 통신 종류
Topic - 단방향, 연속성을 가진 통신 방법. 메시지를 보내는 친구를 publisher node / 메시지를 받는 친구를 subscriber node.
1:1, 1:N, N:N 통신도 가능. (대표적 : 90%이상 사용)
Service - 양방향, 일회성 (클라이언트가 서버한테 서비스 요청 >>> 서버가 클라이언트한테 서비스 응답)
Action - 피드백이 있음. 서비스와 유사. 복잡한 task나 중간에 결과값을 알고싶을 때 사용
메시지 통신 개념
◈ ROS에서 가장 기본이 되는 기술적 포인트는 노드간의 메시지 통신
1. 마스터 구동 (roscore) - 실행되느네 노드들의 정보를 관리하고, 노드간의 통신을 연결 시켜주는 매개체.
2. 서브스크라이버 노드 구동 - 서브스크라이버 노드는 마스터에 노드 이름, 토픽 이름, 메시지 형태, IP나 포트 번호를 전달.
3. 퍼블리셔 노드 구동 - rosrun | 패키지 이름 |노드이름
4. 퍼블리셔 정보 알림 - 마스터는 서브스크라이버 노드에게 새로운 퍼블리셔 정보를 알린다.
5. 퍼블리셔 노드에 접속 요청 - 마스터로부터 받은 퍼블리셔 정보를 이용하여 TCPROS 접속을 요청
6. 서브스크라이버 노드에 접속 응답 - 접속응답에 해당되는 자신의 TCP URI 주소와 포트번호를 전송
7. TCP접속 - TCPROS를 이용하여 퍼블리셔 노드와 직접 연결한다.
8. 메시지 전송 - 발행자 노드는 서브스크라이버 노드에게 메시지를 전송(토픽)
9. 서비스 요청 및 응답 - 1회에 한해 접속, 서비스 요청 및 서비스 응답이 수행되고 서로간의 접속을 끊는다.
//서비스는 토픽과달리 1회성에 한해 접속하고 서비스 요청 및 응답이 수행한 후 서로간의 접속을 끊는다.
네임(Names) - 노드, 메시지가 가지는 고유의 식별자. ROS는 그래프라는 추상데이터 형태 지원
좌표변환(TF) - 각 조인트들의 상대 좌표 변환
클라이언트 라이브러리 - roscpp, rospy 등
ROS명령어
Command-Line Tools
1) ROS 셸 명령어
- roscd : 지정한 ROS 패키지의 디렉터리로 이동
- rosls : ROS 패키지의 파일 목록 확인
- rosed : ROS 패키지의 파일 편집
- roscp : ROS 패키지의 파일 복사
- rospd : ROS 디렉터리 인덱스에 디렉터리 추가
- rosd : ROS 디렉터리 인덱스 확인
2) ROS 실행 명령어
- roscore : master, rosout(로그 기록), parameter server(파리미터 관리)
- rosrun : 노드 실행
- roslaunch : 노드를 여러개 실행 및 실행 옵션 설정
- rosclean : ROS 로그 파일을 검사하거나 삭제
3) ROS 정보 명령어
- rostopic : ROS 토픽 정보 확인
- rosservice : ROS 서비스 정보 확인
- rosnode : ROS 노드 정보 확인
- rosparam : ROS 파라미터 정보 확인, 수정
- rosbag : ROS 메시지 기록, 재생
- rosmsg : ROS 메시지 정보 확인
- rosrv : ROS 서비스 정보 확인
4) ROS catkin 명령어
- catkin_create_pkg : 패키지 자동 생성
- catkin_make : 캐킨 빌드 시스템에 기반을 둔 빌드
- catkin_eclipse : 캐킨 빌드 시스템으로 생성한 패키지를 이클립스에서 사용할 수 있게 변경
- catkin_prepare_release : 릴리즈할때 사용되는 로그정리 및 버전 태깅
- catkin_generate_changelog : 릴리즈 할때 CHANGELOG.rst 파일 생성 또는 업데이트
- catkin_init_workspace : 캐킨 빌드 시스템의 작업 폴더 초기화
- catkin_find : 캐킨 검색
3) ROS 패키지 명령어
- rospack : ROS 패키지와 관련된 정보 보기
- rosinstall : ROS 추가 패키지 설치
- rosdep : 해당 패키지의 의존성 파일 설치
ROS 도구
1) Rviz
- ROS의 3D시각화툴
- 로봇 외형의 표시와 계획된 동작을 표현
- 내비게이션, 매니퓰레이션
- 원격제어
2차 평면의 거리데이터를 Rviz상으로 볼수있다.
◈Rviz를 이용하면 센서 및 로봇 관련 데이터 시각화가 매우 간단
2) RQT
- 노드 사이의 연결 정보를 표기(rqt_graph)
- 인코더, 전압 등 시간에 따라 변화를 보여줌(rqt-plot)
◈RQT를 이용하면 1. GUI형태로 ROS 이용가능 2. GUI TOOL 제작이 간단
3) Gazebo
- 물리 엔진을 탑재해 실제와 근사값을 얻을 수 있는 3차원 시뮬레이터이다.
- gazebo와 비슷하게 모라이라는 시뮬레이터가 있다. 둘다 자율주행 차량이나 로봇의 시뮬레이션 환경을 제공하고, 3D로 실제 환경에서 센서 시뮬레이션이 가능하다. 알고리즘 테스트 또한 가능하다. gazebo랑의 차이점은 모라이는 자율주행 시뮬레이터 특화이다.
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2025 ROS 스터디] 전예림 #2주차 - 중요 컨셉, 명령어, 도구 (0) | 2025.04.30 |
---|---|
[2025 ROS 스터디] 김승현 #3주차-ROS 기본 프로그래밍 (0) | 2025.04.29 |
[2025 ROS 스터디] 조원영 #2주차- ROS 용어, 명령어, 도구 (0) | 2025.04.15 |
[2025 ROS 스터디] 장우혁 #1주차 - ROS 소개 및 설치 (0) | 2025.04.10 |
[2025 ROS 스터디] <문승주> #1주차 - <ROS소개 및 설치> (0) | 2025.04.08 |