2023. 1. 19. 17:30ㆍ공부방
로봇 운영체제에는 다양한 ROS용어가 존재합니다. 이번에는 ROS용어에 대해서 알아보겠습니다.
ROS 주요 3가지 용어
- Node
-> 최소 단위의 실행 가능한 프로세서를 가리키는 용어로써 하나의 실행 가능한 프로그램
장점) Unitest를 기능별로 할 수 있습니다, open source로 활용 가능합니다.
-> ROS는 최소한의 실행단위로 프로그램을 나누어 작업을 하고 각 노드는 메시지 통신으로 데이터를 주고받습니다.
-> Node화 시키는게 중요!! - Package
-> 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것.
-> 패캐지의 묶음을 메타패키지라 하여 따로 분리
-> Sensor는 Sensor끼리, Motor는 Motor끼리 나눠서 Node를 만드는게 유용합니다. - Message
-> 메시지를 통해 노드간의 데이터를 주고받습니다.
-> 메시지는 integer, floating, point, boolean과 같은 변수 형태입니다.
-> 메시지 안에 메시지를 품는 간단한 데이터 구조 및 메시지들의 배열과 같은 구조도 사용 가능합니다.
메시지 통신 방법 : Topic, Service, Action
- Topic
-> 단방향, 연속성을 가지고 있는 메시지 통신 방법, 일반적으로 데이터를 보내는 경우에 많이 사용
Publisher : 메시지를 보내는 노드 Subscriber : 메시지를 받는 노드
-> 목적에 따라서 1:N, N:1, N:N통신도 가능합니다.
- Service
-> 양방향, 일회성(접속이 끊김. 따라서 다시 하려면 재접속을 하고 보내야 함)
Service client : 요청, 명령
Service server : 동작, 프로세싱, 요청이 끝난경우
- Action
-> Task가 복잡하거나 장시간 걸리거나 중간에 결과를 알고싶을 때, 많이 사용
Action client : 요청, 명령
Action server : 중간 중간 결과를 클라이언트에게 계속 전달
경험적 빈도수 : Topic - 80~90%, Service - 5~10%, Action - 1%
메시지 통신 개념 Catch!!
- ROS에서 가장 기본이 되는 기술적 포인트 : 노드간의 메시지 통신
1. 마스터 구동 : XMLRPC
-> $roscore를 통해서 마스터를 구성
2. Subscriber Node 구동
-> $rosrun 패키지이름 노드이름
3. Publisher Node 구동
-> $rosrun 패키지이름 노드이름
4. Publisher 정보 알림
-> 마스터는 Subscriber Node에게 새로운 Publisher 정보를 알립니다.
5. Publisher Node에 접속 요청
-> 마스터로부터 받은 Publisher 정보를 이용하여 TCPROS접소을 요청
6. Subscriber Node에 접속 응답
-> 접속 응답에 해당되는 자신의 TCP URI 주소와 포트번호를 전송
7. TCP 접속
-> TCPROS를 이용하여 Publisher Node와 직접 연결
8. 메시지 전송
-> 발행자 노드는 Subscriber Node에게 메시지를 전송(Topic)
9. Service 요청 및 응답
-> 1회에 한해 접속, 서비스 요청 및 서비스 응답이 수행되고 서로간의 접속을 끊습니다.
-> 마스터가 노드의 정보를 관리해서 매칭시킨 후, 그와 관련된 정보를 넘겨주는 Topic과 동일한 flow를 가짐.
- ex) turtlesim 패키지
- roscore : roscore는 ROS를 사용할 때 제일 먼저 실행, Ros의 node 및 파라미터를 관리
- rosrun : node 하나를 실행시킬 때 사용하는 명령어
ex) rosrun [패키지] [node], rosrun turtlesim turtlesim_node : turtlesim패키지 안에 있는 turtlesim_node를 실행시켜라 라는 의미
Ros메시지
- 메시지 통신에는 topic, service, action 3가지 방법이 존재합니다.
ㄱ
- 메시지는 노드 간에 데이터를 주고 받을 때, 사용하는 데이터의 형태
-> 토픽, 서비스, 액션은 모두 메시지를 사용
http://wiki.ros.org/msg
일반적으로 많이 사용하는 메시지를 모아둠 : http://wiki.ros.org/common_msgs
-> 단순 자료형조 - ex) 정수, 소수점, boolean
http://wiki.ros.org/std_msgs
-> 메시지 안에 메시지를 품고 있는 간다한 데이터 구조 - ex) geometry_msgs/PoseStamped
http://docs.ros.org/api/geometry_msgs/html/msg/PoseStamped.html
Name
- 노드, 메시지가 가지는 고유의 식별자
- ROS는 graph라는 추상 데이터 형태 지원
- 글로벌(global)
-> 문자 없이 네임을 바로 쓰거나 네임 앞에 슬레쉬를 붙임 - 프리베이트(private)
-> 네임 앞에 틸트를 붙임
좌표 변환(TF, transform)
- 각 조인트들의 상대 좌표 변환
-> 트리 형태로 조인트들간의 관계도를 표시함
클라이언트 라이브러리
- 다양한 프로그래밍 언어 지원
'공부방' 카테고리의 다른 글
ROS Study6 - ROS 도구 (0) | 2023.01.21 |
---|---|
ROS Study5 - ROS 명령어 (0) | 2023.01.19 |
ROS Study3 - 개발환경 구축 (0) | 2023.01.14 |
ROS Study2 - 로봇 운영체제 ROS (0) | 2023.01.14 |
Ros Study1 - 로봇 소프트웨어 플랫폼 (0) | 2023.01.05 |