ROS???
로봇 응용 프로그램을 개발하기 위한 운영체제와 같은 로봇 플랫폼. 로봇 개발할 때 필요한 하드웨어 추상화, 아위 디바이스 제어, 일반적으로 사용되는 기능의 구현, 프로세스간의 메세지 파싱, 패키지 관리, 개발환경에 필요한 라이브러리와 다양한 개발 및 디버깅 도구를 제공한다.
용어정리
Master(마스터) -
노드와 노드 사이의 연결 및 메세지 통신을 위한 네임 서버이다. 마스터가 없으면 ROS 노드간 메세지 , 토픽 등의 통신을 할 수 없다. 마스터는 마스터에 접속하는 슬레이브들과의 접속 상태를 유지하지 않는 HTTP기반의 프로토콜은 XMLRPC를 이용하여 슬레이브들과 통신한다.
ROS를 구동하게 되면 사용자가 정해놓은 ROS_MASTER_URI 주소로 현재의 로컬 IP를 사용하고, 11311포트를 이용하게 된다.
Node(노드) -
ROS에서 최소 단위의 실행 프로세서를 말한다. ROS에는 하나의 기능을 하나의 노드에 구현하도록 권고하고 있다. 예를 들어 센서 드라이브, 센서 데이터를 이용한 변환, 장애물 판단, 모터 구동, 등의 기능을 세부화된 작은 기능을 이용해서 구현한다.
노드는 생성과 함께 마스터에 노드이름, 발행자이름, 구독자이름, 토픽이름 서비스이름, 메세지 형태, URI 주소 및 포트를 등록한다. 이 정보들은 기반으로 각 노드는 노드끼리 토픽 및 서비스를 이용하여 메세지를 주고 받을 수 있다.
노드는 마스터와 통신할 때 XMLRPC를 이용하고, 노드간의 통신에서는 XMLRPC 및 TCP/IP 통신 계열의 TCPROS를 이용한다. 노드간의 접속 요청시에는 XMLRPC를 사용하고, 메세지 통시는 TCPROS를 이용한다. URI주소 및 포트는 현대 노드가 실행중인 컴퓨터에 저장된 ROS_HOSTNAME이라는 환경 변수값을 URI 주소로 사용하고 포트는 임의의 값을 가지게 된다.
Package(패키지)
ROS를 구성하는 기본단위로, 실행 가능한 노드를 포함하고 있다. ROS는 패키지 단위로 각각의 응용프로그램들이 개발되며, 패키지는 최소 하나 이상의 노드를 포함하고 있다.
Metapackage(메타패키지)
공동된 목적을 가지는 패키지들을 모아둔 패키지들의 집합을 말한다. 복수의 패키지를 포함한다.
Message(msg,메세지)
노드는 메세지를 통해 노드간의 데이터를 주고 받는다. 메세지는 Bool, Integer, Float, Doudle, Pointer 등과 같은 변수 형태이며, 메세지 안에 메세지를 품고 있는 간단한 데이터 구조 및 배열 등도 사용 가능하다.
Topic(토픽)
토픽은 노드 메세지의 이름으로 보면 된다. 노드에서 어떤 메세지를 보내고 싶으면 토픽 마스터에 토픽을 등록하고 해당 토픽으로 메세지를 보낸다. 그럼 수시을 원하는 노드는 마스터에 등록된 토픽이름으로 메세지를 받는다. 즉 토픽이라는 메세지 공간을 만들고 수신자와 발신자가 그를 통해 메세지를 주고 받을 수 있다.
Publish & Publisher (발행 & 발행자)
토픽의 내용에 해당하는 메세지 형테의 데이터를 송신하는것을 의미한다. 방행자 노드는 발행을 수행하기 위해 토픽을 포함한 자신의 정보를 마스터에 등록하고 구독을 원하는 노드에게 메세지를 보낸다. 발행자는 복수개로 등록이 가능하다.
Subscribe & Subscriber(구독 & 구독자)
토픽의 내용에 해당되는 메세지 형태의 데이터를 수신하는 것을 말한다. 구독자 노드는 토픽을 포함한 자신의 정보들을 마스터에 등록하고, 구독하고자 하는 토픽을 발행하는 발행자 노드의 정보를 마스터로부터 받는다. 구독자는 복수개로 등록 가능하다.
Service(서비스)
메세지 방식의 토픽 통신 방식은 비동기 방식이라 필요에 따라서 주어진 데이터를 전송하고 받기 좋은 방식이다. 또한 한번의 접속으로 지속적인 메세지를 송/수신하기 때문에 지속적으로 메세지를 발송해야하는 센서 데이터 에 적합하여 많이 사용한다. 하지만 경우에 따라서는 요청과 응답이 함께 사용되는 동기 방식의 메세지 굥환 방식도 필요하다. 이에 따라, ROS에는 서비스라는 이름으로 메세지 동기 방식을 제공하고 있다 서비스는 요청이 있을 경우에 응답을 하는 서비스 서버와 요청을 하고 응답을 받는 서비스 클라이언트로 나누어져 있다.
서비스는 1회용 통신 메세지이며 서비스 요청과 응답이 완료되면 연결된 두 노드의 접속은 끊기게 된다.
Service Server(서비스 서버)
서비스 서버는 요청을 입력으로 받고, 응답을 출력으로 하는 서비스 메시지 통신의 서버 역할을 말한다. 요청과 응답은 모두 메세지로 되어 있으며, 서비스 요청에 의하여 주어진 서비스를 수행 후에 그 결과를 서비스 클라이언트에 전달한다. 서비스 메세지 방식은 동기식이기 때문에 정해진 명령을 지시 및 수행하는 노드에 사용한다.
Service Client(서비스 클라이언트)
서비스 클라이언트는 요청을 출력으로 하고, 응답을 입력으로 받는 서비스 메세지 통신의 클라이언트 역할을 말한다. 요청과 응답은 모두 메세지로 되어 있으며, 서비스 요청을 서비스 서버에 전달하고 그 결과 값을 서비스 서버로 부터 받는다.
Catkin(캣킨)
ROS의 빌드 시스템을 말한다. ROS빌드 시스템은 기본적으로 CMake(Cross Platform Make)를 이용하고 있어서 패키지 폴더에 CMakeList.txt 의 파일에 빌드 환경을 기술하고 있다. ROS에서는 CMake를 ROS에 맞도록 수정하여 ROS에 특화된 캣킨 빌드 환경을 만들었다. 캣킨 빌드 시스템은 ROS와 관련된 빌드, 패키지 관리, 패키지간의 의존 관계 등을 편리하게 사용할 수 있다.
ROSBuild(ROS빌드)
catkin 빌스 시스템 이전에 사용했던 빌드 시스템이다. 현재도 호환성 때문에 사용할 수 있지만 추천하지 않는다.
ROSCore(ROS코어)
ROS 마스터를 실행하는 명령어(roscore)다. 같은 네트워크라면 다른 컴퓨터에서 실행해도 된다. 단 멀티 ROS코어를 지원하는 특수한 경우를 제외하고는 ROS코어는 동일 네트워크에서 하나만 구동되게 되어있다. ROS를 구동하게 되면 사용자가 정해놓은 ROS_MASTER_URI 변수에 기재되어 있는 URI 주소 및 포트를 가진다.
Parameter(매개변수)
노드에서 사용되는 매개변수를 말한다. 흔히, WIndows에서 사용하는 *.ini 설정 파일과 비슷하다. 디폴트로 설정 값들이 지정되어 있고, 필요에 따라서 외부에서 이 매개변수를 읽기 쓰기가 가능하다. 특히, 상황에 맞추어 이 매개변수를 외부에서 쓰기 기능을 이용항 설정값을 실시간으로 바꿀수 있기 때문에 유용하다.
Parameter Server(매개변수 서버)
매개변수 서버는 패키지에서 배개변수를 사용할 때, 각 매개변수를 등록하는 서버를 말한다. 매개변수 서버는 마스터의 일부분이다.
ROSrun
rosrun은 ROS의 기본적인 실행 명령어다. 패키지에서 하나의 노드를 실행하는데 사용된다. 노드가 사용하는 URI주소 및 포트는 현재 노드가 실행중인 컴퓨터에 지정된 ROS_HOSTNAM리리E라는 환경 변수값을 사용한다.
ROSlaunch
roslaunch는 한번에 복수개의 노드를 실행하는 명령어다. 그 외의 기능으로 실행시 패키지의 매개변수를 변경, 노드 명의 병경, 노드 네임 스페이스 설정, ROS_ROOT 및 ROS_PACKAGE_PATH설정, 이름 변경, 환경 변수 변경등의 실행시 변경 할 수 있는 많은 옵션들을 같춘 노드 싱행에 특화된 ROS명령어다.
'Programming' 카테고리의 다른 글
[Network] 2) 네트워크 표준화 (0) | 2015.04.15 |
---|---|
[Network] 1) Network 유형 (0) | 2015.04.15 |
[Linux/grep] 실용적인 grep 명령 예제 15가지 (0) | 2014.09.28 |
[Security/BOF] LEVEL 14. bugbear -> giant (0) | 2014.08.28 |
[Security/BOF] LEVEL 13. Darknight -> bugbear (0) | 2014.08.28 |