KR101133665B1 - Unmanned aerial vehicle and distributed embedded system - Google Patents

Unmanned aerial vehicle and distributed embedded system Download PDF

Info

Publication number
KR101133665B1
KR101133665B1 KR1020090107216A KR20090107216A KR101133665B1 KR 101133665 B1 KR101133665 B1 KR 101133665B1 KR 1020090107216 A KR1020090107216 A KR 1020090107216A KR 20090107216 A KR20090107216 A KR 20090107216A KR 101133665 B1 KR101133665 B1 KR 101133665B1
Authority
KR
South Korea
Prior art keywords
packet
navigation control
embedded board
embedded
shared
Prior art date
Application number
KR1020090107216A
Other languages
Korean (ko)
Other versions
KR20110050297A (en
Inventor
이상헌
진현욱
Original Assignee
건국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 건국대학교 산학협력단 filed Critical 건국대학교 산학협력단
Priority to KR1020090107216A priority Critical patent/KR101133665B1/en
Publication of KR20110050297A publication Critical patent/KR20110050297A/en
Application granted granted Critical
Publication of KR101133665B1 publication Critical patent/KR101133665B1/en

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B64AIRCRAFT; AVIATION; COSMONAUTICS
    • B64CAEROPLANES; HELICOPTERS
    • B64C39/00Aircraft not otherwise provided for
    • B64C39/02Aircraft not otherwise provided for characterised by special use
    • B64C39/024Aircraft not otherwise provided for characterised by special use of the remote controlled vehicle type, i.e. RPV

Landscapes

  • Engineering & Computer Science (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 발명은 무인 비행체 및 분산 임베디드 시스템에 관한 것으로서, 본 발명의 일면에 따른 무인 비행체는, 다수의 다양한 제어패킷들을 수신하고, 센서로부터 수집된 센싱정보패킷을 제공하는 항법제어 임베디드 보드 및 외부로부터 다양한 제어 명령을 입력받아 항법제어 임베디드 보드로 항법제어패킷을 제공하고, 항법제어 임베디드 보드로부터 센싱정보패킷을 제공받는 미션제어 임베디드 보드들을 포함하되, 항법제어 임베디드 보드는 패킷의 우선순위 및 응용프로세스의 우선순위에 따라 항법제어패킷과 센싱정보패킷을 처리하고 임베디드 보드간 정보 공유 및 동기화를 위해 실시간 통신을 수행 하는 것이다. The present invention relates to an unmanned aerial vehicle and a distributed embedded system, and the unmanned aerial vehicle according to an aspect of the present invention, receives a plurality of various control packets, and provides a variety of navigation control embedded board from the outside to provide a sensing information packet collected from the sensor It includes mission control embedded boards that receive control commands to provide navigation control packets to navigation control embedded boards, and receive sensing information packets from navigation control embedded boards. Navigation control embedded boards include packet priority and application process priority. It processes navigation control packet and sensing information packet according to the rank and performs real time communication for information sharing and synchronization between embedded boards.

Description

무인 비행체 및 분산 임베디드 시스템{Unmanned aerial vehicle and distributed embedded system}Unmanned aerial vehicle and distributed embedded system

본 발명은 무인 비행체 및 이를 위한 네트워크 기반의 분산 임베디드 시스템에 관한 것이다.The present invention relates to an unmanned aerial vehicle and a network-based distributed embedded system for the same.

임베디드 시스템에서 각 임베디드 보드들은 일반적으로 작업의 효율성을 고려하여 각각의 역할 또는 기능을 구별되도록 구비되어 동작한다. 효율적인 임베디드 시스템의 구성을 위해서는, 각 임베디드 보드 간에 통신이 필수적으로 이루어 져야 한다.In an embedded system, each embedded board generally operates to distinguish each role or function in consideration of work efficiency. In order to construct an efficient embedded system, communication between each embedded board is essential.

예를 들어 무인 항공기 내부에는 두 종류의 임베디드 보드가 구비되어 각각의 역할 또는 기능에 맞는 동작을 수행한다. 그 중 하나는 비행제어컴퓨터(Flight Control Computer, FCC)이고 다른 하나는 다양한 응용을 수행하는 미션제어컴퓨터(Mission Control Computer, MCC)이다. 이러한 FCC와 MCC는 상호 데이터 패킷을 주고 받으며, 각각에 주어진 기능에 맞추어 패킷을 처리하고, 동작을 수행한다. 이러한 FCC와 MCC 간에도 효율적인 통신이 수행되어야 한다.For example, two types of embedded boards are provided inside an unmanned aerial vehicle to perform operations for each role or function. One is the Flight Control Computer (FCC) and the other is the Mission Control Computer (MCC) that performs a variety of applications. The FCC and the MCC exchange data packets with each other, process packets, and perform operations according to functions given to each other. Efficient communication must also be carried out between such FCCs and MCCs.

그러나 이러한 무인 항공기 내부에의 임베디드 시스템 또는 일반적인 임베디 드 시스템에서 복잡한 임무를 위한 다수의 임베디드 보드를 지원하기에, 종래의 통신 프로토콜은 실시간 데이터 처리에 취약하고, 보드 간 동기화에 적합하지 않았다. However, due to the support of multiple embedded boards for complex tasks in such embedded systems or in general embedded systems, conventional communication protocols are vulnerable to real-time data processing and are not suitable for board-to-board synchronization.

이에 본 발명이 이루고자 하는 기술적 과제는, 무인비행체의 기능 수행을 위한 분산 임베디드 시스템에서 임베디드 보드간 효율적인 통신을 수행하여 무인 비행체 및 임베디드 시스템의 효율성을 극대화 하는 것을 제공하는 것을 목적으로 한다.Accordingly, an object of the present invention is to provide an efficient communication between embedded boards in a distributed embedded system for performing a function of an unmanned aerial vehicle to maximize the efficiency of an unmanned aerial vehicle and an embedded system.

본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The object of the present invention is not limited to the above-mentioned object, and other objects that are not mentioned will be clearly understood by those skilled in the art from the following description.

전술한 목적을 달성하기 위한 본 발명의 일면에 따른 무인 비행체는, 다수의 항법 모듈을 제어할 수 있는 항법제어패킷들을 수신하여 상기 각 항법 모듈로 제어 신호를 출력하고, 센서로부터 수집된 센싱정보패킷을 제공하는 항법제어 임베디드 보드 및 사용자로부터 항법 제어 명령을 입력받아 상기 항법제어 임베디드 보드로 상기 항법제어패킷을 제공하고, 상기 항법제어 임베디드 보드로부터 상기 센싱정보패킷을 제공받는 제2 임베디드 보드를 포함하되, 상기 항법제어 임베디드 보드는 실시간 통신을 통해 상기 미션제어 임베디드 보드로부터 상기 항법제어패킷들을 수신하여 응용프로세스의 우선순위에 따라 순차적으로 처리하고, 상기 항법제어패킷에 우선순위가 설정되어 있는 경우, 상기 우선순위에 따라 상기 수신된 항법제어패킷을 처리하는 것이다.According to an aspect of the present invention, an unmanned aerial vehicle includes a navigation control packet capable of controlling a plurality of navigation modules, outputs a control signal to each navigation module, and collects a sensing information packet collected from a sensor. A navigation control embedded board for providing a navigation control command from a user and a navigation control embedded board to provide the navigation control packet, and a second embedded board receiving the sensing information packet from the navigation control embedded board The navigation control embedded board receives the navigation control packets from the mission control embedded board through real time communication and processes the navigation control packets sequentially according to the priority of an application process, and when the priority is set in the navigation control packet, Process the received navigation control packet according to priority; .

본 발명의 다른 면에 따른 임베디드 시스템은, 항법제어 기능을 수행하는 항법제어 임베디드 보드; 및Embedded system according to another aspect of the present invention, the navigation control embedded board for performing a navigation control function; And

상기 항법제어 기능과 다른 미션제어 기능을 수행하는 미션제어 임베디드 보드를 포함하되,Including a mission control embedded board that performs a mission control function different from the navigation control function,

상기 항법제어 및 미션제어 임베디드 보드는 패킷을 상호 송수신하고, 수신된 패킷을 처리하여 상기 항법제어 및 미션제어 기능을 수행하며,The navigation control and mission control embedded board transmits and receives packets to each other, and processes the received packets to perform the navigation control and mission control functions.

상기 패킷은 이더넷 헤더와, 각 임베디드 보드에서 실행되는 어플리케이션 중 수신된 패킷을 처리할 어플리케이션을 나타내는 목적지 포트부와, 상기 패킷이 처리될 우선순위를 나타내는 우선순위부와, 데이터부를 포함하는 것이며,The packet includes an Ethernet header, a destination port unit indicating an application to process a received packet among applications executed on each embedded board, a priority unit indicating a priority of the packet, and a data unit.

상기 각 임베디드 보드는 응용프로세서의 우선순위 및 상기 수신된 패킷 내 설정된 상기 우선선위에 따라 상기 패킷을 처리하는 것이다.Each embedded board processes the packet according to an application processor's priority and the priority set in the received packet.

기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.Specific details of other embodiments are included in the detailed description and the drawings.

본 발명의 실시예에 따르면, 임베디드 시스템, 예컨대 무인 비행체 내부의 MCC와 FCC간 통신 프로토콜을 제안하여, 예측 가능한 통신 오버헤드를 제공하고, 보드간 동기화 방법을 제공하며, 우선순위 설정 기능으로 효율적인 임베디드 시스템의 운용이 가능하다.According to an embodiment of the present invention, an MCC and FCC communication protocol in an embedded system, such as an unmanned aerial vehicle, is proposed to provide predictable communication overhead, to provide a board-to-board synchronization method, and to efficiently embed the priority setting function. System operation is possible.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 한편, 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.BRIEF DESCRIPTION OF THE DRAWINGS The advantages and features of the present invention and the manner of achieving them will become apparent with reference to the embodiments described in detail below with reference to the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but will be implemented in various forms, and only the present embodiments are intended to complete the disclosure of the present invention, and the general knowledge in the art to which the present invention pertains. It is provided to fully convey the scope of the invention to those skilled in the art, and the present invention is defined only by the scope of the claims. It is to be understood that the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. In the present specification, the singular form includes plural forms unless otherwise specified in the specification. As used herein, “comprises” and / or “comprising” refers to the presence of one or more other components, steps, operations and / or elements. Or does not exclude additions.

이하에서 임베디드 시스템의 일 예로서 무인 비행체 내부에 구비된 임베디드 시스템을 설명하나, 본원발명이 이에 한정되는 것은 아니고, 적어도 2개 이상의 임베디드 보드 간에 패킷을 상호 송수신하며 처리하는 임베디드 시스템이라면 모두 적용가능하다.Hereinafter, an embedded system included in an unmanned aerial vehicle will be described as an example of an embedded system, but the present invention is not limited thereto, and any embedded system that transmits and receives packets between at least two embedded boards may be applicable. .

도 1 내지 도 8b를 참조하여 본 발명의 실시예에 따른 무인 비행체 및 임베디드 시스템에 대해 설명한다. 도 1은 실시예에 따른 무인 비행체 및 임베디드 시스템을 나타내는 구성도이고, 도 2 내지 도 5는 임베디드 보드간의 통신 프로토콜을 설명하기 위한 개념도이고, 도 6a 내지 도 8b는 본 발명의 실시예에 따른 임베디드 시스템에 적용된 통신 프로토콜의 성능을 나타내는 그래프들이다. An unmanned aerial vehicle and an embedded system according to an embodiment of the present invention will be described with reference to FIGS. 1 to 8B. 1 is a block diagram illustrating an unmanned aerial vehicle and an embedded system according to an embodiment, FIGS. 2 to 5 are conceptual diagrams for describing a communication protocol between embedded boards, and FIGS. 6A to 8B are embedded according to an embodiment of the present invention. These graphs show the performance of the communication protocol applied to the system.

먼저 도 1을 참조하면, 실시예에 따른 비행체는 비행제어컴퓨터(Flight Control Computer, FCC)와 미션제어컴퓨터(Mission Control Computer, MCC)를 포함한다. MCC는 사용자로부터 무선(예컨대 Wibro 또는 RF 등)으로 항법 제어 명령을 수신하고 FCC와의 프로토콜에 맞는 항법제어패킷을 FCC로 전송한다. 또한 FCC로부터 전송된 센서 정보, 항법장치에 관한 정보 또는 카메라를 통해 촬영한 영상 등을 사용자에게 무선으로 전송한다. FCC는 MCC로부터 항법제어패킷을 수신하여, 다수의 항법 제어 모듈, 예컨대 비행체의 고도를 제어하는 컬렉티브 피치 조작기(collective pitch actuator) 등으로 제어 신호를 출력한다. 또한 FCC는 GPS 또는 IMU(Inertia Measurment Unit) 등이 감지한 센싱정보를 수신하고 프로토콜에 맞는 센싱정보패킷을 MCC로 전송한다. First, referring to FIG. 1, a vehicle according to an embodiment includes a flight control computer (FCC) and a mission control computer (MCC). The MCC receives a navigation control command wirelessly from a user (eg Wibro or RF) and transmits a navigation control packet that conforms to a protocol with the FCC to the FCC. In addition, the sensor information transmitted from the FCC, information about the navigation device or the image taken through the camera and the like wirelessly transmitted to the user. The FCC receives the navigation control packet from the MCC and outputs a control signal to a plurality of navigation control modules, such as a collective pitch actuator that controls the altitude of the vehicle. In addition, the FCC receives sensing information detected by a GPS or an Inertia Measurment Unit (IMU), and transmits a sensing information packet conforming to the protocol to the MCC.

여기서 MCC와 FCC간 통신 프로토콜(Real Time Direct Protocol, 이하 RTDiP이라 함)은 단일 동종 네트워크에서 동기화에 적합한 프로토콜일 수 있다. MCC와 FCC 상호간 패킷 송수신 시 커널의 간섭을 제거하고 프로세스의 우선순위, 패킷 처리에 대한 우선순위를 설정할 수 있다. 또한 패킷의 수신 및 송신시 모두 제로카피(zero-copy)를 수행하여 수신 및 송신 속도를 향상시킬 수 있다.Here, the communication protocol between the MCC and the FCC (Real Time Direct Protocol, hereinafter called RTDiP) may be a protocol suitable for synchronization in a single homogeneous network. It is possible to set the priority of the process and the packet processing by eliminating the kernel interference when sending and receiving packets between MCC and FCC. In addition, both reception and transmission can be performed by zero-copy to improve the reception and transmission speed.

도 2를 더 참조하여 FCC 및 MCC의 패킷의 송수신 과정(이하 RTDiP -Send/Recv라 함)을 설명한다. With reference to FIG. 2, a packet transmission / reception process (hereinafter referred to as RTDiP-Send / Recv) of the FCC and the MCC will be described.

도 2를 참조하면, FCC 및 MCC가 패킷을 송신하는 경우(a)와 수신하는 경우(b)가 종래 기술과 함께 도시되어 있다. (a), (b) 각각에서 왼쪽 그림이 종래 기술이며, 오른쪽 그림이 본원발명의 그림이다.Referring to FIG. 2, the case where the FCC and the MCC transmit (a) and receive (b) the packet is shown with the prior art. In each of (a) and (b), the left figure is the prior art, and the right figure is the figure of the present invention.

먼저 (a)에 도시된 바와 같이, 종래 기술은 사용자 영역(User)에서 커널 영 역(Kernel)에 복사된 후 하드웨어 단으로 전송(copy)되나, FCC 또는 MCC는 커널 영역에 복사됨이 없이 사용자 영역(User)에서 하드웨어 단으로 바로 전송(direct copy)된다. 예컨대 FCC가 센서정보패킷을 MCC로 출력할 때 또는 MCC가 항법제어패킷을 FCC로 출력할 때 이와 같은 방법이 적용된다.First, as shown in (a), the prior art is copied from the user area (User) to the kernel area (Kernel) and then transferred to the hardware stage, but FCC or MCC is not copied to the kernel area user Direct copy from hardware to user. This is the case, for example, when the FCC outputs the sensor information packet to the MCC or when the MCC outputs the navigation control packet to the FCC.

그리고 (b)에 도시된 바와 같이, 종래 기술은 커널 영역(Kernel)에서 바텀하프(bottom half)를 사용하여 수신된 패킷을 처리하나, FCC 또는 MCC는 바텀하프를 사용하지 않는다. 따라서 응용프로세스의 우선순위에 따라 패킷을 처리할 수 있다. And as shown in (b), the prior art processes the received packet using bottom half in the kernel area, but the FCC or MCC does not use bottom half. Therefore, packets can be processed according to the priority of the application process.

여기서 도 3을 참조하여 FCC와 MCC 간에 송수신되는 패킷의 구조를 설명하면, FCC와 MCC 간에 송수신되는 패킷은 이더넷 헤더(Ethernet Header)와 RTDiP 헤더(RTDiP Header)와, 데이터(user data)와 오류코드(CRC)를 포함한다. 여기서 이더넷 헤더는 일반적인 이더넷 헤더와 동일하다. RTDiP 헤더는, FCC 또는 MCC에서 실행되는 어플리케이션 중 수신된 패킷을 처리할 어플리케이션을 나타내는 목적지 포트부(Dest Port)와, 패킷의 길이를 나타내는 길이부(Length)와 패킷이 처리될 우선순위를 나타내는 우선순위부(Priority) 및 패킷의 종류를 나타내는 플래그(Flag)를 포함한다. 다만, 이더넷 헤더는 다른 프로토콜의 헤더, 예컨대 CAN, MOST 통신 프로토콜의 헤더로 대체될 수 있다.Here, referring to FIG. 3, a structure of a packet transmitted and received between the FCC and the MCC will be described. A packet transmitted and received between the FCC and the MCC includes an Ethernet header, an RTDiP header, data, and an error code. (CRC). The Ethernet header here is the same as a normal Ethernet header. The RTDiP header includes a destination port indicating an application to process a received packet among applications executed in an FCC or MCC, a length indicating a length of a packet, and a priority indicating a priority of processing a packet. A flag indicating a priority and a packet type are included. However, the Ethernet header may be replaced with a header of another protocol, for example, a header of a CAN and MOST communication protocol.

도 4를 더 참조하여 FCC가 MCC로부터 전송된 항법제어패킷을 수신하는 과정을 구체적으로 설명한다. Referring to Figure 4 further describes the process of the FCC receives the navigation control packet transmitted from the MCC.

MCC로부터 도 3에 도시된 구조의 항법제어패킷들이 전송되면, 도 3의 디바이스 드라이버(Device Driver)는 목적지 포트부(Dest Port)의 정보에 따라 각 항법제 어패킷을 각 포트의 버퍼에 저장한다. 예컨대 제1 어플리케이션(APP1)에 의해 처리될 패킷(Packet for APP1)을 제1 버퍼(Buffer1)에 저장하고, 제2 어플리케이션(APP2)에 의해 처리될 패킷들(Packet1 for APP2, Packet1 for APP2)을 제2 버퍼(Buffer2)에 저장한다. 그리고 제2 어플리케이션에 의해 처리될 패킷들(Packet1 for APP2, Packet1 for APP2) 중 우선순위부(Priority)의 우선순위 정보에 따라 먼저 처리되도록 제1 패킷(Packet1 for APP2) 및 제2 패킷(Packet1 for APP2)을 버퍼에 저장한다. 사용자가 사용한 API에 따라 폴링(polling) 동기방식(blocking I/O)을 통하여 각 패킷(데이터)의 도착여부가 감지되고, 시스템 콜(예컨대 리시브 콜(call recv))을 호출하여 사용자 영역으로 데이터가 복사된다. When the navigation control packets of the structure shown in FIG. 3 are transmitted from the MCC, the device driver of FIG. 3 stores each navigation agent packet in a buffer of each port according to the information of the destination port. . For example, a packet for APP1 to be processed by the first application APP1 is stored in the first buffer Buffer1, and packets 1 to APP2 and Packet1 for APP2 to be processed by the second application APP2 are stored. Store in the second buffer (Buffer2). The first packet Packet1 for APP2 and the second packet Packet1 for APP are processed first according to priority information of a priority unit among the packets Packet1 for APP2 and Packet1 for APP2 to be processed by the second application. Store APP2) in the buffer. The arrival of each packet (data) is detected through polling I / O according to the API used by the user, and data is sent to the user area by calling a system call (e.g., a call recv). Is copied.

이때, 사용자에 의해 설정된 우선순위에 따라 처리순서가 결정될 수 있다. 즉, 제1 어플리케이션(APP1)이 제2 어플리케이션(APP2)보다 우선순위가 높다면, 먼저 제1 어플리케이션(APP1)에 의해 처리될 패킷(Packet for APP1)이 제1 어플리케이션(APP1)에 제공되어 먼저 처리된 후에, 제2 어플리케이션에 의해 처리될 패킷들(Packet1 for APP2, Packet1 for APP2)이 제2 어플리케이션(APP2)에 제공되어 처리될 수 있다. At this time, the processing order may be determined according to the priority set by the user. That is, if the first application APP1 has a higher priority than the second application APP2, a packet for APP1 to be processed by the first application APP1 is first provided to the first application APP1. After processing, the packets Packet1 for APP2 and Packet1 for APP2 to be processed by the second application may be provided to the second application APP2 and processed.

다만, 각 패킷에 우선순위 정보가 없거나 또는 우선순위가 동일한 경우에는 전송된 패킷들을 순차적으로 처리할 수 있다. 예를 들어 사용자가 고도를 높인 후 오른쪽으로 회전하고 직진하라는 항법 제어 명령들을 송신하면, 그 각각에 대한 항법제어패킷들이 MCC로부터 FCC로 실시간으로 전송되고, FCC는 전송된 항법제어패킷들 각각을 순차적으로 처리하여 각 항법 모듈로 제어신호를 출력한다. 그러나 돌발 상황이 발생한 경우, 예컨대 갑작스런 장애물이 발생한 경우, 사용자는 우선적으로 장애물을 회피하기 위해 왼쪽으로 우회하라는 명령을 송신하면, FCC는 고도를 높인 후 오른쪽으로 회전하고 직진하라는 항법제어패킷들을 순차적으로 처리하지 않고, 우선순위가 높은, 왼쪽으로 우회하라는 항법제어패킷을 우선 처리할 수 있다.However, when the priority information is not included in each packet or the priority is the same, the transmitted packets may be sequentially processed. For example, when a user raises altitude and sends navigation control commands to turn to the right and go straight, navigation control packets for each of them are transmitted from the MCC to the FCC in real time, and the FCC sequentially processes each of the transmitted navigation control packets. The control signal is output to each navigation module. However, in the event of an accident, such as a sudden obstacle, the user first sends a command to bypass to the left to avoid the obstacle, and the FCC sequentially raises the navigation control packets to increase the altitude, turn to the right and go straight. Rather than processing, a higher priority, left-handed navigation control packet can be processed first.

다음으로 도 5를 참조하여 FCC와 MCC 간의 동기화 통신 방법(이하 RTDiP -Sync라 함)에 대해 설명한다.Next, a synchronization communication method (hereinafter referred to as RTDiP-Sync) between the FCC and the MCC will be described with reference to FIG. 5.

FCC와 MCC 간에 송수신하는 패킷 중 실시간으로 처리할 필요가 없는 패킷, 예컨대 센싱정보패킷은 앞에서 설명한 방법으로 송수신되지 않고, 동기화 통신 방법을 통해 송수신될 수 있다. 센싱 정보는 실시간으로, 연속적으로 꼭 필요한 정보가 아니고, 주기적으로 사용자에게 제공되어도 충분하다. 이러한 센싱 정보까지, FCC가 실시간으로 MCC로 전송하고 MCC는 수신한 순서대로 패킷을 처리한다면, 통신 오버헤드가 증가하게 된다. 즉, 동기화 통신에서는 동기화 수행시 가장 최근의 데이터 만이 유효한 데이터가 되며, 본원 발명에서는, FCC가 예컨대 센싱정보패킷 같은 데이터 중 가장 최근의 데이터만을 간직하고 이하에서 설명되는 방법으로 MCC에서 처리될 수 있다.Packets that do not need to be processed in real time among packets transmitted and received between the FCC and the MCC, for example, sensing information packets, may not be transmitted or received by the above-described method, but may be transmitted and received through a synchronous communication method. The sensing information is not necessarily necessary information continuously in real time, but may be provided to the user periodically. Up to this sensing information, if the FCC transmits to the MCC in real time and the MCC processes the packets in the order in which they are received, the communication overhead increases. That is, in the synchronization communication, only the most recent data becomes valid data when performing synchronization, and in the present invention, the FCC retains only the most recent data, such as, for example, a sensing information packet, and can be processed in the MCC in the manner described below. .

도 5를 참조하면, FCC 또는 MCC는 사용자 영역(User)과 커널 영역이 공유하는 공유 메모리를 갖고 있다.Referring to FIG. 5, the FCC or MCC has a shared memory shared between a user area and a kernel area.

먼저 사용자 영역의 프로세스가 공유 메모리를 설정하고, 공유 메모리의 버퍼 ID 지시부(Buffer ID)와 길이 정보(Len0, Len1)를 초기화한다. 센싱정보패킷이 MCC로부터 전송되면, 커널 영역의 인터럽트 핸들러(interrupt handler)가 전송된 센싱정보패킷을 저장할 버퍼의 주소를 알기 위해 공유 메모리에 설정된 버퍼 ID 지시부(Buffer ID)를 확인하고, ‘0’이면 공유버퍼 0(shared buffer 0)에 전송된 데이터를 저장한다. 그리고 인터럽트 핸들러는 공유버퍼 0(shared buffer 0) 저장된 데이터의 길이 정보를 Len0에 업데이트한다. First, a process in the user area sets up the shared memory, and initializes the buffer ID indicating unit (Buffer ID) and the length information Len0 and Len1 of the shared memory. When the sensing information packet is transmitted from the MCC, an interrupt handler of the kernel region checks the buffer ID indicating unit (Buffer ID) set in the shared memory in order to know the address of the buffer to store the transmitted sensing information packet. If so, the transmitted data is stored in shared buffer 0. The interrupt handler updates the length information of the shared data stored in shared buffer 0 to Len0.

다음으로 사용자 영역의 프로세스가 메모리의 버퍼 ID 지시부(Buffer ID) 값을 ‘1’로 설정한다. 이는 데이터 신뢰성을 위하여, 하나의 데이터를 사용자 프로세스가 읽고 있을 때, 새로운 데이터의 도착 인터럽트가 발생하더라도 새로운 데이터는 공유버퍼 1(shared buffer 1)에 저장되어, 사용자 프로세스가 읽고 있는 데이터는 안전하게 유지될 수 있다.Next, a process in the user area sets the buffer ID value of the memory to '1'. For data reliability, when a data is read by a user process, even if an arrival interrupt of new data occurs, the new data is stored in shared buffer 1 so that the data being read by the user process is kept safe. Can be.

이러한 과정에서 시스템 콜을 사용하지 않는다. 사용자 영역에서 공유 메모리를 인식할 수 있기 때문이다. 따라서 통신 오버헤드를 예측할 수 있다. 이를 뒷받침하는 실험결과가 도 6a 및 도 6b에 도시되어 있다. 도 6a는 바텀하프(bottom half)를 사용하는 일반적인 TCP/IP 프로토콜에 대해 통신 오버헤드 예측성을 테스트한 결과이고, 도 6b는 본원발명에서 시스템 콜을 사용하지 않고 공유 메모리를 이용한 경우에 대해 통신 오버헤드 예측성을 테스트 한 결과이다. 도 6a 및 도 6b를 비교해 보면, 본원발명에서 시스템 콜을 사용하지 않고 공유 메모리를 이용한 경우에 통신 오버헤드가 매우 작음을 알 수 있다.Do not use system calls in this process. This is because shared memory can be recognized in the user area. Therefore, communication overhead can be estimated. Experimental results supporting this are shown in FIGS. 6A and 6B. FIG. 6A is a result of testing communication overhead predictability for a general TCP / IP protocol using bottom half, and FIG. 6B is a communication case using a shared memory without using a system call in the present invention. This is the result of testing the overhead predictability. Comparing FIG. 6A and FIG. 6B, it can be seen that the communication overhead is very small when the shared memory is used without using the system call in the present invention.

한편, 이러한 RTDiP-Send/Recv 및 RTDiP-Sync의 API는 비동기 API와 동기 API를 지원한다.  On the other hand, these APIs of RTDiP-Send / Recv and RTDiP-Sync support asynchronous API and synchronous API.

먼저 비동기 API에 대해 설명한다.First, the asynchronous API is explained.

비동기 API는 RTDiP-Send/Recv인 경우 시스템 콜을 호출하여 도착한 데이터가 있는지 확인한다. 만약 도착한 데이터가 존재한다면 사용자 영역으로 데이터를 복사하고 데이터의 길이를 시스템 콜의 반환 값으로 리턴 한다. 사용자 프로세스는 이 시스템 콜의 리턴 값을 통해 데이터의 도착 유무를 판단 할 수 있다. 도착한 데이터가 존재 하지 않으면 시스템 콜은 0을 리턴 한다. In case of RTDiP-Send / Recv, asynchronous API checks whether there is data arrived by calling system call. If the data arrives, copy the data to the user area and return the length of the data as the return value of the system call. The user process can determine the arrival of data through the return value of this system call. If no data arrives, the system call returns 0.

한편 RTDiP-Sync의 비동기 API는 시스템 콜을 사용하지 않는다. RTDiP-Sync는 메모리 맵핑을 이용한 공유 버퍼를 사용하기 때문에 사용자 프로세스 영역에서 데이터가 도착했는지 검사하게 된다. RTDiP-Sync의 비동기 API는 운영체제의 시스템 콜을 제거하여 사용자에게 예측 가능한 통신 오버헤드를 제공한다. RTDiP-Sync's asynchronous API, on the other hand, does not use system calls. RTDiP-Sync uses a shared buffer with memory mapping to check if data arrives in the user process area. RTDiP-Sync's asynchronous API eliminates operating system call and provides the user with predictable communication overhead.

비동기 API를 사용하는 사용자 프로세스는 응용프로그램 수행 도중 RTDiP의 응답을 기다리지 않고 다른 처리작업을 수행할 수 있다. 이는 응용프로그램이 block 되어 있지 않기 때문에 가능하다. User processes that use the asynchronous API can perform other tasks while the application is running without waiting for the RTDiP to respond. This is possible because the application is not blocked.

 RTDiP의 비동기 API는 다음과 같이 구성되어 있다. RTDiP's asynchronous API consists of the following:

Int RTDiP_Recv (int fd, void * data, int length)Int RTDiP_Recv (int fd, void * data, int length)

RTDiP-Sync APIRTDiP-Sync API

struct RTDip_Sync RTDiP_Sync_Recv (int fd)struct RTDip_Sync RTDiP_Sync_Recv (int fd)

다음으로 동기 API에 대해 설명한다.Next, the synchronous API will be described.

일반적으로 임베디드 시스템이라도 단 하나의 응용프로그램이 수행되는 경우는 적다. 예를 들어 무인 헬기에서 자세 데이터를 전송하는 임베디드 시스템에서는 하나의 시스템에서 수평센서의 데이터를 수집하는 응용 프로세스와 이 정보를 또 다른 임베디드 시스템으로 전송하는 프로세스가 존재할 것이다. 이러한 경우 CPU의 자원을 효율적으로 나누어 사용하는 것이 중요하다. 종래의 프로토콜이 제공하는 API는 CPU의 자원을 효율적으로 사용하기 어렵다. 이유는 비동기 API를 사용할 때 응용프로세스는 polling을 사용하기 때문이다. 이는 사용자 프로세스의 CPU 점유율을 높여 CPU의 자원을 낭비하게 된다. 따라서 본원 발명에서는, 비동기 API가 적합한 경우도 있지만 다양한 요구사항을 수용하기 위하여 동기 API 또한 구현한다. In general, even an embedded system rarely runs a single application. For example, in an embedded system that transmits attitude data from an unmanned helicopter, there may be an application process of collecting data of a horizontal sensor from one system and a process of transmitting this information to another embedded system. In this case, it is important to divide the CPU resources efficiently. The API provided by the conventional protocol is difficult to use CPU resources efficiently. This is because the application process uses polling when using an asynchronous API. This increases CPU share of the user process, which wastes CPU resources. Thus, in the present invention, an asynchronous API may be suitable, but a synchronous API is also implemented to accommodate various requirements.

 RTDiP의 동기 API는 다음과 같이 구성되어 있다. RTDiP's synchronous API consists of the following:

RTDiP-Send/Recv 의 동기화 API :Synchronization API in RTDiP-Send / Recv:

int ku_recv_blocking(struct ku_sock * k_sock, void * data) int ku_recv_blocking (struct ku_sock * k_sock, void * data)

 RTDiP-Sync 의 동기화 API :RTDiP-Sync's Sync API:

struct RTDiP_Sync Sync_Recv_blocking(struct ku_sock * k_sock) struct RTDiP_Sync Sync_Recv_blocking (struct ku_sock * k_sock)

 RTDiP-Send/Recv의 동기 API는 다음과 같이 동작한다. 먼저 함수가 호출되면 RTDiP 데이터 버퍼 안에 미리 도착해 있는 데이터가 있는지 검사를 한다. 이미 도착한 데이터가 존재할 때 함수는 기존의 데이터를 사용자 프로세스에게 전달하고 함수를 종료한다. 반면에 데이터가 존재하지 않을 경우 스케줄러 대기 큐에 현재 프로세스 내용을 추가하고 프로세스를 재운다. 본 동기 API는 인터럽트를 기반으로 구현되어 있다. 즉 RTDiP 형식으로 된 데이터 패킷이 네트워크 컨트롤러에 도착하면 인터럽트 핸들러는 스케줄러 대기 큐의 내용을 검사 하여 해당 프로세스를 깨운다. RTDiP-Send / Recv's synchronous API works as follows. First, when the function is called, it checks to see if there is any data already arriving in the RTDiP data buffer. When data already arrives, the function passes the existing data to the user process and exits the function. On the other hand, if no data exists, add the current process contents to the scheduler wait queue and restart the process. This synchronous API is implemented based on interrupts. That is, when a data packet in RTDiP format arrives at the network controller, the interrupt handler examines the contents of the scheduler wait queue and wakes up the process.

한편 RTDiP-Sync의 경우 비동기 API와는 달리 시스템 콜을 사용한다. 하지만 데이터 복사가 목적이 아닌 단지 사용자 프로세스가 지금 잠들어야 한다는 것을 커널에 알려주는 역할을 한다. 이유는 RTDiP-Sync는 이미 유저영역에서 새로운 데이터가 도착했는지 판단할 수 있기 때문이다. 따라서 RTDiP-Sync가 시스템 콜을 호출하면 바로 사용자 프로세스를 block시킨다. RTDiP-Sync도 RTDiP-Send/Recv와 마찬가지로 인터럽트로 인하여 block 상태를 벗어나게 되어 있다. 이 또한 인터럽트 핸들러에서 수행된다. RTDiP-Sync, on the other hand, uses a system call unlike the asynchronous API. But it's not just for data copying, it's just telling the kernel that the user process should sleep now. This is because RTDiP-Sync can determine whether new data has already arrived in the user area. Therefore, when RTDiP-Sync calls a system call, it blocks the user process. Like RTDiP-Send / Recv, RTDiP-Sync is out of block state due to interrupt. This is also done in the interrupt handler.

  동기 API는 polling으로 인한 CPU의 자원 소비를 줄일 수 있다. 때문에 여러 가지 응용 프로세스가 효율적으로 CPU를 나누어 사용할 수 있는 환경을 제공할 수 있다. Synchronous API can reduce CPU resource consumption due to polling. This can provide an environment where multiple application processes can efficiently share the CPU.

또한 본 발명의 API는 시간제한 API를 지원한다.The API of the present invention also supports a timed API.

임베디드 시스템은 기본적으로 시스템이 정지되는 상황을 피하는 것이 굉장히 중요하다. 이는 대부분의 임베디드 시스템이 사용자가 조작하고 있지 않은 상태에서 구동되기 때문이다. 따라서 동기 API를 사용한 상태에서 예기치 못한 상황에서 계속해서 동기 API가 block 되어 있는 상황을 피해야 한다. 이러한 이유 때문에 일정한 시간이 지나면 동기 API가 block 상태를 탈출하는 시간제한 API를 제공한다. 시간제한 API는 기본적으로 동기 API와 함께 수행된다. 시간제한 API 다음과 같이 2개의 API로 구성되어 있다. In an embedded system, it is very important to avoid a system hang by default. This is because most embedded systems run without the user operating them. Therefore, you should avoid the situation where the synchronous API is continuously blocked in an unexpected situation while using the synchronous API. For this reason, the synchronous API provides a timeout API that escapes the block state after a certain amount of time. The timeout API is basically done with the synchronous API. Time-limited API It consists of two APIs as follows.

Int Set_ExpireTime(struct ku_sock * ,long time) Int Set_ExpireTime (struct ku_sock *, long time)

인자로 전달된 RTDiP 통신 구조체가 가리키고 있는 통신연결에 인자로 전달된 시간으로 block 만기시간을 설정한다. Sets the block expiry time as the time passed as a parameter to the communication link pointed to by the RTDiP communication structure passed as a parameter.

long Get_ExpireTime(struct ku_sock *)long Get_ExpireTime (struct ku_sock *)

현재 설정되어 있는 만기시간을 얻어온다. Retrieves the currently set expiration time.

시간제한은 RTDiP-Send/Recv와 RTDiP-Sync 두 가지를 다르게 설정할 수 있다. 예컨대 한 프로세스 안에서 RTDiP-Send/Recv를 사용하는 통신연결은 만기시간을 1시간으로 설정하고 RTDiP-Sync를 사용하는 통신연결은 10분으로 설정할 수 있다. 시간제한 API의 시간 단위는 리눅스 커널 2.6일 경우 1ms가 최소값일 수 있다. 즉 Set_ExpireTime의 함수에 time 인자 값을 1000로 설정했다면 동기 API는 1초간 디바이스의 RTDiP에 대한 인터럽트를 기다리다가 인터럽트가 발생하지 않으면 block 상태를 탈출 할 것이다. 만약 동기 API를 사용할 때 시간제한 API를 이용하여 만기 시간을 지정하지 않을 경우 기본적으로 60분으로 시간이 설정될 수 있다.The time limit can be set differently for RTDiP-Send / Recv and RTDiP-Sync. For example, a communication connection using RTDiP-Send / Recv can set the expiration time to 1 hour in one process and a communication connection using RTDiP-Sync to 10 minutes. The time unit of the timeout API may be 1ms in the Linux kernel 2.6. In other words, if the time argument is set to 1000 in the Set_ExpireTime function, the synchronous API will wait for an interrupt for RTDiP of the device for 1 second and will exit the block state if no interruption occurs. If the expiration time is not specified using the timeout API when using the synchronous API, the time may be set to 60 minutes by default.

전술한 비동기 API, 동기 API의 성능을 측정하고 비교한다. 시간제한 API를 사용한 각 상황별 CPU 처리율을 측정한다. 성능 측정을 위하여 Intel Xscale PXA270 (520MHz)을 장착하고 있는 휴인스의 Acumen270 프로세서 보드를 사용하였다. 네트워크 성능 측정을 위해서 두 개의 보드는 이더넷 스위치 또는 허브 없이 이더넷 케이블로 바로 연결하였다. 도 7a는 RTDiP-Send/Recv의 단방향 지연시간을 나타내고, 도 7b는 RTDiP-Sync의 단방향 지연시간을 보여준다. 단방향 지연시간의 단위는 마이크로초(us) 단위이다. 그래프의 항목은 비동기 API(Non Block), 동기 API(Block), 그리고 시간제한 API를 사용하여 만료 시간을 1ms로 설정한 시간제한 API(Time API 1ms)가 있다. Measure and compare the performance of the asynchronous and synchronous APIs described above. Measure CPU throughput for each situation using the timed API. For performance measurements, Huynx's Acumen270 processor board with Intel Xscale PXA270 (520MHz) was used. To measure network performance, the two boards were connected directly with an Ethernet cable without an Ethernet switch or hub. FIG. 7A shows the one-way delay time of RTDiP-Send / Recv, and FIG. 7B shows the one-way delay time of RTDiP-Sync. The unit of one-way delay time is in microseconds (us). The items in the graph include the asynchronous API (Non Block), the synchronous API (Block), and the timeout API (Time API 1ms) with the expiration time set to 1ms.

그래프에서 보여주듯이 RTDiP-Send/Recv와 RTDiP-Sync모두 비동기 API가 성 능이 더 좋게 나타난다. 이는 동기 API를 사용하여 잠든 프로세스가 인터럽트가 발생한 후 바로 수행되는 것이 아니기 때문이다. 동기 API를 이용하여 잠든 사이 수행되는 다른 프로세스에게 할당된 시간이 끝난 뒤에야 동기 API를 사용하는 RTDiP 프로세스는 수행이 된다. 반면에 비동기 API는 인터럽트가 발생하는 것을 계속해서 검사 하고 있는 도중에 인터럽트가 발생되면 바로 수행하기 때문에 단방향 지연시간이 동기 API보다 성능이 좋게 나타난다. 따라서 비동기 인터럽트는 시스템의 자원이 비교적 넉넉하고 보다 엄격한 실시간성을 지키기 위한 응용프로그램 등에 활용될 수 있다. As the graph shows, both the RTDiP-Send / Recv and RTDiP-Sync APIs perform better. This is because a process sleeping using the synchronous API is not executed immediately after an interruption occurs. The RTDiP process using the synchronous API will only run after the time allotted to other processes running while asleep using the synchronous API. Asynchronous APIs, on the other hand, perform better when interrupts occur while continuing to check for interrupts, so unidirectional latency outperforms synchronous APIs. Therefore, asynchronous interrupts can be used for applications such as system resources that are relatively rich and stricter real time.

시간제한 API를 사용한 RTDiP-Send/Recv, RTDiP-Sync 모두 동기 API와 유사한 시간을 보여준다. 이는 시간제한 API로 설정한 block 만료 시간이 너무 길기 때문이다. RTDiP-Send/Recv와 RTDiP-Sync 모두 최대 메세지 크기(1450Bytes)에서 최대 양방향 지연시간이 480us ~ 535us 정도이다. 때문에 모든 네트워크 패킷이 인터럽트를 발생시킨다. 즉 시간이 만료되기 전에 실험 패킷이 도착하기 때문에 만료시간으로 인하여 block을 탈출하지 않고 모두 인터럽트에 의하여 탈출하기 때문이다. RTDiP-Send / Recv and RTDiP-Sync using the time-limited API all show similar time as the synchronous API. This is because the block expiration time set by the timeout API is too long. Both RTDiP-Send / Recv and RTDiP-Sync have a maximum bi-directional delay of 480us ~ 535us at the maximum message size (1450Bytes). As a result, every network packet generates an interrupt. In other words, because the experimental packet arrives before the time expires, all of them are escaped by an interrupt without escaping the block due to the expiration time.

다음으로, CPU 활용률에 대해 실험하였다. CPU 활용률을 측정하기 위하여 앞에서 사용한 단방향 지연시간 측정 프로그램을 일정한 시간만큼 동작하게 하였다. 동시에 CPU 측정 프로그램을 실행시켜 각 실험군의 CPU 활용시간을 측정하였다. CPU 활용률은 Sysstat 에 포함되어 있는 mpstat을 이용하여 측정하였다. 그림 8a는 RTDiP-Send/Recv의 CPU 활용률의 측정결과를 나타내고, 그림 8b는 RTDiP-Sync의 CPU 활용률의 측정결과를 나타낸다. 그래프의 각 항목은 실험 수행 단위 시간당 사 용자영역에서 CPU 사용률(%user), 시스템 콜이 사용한 CPU 사용률(%sys), irq를 처리하기 위해 사용한 cpu 사용률(%irq), 그리고 이 값들의 전체 합이 CPU 활용률(%cpu utilization) 이다. 가로축 항목으로는 앞에서 설명한 바와 같이 비동기 API(Non Block), 동기 API(Block), 그리고 시간제한 API를 사용하여 만료 시간을 1ms로 설정한 시간제한 API(Time API 1ms)가 있다. Next, we experimented with CPU utilization. In order to measure the CPU utilization, the one-way latency measurement program used earlier was run for a certain time. At the same time, the CPU measurement program was run to measure the CPU utilization time of each experimental group. CPU utilization was measured using mpstat included in Sysstat. Figure 8a shows the measurement results of the CPU utilization rate of RTDiP-Send / Recv and Figure 8b shows the measurement results of the CPU utilization rate of RTDiP-Sync. Each item in the graph shows the CPU utilization (% user), CPU usage (% sys) used by the system call, the CPU usage (% irq) used to process irq, and the sum of these values. This is CPU utilization (% cpu utilization). As described above, the horizontal axis items include the asynchronous API (Non Block), the synchronous API (Block), and the timeout API (Time API 1ms) in which the expiration time is set to 1 ms using the timeout API.

비동기 API 보다 동기 API가 CPU 활용률이 RTDiP-Send/Recv는 약 2.2배 좋게 나왔고 RTDiP-Sync의 경우 약 3배 가까이 좋게 나왔다. 동기 API가 동일한 양의 작업을 수행하는 동안 CPU의 활용률이 낮게 나온 이유는 비동기 API와는 달리 polling으로 인한 CPU의 자원낭비를 피했기 때문이다. 그렇기 때문에 도 8a가 보여주듯 RTDiP-Sync는 비동기 API에 비해 동기 API가 사용자 영역 CPU 활용률이 낮다. RTDiP-Send/Recv에 경우는 비동기 API가 polling을 할 때 수신 함수를 호출 할 때 매번 시스템 콜을 호출하기 때문에 동기 API보다 시스템 콜 처리에 사용한 CPU 사용률이 높다. 이를 통해 동기 API를 사용하면 여러 어플리케이션이 CPU를 효율적으로 사용할 수 있음을 할 수 있다. The CPU utilization rate of RTDiP-Send / Recv is about 2.2 times better than the asynchronous API, and about 3 times better for RTDiP-Sync. The reason the CPU utilization was low while the synchronous API was performing the same amount of work was because, unlike the asynchronous API, it avoided wasting CPU resources due to polling. Therefore, as shown in FIG. 8A, RTDiP-Sync has lower user area CPU utilization in the synchronous API than in the asynchronous API. In case of RTDiP-Send / Recv, the CPU usage is higher than the synchronous API because the system call is called every time the asynchronous API calls the receiving function when polling. This allows the synchronous API to allow multiple applications to use the CPU efficiently.

본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.Those skilled in the art will appreciate that the present invention can be embodied in other specific forms without changing the technical spirit or essential features of the present invention. It is therefore to be understood that the above-described embodiments are illustrative in all aspects and not restrictive. The scope of the present invention is shown by the following claims rather than the detailed description, and all changes or modifications derived from the claims and their equivalents should be construed as being included in the scope of the present invention.

도 1은 실시예에 따른 무인 비행체 및 분산 임베디드 시스템을 나타내는 구성도이다.1 is a block diagram showing an unmanned aerial vehicle and a distributed embedded system according to an embodiment.

도 2 내지 도 5는 임베디드 보드간의 통신 프로토콜을 설명하기 위한 개념도이다.2 to 5 are conceptual diagrams for describing a communication protocol between embedded boards.

도 6a 내지 도 8b는 본 발명의 실시예에 따른 임베디드 시스템에 적용된 통신 프로토콜의 성능을 나타내는 그래프들이다. 6A through 8B are graphs illustrating the performance of a communication protocol applied to an embedded system according to an exemplary embodiment of the present invention.

Claims (13)

다수의 항법 모듈을 제어할 수 있는 항법제어패킷들을 수신하여 상기 각 항법 모듈로 제어 신호를 출력하고, 센서로부터 수집된 센싱정보패킷을 제공하는 항법제어 임베디드 보드 및A navigation control embedded board that receives navigation control packets capable of controlling a plurality of navigation modules, outputs a control signal to each navigation module, and provides sensing information packets collected from the sensors; 사용자로부터 항법 제어 명령을 입력받아 상기 항법제어 임베디드 보드로 상기 항법제어패킷을 제공하고, 상기 항법제어 임베디드 보드로부터 상기 센싱정보패킷을 제공받는 미션제어 임베디드 보드를 포함하되,It includes a mission control embedded board receiving the navigation control command from a user to provide the navigation control packet to the navigation control embedded board, the sensing information packet from the navigation control embedded board, 상기 항법제어 임베디드 보드는 실시간 통신을 통해 상기 미션제어 임베디드 보드로부터 상기 항법제어패킷들을 수신하여 응용프로세스의 우선순위에 따라 순차적으로 처리하고, 상기 항법제어패킷에 우선순위가 설정되어 있는 경우, 상기 우선순위에 따라 상기 수신된 항법제어패킷을 처리하는 것The navigation control embedded board receives the navigation control packets from the mission control embedded board through real time communication, processes them sequentially according to the priority of an application process, and when the priority is set in the navigation control packet, the priority Processing the received navigation control packet according to a rank 인 무인 비행체.Drone. 제1항에 있어서, The method of claim 1, 상기 항법제어 임베디드 보드는 상기 미션제어 임베디드 보드와 통신 시에 RTDiP(Real Time Direct Protocol)을 사용하는 것The navigation control embedded board uses RTDiP (Real Time Direct Protocol) when communicating with the mission control embedded board. 인 무인 비행체.Drone. 제1항에 있어서,The method of claim 1, 상기 항법제어 및 미션제어 임베디드 보드가 상기 센싱정보패킷 및 상기 항법제어패킷을 각각 송수신 할 때, 커널영역에 복사하지 않고 곧바로 송수신하는 것When the navigation control and the mission control embedded board transmit and receive the sensing information packet and the navigation control packet, respectively, without directly copying to the kernel area. 인 무인 비행체.Drone. 제1항에 있어서, The method of claim 1, 상기 미션제어 임베디드 보드로부터 전송된 상기 항법제어패킷은 폴링(polling) 및 동기방식(blocking I/O)에 의해 상기 항법제어 임베디드 보드로의 전송 여부가 감지되며, 시스템 콜에 의해 상기 항법제어 임베디드 보드 내의 해당 어플리케이션으로 제공되는 것The navigation control packet transmitted from the mission control embedded board is detected whether it is transmitted to the navigation control embedded board by polling and blocking I / O, and the navigation control embedded board is detected by a system call. Provided by the application in question 인 무인 비행체.Drone. 제1항에 있어서, 상기 미션제어 임베디드 보드는The method of claim 1, wherein the mission control embedded board 커널 영역과 사용자 영역 및 상기 커널영역과 사용자 영역이 공유하는 공유 메모리를 포함하고, 상기 공유 메모리를 통해 상기 항법제어 임베디드 보드와 상기 항법제어패킷 및 상기 센싱정보패킷을 송수신하는 것A shared memory shared by the kernel region and the user region and the kernel region and the user region, and transmitting and receiving the navigation control embedded board, the navigation control packet, and the sensing information packet through the shared memory. 인 무인 비행체.Drone. 제5항에 있어서, The method of claim 5, 상기 공유 메모리는 적어도 2개의 공유 버퍼와, 상기 공유 버퍼 중 전송된 센싱정보패킷의 데이터가 저장될 공유 버퍼를 가리키는 버퍼 ID 지시부를 포함하 고,The shared memory includes at least two shared buffers and a buffer ID indicating unit which indicates a shared buffer in which data of the sensing information packet transmitted among the shared buffers is to be stored. 상기 커널 영역의 인터럽트 핸들러는 상기 공유 버퍼 중 상기 버퍼 ID 지지부에서 가리키는 공유 버퍼에 상기 전송된 센싱정보패킷의 데이터를 저장하는 것The interrupt handler of the kernel region stores the data of the transmitted sensing information packet in a shared buffer indicated by the buffer ID support unit of the shared buffer. 인 무인 비행체.Drone. 제1항에 있어서, 상기 항법제어패킷 또는 상기 센싱정보패킷은The method of claim 1, wherein the navigation control packet or the sensing information packet 이더넷 헤더와, 각 임베디드 보드에서 실행되는 어플리케이션 중 수신된 패킷을 처리할 어플리케이션을 나타내는 목적지 포트부와, 상기 패킷이 처리될 우선순위를 나타내는 우선순위부와, 데이터부, 패킷의 종류를 나타내는 플래그를 포함하는 것An Ethernet header, a destination port part representing an application to process a received packet among applications executed on each embedded board, a priority part indicating a priority to be processed by the packet, a data part, and a flag indicating a type of a packet Including 인 무인 비행체.Drone. 항법제어 기능을 수행하는 항법제어 임베디드 보드; 및A navigation control embedded board performing a navigation control function; And 상기 항법제어 기능과 다른 미션제어 기능을 수행하는 미션제어 임베디드 보드를 포함하되,Including a mission control embedded board that performs a mission control function different from the navigation control function, 상기 항법제어 및 미션제어 임베디드 보드는 패킷을 상호 송수신하고, 수신된 패킷을 처리하여 상기 항법제어 및 미션제어 기능을 수행하며,The navigation control and mission control embedded board transmits and receives packets to each other, and processes the received packets to perform the navigation control and mission control functions. 상기 패킷은 이더넷 헤더와, 각 임베디드 보드에서 실행되는 어플리케이션 중 수신된 패킷을 처리할 어플리케이션을 나타내는 목적지 포트부와, 상기 패킷이 처리될 우선순위를 나타내는 우선순위부와, 데이터부를 포함하는 것이며,The packet includes an Ethernet header, a destination port unit indicating an application to process a received packet among applications executed on each embedded board, a priority unit indicating a priority of the packet, and a data unit. 상기 각 임베디드 보드는 응용프로세서의 우선순위 및 상기 수신된 패킷 내 설정된 상기 우선순위에 따라 상기 패킷을 처리하는 것Wherein each embedded board processes the packet according to an application processor's priority and the priority set in the received packet. 인 분산 임베디드 시스템.Distributed embedded system. 제8항에 있어서, The method of claim 8, 상기 각 임베디드 보드 간에는 RTDiP(Real Time Direct Protocl)을 사용하여 통신을 수행하는 것Communication between the embedded boards using Real Time Direct Protocol (RTDiP) 인 분산 임베디드 시스템.Distributed embedded system. 제8항에 있어서, The method of claim 8, 상기 각 임베디드 보드는 상기 패킷을 출력할 때, 커널영역에 복사하지 않고 곧바로 출력하는 것When each embedded board outputs the packet, it immediately outputs the packet without copying it to the kernel area. 인 분산 임베디드 시스템.Distributed embedded system. 제8항에 있어서, The method of claim 8, 상기 각 임베디드 보드에 전송된 패킷은 폴링(polling) 및 동기방식(blocking I/O)에 의해 전송 여부가 감지되며, 시스템 콜에 의해 상기 각 임베디드 보드 내의 해당 어플리케이션으로 제공되는 것Packets transmitted to each embedded board are detected by polling and blocking I / O, and are provided to a corresponding application in each embedded board by a system call. 인 분산 임베디드 시스템.Distributed embedded system. 제8항에 있어서, 상기 각 임베디드 보드는 The method of claim 8, wherein each of the embedded board 커널 영역과 사용자 영역 및 상기 커널영역과 사용자 영역이 공유하는 공유 메모리를 포함하고, 상기 공유 메모리를 통해 패킷의 전송 여부를 감지하여 상기 전송된 패킷을 처리하는 것A shared memory shared by the kernel region and the user region and the kernel region and the user region, and processing the transmitted packet by detecting whether a packet is transmitted through the shared memory. 인 분산 임베디드 시스템.Distributed embedded system. 제12항에 있어서,The method of claim 12, 상기 공유 메모리는 적어도 2개의 공유 버퍼와, 상기 공유 버퍼 중 전송된 패킷의 데이터가 저장될 공유 버퍼를 가리키는 버퍼 ID 지시부를 포함하고,The shared memory includes at least two shared buffers, and a buffer ID indicating unit indicating a shared buffer in which data of a transmitted packet among the shared buffers is to be stored. 상기 커널 영역의 인터럽트 핸들러는 상기 공유 버퍼 중 상기 버퍼 ID 지시부에서 가리키는 공유 버퍼에 상기 전송된 패킷의 데이터와 데이터 길이를 저장하는 것The interrupt handler of the kernel region stores the data and the data length of the transmitted packet in a shared buffer indicated by the buffer ID indicating unit of the shared buffer; 인 분산 임베디드 시스템.Distributed embedded system.
KR1020090107216A 2009-11-06 2009-11-06 Unmanned aerial vehicle and distributed embedded system KR101133665B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090107216A KR101133665B1 (en) 2009-11-06 2009-11-06 Unmanned aerial vehicle and distributed embedded system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090107216A KR101133665B1 (en) 2009-11-06 2009-11-06 Unmanned aerial vehicle and distributed embedded system

Publications (2)

Publication Number Publication Date
KR20110050297A KR20110050297A (en) 2011-05-13
KR101133665B1 true KR101133665B1 (en) 2012-04-10

Family

ID=44361138

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090107216A KR101133665B1 (en) 2009-11-06 2009-11-06 Unmanned aerial vehicle and distributed embedded system

Country Status (1)

Country Link
KR (1) KR101133665B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160078557A (en) 2014-12-24 2016-07-05 (주)이산솔루션 Performance system for flying robots

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106406357A (en) * 2015-07-27 2017-02-15 丰唐物联技术(深圳)有限公司 Cargo delivery control method, unmanned aerial vehicle and terminal
US20190129937A1 (en) * 2017-10-26 2019-05-02 Autel Robotics Co., Ltd. Method for controlling unmanned aerial vehicle, unmanned aerial vehicle and controlling device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090073630A (en) * 2007-12-31 2009-07-03 경남도립남해대학 산학협력단 Security system for unmanned aerial vehicle

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090073630A (en) * 2007-12-31 2009-07-03 경남도립남해대학 산학협력단 Security system for unmanned aerial vehicle

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160078557A (en) 2014-12-24 2016-07-05 (주)이산솔루션 Performance system for flying robots

Also Published As

Publication number Publication date
KR20110050297A (en) 2011-05-13

Similar Documents

Publication Publication Date Title
EP2645674B1 (en) Interrupt management
US8146081B2 (en) Method of selecting one of execution schedules of guest OSes and virtual machine monitor employing the method
US8321065B2 (en) Method for controlling/regulating at least one task
CN109981435B (en) Gateway and communication system based on CAN-ModBus to MQTT
US20220321493A1 (en) Method for transmitting data packet and apparatus for implementing the same
JP5843020B2 (en) Communication apparatus and communication method
EP3582038B1 (en) Control device and control method
US20070070904A1 (en) Feedback mechanism for flexible load balancing in a flow-based processor affinity scheme
US8949833B2 (en) Method and system for polling network controllers to a dedicated tasks including disabling of interrupts to prevent context switching
AU2011265444B2 (en) Low latency FIFO messaging system
CN113179227B (en) AT instruction control method based on queue
KR101133665B1 (en) Unmanned aerial vehicle and distributed embedded system
EP3304331A1 (en) Single-chip multi-processor communication
US10541927B2 (en) System and method for hardware-independent RDMA
EP3940998A1 (en) Control system, apparatus, and control method
Kyriakakis et al. A time-predictable open-source TTEthernet end-system
Lee et al. MC-SDN: Supporting mixed-criticality real-time communication using software-defined networking
Lee et al. MC-SDN: Supporting mixed-criticality scheduling on switched-ethernet using software-defined networking
WO2012065432A1 (en) Method for implementing timer in multi-core system and multi-core system
JPH10155010A (en) Packet processing method and network architecture
US20070121662A1 (en) Network performance scaling
US20240333541A1 (en) Data transmission device on server, data transmission method and program on server
EP1119141A1 (en) Real-time communication device and system
Lee et al. RDMA-Based Sampling Port of ARINC-653
CN113259215A (en) Master-slave machine communication method and master-slave machine communication system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee