Bunny Code
[ROS TUTORIAL] - 1. 기본 용어 본문
- Node
→ 최소 단위의 실행 가능 프로세서
→ ROS에서 Node 단위로 프로그램을 나누어 작업
→ 각 Node는 메시지 통신으로 데이터를 주고 받음
- Package
→ 위의 노드 혹은 노드 실행을 위한 정보 등을 묶어 놓은 것
→ 패키지의 묶음을 메타패키지라고도 함
- Message
→ 노드간의 데이터를 주고받을 때 사용하는 수단
→ 메시지는 integer, floating point, boolean 와 같은 변수형태
→ 메시지 안의 메시지를 품고 있는 배열과 같은 구조도 사용 가능
- Topic
→ 단방향의 메시지 통신 방법(연속성을 가짐) (ex, 센서 데이터)
→ 보내는 애 : Publisher, 받는 애 : Subscriber
→ 1:N, N:1, N:N 도 가능
→ 대부분의 메시지에 Topic 사용
- Service
→ 양방향의 메시지 통신 방법(1회성)
→ 요청하는 애 : Client 수행하는 애 : Server
- Action
→ 양방향의 메시지 통신 방법인데, 중간에 피드백 가능
→ 장시간 혹은 복잡한 task에 사용됨
- Message 통신 방법
1. 마스터 구동
roscore
2. 서브스크라이버 노드 구동
rosrun 패키지이름 노드이름
# 노드 정보
/subscriber_node_name,
/topic_name,
message type,
http://ROS_HOSTNAME:1234
3. 퍼블리셔 노드 구동
rosrun 패키지이름 노드이름
# 노드 정보
/publisher_node_name,
/topic_name,
message type,
http://ROS_HOSTNAME:5678
4. 퍼블리셔 정보 알림
→ 마스터 노드가 서브스크라이버 노드에게 퍼블리셔 정보 알림
5. 퍼블리셔 노드에 접속 요청
→ 마스터에게 받은 퍼블리셔 정보를 이용하여 TCPROS 접속 요청
6. 서브스크라이버 노드에 접속 응답
7. TCP 접속 & 메시지 전송
- 실습해보기!
1. 먼저 Turtlesim 패키지 설치하기
sudo apt install ros-melodic-turtlesim
2. 마스터 노드 설정
roscore
→ 마스터 노드는 항상 실행된 상태이어야 하므로 터미널을 닫으면 안됨!
→ 새로운 터미널을 열어 다른 노드들 실행
3. 서브스크라이버 노드 실행
rosrun turtlesim turtlesim_node
→ 위의 사진처럼 입력해주면 다음과 같은 창이 뜸
4. 퍼블리셔 노드 실행
rosrun turtlesim turtle_teleop_key
→ 마찬가지로 새로운 터미널을 오픈하고 실행해야함
→ 위와 같이 키를 움직이면서 turtle을 움직일 수 있음
→ 이 때 방향키 입력을 퍼블리셔 노드를 실행시킨 터미널 창에서 해야함
(정보를 발행시키는 창이니까 당연하기도 한데,
나는 몰라서 처음에 turtlesim 실행창에 함...ㅠㅠ)
5. 노드 간 관계 표현 가능
rqt_graph
→ 당연히 마찬가지로 새로운 터미널 창을 열고 입력해야함
→ 마스터와 서브스크라이버, 퍼블리셔 노드 관계를 표현하면 다음과 같음
→ 위의 경우 twist message 형태
- ROS 메시지 자세히 살펴보려면!
msg - ROS Wiki
ROS uses a simplified messages description language for describing the data values (aka messages) that ROS nodes publish. This description makes it easy for ROS tools to automatically generate source code for the message type in several target languages. M
wiki.ros.org
- 네임(Names)
→ 노드, 메시지가 가지는 고유의 식별자
→ 같은 네임의 노드 실행 불가 ⇒ 바꾸고 실행해야함
자료 출처 표시 :
https://bunnycode.tistory.com/26
[ROS TUTORIAL] - 0. Intro
안녕하세요!! 버즈밴드입니다. 이번 카테고리는 ROS에 관한 글들을 작성해보려고 합니다. Python, C, C++과 다르게 ROS는 인터넷을 찾아봐도 한글 자료들이 많이 없어 혼자 공부하기 꽤나 힘들었습니
bunnycode.tistory.com
'ROS' 카테고리의 다른 글
[ROS TUTORIAL] - 2. 기본 명령어 (0) | 2021.10.13 |
---|---|
[ROS TUTORIAL] - 0. Intro (0) | 2021.10.10 |