본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

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

반응형

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랑의 차이점은  모라이는 자율주행 시뮬레이터 특화이다. 

 

 

반응형