본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] 이상혁 #2주차 - ROS 명령어 및 도구

반응형

1) ROS 용어 정리

 - Node: 최소 단위의 실행 가능한 프로세서(하나의 실행 가능한 프로그램)

- Package: 하나 이상의 노드, 노드 실행을 위한 정보등을 묶어 놓은 것

- Message: 노드간의 데이터를 주고 받도록 하는 것

- Topic: 노드들 간에 통신을 할 수 있는 채널(두 프로그램 간에 어떤 통신이 발생하고, 어떤 메시지를 주고 받게 되는 경로 )

- Publisher:  데이터를 발생하는 노드 

- Subscriber: PublisherTopic에 쓴 Message를 받거나 읽는 노드

- Service: 메시지 동기 방식

- Service server

- Service client

- Action: 서비스처럼 양방량을 요구하나 요청 처리 후 응답까지 오랜 시간이 걸리거나 중간 결과 값이 필요한 경우에 사용하는 것

- Action server

- Action client

 

 

 2) 메시지 통신

 - 마스터 구동(XMLRPC)

$ roscore

- 서브스크라이버 노드 구동

$ rosrun 패키지 이름 노드 이름

- 퍼블리셔 노드 구동

$ rosrun 패키지 이름 노드 이름

- 퍼블리셔 정보 알림

마스터는 서브 스크라이버 노드에게 새로운 퍼블리셔 정보 알

- 퍼블리셔 노드에 접속 요청

마스터로부터 받은 퍼블리셔 정보를 이용하여 TCPROS 접속 요청

- 서브스크라이버 노드에 접속 응답

접속 응답에 해당되는 자신의 TCP URI  주소와 포트 번호 전송

- TCP 접속

TCPROS를 이용하여 퍼블리셔 노드와 직접 연결

- 메시지 전송

발생자 노드는 서브스크라이버 노드에게 메시지를 전송()

- 서비스 요청 및 응답

1회에 한해 접속(1), 서비스 요청 및 서비스 응답이 수행되고 서로간의 접속을 끊음

 - turtlesim 패키지

ROS 초보자를 위한 교육용 도구로, 간단한 명령을 통해 거북이 로봇을 움직여 볼 수 있게 해

- roscore

ROS의 중심적인 부분을 실행시키는 명령어로, 모든 ROS 노드가 제대로 실행되기 위해서 먼저 실행해야 

- rosrun turtlesim turtlesim_node

turtlesim_node 노드를 실행, 이 노드가 실행되면, 거북이 모양의 로봇이 있는 시뮬레이션 환경이 생성

- rosrun turtlesim turtle_teleop_key

키보드를 이용해 거북이 로봇을 직접 움직일 수 있게 해주는 turtle_teleop_key 노드를 실행

- rosrun rqt_graph  rqt_graph

실행 중인 ROS 노드와 이들 사이의 연결을 시각적으로 보여주는 rqt_graph를 실행

이를 통해 어떤 노드가 어떻게 연결되어 있는지, 어떤 메시지가 주고받아지는지 등을 확인

 

 

 3) 메시지

메시지 통신(토픽, 서비스, 액션, 파라미터)

 

 

 4) 네임

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

- ROS 는 그래프라는 추상 데이터 형태 지원

- 글로벌: 문자 없이 네임을 바로 쓰거나 네임 앞에 슬래쉬를 붙임

- 프리베이트: 네임 앞에 틸트(~)를 붙임

 

 5) 좌표 변환 (TF): 각 조인트들의 상대 좌표 변환 (트리 형태로 조인트들 간의 관계도를 표시)

 

 6) 클라이언트 라이브러리: 다양한 프로그래밍 언어 지원(roscpp,rospy...)

 

 7) 이기종 디바이스 간의 통신

다양한 종류의 디바이스가 서로 정보를 주고받는 과정(이는 네트워크 프로토콜, API, 미들웨어 등을 이용해 이루어짐 )

 

 8) 파일 시스템

운영 체제에서 파일을 저장하고 관리하는 방식(대표적인 예로는 FAT, NTFS, ext4 )

 

 9) 빌드 시스템

소스 코드를 컴파일, 링크, 패키징 등의 과정을 통해 실행 가능한 소프트웨어 제품을 만들어내는 시스템(대표적인 빌드 시스템으로는 Make, Ant, Gradle )

 

 

 

 

ROS 실행 명령어

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

$rosrun - 노드 실행

$roslaunch - 노드를 여러 개 실행 및 실행 옵션 설정

$rosclean - ROS 로그 파일을 검사하거나 삭제

 

ROS 정보 명령어

 

 

ROS catkin 명령어

 

 

rqt_graph 예시

 

반응형