ROS 학습 (1) : 중요한 개념

ROS

       ROS는 로봇 애플리케이션 개발을위한 운영 체제와 유사한 로봇 소프트웨어 플랫폼입니다. ROS는 로봇 엔지니어링에서 널리 사용되는 하드웨어 추상화, 하위 장치 제어 및 감지, 인식, 그리기, 동작 계획 및 기타 기능을 제공합니다. 또한 ROS는 프로세스, 함수 패키지 관리, 라이브러리, 풍부한 개발 및 디버깅 도구 간의 메시지 구문 분석을 제공합니다.

마스터 노드

      마스터 노드 (마스터) 2는 이름 서버 (Name Server)와 유사하게 노드 간 연결 및 메시지 통신을 담당합니다. roscore는 실행 명령이며 마스터 노드를 실행하면 각 노드의 이름을 등록하고 필요에 따라 정보를 얻을 수 있습니다. 마스터 노드가 없으면 노드간에 액세스 및 메시지 교환 (예 : 주제 및 서비스)을 설정할 수 없습니다. 마스터 노드는 XML 원격 프로 시저 호출 (XMLRPC, XML-Remote Procedure Call) 3을 사용하여 노드와 통신합니다. XMLRPC는 HTTP 기반 프로토콜로 마스터 노드는 마스터 노드에 연결된 노드와의 연결을 유지하지 않습니다. 즉, 노드는 자신의 정보를 등록하거나 다른 노드에 요청 정보를 보내야 할 때만 마스터 노드를 방문하여 정보를 얻을 수 있습니다. 일반적으로 서로의 연결 상태를 확인하지 않습니다. 이러한 특성으로 인해 ROS는 매우 크고 복잡한 환경에서 사용할 수 있습니다. XMLRPC는 또한 매우 가볍고 여러 프로그래밍 언어를 지원하므로 다양한 하드웨어 및 언어를 지원하는 ROS에 매우 적합합니다.

     ROS가 시작되면 마스터 노드는 사용자가 설정 한 ROS_MASTER_URI 변수에 나열된 URI 주소와 포트를 얻습니다. 달리 설정하지 않는 한 기본적으로 URI 주소는 현재 로컬 IP를 사용하고 포트는 11311을 사용합니다.

마디

     노드 4는 ROS에서 실행되는 가장 작은 프로세서 유닛을 나타냅니다. 실행 가능한 프로그램으로 생각하십시오. ROS에서는 목적에 맞는 노드 생성을 권장하며 설계시 재사용성에주의를 기울이는 것이 좋습니다. 예를 들어, 모바일 로봇의 경우 로봇을 구동하기 위해 각 프로그램을 세분화합니다. 즉, 센서 구동, 센서 데이터 변환, 장애물 판단, 모터 구동, 엔코더 입력, 내비게이션 등 여러 세분 노드가 사용됩니다. 노드가 실행되는 동안 마스터 노드에 노드 이름을 등록하고 게시자, 가입자, 서비스 서버 및 서비스 클라이언트의 이름도 등록하고 메시지 양식, URI 주소 및 포트를 등록합니다. 이 정보를 기반으로 각 노드는 주제 및 서비스를 사용하여 다른 노드와 메시지를 교환 할 수 있습니다. 노드는 XMLRPC를 사용하여 마스터 스테이션과 통신하고 TCP / IP 통신 시리즈 XMLRPC 또는 TCPROS5를 노드 간 통신에 사용합니다. 노드 간 연결 요청 및 응답은 XMLRPC를 사용하고 메시지 통신은 TCPROS를 사용합니다. 이는 노드 간 직접 통신이고 마스터 노드와는 아무 관련이 없기 때문입니다. URI 주소 및 포트는 현재 노드를 실행하는 컴퓨터에 저장된 ROS_HOSTNAME이라는 환경 변수를 URI 주소로 사용하고 포트를 고유 한 값으로 설정합니다.

기능 팩

     패키지 6은 ROS의 기본 단위입니다. ROS 애플리케이션은 기능 패키지 단위로 개발됩니다. 기능 패키지에는 다른 기능 패키지를 실행하기위한 하나 이상의 노드 또는 노드의 구성 파일이 포함됩니다. 또한 다양한 프로세스를 실행하기위한 ROS 종속성 라이브러리, 데이터 세트 및 구성 파일과 같이 기능 팩에 필요한 모든 파일을 포함합니다. 2017 년 7 월 현재 등록 된 공식 함수 패키지 수 : ROS Indigo 최대 약 2500 (http://repositories.ros.org/status_page/ros_indigo_default.html), ROS Kinetic 최대 약 1600 (http : // repositories. ros.org/status_page/ros_kinetic_default.html). 또한 사용자가 개발하고 공유하는 함수 패키지에는 약간의 반복이 있지만 약 4600 개 (http://rosindex.github.io/stats/)도 있습니다.

뉴스

     노드는 메시지를 통해 데이터를 보내고받습니다 .8. 메시지는 정수, 부동 소수점 및 부울과 같은 유형의 변수입니다. 사용자는 메시지를 포함하는 메시지 또는 메시지를 열거하는 메시지 배열 구조와 같은 간단한 데이터 구조를 사용할 수도 있습니다. 메시지를 이용한 통신 방식으로는 TCPROS, UDPROS 등이 있습니다. 상황에 따라 단방향 메시지 송수신 토픽 (주제)과 양방향 메시지 요청 (요청) / 응답 (서비스)을 사용합니다.

이야기

      주제는 "이야기"입니다. 게시자 노드는 스토리에 대한 마스터 노드에 등록한 후 메시지 형태로 스토리에 대한 광고를 게시합니다. 스토리 수신을 원하는 가입자 노드는 마스터 노드에서이 토픽에 등록 된 게시자 노드의 정보를 획득합니다. 이 정보를 기반으로 구독자 노드는 게시자 노드에 직접 연결하고 주제를 사용하여 메시지를 보내고받습니다.

게시 및 게시자

     게시는 주제의 내용에 해당하는 메시지 형식으로 데이터를 보내는 것을 의미합니다. 발행을 수행하기 위해 발행자 노드는 마스터 노드에 자신의 토픽 및 기타 정보를 등록하고 구독을 원하는 구독자 노드에 메시지를 보냅니다. 게시자는 자신이 게시를 실행하는 개인임을 노드에서 선언합니다. 단일 노드가 여러 게시자가 될 수 있습니다.

구독자 및 구독자

     구독은 주제 내용에 해당하는 메시지 형태로 데이터를받는 것을 말합니다. 구독을 수행하기 위해 구독자 노드는 자신의 토픽 및 기타 정보를 마스터 노드에 등록하고 마스터 노드로부터 구독하려는 토픽을 게시하는 게시자 노드의 정보를 수신합니다. 이 정보를 기반으로 구독자 노드는 메시지를 수신하기 위해 게시자 노드에 직접 연결합니다. 구독자는 노드에서 구독을 수행하는 개인을 선언합니다. 단일 노드가 여러 구독자가 될 수 있습니다.

     발행 및 구독 개념의 주제는 비동기식이므로 필요에 따라 데이터를 보내고받는 좋은 방법입니다. 또한 단일 연결을 통해 연속적인 메시지를 송수신하기 때문에 지속적으로 메시지를 보내야하는 센서 데이터에 자주 사용됩니다. 그러나 경우에 따라 요청과 응답을 함께 사용하는 동기식 메시지 교환 체계가 필요합니다. 따라서 ROS는 service라는 메시지 동기화 방법을 제공합니다. 서비스는 요청에 응답하는 서비스 서버와 요청 후 응답을받는 서비스 클라이언트로 구분됩니다. 주제와 달리 서비스는 일회성 메시지 커뮤니케이션입니다. 서비스 요청 및 응답이 완료되면 두 노드 간의 연결이 끊어집니다.

서비스

     서비스 메시지 통신은 서비스 클라이언트와 서비스 서버 간의 동기식 양방향 메시지 통신입니다. 이 중 서비스 클라이언트는 특정 목적 태스크에 해당하는 서비스를 요청하고 서비스 서버는 서비스 응답을 담당합니다.

동작

     Action은 서비스와 같은 양방향 요청이 필요할 때 사용하는 메시지 통신 방식으로 요청 처리 후 긴 응답이 필요하고 중간에 값을 피드백해야한다는 점이 다릅니다. 작업 파일은 요청 및 응답에 해당하는 목표와 결과가있는 서비스와 매우 유사합니다. 또한 중간에 해당하는 피드백이 추가되었습니다. 목표를 설정하는 액션 클라이언트와 액션 서버로 구성되어 있으며, 액션 서버는 목표에 따라 액션을 수행하고 피드백과 결과를 보냅니다. 조치 클라이언트와 조치 서버 간의 비동기 양방향 메시지 통신.

매개 변수

    ROS의 매개 변수는 노드에서 사용되는 매개 변수를 참조합니다. Windows 프로그램의 * .ini 구성 파일로 생각하십시오. 이러한 매개 변수는 기본적으로 설정되며 필요에 따라 외부에서 읽거나 쓸 수 있습니다. 특히 외부 쓰기 기능을 이용하여 실시간으로 설정 값을 변경할 수있어 매우 유용합니다. 예를 들어 외부 장치에 연결된 PC의 USB 포트, 카메라 보정 값, 모터 속도 또는 명령의 최대 및 최소 값과 같은 설정을 지정할 수 있습니다.

추천

출처blog.csdn.net/kh815/article/details/88122949