본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] 변수양 #2주차 - ROS 명령어 및 도구

반응형

https://youtube.com/playlist?list=PLX-Ur4rl2-qwNB3cD5UAGo-RPe5IBw1pu&feature=shared

 

2024 ROS 스터디 2주차

 

www.youtube.com

ROS 강의Chapter4. ROS의 중요 컨셉

 

1) ROS 용어 정리

 

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

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

- Message: 노드간의 데이터를 주고 받도록 하는 것, integer/floating/point/boolean 과 같은 변수 형태로 존

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

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

- Subscriber: Publisher가 Topic에 쓴 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 강의Chapter5. ROS 명령어

 

1) ROS 명령어 정리

2) ROS 쉘 명령어

3) ROS 실행 명령어

4) ROS 정보 명령어

5) ROS carkin 명령어

6) ROS 패키지 명령

 

 

ROS 강의Chapter6. ROS 도구

 

1) RViz

- 사용 예: 재난구조로봇

- 화면 구성: 3D뷰, 디스플레이, 메뉴, 툴, 뷰 형태, 시간

- RViz를 이용하면 센서 및 로봇 관련 데이터 시각화가 매우 간단 

 

- RViz 실습

# roscore

# rviz

 

 

2) RQT

- 플러그인 방식의 ROS 종합 GUI 툴

 

- RQT 실습

# rqt

 

# rqt_graph

 

# rqt_plot

 

 

3) Gazabo: 로봇 개발에 필요한 3차원 시뮬레이션을 위한 로봇, 센서 등을 지원하고 물리 엔진을 탑재하여 실재와 근사한 결과를 얻을 수 있는 시뮬레이터

 

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

- 예제1: 원격으로 이미지 전송

- 예제2: 안드로이드 스마트폰의 가속도 값을 pc에서 확인

- 예제3: 안드로이드 스마트폰으로 turtlebot 제어

반응형