KR20220013657A - Recording medium for recording by axis synchronization program - Google Patents

Recording medium for recording by axis synchronization program Download PDF

Info

Publication number
KR20220013657A
KR20220013657A KR1020200092860A KR20200092860A KR20220013657A KR 20220013657 A KR20220013657 A KR 20220013657A KR 1020200092860 A KR1020200092860 A KR 1020200092860A KR 20200092860 A KR20200092860 A KR 20200092860A KR 20220013657 A KR20220013657 A KR 20220013657A
Authority
KR
South Korea
Prior art keywords
terminal
axis
tracker
rotation angle
rotation
Prior art date
Application number
KR1020200092860A
Other languages
Korean (ko)
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 KR1020200092860A priority Critical patent/KR20220013657A/en
Publication of KR20220013657A publication Critical patent/KR20220013657A/en

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01BMEASURING LENGTH, THICKNESS OR SIMILAR LINEAR DIMENSIONS; MEASURING ANGLES; MEASURING AREAS; MEASURING IRREGULARITIES OF SURFACES OR CONTOURS
    • G01B7/00Measuring arrangements characterised by the use of electric or magnetic techniques
    • G01B7/30Measuring arrangements characterised by the use of electric or magnetic techniques for measuring angles or tapers; for testing the alignment of axes
    • G01B7/31Measuring arrangements characterised by the use of electric or magnetic techniques for measuring angles or tapers; for testing the alignment of axes for testing the alignment of axes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

Provided are an extended reality service device including an axis synchronization function of synchronizing the axes of sensors inside and outside a terminal employed in an extended reality system, an axis synchronization method thereof, a program thereof, and a recording medium for recording the program. The extended reality service device, which provides extended reality-based content to a client including a terminal and a tracker, comprises an axis synchronizer for synchronizing axes of a first sensor installed in the terminal and a second sensor installed in the tracker. The axis synchronizer includes: a rotation information receiving unit for receiving respective rotation information from the terminal and the tracker; an offset calculation unit for calculating an offset for synchronizing the axes of the first sensor and the second sensor based on the rotation information of the terminal and the rotation information of the tracker; and a synchronization unit for synchronizing the axes of the first sensor and the second sensor based on the calculated offset. According to the present invention, the axis synchronization between the sensors inside and outside the terminal can be easily achieved even if a general terminal is used instead of a specific terminal, thereby providing high versatility in choosing a terminal for the extended reality system.

Description

축 동기화 프로그램 기록매체{Recording medium for recording by axis synchronization program}Axis synchronization program recording medium {Recording medium for recording by axis synchronization program}

본 발명은 축 동기화 프로그램 기록매체에 관한 것으로, 보다 상세하게는 확장현실 시스템내의 단말기 외부의 센서의 축과 단말기 내부의 센서의 축을 동기화시키는 방법을 실행시키기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체에 관한 것이다.The present invention relates to an axis synchronization program recording medium, and more particularly, to a computer readable recording medium in which a program for executing a method of synchronizing an axis of a sensor outside a terminal in an extended reality system and an axis of a sensor inside the terminal is recorded. it's about

컴퓨팅 파워가 극적으로 성장하고, 그래픽 처리 기술과 네트워크 기술이 고도화하면서 가상현실, 증강현실, 혼합현실이 우리 생활 곳곳에 구현되고 있다. With the dramatic increase in computing power and the advancement of graphic processing technology and network technology, virtual reality, augmented reality, and mixed reality are being implemented everywhere in our lives.

가상현실(VR)은 실제로 존재하지는 않지만 실제로 존재하는 것 같은 현실을 말한다. 가상현실은 현실세계의 객체 또는 배경 등을 컴퓨터를 사용해서 인공적으로 구현해 놓은 인공 세계 또는 그러한 기술을 의미한다. Virtual reality (VR) refers to a reality that does not actually exist, but appears to exist. Virtual reality refers to an artificial world or such technology in which objects or backgrounds of the real world are artificially implemented using a computer.

증강현실(AR)은 현실세계에 가상 세계를 반영하거나 확장시키는 기술이다. 증강현실은 실세계의 객체에 가상 객체로 구현된 관련 정보를 합성하여 증강된 정보 서비스를 부가하는 개념이다.Augmented reality (AR) is a technology that reflects or expands the virtual world in the real world. Augmented reality is a concept of adding an augmented information service by synthesizing related information implemented as a virtual object with an object in the real world.

혼합현실(MR)은 가상현실(VR)과 증강현실(AR)을 통합하고 사용자와의 인터랙션(상호작용)을 더욱 강화한 방식이다. 혼합현실(MR)은 현실세계에 가상 객체들을 섞고 결합시켜서 보여주는 면에서 증강현실과 유사한 점이 있다.Mixed reality (MR) is a method that integrates virtual reality (VR) and augmented reality (AR) and further strengthens interaction with users. Mixed reality (MR) has similarities to augmented reality in that it shows virtual objects by mixing and combining them in the real world.

그러나, 증강현실에서는 현실 객체와 가상 객체의 구별이 뚜렷하고 현실 객체를 보완하는 형태로 가상 객체를 사용하는 것에 비해, 혼합현실에서는 가상 객체가 현실 객체와 동등한 성격으로 등장하고, 독립적인 형태로 운영되며 마치 가상현실과 같이 몰입감있게 보여진다는 점에서 증강현실과 확연히 구별된다.However, in augmented reality, the distinction between real and virtual objects is clear and virtual objects are used in a form that complements real objects, whereas in mixed reality virtual objects appear with the same characteristics as real objects and are operated in an independent form. It is clearly distinguished from augmented reality in that it is viewed as immersive as virtual reality.

이와 같이 컴퓨팅 파워와 그래픽 처리 기술 등에 힘입어 현실의 경험을 확장하는 기술들이 등장하였는데, 이러한 기술들을 확장현실(eXtended Reality, XR)이라 한다. As described above, technologies that extend the experience of reality have emerged thanks to computing power and graphic processing technology, and these technologies are called eXtended Reality (XR).

확장현실(XR)은 가상현실(VR)과 증강현실(AR)을 아우르는 혼합현실(MR) 기술을 망라하는 초실감형 기술 및 서비스를 의미한다. 이때, X는 변수를 의미하며, VR, AR, MR뿐만 아니라 미래에 등장할 또 다른 형태의 현실도 다 포괄할 수 있는 용어이다. Extended reality (XR) refers to ultra-realistic technologies and services that encompass mixed reality (MR) technologies that encompass virtual reality (VR) and augmented reality (AR). In this case, X means a variable, and it is a term that can encompass not only VR, AR, and MR, but also other forms of reality that will appear in the future.

확장현실(XR)을 구현하기 위해서는 가상 객체(및 배경)를 컴퓨터로 생성한 후, 사용자의 시선 변화 또는 움직임을 추적해 가며 가상 객체 및 배경에 움직임을 부여하고, 사용자와 동기화시켜야 한다. In order to implement extended reality (XR), after a virtual object (and background) is created by a computer, movement is given to the virtual object and background while tracking the change or movement of the user's gaze, and synchronized with the user.

이러한 확장현실(XR) 기반의 컨텐츠를 체험하는 경우, 종래에는 절대값이 입력된 특정 단말기만을 사용하도록 하고 있는데, 이럴 경우에는 해당 특정 단말기만을 사용해야 되므로 범용성이 떨어진다. In the case of experiencing such extended reality (XR)-based content, conventionally, only a specific terminal into which an absolute value is input is used.

또한, 여러 측위시스템이 같이 동작하게 될 경우 서로의 기준점이 일치하지 않기 때문에 동일한 추적 결과를 도출할 수 없다.In addition, when several positioning systems operate together, the same tracking result cannot be derived because the reference points of each other do not match.

선행기술 1 : 대한민국 등록특허 제10-0953931호(혼합현실 구현 시스템 및 그 방법)Prior Art 1: Republic of Korea Patent Registration No. 10-0953931 (Mixed Reality Realization System and Method) 선행기술 2 : 대한민국 공개특허 제10-2019-0118373호(가상현실 체험 시스템 및 방법)Prior art 2: Republic of Korea Patent Publication No. 10-2019-0118373 (Virtual reality experience system and method) 선행기술 3 : 대한민국 등록특허 제10-0900806호(컨텍스트 인식 증강 현실을 제공하기 위한 시스템 및 방법)Prior Art 3: Republic of Korea Patent Registration No. 10-0900806 (System and method for providing context-aware augmented reality)

본 발명은 상기한 종래의 문제점을 해결하기 위해 제안된 것으로, 확장현실 시스템에 채용되는 단말기 내부 및 외부의 센서의 축을 동기화시키는 축 동기화 기능을 포함한 확장현실 서비스 장치 및 이의 축 동기화 방법과, 그 방법을 컴퓨터에서 실행시키기 위한 프로그램과 그 기록매체를 제공함에 그 목적이 있다.The present invention has been proposed to solve the above-described problems in the prior art, and an extended reality service apparatus including an axis synchronization function for synchronizing the axes of sensors inside and outside a terminal employed in an extended reality system, an axis synchronization method thereof, and a method thereof Its purpose is to provide a program and a recording medium for executing the program on a computer.

상기와 같은 목적을 달성하기 위하여 본 발명의 바람직한 실시양태에 따른 축 동기화 기능을 포함한 확장현실 서비스 장치의 축 동기화 방법 프로그램 기록매체는, 단말기 및 트래커를 포함하는 클라이언트에게 확장현실 기반의 컨텐츠를 제공하는 확장현실 서비스 장치가 상기 단말기내의 제 1 센서와 상기 트래커내의 제 2 센서의 축을 동기화시키는 방법으로서, 축동기화를 위하여 단말기의 회전각(A)과 트래커의 회전각(B)이 설정된 시간이 흐른뒤, 회전된 회전각을 측정하여 각각의 축의 회전각 차이를 구하여 기록하는 단계; 상기 단말기와 트래커의 각각의 축의 회전각 차이를 누적 기록함과 아울러 단말기의 축과 트래커의 축 사이의 회전각 새로운 회전각차이(Cn)를 구하는 단계; 이전 회전각 차이(C)에 상기 새로운 회전각 차이(Cn)를 반영하여 현재 적용될 오프셋값을 구하여 저장함과 아울러 오프셋값을 단말기의 축정보에 반영하여 축 동기화를 시키는 축동기화단계를 포함하는 축 동기화 방법을 실행시키기 위한 프로그램이 기록된 컴퓨터에서 판독 가능한 기록매체를 제공한다.In order to achieve the above object, the axis synchronization method program recording medium of the extended reality service device including the axis synchronization function according to a preferred embodiment of the present invention provides extended reality-based content to a client including a terminal and a tracker A method in which the extended reality service device synchronizes the axes of the first sensor in the terminal and the second sensor in the tracker. , measuring the rotated rotation angle to obtain and record the difference between the rotation angles of each axis; Accumulating and recording the difference between the rotation angles of the respective axes of the terminal and the tracker, and obtaining a new rotation angle difference (Cn) between the axis of the terminal and the axis of the tracker; Axis synchronization comprising a shaft synchronization step of reflecting the new rotation angle difference (Cn) to the previous rotation angle difference (C) to obtain and store the offset value to be currently applied, and also reflect the offset value in the axis information of the terminal to synchronize the axis A computer-readable recording medium on which a program for executing a method is recorded is provided.

상술한 본 발명의 축 동기화 기능을 포함한 확장현실 서비스 장치의 축 동기화 방법은, 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 또한 상기한 축 동기화 방법은 컴퓨터에서 실행시키기 위한 프로그램으로 구현될 수 있고, 그 프로그램이 기록된 기록매체로 구현될 수 있다.The axis synchronization method of the extended reality service device including the axis synchronization function of the present invention described above can be implemented as computer-readable codes on a computer-readable recording medium. In addition, the above-described axis synchronization method may be implemented as a program to be executed by a computer, and may be implemented as a recording medium in which the program is recorded.

이러한 구성의 본 발명에 따르면, 특정 단말기 대신에 통상적인 단말기를 사용하더라도 단말기의 내부센서와 외부센서간의 축 동기화를 손쉽게 달성하므로, 확장현실 시스템에 채용되는 단말기의 범용성을 제공할 수 있다. 즉, 개발사 또는 제조사에서 상정하지 않은 단말기들도 사용하기 편해지므로, 개발사 또는 제조사에서 상정하지 않은 단말기를 사용하여 확장현실 기반의 컨텐츠를 언제든지 체험할 수 있다.According to the present invention of this configuration, even if a normal terminal is used instead of a specific terminal, axis synchronization between the internal sensor and the external sensor of the terminal is easily achieved, so that the versatility of the terminal employed in the extended reality system can be provided. In other words, since it becomes easier to use terminals not envisaged by the developer or manufacturer, users can experience extended reality-based content at any time using a terminal not envisaged by the developer or manufacturer.

또한, 여러 사용자가 같은 공간에서 확장현실 기반의 컨텐츠를 체험할 경우에도 서로 동일한 가상좌표를 공유하는 것이 무척 수월해져서 동일한 추적 결과를 도출할 수 있다. 또한, 사용자간에 서로를 손쉽게 인식할 수 있으며, 이질적인 공간감에서 오는 부딛힘과 거북함 등을 없앨 수 있다.In addition, even when multiple users experience extended reality-based content in the same space, it is very easy to share the same virtual coordinates with each other, so that the same tracking result can be derived. In addition, it is possible to easily recognize each other between users, and it is possible to eliminate bumps and awkwardness that come from a heterogeneous sense of space.

도 1은 본 발명의 실시예에 따른 축 동기화 기능을 포함한 확장현실 서비스 장치가 적용된 확장현실 시스템의 구성도이다.
도 2는 도 1에 도시된 HMD와 단말기 및 트래커를 확대한 도면이다.
도 3은 본 발명에 의한 확장현실 서비스 장치의 축 동기화 장치 개념도이다.
도 4은 도 1에 도시된 축 동기화부의 내부 구성도이다.
도 5는 본 발명의 실시예에 따른 축 동기화 기능을 포함한 확장현실 서비스 장치에서의 축 동기화 방법을 개략적으로 설명하기 위한 플로우차트이다.
도 6는 도 5에 도시된 오프셋을 계산하는 단계를 보다 구체적으로 설명하기 위한 플로우차트이다.
1 is a block diagram of an extended reality system to which an extended reality service device including an axis synchronization function is applied according to an embodiment of the present invention.
FIG. 2 is an enlarged view of the HMD, the terminal, and the tracker shown in FIG. 1 .
3 is a conceptual diagram of an axis synchronization device of an extended reality service device according to the present invention.
FIG. 4 is an internal configuration diagram of the axis synchronizer shown in FIG. 1 .
5 is a flowchart schematically illustrating an axis synchronization method in an extended reality service device including an axis synchronization function according to an embodiment of the present invention.
FIG. 6 is a flowchart for explaining the step of calculating the offset shown in FIG. 5 in more detail.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다.Since the present invention can have various changes and can have various embodiments, specific embodiments are illustrated in the drawings and described in detail.

그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.However, this is not intended to limit the present invention to specific embodiments, and it should be understood to include all modifications, equivalents and substitutes included in the spirit and scope of the present invention.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in the present application are only used to describe specific embodiments, and are not intended to limit the present invention. The singular expression includes the plural expression unless the context clearly dictates otherwise. In the present application, terms such as “comprise” or “have” are intended to designate that a feature, number, step, operation, component, part, or combination thereof described in the specification exists, but one or more other features It is to be understood that this does not preclude the possibility of the presence or addition of numbers, steps, operations, components, parts, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical and scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in a commonly used dictionary should be interpreted as having a meaning consistent with the meaning in the context of the related art, and should not be interpreted in an ideal or excessively formal meaning unless explicitly defined in the present application. does not

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, preferred embodiments of the present invention will be described in more detail with reference to the accompanying drawings. In describing the present invention, in order to facilitate the overall understanding, the same reference numerals are used for the same components in the drawings, and duplicate descriptions of the same components are omitted.

도 1은 본 발명의 실시예에 따른 축 동기화 기능을 포함한 확장현실 서비스 장치가 적용된 확장현실 시스템의 구성도이고, 도 2는 도 1에 도시된 HMD와 단말기 및 트래커를 확대한 도면이다.1 is a block diagram of an extended reality system to which an extended reality service device including an axis synchronization function is applied according to an embodiment of the present invention, and FIG. 2 is an enlarged view of the HMD, the terminal, and the tracker shown in FIG. 1 .

도 1의 확장현실 시스템은, 서버(50), 클라이언트(100), 및 네트워크(200)를 포함할 수 있다.The extended reality system of FIG. 1 may include a server 50 , a client 100 , and a network 200 .

서버(50)에서 확장현실 기반의 컨텐츠(예컨대, 게임, 교육, 관광 등에 관련된 컨텐츠)를 네트워크(200)를 통해 클라이언트(100)에게로 보내면, 클라이언트(100)의 단말기의 디스플레이부를 통해 확장현실 기반의 영상이 디스플레이된다. 이에 사용자는 손에 쥐고 있는 컨트롤러를 조작하여 확장현실 기반의 컨텐츠(예컨대, 게임)를 즐기게 된다.When the server 50 sends extended reality-based content (eg, content related to games, education, tourism, etc.) to the client 100 through the network 200 , the extended reality-based content through the display unit of the terminal of the client 100 . image is displayed. Accordingly, the user manipulates the controller held in his hand to enjoy extended reality-based contents (eg, games).

클라이언트(100)는 사용자가 사용하는 것으로서, 소정의 게임 룸에 비치될 수 있다.The client 100 is used by a user and may be provided in a predetermined game room.

도 1에는 클라이언트(100)를 하나만 도시하였는데, 이는 도면의 이해를 돕기 위해 간소화시킨 것일 뿐, 실제로는 다수의 클라이언트가 존재할 것이다. 예를 들어, 게임 룸마다 하나 이상의 클라이언트(100)가 존재할 수 있다.1 shows only one client 100, which is only simplified to help the understanding of the drawing, and in reality there will be a plurality of clients. For example, there may be more than one client 100 per game room.

클라이언트(100)는 컨트롤러(10), 단말기(30)가 장착된 HMD(20), 및 트래커(40)를 포함할 수 있다.The client 100 may include a controller 10 , an HMD 20 equipped with a terminal 30 , and a tracker 40 .

컨트롤러(10)는 사용자의 행동을 반영하고, 사용자의 의지를 전달할 수 있다. The controller 10 may reflect the user's action and transmit the user's will.

예를 들어, 컨트롤러(10)로는 동작인식 기반의 컨트롤러, 물리 컨트롤러, 부착형 동작인식 기반의 컨트롤러, 뇌파인식 기반의 컨트롤러 등이 있을 수 있다.For example, the controller 10 may include a motion recognition-based controller, a physical controller, an attached motion recognition-based controller, an EEG-based controller, and the like.

동작인식 기반의 컨트롤러는 사용자들의 위치가 정확히 식별되었을 경우에 사용됨이 바람직하다. 먼저, 적외선 또는 이미지 인식방법을 통해서 여러 대상들의 동작을 측정한다. 그리고, 동작이 일어난 대상들의 위치를 앞서 구해낸 위치와 비교하여 동작정보를 서버(50)에 대입하는 방식으로 사용자의 의지를 반영할 수 있다.The motion recognition-based controller is preferably used when the location of the users is accurately identified. First, motions of various objects are measured through infrared or image recognition methods. In addition, the user's will can be reflected by comparing the positions of the objects in which the motion has occurred with the previously obtained positions and substituting the motion information into the server 50 .

3DOF, 6DOF 물리 컨트롤러는 물리 버튼이 있고, 손에 쥘 수 있는 컨트롤러를 가리킨다. 내장된 여러 가지 칩(자이로, 가속도, 컴퍼스, 이미지센서 등)의 정보를 사용자 또는 서버(50)에 전달함으로서 사용자의 의지를 반영할 수 있다.3DOF, 6DOF physical controller refers to a controller that has a physical button and can be held in a hand. The user's will can be reflected by transmitting information of various embedded chips (gyro, acceleration, compass, image sensor, etc.) to the user or the server 50 .

부착형 동작인식 기반의 컨트롤러는 사용자의 손목, 허리, 무릎, 발 등에 부착하여 측위되는 시스템으로서 외부에 관측장비가 존재한다는 것은 동작인식 기반의 컨트롤러와 유사하지만, 그 대상이 동작이 아닌 컨트롤러에 해당한다. The attached motion recognition-based controller is a system that is attached to the user's wrist, waist, knee, and foot to position the user. do.

뇌파인식 기반의 컨트롤러는 단말기(30)에 뇌파를 감지하는 모듈이 결합되거나 추가부착되는 형태로서 사용자의 행동을 외적으로 판단하지 않고, 뇌파의 결과와 신체상태로만 판단하여 사용자의 의지를 반영할 수 있다.The brain wave recognition-based controller is a form in which a module for detecting brain waves is combined or additionally attached to the terminal 30, and it does not externally judge the user's behavior, but only determines the result and body state of the brain wave to reflect the user's will. have.

HMD(Head Mounted Display)(20)는 사용자의 머리에 착용되며, 사용자 주위의 영상을 촬영하여 실제 영상정보를 획득할 수 있는 단말기(30)가 장착된다(도 2 참조). 도 1에서는 HMD라고 하였으나, FMD(Face Mounted Display)이어도 무방하다. A head mounted display (HMD) 20 is worn on the user's head, and a terminal 30 capable of acquiring actual image information by photographing an image around the user is mounted (see FIG. 2 ). Although it is referred to as an HMD in FIG. 1, it may be a face mounted display (FMD).

단말기(30)는 센서(30a)를 포함하여 사용자의 움직임을 감지하고, 디스플레이되는 실제영상정보 상에 3차원 가상객체를 표시할 수 있다. The terminal 30 may include a sensor 30a to detect a user's movement and display a 3D virtual object on the displayed real image information.

여기서, 센서(30a)는 해당 단말기(30)의 이동 위치 및 방향, 이동 속도 등을 감지할 수 있다. 단말기(30)가 장착된 HMD(20)는 사용자의 머리에 착용되므로, 한편으로 센서(30a)는 사용자의 움직임에 따라 해당 사용자의 이동 위치 및 방향, 이동 속도 등을 감지한다고 볼 수 있다. 즉, 사용자의 움직임과 단말기(30)의 움직임을 동일한 것으로 간주할 수 있다. 센서(30a)는 내부 센서라고 할 수 있다.Here, the sensor 30a may detect the moving position and direction of the corresponding terminal 30, the moving speed, and the like. Since the HMD 20 equipped with the terminal 30 is worn on the user's head, on the other hand, it can be seen that the sensor 30a senses the user's moving position and direction, moving speed, etc. according to the user's movement. That is, the movement of the user and the movement of the terminal 30 may be regarded as the same. The sensor 30a may be referred to as an internal sensor.

예를 들어, 센서(30a)는 6-DOF 센싱으로서, 9-AXIS(Gyroscope, Accelerometer, Compass)의 센서 퓨전(Sensor Fusion)된 값을 사용할 수 있다.For example, the sensor 30a may use a sensor fusion value of 9-AXIS (Gyroscope, Accelerometer, Compass) as 6-DOF sensing.

6-DOF(Degree of freedom)는 6점 자유도라는 뜻으로, XYZ로 이루어진 3차원 좌표를 3DOF 라고 한다. 일반적으로 3DOF는 단말기(30)의 회전값을 사용할 수 있다는 의미이며, 6DOF는 회전값과 위치값을 사용할 수 있다는 의미이다.6-DOF (Degree of Freedom) means 6 degrees of freedom, and 3D coordinates made up of XYZ are called 3DOF. In general, 3DOF means that the rotation value of the terminal 30 can be used, and 6DOF means that the rotation value and position value can be used.

9-AXIS는 9개의 축을 가리키며, X, Y, Z, W 등의 한 개의 축을 1AXIS로 부른다. 일반적으로 각각 Gyroscope의 xyz, Accelerometer의 xyz, Compass의 xyz를 합쳐서 9AXIS라 칭한다.9-AXIS refers to 9 axes, and one axis such as X, Y, Z, W is called 1AXIS. In general, xyz of Gyroscope, xyz of Accelerometer, and xyz of Compass are collectively called 9AXIS.

단말기(30)는 서버(50)에 접속하여 서버(50)에서 제공하는 컨텐츠, 사용자 등의 정보를 확장현실(XR)로 표현할 수 있다.The terminal 30 may connect to the server 50 and express information such as contents and users provided by the server 50 in extended reality (XR).

단말기(30)는 서버(50)와 쌍방향 통신이 가능하며, 현실정보의 투영 및 함께 플레이하는 사용자들의 정보가 투영가능하다.The terminal 30 is capable of two-way communication with the server 50, and projection of real information and information of users playing together is possible.

예를 들어, 단말기(30)는 스마트폰 등과 같은 모바일 기기일 수 있다.For example, the terminal 30 may be a mobile device such as a smart phone.

상술한 설명에서는 단말기(30)가 HMD(20)에 장착되는 것으로 하여 HMD(20)와 단말기(30)를 각각 도시하였으나, 단말기(30)가 장착된 HMD(20)를 단말기로 통칭할 수도 있다. 만약, 단말기(30)가 장착된 HMD(20)를 단말기로 통칭하였을 경우, 단말기(30)는 모바일 기기로 지칭할 수 있다.In the above description, the HMD 20 and the terminal 30 are respectively illustrated as the terminal 30 is mounted on the HMD 20, but the HMD 20 on which the terminal 30 is mounted may be collectively referred to as a terminal. . If the HMD 20 on which the terminal 30 is mounted is collectively referred to as a terminal, the terminal 30 may be referred to as a mobile device.

도 1에는 도시하지 않았지만, 단말기(30)는 센서(30a) 이외로, 서버(50)와 통신 기능을 수행하는 통신부, 사용자 주변을 촬영하는 카메라, 3차원으로 랜더링된 가상 객체 또는 단말기(30)의 움직임 좌표에 대응되는 3차원 가상 객체 이미지가 저장되어 있는 가상 객체 DB, 확장현실 영상을 사용자의 시야에 제공하기 위한 디스플레이부, 및 3차원 가상 객체를 실제 영상정보상에 중첩하여 디스플레이부에 표시되게 하는 프로세서 등을 포함할 수 있다.Although not shown in Figure 1, the terminal 30 is other than the sensor 30a, a communication unit that performs a communication function with the server 50, a camera that captures the user's surroundings, a virtual object or terminal 30 rendered in three dimensions A virtual object DB in which a three-dimensional virtual object image corresponding to the movement coordinates of It may include a processor and the like.

트래커(tracker)(40)는 도 2에서와 같이 HMD(20)에 설치될 수 있다. The tracker 40 may be installed in the HMD 20 as shown in FIG. 2 .

트래커(40)는 게임 공간 내부에 설치된 송신부(도시 생략)로부터의 소정의 전파를 수신할 수 있다. 송신부는 게임 공간 내부에 다수개 설치됨이 바람직하다.The tracker 40 may receive a predetermined radio wave from a transmitter (not shown) installed inside the game space. It is preferable that a plurality of transmitters are installed inside the game space.

예를 들어, 송신부는 적외선 레이저를 방사할 수 있다. 이 경우, 송신부는 세로로 회전하는 모터와 가로로 회전하는 모터를 구비한다. 세로 회전 모터에는 가로방사형 적외선 레이저가 부착되고, 가로 회전 모터는 세로 방사형 적외선 레이저가 부착되어 있다. 적외선 레이저는 일정 주기로 가로와 세로를 방사하는데, 방사가 끝나면 전체 적외선을 방사하여 한 종류의 방사가 끝났음을 알린다.For example, the transmitter may emit an infrared laser. In this case, the transmitter includes a motor rotating vertically and a motor rotating horizontally. A horizontal radiation type infrared laser is attached to the vertical rotation motor, and a vertical radiation type infrared laser is attached to the horizontal rotation motor. Infrared laser emits horizontally and vertically at regular intervals, and when the radiation is finished, it emits all infrared rays to notify that one type of radiation is finished.

이와 같이 송신부에서 송신되는 전파(적외선 레이저)는 트래커(40)에서 수신된다. 트래커(40)에는 대략 15개 ~ 100개 정도의 센서(40a)가 방사형으로 위치할 수 있다. 이 센서(40a)들은 적외선 레이저들을 수신하는 시간의 차이를 계산하여 해당 트래커(40)의 위치를 특정할 수 있다. 적외선을 발사한 대상이 같기 때문에 트래커(40)들은 모든 정보를 적외선 송신기를 타겟으로 계산할 수 있어 같은 시간에 공간상의 위치를 도출해낼 수 있다. 여기서, 센서(40a)는 외부 센서라고 할 수 있다.In this way, the radio wave (infrared laser) transmitted from the transmitter is received by the tracker 40 . About 15 to 100 sensors 40a may be radially located in the tracker 40 . The sensors 40a may determine the location of the corresponding tracker 40 by calculating the difference in time to receive the infrared lasers. Since the target that emits the infrared rays is the same, the trackers 40 can calculate all information by using the infrared transmitter as a target, so that the position in space can be derived at the same time. Here, the sensor 40a may be referred to as an external sensor.

이와 같이 트래커(40)는 송신부로부터의 전파를 수신하여 시간에 따른 단말기(30)의 움직임(위치값, 회전값) 좌표를 측정하고, 측정된 단말기(30)의 움직임 좌표를 서버(50)에게로 전송할 수 있다.In this way, the tracker 40 receives the radio wave from the transmitter, measures the movement (position value, rotation value) coordinates of the terminal 30 according to time, and sends the measured movement coordinates of the terminal 30 to the server 50 can be sent to

즉, 단말기(즉, 사용자)의 움직임 좌표를 보다 정확히 산출하기 위해, 본 발명의 실시예에서는 내부 센서(즉, 단말기(30)의 센서(30a))를 통해 단말기(30)의 움직임 좌표를 측정하고, 또한 외부 센서(즉, 트래커(40)의 센서(40a))를 통해 단말기(30)의 움직임 좌표를 측정한다.That is, in order to more accurately calculate the movement coordinates of the terminal (ie, the user), in the embodiment of the present invention, the movement coordinates of the terminal 30 are measured through an internal sensor (ie, the sensor 30a of the terminal 30 ). and also measures the movement coordinates of the terminal 30 through an external sensor (ie, the sensor 40a of the tracker 40).

서버(50)는 단말기별 식별코드를 분배하고, 확장현실 기반의 컨텐츠(프로그램)를 자동으로 업데이트할 수 있다.The server 50 may distribute an identification code for each terminal and automatically update content (program) based on extended reality.

서버(50)는 클라이언트(100)에게로의 확장현실 기반의 컨텐츠의 제공 및 실행을 제어하고, 컨트롤러(10)와 단말기(30)간의 연결을 제어하고, 단말기(30)의 상태를 제어할 수 있다.The server 50 may control the provision and execution of extended reality-based content to the client 100 , control the connection between the controller 10 and the terminal 30 , and control the state of the terminal 30 . .

서버(50)는 단말기 화면의 녹화/녹음, 단말기 화면의 스트리밍, 및 단말기의 카메라를 제어할 수 있다. The server 50 may control recording/recording of the terminal screen, streaming of the terminal screen, and the camera of the terminal.

서버(50)는 단말기(30)로부터의 해당 단말기(즉, 사용자)의 움직임 좌표 및 트래커(40)로부터의 단말기(즉, 사용자) 움직임 좌표를 근거로 단말기(30)의 현재 움직임 좌표를 산출하여 단말기(30)에게로 전송할 수 있다. The server 50 calculates the current movement coordinates of the terminal 30 based on the movement coordinates of the terminal (ie, the user) from the terminal 30 and the terminal (ie, the user) movement coordinates from the tracker 40, It can be transmitted to the terminal 30 .

물론, 서버(50)는 사용자간을 연결시켜 주는 것을 근간으로 하며, 게임 실행, 중단 및 팀 배정, 게임 종류 선택, 컨트롤러 지정 등의 전체적인 시스템 설정을 진행할 수 있다.Of course, the server 50 is based on connecting users, and can perform overall system settings such as game execution, suspension, team assignment, game type selection, and controller designation.

특히, 서버(50)는 단말기(30) 내부의 센서(30a)와 단말기 외부의 센서(즉, 트래커의 센서(40a))의 축을 동기화시키는 축 동기화부(60)를 포함한다. In particular, the server 50 includes an axis synchronizer 60 that synchronizes the axes of the sensor 30a inside the terminal 30 and the sensor outside the terminal (ie, the sensor 40a of the tracker).

축 동기화부(60)의 필요성에 대해 설명하면 하기와 같다.The necessity of the axis synchronization unit 60 will be described as follows.

단말기(30)와 트래커(40)의 회전각을 서로 비교하여 보면, 도 2에 예시한 바와 같을 수 있다. When the rotation angles of the terminal 30 and the tracker 40 are compared with each other, it may be as illustrated in FIG. 2 .

도 2에서, HMD(20)에 표시한 3축은 단말기(30)의 센서(30a)의 회전각으로서, 게이머가 HMD(20)를 착용하였을 경우 단말기(30)의 하면이 정면으로 되고, 단말기(30)의 측면이 윗면으로 되는 일반적인 VR 단말기의 회전각을 보여준다. In FIG. 2 , the three axes displayed on the HMD 20 are rotation angles of the sensor 30a of the terminal 30 , and when the gamer wears the HMD 20 , the lower surface of the terminal 30 becomes the front, and the terminal ( 30) shows the rotation angle of a general VR terminal with the side facing up.

한편, 트래커(40)에 표시한 3축은 트래커(40)의 센서를 서버(예컨대, PC)(도시 생략)에서 관측하였을 때의 회전각을 보여준다.On the other hand, the three axes displayed on the tracker 40 show the rotation angle when the sensor of the tracker 40 is observed from a server (eg, PC) (not shown).

도 2에 예시한 바와 같이, 현실세계에서의 물리적인 각도는 눈에 보이고 판정이 되지만, 실제 데이터에서는 센서(30a)의 회전각과 센서(40a)의 회전각은 명확하지 않으며 서로 일치하지 않을 것이다. 즉, 트래커(40)를 중심으로 봤을 때 단말기(30)의 센서(30a)의 각과 트래커(40)의 센서(40a)의 각은 현실세계의 회전각의 차이와 상이하게 될 것이다. 다시 말해서, 독립된 2개의 센서(30a, 40a)는 서로의 위치축과 기준점이 상이할 것이다.As illustrated in FIG. 2 , a physical angle in the real world is visible and determined, but in actual data, the rotation angle of the sensor 30a and the rotation angle of the sensor 40a are not clear and will not coincide with each other. That is, when the tracker 40 is viewed as a center, the angle of the sensor 30a of the terminal 30 and the angle of the sensor 40a of the tracker 40 will be different from the difference between the rotation angles in the real world. In other words, the two independent sensors 30a and 40a will have different position axes and reference points from each other.

따라서, 이러한 문제를 해결하기 위해, 단말기(30) 내부의 센서(30a)와 단말기 외부의 센서(즉, 트래커의 센서(40a))의 축을 동기화시키는 축 동기화부(60)가 필요하다.Therefore, in order to solve this problem, the axis synchronization unit 60 for synchronizing the axes of the sensor 30a inside the terminal 30 and the sensor outside the terminal (ie, the sensor 40a of the tracker) is required.

축 동기화부(60)를 이용하게 되면 독립된 2개의 센서(30a, 40a)의 위치축과 기준점을 동일하게 유지시킬 수 있으므로, 사용자간에 공간을 공유하고 현실감을 증가시킬 수 있다. 특히, 여러 사용자가 같은 공간에서 확장현실 기반의 컨텐츠를 체험할 경우에도 서로 동일한 가상좌표를 공유하는 것이 무척 수월해져서 동일한 추적 결과를 도출할 수 있다. 이로 인해, 사용자간에 서로를 손쉽게 인식할 수 있으며, 이질적인 공간감에서 오는 부딛힘과 거북함 등을 없앨 수 있다.When the axis synchronizer 60 is used, the position axis and the reference point of the two independent sensors 30a and 40a can be kept the same, so that space can be shared between users and a sense of reality can be increased. In particular, even when multiple users experience extended reality-based content in the same space, it is very easy to share the same virtual coordinates with each other, and the same tracking result can be derived. Due to this, it is possible to easily recognize each other between users, and it is possible to eliminate bumps and awkwardness caused by a heterogeneous sense of space.

축 동기화부(60)의 내부 구성에 대해서는 후술하기로 한다.The internal configuration of the shaft synchronizer 60 will be described later.

상술한 서버(50)는 본 발명의 청구범위에 기재된 확장현실 서비스 장치의 일 예가 될 수 있다.The above-described server 50 may be an example of the extended reality service device described in the claims of the present invention.

도 1에서, 네트워크(200)는 3가지 체계를 포함할 수 있다. In FIG. 1 , the network 200 may include three schemes.

예를 들어, 네트워크(200)는 일반 네트워크(일반적인 반응), 고속 네트워크(빠른 반응), 대용량 네트워크(빠른 속도, 느린 반응)의 3가지 체계를 포함할 수 있다. 3가지 네트워크 체계는 독립된 네트워크 TCP/IP 소켓을 가지고 있다.For example, the network 200 may include three systems: a general network (general response), a high-speed network (fast response), and a large-capacity network (fast speed, slow response). The three network schemes have independent network TCP/IP sockets.

여기서, 일반 네트워크는 일반적으로 구성하는 온라인 서버의 네트워크 구성을 말하며, 서버(50)와 클라이언트(100)가 이질적이지 않은 범위에서 버퍼링을 실시할 수 있는 네트워크를 의미한다. 버퍼링이란 너무 잦은 데이터를 전송하거나 소량의 데이터를 전송할 때, 네트워크(200)의 부하를 줄이기 위해 한 개의 데이터로 저장하여 보내는 방식을 말한다. Here, the general network refers to a network configuration of an online server that is generally configured, and refers to a network in which the server 50 and the client 100 can perform buffering in a range that is not heterogeneous. Buffering refers to a method of storing and transmitting data as one data in order to reduce the load on the network 200 when transmitting data too frequently or when transmitting a small amount of data.

본 발명의 실시예는 일반 네트워크에서 최대패킷량(MTU)을 기준으로 구성될 수 있으며, 이때의 데이터는 최대 0.05초만큼 데이터 전송을 대기한 뒤 전송될 수 있다. 1초에 최소 20번의 데이터 전송이 이루어지며, 이는 게임 데이터(예컨대, "3D객체 A가 좌표(0,1,0)에 생성된다", "상대편 B로부터 당신 A가 공격당했다", "당신의 HP가 50%가 되었다" 등)를 전송하는데 무리가 없는 수준일 것이다. An embodiment of the present invention may be configured based on the maximum packet amount (MTU) in a general network, and at this time, data may be transmitted after waiting for data transmission for up to 0.05 seconds. Data transfer is made at least 20 times per second, and this includes game data (eg, "3D object A is created at coordinates (0,1,0)", "Your A was attacked by opponent B", "Your HP has reached 50%", etc.

고속 네트워크는 일반 네트워크와는 다르게 데이터 버퍼링을 실시하지 않으며, 입력된 데이터를 최대한 빨리 전달하는 것이 핵심이다. 고속 네트워크는 일반 네트워크와 동일하게 TCP/IP 프로토콜을 사용한다. 그렇기에 소규모 패킷의 다량의 전송으로 네트워크(200)에 부하가 발생할 수 있기 때문에 잘 사용되지 않는다.Unlike general networks, high-speed networks do not perform data buffering, and the key is to deliver input data as quickly as possible. A high-speed network uses the TCP/IP protocol the same as a general network. Therefore, it is not used well because a load may occur on the network 200 due to the transmission of a large amount of small packets.

고속 네트워크는 일반 네트워크처럼 필요한 시점에 언제든 전송하게 되면 네트워크 부하가 증가하게 되므로, 필요한 스케줄에 따라 주기적으로 전송하는 시스템으로 전송 로직을 구현하는 것이 바람직하다. 예를 들어, 고속 네트워크는 센서 데이터, 식별 번호 등과 같이 일정 종류만 한정하여 전송하는 것이 좋을 것이다.In a high-speed network, if it is transmitted at any time when necessary, like a general network, the network load increases. Therefore, it is desirable to implement the transmission logic in a system that transmits periodically according to a required schedule. For example, in a high-speed network, it would be good to limit transmission of only a certain type, such as sensor data and identification number.

광범위 네트워크를 이용할 시에는 큰 의미가 없지만, 고속 네트워크는 서버(50)와 클라이언트(100)가 직접 연결(공유기, WIFI 내부망)을 하고 있는 상황에서는 유의미한 속도가 발현될 수 있다.There is no significant meaning when using a wide-area network, but in a high-speed network, a meaningful speed can be expressed in a situation where the server 50 and the client 100 are directly connected (router, WIFI internal network).

고속 네트워크는 전송/수신 까지 유선망인 경우에는 대략 0~1ms 정도의 데이터 전송 속도를 보일 수 있고, WIFI망에서는 대략 1ms~30ms 정도까지의 데이터 전송 속도를 보일 수 있다. WIFI망에서 평균 4ms 정도의 전송속도를 유지할 것이다.A high-speed network can show a data transmission speed of about 0~1ms in the case of a wired network until transmission/reception, and may show a data transmission speed of about 1ms~30ms in a WIFI network. In the WIFI network, the average transmission speed will be maintained at about 4ms.

상술한 고속 네트워크라 명명한 개념은 원시적인 네트워크의 개념이기에 필요에 의해서는 사용이 되지 않을 수 있지만, VR이라는 특이성과 내부망이라는 특이성이 더해져 필수 요소로 적용된다고 이해하면 된다.The concept of high-speed network described above may not be used as necessary because it is a concept of a primitive network, but it can be understood that it is applied as an essential element by adding the specificity of VR and the specificity of an internal network.

대용량 네트워크는 고속 네트워크와 상반되는 개념으로서, 일반적인 웹파일 대용량 전송 프로토콜을 따르고 있다. 대용량 네트워크는 서버(50) 또는 클라이언트(100)에서 생성되거나 보유중인 데이터를 전송하는 수단으로서, 실행파일 버전 관리부터 내부 컨텐츠 데이터까지 다양하게 데이터를 송수신할 수 있게 한다.A large-capacity network is a concept opposite to a high-speed network, and follows a general web file large-capacity transmission protocol. The high-capacity network is a means for transmitting data generated or held by the server 50 or the client 100, and enables data transmission and reception in a variety of ways, from execution file version management to internal content data.

대용량 네트워크는 일반 네트워크보다 더 큰 버퍼를 가지고 전송을 시도하며, 전송버퍼가 커진 만큼 전송속도가 빠르다. A large-capacity network attempts transmission with a larger buffer than a general network, and the transmission speed is faster as the transmission buffer becomes larger.

일반적인 온라인 PC게임, 모바일 게임의 경우 하나의 네트워크로만 구성되는 경우가 많으며, 그렇지 않다면 일반 네트워크와 대용량 네트워크의 결합으로 구성됨이 바람직하다.In the case of general online PC games and mobile games, it is often composed of only one network. Otherwise, it is preferable to form a combination of a general network and a large-capacity network.

따라서, 축동기화 과정에서 네트워크의 지연 딜레이로 인해 발생하는 데이터 차이인 네트워크 오차를 고려한 가중치를 반영해야한다. Therefore, it is necessary to reflect the weight in consideration of the network error, which is the data difference caused by the delay of the network during the shaft synchronization process.

도 3은 본 발명에 의한 확장현실 서비스 장치의 축 동기화 장치 개념도이다. 도 3에 도시된 바와 같이, 단말기(30) 내부의 센서(30a)와 단말기 외부의 센서(즉, 트래커의 센서(40a))의 회전정보를 입력받아 트래커와 단말기의 회전각 차이를 이용하여 오프셋을 검출하고 오프셋값을 반영하여 축을 동기화시키는 축 동기화부(60)와; 상기 축 동기화부(60)에서 트래커의 회전축에 동기화시킨 단말기의 회전 정보와 상기 트래커의 센서(40a)의 정보를 입력받아 회전 정보를 연산하는 회전 연산부(70)와, 상기 회전 연산부(70)의 회전 연산 정보에 의거하여 최종 상태값을 생성하는 최종 상태값 생성부(80)를 포함하여 구성된다.3 is a conceptual diagram of an axis synchronization device of an extended reality service device according to the present invention. As shown in Figure 3, the terminal 30 receives the rotation information of the sensor 30a inside the terminal and the sensor outside the terminal (ie, the sensor 40a of the tracker) and offset using the difference in rotation angle between the tracker and the terminal an axis synchronization unit 60 for detecting and synchronizing the axes by reflecting the offset value; A rotation operation unit 70 that receives rotation information of the terminal synchronized with the rotation axis of the tracker in the axis synchronization unit 60 and information of the sensor 40a of the tracker to calculate rotation information, and the rotation operation unit 70 and a final state value generating unit 80 for generating a final state value based on the rotation operation information.

이와 같이 본 발명에서는 단말기 내부센서(30a)의 회전값과, 외부 센서(트래커의 센서)(40a)의 회전값을 입력받아 축 동기화부(60)에서 축 동기화를 시킨다. 축동기화는 트래커의 센서(40a)의 회전각(B)을 기준으로 단말기 센서(30a)의 회전각(A)까지의 각도차이(C)를 구한다. 상기 트래커 센서의 회전각(B)과 상기 각도차이(C)를 연산하여 예상 단말기 회전값(D)을 구한다. 실질적으로 예상 단말기 회전값(D)과 단말기 회전값(A)을 같은 값의 각도가 된다.As described above, in the present invention, the rotation value of the terminal internal sensor 30a and the rotation value of the external sensor (sensor of the tracker) 40a are received and the shaft synchronization unit 60 synchronizes the shaft. Shaft synchronization obtains the angular difference (C) from the rotation angle (B) of the tracker sensor (40a) to the rotation angle (A) of the terminal sensor (30a). Calculate the rotation angle (B) of the tracker sensor and the angle difference (C) to obtain an expected terminal rotation value (D). Practically, the expected terminal rotation value (D) and the terminal rotation value (A) are the same angle.

축동기화를 위하여 단말기의 회전각(A)과 트래커의 회전각(B)이 시간이 흐른뒤, 회전된 회전각을 측정함으로서, 각 회전각 차이를 구하여 기록하고, 기록된 회전각 차이를 지속적으로 누적시켜 두 회전의 새로운 회전각차이(Cn)를 구한다.For shaft synchronization, the rotation angle (A) of the terminal and the rotation angle (B) of the tracker are measured after time passes, by measuring the rotation angle, the difference between each rotation angle is obtained and recorded, and the recorded rotation angle difference is continuously recorded Accumulate the new rotation angle difference (Cn) of the two rotations.

이전회전각 차이(C)에 새로운 회전각 차이(Cn)를 특정한 가중치를 이용하여 반영하여, 현재 새롭게 사용할 회전각 차이(C)를 구한다. 즉, 상기 회전각 차이(C)를 새롭게 적용할 오프셋값으로 구하고, 이를 단말기의 회전값에 반영하여 축을 동기화 사키는 것이다. 그리고, 다음 계산을 위하여 현재의 회전각(A,B)와 회전각차이(C)를 누적 기록하여 다음번 오프셋값 검출에 이용한다.The new rotation angle difference (Cn) is reflected in the previous rotation angle difference (C) using a specific weight to obtain a rotation angle difference (C) to be used newly. That is, the rotation angle difference C is obtained as an offset value to be newly applied, and this is reflected in the rotation value of the terminal to synchronize the axis. Then, for the next calculation, the current rotation angles (A, B) and the rotation angle difference (C) are accumulated and recorded and used to detect the next offset value.

이와같이 축동기화부(60)를 통하여 회전각도 차이에 따른 축동기화를 시킴으로써, 내부센서와 외부센서의 기준좌표를 일치시키고, 회전 연산부(70)가 축동기화에 따른 회전각차이를 기반으로 트래커의 회전값을 입력받아 회전 정보를 연산하게 된다. 이렇게 축을 동기화시켜 기준 좌표를 일치시킨 후, 실제 움직임에 대한 회전 정보를 연산하고, 연산된 회전 정보에 의해 최종 상태값 생성부(80)가 컨텐츠의 객체에 대한 최종 상태 정보를 생성하여 제공함으로써, 확장현실 서비스에서 정확한 추적결과를 반영 할 수 있는 것이다.As such, by performing shaft synchronization according to the rotation angle difference through the shaft synchronization unit 60, the reference coordinates of the internal sensor and the external sensor are matched, and the rotation calculation unit 70 rotates the tracker based on the rotation angle difference according to the shaft synchronization Rotation information is calculated by inputting a value. After synchronizing the axes and matching the reference coordinates in this way, the rotation information for the actual movement is calculated, and the final state value generation unit 80 generates and provides final state information for the object of the content by the calculated rotation information, It is possible to reflect accurate tracking results in the extended reality service.

도 4은 도 1에 도시된 축 동기화부(60)의 내부 구성도이다.FIG. 4 is an internal configuration diagram of the axis synchronizer 60 shown in FIG. 1 .

축 동기화부(60)는 회전정보 수신부(61), 오프셋 계산부(62), 동기화부(63), 저장부(64), 및 제어부(65)를 포함할 수 있다.The axis synchronizer 60 may include a rotation information receiving unit 61 , an offset calculating unit 62 , a synchronizing unit 63 , a storage unit 64 , and a control unit 65 .

회전정보 수신부(61)는 단말기(30)의 회전 정보(회전값) 및 트래커(40)의 회전 정보(회전값)를 실시간 또는 주기적으로 수신할 수 있다.The rotation information receiving unit 61 may receive rotation information (rotation value) of the terminal 30 and rotation information (rotation value) of the tracker 40 in real time or periodically.

오프셋 계산부(62)는 수신된 단말기(30)의 회전 정보와 트래커(40)의 회전 정보를 근거로 단말기(30)와 트래커(40)의 센서(30a, 40a)의 회전축의 각도차이를 계산하고, 계산된 각도차이를 근거로 센서(30a)와 센서(40a)의 축 동기화에 사용되는 오프셋(즉, 조정값이라고 할 수 있음)을 계산해 낼 수 있다.The offset calculator 62 calculates the angular difference between the rotation axes of the sensors 30a and 40a of the terminal 30 and the tracker 40 based on the received rotation information of the terminal 30 and the rotation information of the tracker 40 . and, based on the calculated angular difference, an offset (that is, an adjustment value) used for axis synchronization of the sensor 30a and the sensor 40a may be calculated.

이와 같은 본 발명에서는 단말기 및 트래커를 포함하는 클라이언트에게 확장현실 기반의 컨텐츠를 제공하는 확장현실 서비스 장치가 상기 단말기내의 제 1 센서와 상기 트래커내의 제 2 센서의 축을 동기화시키는 방법으로서,As described above, in the present invention, an extended reality service device that provides extended reality-based content to a client including a terminal and a tracker synchronizes the axes of a first sensor in the terminal and a second sensor in the tracker,

축동기화를 위하여 단말기의 회전각(A)과 트래커의 회전각(B)이 설정된 시간이 흐른뒤, 회전된 회전각을 측정하여 각각의 축의 회전각 차이를 구하여 기록하는 단계;After the set time elapses for the rotation angle (A) of the terminal and the rotation angle (B) of the tracker for shaft synchronization, measuring the rotated rotation angle to obtain and record the difference between the rotation angles of each axis;

상기 단말기와 트래커의 각각의 축의 회전각 차이를 누적 기록함과 아울러 단말기의 축과 트래커의 축 사이의 회전각 새로운 회전각차이(Cn)를 구하는 단계;Accumulating and recording the difference between the rotation angles of the respective axes of the terminal and the tracker, and obtaining a new rotation angle difference (Cn) between the axis of the terminal and the axis of the tracker;

이전 회전각 차이(C)에 상기 새로운 회전각 차이(Cn)를 반영하여 현재 적용될 오프셋값을 구하여 저장함과 아울러 오프셋값을 단말기의 축정보에 반영하여 축 동기화를 시키는 축동기화단계를 포함할 수 있다.It may include a shaft synchronization step of reflecting the new rotation angle difference (Cn) to the previous rotation angle difference (C) to obtain an offset value to be currently applied and storing it, and also reflecting the offset value in the axis information of the terminal to synchronize the axis. .

상기 오프셋 계산부(62)의 구체적인 실시예로는, 하기의 1 ~ 10까지의 순서에 따라 오프셋을 계산해 낼 수 있다. 그리고, 오프셋 계산부(62)는 하기의 1 ~ 10까지의 순서를 반복할 것이다. 하기에서의 단말기(30)는 순수하게 단말기(30)만을 지칭할 수도 있으나, 단말기(30)가 HMD(20)에 장착되어 함께 움직이므로 단말기(30)가 장착된 HMD(20)를 단말기라고 할 수도 있다.As a specific embodiment of the offset calculator 62 , the offset may be calculated according to the following steps 1 to 10 . Then, the offset calculator 62 will repeat the following steps 1 to 10. The terminal 30 in the following may refer to only the terminal 30 purely, but since the terminal 30 is mounted on the HMD 20 and moves together, the HMD 20 equipped with the terminal 30 will be referred to as a terminal. may be

1. 단말기(30)의 이전 회전각과 단말기(30)의 현재 회전각을 근거로 현재 시점에서의 단말기(30)의 회전각 차이(headsetDifference)를 계산한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion headsetDifference = beforeHeadsetRotation.Inverse() * headsetRotation"와 같이 표현할 수 있다.1. Based on the previous rotation angle of the terminal 30 and the current rotation angle of the terminal 30, a difference in the rotation angle of the terminal 30 (headsetDifference) at the current time is calculated. If this is expressed programmatically, for example, "Quaternion headsetDifference = beforeHeadsetRotation.Inverse() * headsetRotation" can be expressed.

2. 계산된 단말기(30)의 회전각 차이(headsetDifference)를 근거로 단말기(30)의 회전된 축(Aa)을 구한다. 이를 프로그램적으로 표현하면 예를 들어, "headsetDifference.ToAngleAxis(out_, out var headsetRotatedAxis)"와 같이 표현할 수 있다. 여기서, 단말기(30)의 회전된 축(Aa)은 내부 센서(30a)의 축을 의미할 수 있다.2. Based on the calculated difference in rotation angle of the terminal 30 (headsetDifference), the rotated axis Aa of the terminal 30 is obtained. If this is expressed programmatically, for example, "headsetDifference.ToAngleAxis(out_, out var headsetRotatedAxis)" can be expressed. Here, the rotated axis Aa of the terminal 30 may mean the axis of the internal sensor 30a.

3. 단말기(30)의 회전된 축(Aa)을 선형벡터에서 사원수(quaternion) 회전각으로 변환한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion headsetAxisLook = Quaternion.LookRotation(headsetRotatedAxis)"와 같이 표현할 수 있다. 사원수는 3차원 공간에서의 특정 회전축(즉, 회전된 축)에 대한 공간의 회전을 나타낸다고 할 수 있다. 이와 같이 단말기(30)의 회전된 축(Aa)을 사원수(quaternion) 체계로 표현하게 되면 단말기(30)가 지표면에 대해서 임의의 축으로 회전하는 것을 나타낼 수 있다.3. Convert the rotated axis Aa of the terminal 30 from a linear vector to a quaternion rotation angle. If this is expressed programmatically, for example, "Quaternion headsetAxisLook = Quaternion.LookRotation(headsetRotatedAxis)" can be expressed. A quaternion can be said to represent the rotation of space about a particular axis of rotation (ie, the axis of rotation) in three-dimensional space. As described above, when the rotated axis Aa of the terminal 30 is expressed in a quaternion system, it can represent that the terminal 30 rotates on an arbitrary axis with respect to the ground surface.

4. 트래커(40)의 이전 회전각과 이전의 오프셋(Offset 1)(즉, 이전에 계산된 오프셋)을 근거로 단말기(30)의 이전 예상 회전각(beforeExpectHeadsetRotation)을 계산한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion beforeExpectHeadsetRotation = (beforeTrackerRotation * offset)"과 같이 표현할 수 있다.4. Calculate the previous expected rotation angle (beforeExpectHeadsetRotation) of the terminal 30 based on the previous rotation angle of the tracker 40 and the previous offset (Offset 1) (ie, the previously calculated offset). If this is expressed programmatically, for example, "Quaternion beforeExpectHeadsetRotation = (beforeTrackerRotation * offset)" can be expressed.

그리고, 트래커(40)의 현재 회전각과 이전의 오프셋(Offset 1)을 근거로 단말기(30)의 현재 예상 회전각(currentExpectHeadsetRotation)을 계산한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion currentExpectHeadsetRotation = (TrackerRotation * offset)"과 같이 표현할 수 있다.Then, the current expected rotation angle (currentExpectHeadsetRotation) of the terminal 30 is calculated based on the current rotation angle of the tracker 40 and the previous offset (Offset 1). If this is expressed programmatically, for example, "Quaternion currentExpectHeadsetRotation = (TrackerRotation * offset)" can be expressed.

이어, 단말기(30)의 이전 예상 회전각과 단말기의 현재 예상 회전각을 근거로 현재 시점에서의 트래커(40)의 회전각 차이(trackerDifference)를 계산한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion trackerDifference = beforeExpectHeadsetRotation.Inverse() * currentExpectHeadsetRotation"과 같이 표현할 수 있다.Next, a difference in rotation angle (trackerDifference) of the tracker 40 at the current time is calculated based on the previous expected rotation angle of the terminal 30 and the current expected rotation angle of the terminal. If this is expressed programmatically, for example, "Quaternion trackerDifference = beforeExpectHeadsetRotation.Inverse() * currentExpectHeadsetRotation" can be expressed.

5. 계산된 트래커(40)의 회전각 차이(trackerDifference)를 근거로 트래커(40)의 회전된 축(Da)을 구한다. 이를 프로그램적으로 표현하면 예를 들어, "trackerDifference.ToAngleAxis(out_, out var trackerRotatedAxis)"와 같이 표현할 수 있다. 여기서, 트래커(40)의 회전된 축(Da)은 외부 센서(40a)의 축을 의미할 수 있다.5. Based on the calculated difference in the rotation angle of the tracker 40 (trackerDifference), the rotation axis Da of the tracker 40 is obtained. If this is expressed programmatically, for example, "trackerDifference.ToAngleAxis(out_, out var trackerRotatedAxis)" can be expressed. Here, the rotated axis Da of the tracker 40 may mean the axis of the external sensor 40a.

6. 트래커(40)의 회전된 축(Da)을 선형벡터에서 사원수(quaternion) 회전각으로 변환한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion trackerAxisLook = Quaternion.LookRotation(trackerRotatedAxis)"와 같이 표현할 수 있다. 이와 같이 트래커(40)의 회전된 축(Da)을 사원수(quaternion) 체계로 표현하게 되면 트래커(40)가 지표면에 대해서 임의의 축으로 회전하는 것을 나타낼 수 있다.6. Convert the rotated axis Da of the tracker 40 from a linear vector to a quaternion rotation angle. If this is expressed programmatically, for example, "Quaternion trackerAxisLook = Quaternion.LookRotation(trackerRotatedAxis)" can be expressed. As such, when the rotated axis Da of the tracker 40 is expressed in a quaternion system, it may represent that the tracker 40 rotates on an arbitrary axis with respect to the ground surface.

7. 두 회전축 즉, 단말기(30)의 센서(30a)의 회전축과 트래커(40)의 센서(40a)의 회전축의 각도 차이(axisDifference)를 계산한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion axisDifference = trackerAxisLook * headsetAxisLook.Inverse()"와 같이 표현할 수 있다.7. Calculate the angular difference (axisDifference) between the two rotation axes, that is, the rotation axis of the sensor 30a of the terminal 30 and the rotation axis of the sensor 40a of the tracker 40 . If this is expressed programmatically, for example, "Quaternion axisDifference = trackerAxisLook * headsetAxisLook.Inverse()" can be expressed.

8. 계산된 두 회전축간의 각도 차이(axisDifference)와 이전의 오프셋(Offset 1)을 근거로 신규 오프셋(newOFFset)을 계산한다. 이를 프로그램적으로 표현하면 예를 들어, "Quaternion newOFFset = Offset * axisDifference"와 같이 표현할 수 있다. 여기서, Offset는 바로 이전에 계산된 오프셋으로서 Offset 1이 될 수 있다.8. Calculate a new offset (newOFFset) based on the calculated angle difference (axisDifference) between the two rotation axes and the previous offset (Offset 1). If this is expressed programmatically, it can be expressed as, for example, "Quaternion newOFFset = Offset * axisDifference". Here, Offset may be Offset 1 as an offset calculated immediately before.

9. 이전의 오프셋(Offset 1)과 신규 오프셋(newOFFset) 및 특정 가중치(addFactor)를 근거로 새롭게 사용할 오프셋(Offset 2)을 계산한다. 예를 들어, 이전의 오프셋(Offset 1)과 신규 오프셋(newOFFset) 및 특정 가중치(addFactor)를 사원수의 선형보간(LERP)에 적용하여 새롭게 사용할 오프셋(Offset 2)을 계산해 낼 수 있다. 이를 프로그램적으로 표현하면 예를 들어, "Offset = Quaternion.Lerp(Offset, newOFFset, addFactor)"와 같이 표현할 수 있다. 여기서, ()안의 Offset은 이전의 오프셋(Offset 1)이 될 수 있고, ()안의 newOFFset은 신규 오프셋(newOFFset)이 될 수 있고, ()안의 addFactor는 특정 가중치가 될 수 있다.9. Based on the previous offset (Offset 1), the new offset (newOFFset), and a specific weight (addFactor), an offset (Offset 2) to be used is calculated. For example, by applying the previous offset (Offset 1), the new offset (newOFFset), and a specific weight (addFactor) to quaternary linear interpolation (LERP), an offset (Offset 2) to be newly used may be calculated. If this is expressed programmatically, for example, "Offset = Quaternion.Lerp(Offset, newOFFset, addFactor)" can be expressed. Here, Offset in () may be the previous offset (Offset 1), newOFFset in () may be a new offset (newOFFset), and addFactor in () may be a specific weight.

새롭게 사용할 오프셋(Offset 2)(즉, 계산식에서 ()밖의 Offset)은 회전으로 인해 생긴 오차라고 볼 수 있으므로, 오프셋(Offset 2)은 센서(30a)와 센서(40a)의 축 동기화에 사용되는 조정값이 될 수 있다. 그리고, 오프셋(Offset 2)을 저장부(64)에 저장한다. 여기서, 오프셋(Offset 2)은 동기화부(63)에서 사용될 것이다. Since the offset (Offset 2) to be newly used (ie, Offset outside ( ) in the calculation formula) can be regarded as an error caused by rotation, the offset (Offset 2) is an adjustment used for axis synchronization of the sensor 30a and the sensor 40a can be a value. Then, the offset (Offset 2) is stored in the storage unit 64 . Here, the offset (Offset 2) will be used by the synchronizer 63 .

10. 후속 계산을 위해, 단말기(30)의 현재 회전각 및 트래커(40)의 현재 회전각을 저장부(64)에 저장한다. 10. For subsequent calculation, the current rotation angle of the terminal 30 and the current rotation angle of the tracker 40 are stored in the storage unit 64 .

도 4에서, 동기화부(63)는 오프셋 계산부(62)에서 실시간 또는 주기적으로 계산된 새롭게 사용할 오프셋(Offset 2)을 근거로 두 센서(30a, 40a)의 축을 조정하여 두 센서(30a, 40a)의 축의 회전각을 실시간 또는 주기적으로 동기화시킬 수 있다. 예를 들어, 동기화부(63)는 트래커(40)의 현재 회전각에 오프셋(Offset 2)을 적용하여 두 센서(30a, 40a)의 축의 회전각을 동기화시킬 수 있다. 필요에 따라서, 동기화부(63)는 단말기(30)의 현재 회전각에 오프셋(Offset 2)을 적용하여 두 센서(30a, 40a)의 축의 회전각을 동기화시킬 수 있다. In FIG. 4 , the synchronization unit 63 adjusts the axes of the two sensors 30a and 40a based on the offset 2 to be used newly calculated in real time or periodically by the offset calculator 62 to adjust the axes of the two sensors 30a and 40a. ) can be synchronized in real time or periodically. For example, the synchronizer 63 may synchronize the rotation angles of the axes of the two sensors 30a and 40a by applying the offset 2 to the current rotation angle of the tracker 40 . If necessary, the synchronizer 63 may synchronize the rotation angles of the axes of the two sensors 30a and 40a by applying the offset 2 to the current rotation angle of the terminal 30 .

저장부(64)는 오프셋 계산부(62)에서 계산과정에서 생성된 각종의 정보를 저장한다. 상술한 바와 같이 저장부(64)에는 새롭게 사용할 오프셋(Offset 2), 단말기(30)의 현재 회전각, 트래커(40)의 현재 회전각 등이 저장될 수 있다.The storage unit 64 stores various types of information generated in the calculation process by the offset calculation unit 62 . As described above, the storage unit 64 may store an offset (Offset 2) to be newly used, a current rotation angle of the terminal 30, a current rotation angle of the tracker 40, and the like.

제어부(65)는 축 동기화부(60)의 전체적인 동작을 제어한다.The control unit 65 controls the overall operation of the axis synchronization unit 60 .

도 5는 본 발명의 실시예에 따른 축 동기화 기능을 포함한 확장현실 서비스 장치에서의 축 동기화 방법을 개략적으로 설명하기 위한 플로우차트이다. 이하에서 설명되는 축 동기화 기능을 포함한 확장현실 서비스 장치에서의 축 동기화 방법은 서버(50)내의 축 동기화부(60)에서 행해지는 것으로 이해하면 된다.5 is a flowchart schematically illustrating an axis synchronization method in an extended reality service device including an axis synchronization function according to an embodiment of the present invention. It should be understood that the axis synchronization method in the extended reality service device including the axis synchronization function described below is performed by the axis synchronization unit 60 in the server 50 .

먼저, 축 동기화부(60)의 회전정보 수신부(61)는 단말기(30)의 회전 정보(회전값) 및 트래커(40)의 회전 정보(회전값)를 실시간 또는 주기적으로 수신한다(S10).First, the rotation information receiving unit 61 of the shaft synchronizer 60 receives rotation information (rotation value) of the terminal 30 and rotation information (rotation value) of the tracker 40 in real time or periodically (S10).

이어, 축 동기화부(60)의 오프셋 계산부(62)는 수신된 단말기(30)의 회전 정보와 트래커(40)의 회전 정보를 근거로 단말기(30)와 트래커(40)의 센서(30a, 40a)의 회전축의 각도차이를 계산하고, 계산된 각도차이를 근거로 센서(30a)와 센서(40a)의 축 동기화에 사용되는 오프셋(즉, 조정값이라고 할 수 있음)을 계산해 낸다(S20).Next, the offset calculation unit 62 of the axis synchronization unit 60 is based on the received rotation information of the terminal 30 and the rotation information of the tracker 40, the sensor 30a of the terminal 30 and the tracker 40, 40a) calculates the angular difference of the axis of rotation, and based on the calculated angular difference, an offset (that is, an adjustment value) used for axis synchronization of the sensor 30a and the sensor 40a is calculated (S20) .

그리고 나서, 축 동기화부(60)의 동기화부(63)는 오프셋 계산부(62)에서 실시간 또는 주기적으로 계산된 오프셋(즉, Offset 2)으로 두 센서(30a, 40a)의 축을 조정하여 두 센서(30a, 40a)의 축의 회전각을 실시간 또는 주기적으로 동기화시킨다(S30). 예를 들어, 동기화부(63)는 트래커(40)의 현재 회전각에 오프셋 계산부(62)로부터의 오프셋(Offset 2)을 적용하여 두 센서(30a, 40a)의 축의 회전각을 동기화시킬 수 있다. 필요에 따라서, 동기화부(63)는 단말기(30)의 현재 회전각에 오프셋 계산부(62)로부터의 오프셋(Offset 2)을 적용하여 두 센서(30a, 40a)의 축의 회전각을 동기화시킬 수 있다. Then, the synchronizer 63 of the axis synchronizer 60 adjusts the axes of the two sensors 30a and 40a with the offset (ie, Offset 2) calculated in real time or periodically by the offset calculator 62 to adjust the two sensors The rotation angles of the axes of (30a, 40a) are synchronized in real time or periodically (S30). For example, the synchronization unit 63 applies the offset (Offset 2) from the offset calculator 62 to the current rotation angle of the tracker 40 to synchronize the rotation angles of the axes of the two sensors 30a and 40a. have. If necessary, the synchronization unit 63 applies the offset (Offset 2) from the offset calculator 62 to the current rotation angle of the terminal 30 to synchronize the rotation angles of the axes of the two sensors 30a and 40a. have.

도 6는 도 5에 도시된 오프셋을 계산하는 단계(S20)를 보다 구체적으로 설명하기 위한 플로우차트이다.FIG. 6 is a flowchart for explaining the step of calculating the offset shown in FIG. 5 ( S20 ) in more detail.

먼저, 오프셋 계산부(62)는 단말기(30)의 이전 회전각과 단말기(30)의 현재 회전각을 근거로 현재 시점에서의 단말기(30)의 회전각 차이(headsetDifference)를 계산한다(S210). First, the offset calculator 62 calculates a difference (headsetDifference) of the rotation angle of the terminal 30 at the current time based on the previous rotation angle of the terminal 30 and the current rotation angle of the terminal 30 ( S210 ).

이어, 오프셋 계산부(62)는 계산된 단말기(30)의 회전각 차이(headsetDifference)를 근거로 단말기(30)의 회전된 축(Aa)을 구한다(S220).Next, the offset calculator 62 obtains the rotated axis Aa of the terminal 30 based on the calculated difference in the rotation angle of the terminal 30 (headsetDifference) (S220).

그리고, 오프셋 계산부(62)는 단말기(30)의 회전된 축(Aa)을 선형벡터에서 사원수(quaternion) 회전각으로 변환한다(S230). 이와 같이 단말기(30)의 회전된 축(Aa)을 사원수(quaternion) 체계로 표현하게 되면 단말기(30)가 지표면에 대해서 임의의 축으로 회전하는 것을 나타낼 수 있다.Then, the offset calculator 62 converts the rotated axis Aa of the terminal 30 from a linear vector to a quaternion rotation angle (S230). As described above, when the rotated axis Aa of the terminal 30 is expressed in a quaternion system, it can represent that the terminal 30 rotates on an arbitrary axis with respect to the ground surface.

한편, 오프셋 계산부(62)는 트래커(40)의 회전각 차이(trackerDifference)를 계산한다(S240). 즉, 오프셋 계산부(62)는 트래커(40)의 이전 회전각과 이전의 오프셋(Offset 1)을 근거로 단말기(30)의 이전 예상 회전각(beforeExpectHeadsetRotation)을 계산한다. 그리고, 오프셋 계산부(62)는 트래커(40)의 현재 회전각과 이전의 오프셋(Offset 1)을 근거로 단말기(30)의 현재 예상 회전각(currentExpectHeadsetRotation)을 계산한다. 이어, 오프셋 계산부(62)는 단말기(30)의 이전 예상 회전각과 단말기의 현재 예상 회전각을 근거로 현재 시점에서의 트래커(40)의 회전각 차이(trackerDifference)를 계산한다.On the other hand, the offset calculation unit 62 calculates a rotation angle difference (trackerDifference) of the tracker 40 (S240). That is, the offset calculator 62 calculates a previous expected rotation angle (beforeExpectHeadsetRotation) of the terminal 30 based on the previous rotation angle of the tracker 40 and the previous offset (Offset 1). Then, the offset calculator 62 calculates the current expected rotation angle (currentExpectHeadsetRotation) of the terminal 30 based on the current rotation angle of the tracker 40 and the previous offset (Offset 1). Next, the offset calculator 62 calculates a difference in the rotation angle of the tracker 40 at the current time based on the previous expected rotation angle of the terminal 30 and the current expected rotation angle of the terminal.

그리고, 오프셋 계산부(62)는 계산된 트래커(40)의 회전각 차이(trackerDifference)를 근거로 트래커(40)의 회전된 축(Da)을 구한다(S250).Then, the offset calculator 62 obtains the rotated axis Da of the tracker 40 based on the calculated difference in the rotation angle of the tracker 40 (trackerDifference) (S250).

이후, 오프셋 계산부(62)는 트래커(40)의 회전된 축(Da)을 선형벡터에서 사원수(quaternion) 회전각으로 변환한다(S260). 이와 같이 트래커(40)의 회전된 축(Da)을 사원수(quaternion) 체계로 표현하게 되면 트래커(40)가 지표면에 대해서 임의의 축으로 회전하는 것을 나타낼 수 있다.Thereafter, the offset calculator 62 converts the rotated axis Da of the tracker 40 from a linear vector to a quaternion rotation angle (S260). As such, when the rotated axis Da of the tracker 40 is expressed in a quaternion system, it may represent that the tracker 40 rotates on an arbitrary axis with respect to the ground surface.

그리고 나서, 오프셋 계산부(62)는 두 개의 회전축 즉, 단말기(30)의 센서(30a)의 회전축과 트래커(40)의 센서(40a)의 회전축의 각도 차이(axisDifference)를 계산한다(S270).Then, the offset calculation unit 62 calculates the angular difference (axisDifference) between the two rotation axes, that is, the rotation axis of the sensor 30a of the terminal 30 and the rotation axis of the sensor 40a of the tracker 40 (S270) .

이후, 오프셋 계산부(62)는 계산된 두 회전축간의 각도 차이(axisDifference)와 이전의 오프셋(Offset 1)을 근거로 신규 오프셋(newOFFset)을 계산한다(S280). Thereafter, the offset calculator 62 calculates a new offset (newOFFset) based on the calculated angular difference (axisDifference) between the two rotation axes and the previous offset (Offset 1) (S280).

이어, 오프셋 계산부(62)는 이전의 오프셋(Offset 1)와 신규 오프셋(newOFFset) 및 특정 가중치(addFactor)를 근거로 새롭게 사용할 오프셋(Offset 2)을 계산한다(S290). 예를 들어, 오프셋 계산부(62)는 이전의 오프셋(Offset 1)과 신규 오프셋(newOFFset) 및 특정 가중치(addFactor)를 사원수의 선형보간(LERP)에 적용하여 새롭게 사용할 오프셋(Offset 2)을 계산해 낼 수 있다. 여기서, 새롭게 사용할 오프셋(Offset 2)은 회전으로 인해 생긴 오차라고 볼 수 있으며, 조정값이 될 수 있다. Next, the offset calculator 62 calculates an offset (Offset 2) to be newly used based on the previous offset (Offset 1), the new offset (newOFFset), and a specific weight (addFactor) (S290). For example, the offset calculator 62 applies the previous offset (Offset 1), the new offset (newOFFset), and a specific weight (addFactor) to the linear interpolation (LERP) of the quaternion to use the offset (Offset 2) to be newly used. can be calculated Here, the offset (Offset 2) to be newly used can be regarded as an error caused by rotation, and can be an adjustment value.

그리고, 오프셋 계산부(62)는 오프셋(Offset 2)을 저장부(64)에 저장함과 더불어 동기화부(63)에게로 전송한다.Then, the offset calculator 62 stores the offset (Offset 2) in the storage unit 64 and transmits it to the synchronization unit 63 .

또한, 상술한 본 발명의 축 동기화 기능을 포함한 확장현실 서비스 장치의 축 동기화 방법은, 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 상기 방법을 구현하기 위한 기능적인(function) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.In addition, the axis synchronization method of the extended reality service device including the axis synchronization function of the present invention described above can be implemented as a computer readable code on a computer readable recording medium. The computer-readable recording medium includes all types of recording devices in which data readable by a computer system is stored. Examples of computer-readable recording media include ROM, RAM, CD-ROM, magnetic tape, floppy disk, and optical data storage device. In addition, the computer-readable recording medium is distributed in a computer system connected to a network, so that the computer-readable code can be stored and executed in a distributed manner. In addition, functional programs, codes, and code segments for implementing the method can be easily inferred by programmers in the art to which the present invention pertains.

이상에서와 같이 도면과 명세서에서 최적의 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로, 본 기술 분야의 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.As described above, the best embodiment has been disclosed in the drawings and the specification. Although specific terms are used herein, they are used only for the purpose of describing the present invention, and are not used to limit the meaning or scope of the present invention described in the claims. Therefore, it will be understood by those skilled in the art that various modifications and equivalent other embodiments are possible therefrom. Accordingly, the true technical protection scope of the present invention should be defined by the technical spirit of the appended claims.

10 : 컨트롤러 20 : HMD
30 : 단말기 40 : 트래커
50 : 서버 60 : 축 동기화부
61 : 회전정보 수신부 62 : 오프셋 계산부
63 : 동기화부 64 : 저장부
65 : 제어부 100 : 클라이언트
200 : 네트워크 30a : 센서(내부 센서)
40a : 센서(외부 센서)
10: controller 20: HMD
30: terminal 40: tracker
50: server 60: axis synchronization unit
61: rotation information receiving unit 62: offset calculating unit
63: synchronization unit 64: storage unit
65: control unit 100: client
200: network 30a: sensor (internal sensor)
40a: sensor (external sensor)

Claims (4)

단말기 및 트래커를 포함하는 클라이언트에게 확장현실 기반의 컨텐츠를 제공하는 확장현실 서비스 장치가 상기 단말기내의 제 1 센서와 상기 트래커내의 제 2 센서의 축을 동기화시키는 방법을 실행시키기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체로서,
축동기화를 위하여 단말기의 회전각(A)과 트래커의 회전각(B)이 설정된 시간이 흐른뒤, 회전된 회전각을 측정하여 각각의 축의 회전각 차이를 구하여 기록하는 단계;
상기 단말기와 트래커의 각각의 축의 회전각 차이를 누적 기록함과 아울러 단말기의 축과 트래커의 축 사이의 회전각 새로운 회전각차이(Cn)를 구하는 단계;
이전 회전각 차이(C)에 상기 새로운 회전각 차이(Cn)를 반영하여 현재 적용될 오프셋값을 구하여 저장함과 아울러 오프셋값을 단말기의 축정보에 반영하여 축 동기화를 시키는 축동기화단계를 포함하는
확장현실 서비스 장치의 축 동기화 방법을 실행시키기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체.
A computer readable program is recorded for executing a method in which an extended reality service device that provides extended reality-based content to a client including a terminal and a tracker synchronizes the axes of the first sensor in the terminal and the second sensor in the tracker As a recording medium,
After a set time elapses for the rotation angle (A) of the terminal and the rotation angle (B) of the tracker for shaft synchronization, measuring the rotated rotation angle to obtain and record the difference between the rotation angles of each axis;
Accumulating and recording the difference between the rotation angles of the respective axes of the terminal and the tracker, and obtaining a new rotation angle difference (Cn) between the axis of the terminal and the axis of the tracker;
A shaft synchronization step of reflecting the new rotation angle difference (Cn) to the previous rotation angle difference (C) to obtain an offset value to be currently applied and storing it, and also reflecting the offset value in the axis information of the terminal to synchronize the axis
A computer-readable recording medium in which a program for executing the axis synchronization method of the extended reality service device is recorded.
제 1 항에 있어서,
상기 축의 회전각 차이를 구하여 기록하는 단계는,
단말기의 회전값을 입력받아 단말기의 이전 회전각으로부터 현재 회전각을 계산하고, 이를 기반으로 단말기의 회전된 축을 구하는 단계;
상기 단말기의 회전된 축 정보를 선형벡터에서 축의 회전각 정보로 변환하는 단계;
트래커의 회전값을 입력받아 이전 트래커의 회전각과 현재 트래커의 회전각에 따른 회전차를 계산하고, 이를 기반으로 트래커의 회전된 축을 구하는 단계;
상기 트래커의 회전 축 정보를 선형벡터에서 축의 회전각 정보로 변환하는 단계;
상기 단말기 회전된 축의 회전각과 상기 트래커 회전된 축의 회전각 저장함과 아울러 두 회전 축의 각도 차이를 계산하는 단계;를 포함하는
확장현실 서비스 장치의 축 동기화 방법을 실행시키기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체.
The method of claim 1,
The step of obtaining and recording the difference in the rotation angle of the shaft comprises:
receiving the rotation value of the terminal, calculating the current rotation angle from the previous rotation angle of the terminal, and obtaining the rotated axis of the terminal based on this;
converting the rotated axis information of the terminal into rotation angle information of the axis from a linear vector;
receiving the rotation value of the tracker, calculating the rotation difference according to the rotation angle of the previous tracker and the rotation angle of the current tracker, and obtaining the rotated axis of the tracker based on this;
converting the rotation axis information of the tracker into rotation angle information of the axis in a linear vector;
Storing the rotation angle of the axis of rotation of the terminal and the rotation angle of the axis of rotation of the tracker as well as calculating the difference in angle between the two rotation axes; including
A computer-readable recording medium in which a program for executing the axis synchronization method of the extended reality service device is recorded.
제1항에 있어서,
상기 축동기화 단계는,
상기 두 회전축의 새로운 회전각 차이(Cn)에 특정 가중치를 연산한후, 이전 오프셋값에 반영하여 현재 적용될 새로운 오프셋값을 구하여 저장함과 아울러 새로운 오프셋값을 상기 단말기의 회전각 정보에 적용하여 축 동기화를 시키는
확장현실 서비스 장치의 축 동기화 방법을 실행시키기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체.
According to claim 1,
The shaft synchronization step is
After calculating a specific weight on the new rotation angle difference (Cn) of the two rotation axes, a new offset value to be applied is calculated and stored by reflecting the previous offset value, and the new offset value is applied to the rotation angle information of the terminal to synchronize the axes. letting
A computer-readable recording medium in which a program for executing the axis synchronization method of the extended reality service device is recorded.
제 3 항에 있어서,
상기 특정 가중치는,
네트워크의 지연 딜레이로 인해 발생하는 데이터 차이를 반영하여 설정되는 가중치인 것을 특징으로 하는
확장현실 서비스 장치의 축 동기화 방법을 실행시키기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체.
4. The method of claim 3,
The specific weight is
Characterized in that the weight is set by reflecting the data difference generated due to the delay of the network.
A computer-readable recording medium in which a program for executing the axis synchronization method of the extended reality service device is recorded.
KR1020200092860A 2020-07-27 2020-07-27 Recording medium for recording by axis synchronization program KR20220013657A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200092860A KR20220013657A (en) 2020-07-27 2020-07-27 Recording medium for recording by axis synchronization program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200092860A KR20220013657A (en) 2020-07-27 2020-07-27 Recording medium for recording by axis synchronization program

Publications (1)

Publication Number Publication Date
KR20220013657A true KR20220013657A (en) 2022-02-04

Family

ID=80268018

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200092860A KR20220013657A (en) 2020-07-27 2020-07-27 Recording medium for recording by axis synchronization program

Country Status (1)

Country Link
KR (1) KR20220013657A (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100900806B1 (en) 2007-11-01 2009-06-04 광주과학기술원 System and method for providing context-aware augmented reality
KR100953931B1 (en) 2008-05-09 2010-04-22 고려대학교 산학협력단 System for constructing mixed reality and Method thereof
KR20190118373A (en) 2018-04-10 2019-10-18 주식회사 엠에스게임 Virtual reality experience system and method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100900806B1 (en) 2007-11-01 2009-06-04 광주과학기술원 System and method for providing context-aware augmented reality
KR100953931B1 (en) 2008-05-09 2010-04-22 고려대학교 산학협력단 System for constructing mixed reality and Method thereof
KR20190118373A (en) 2018-04-10 2019-10-18 주식회사 엠에스게임 Virtual reality experience system and method

Similar Documents

Publication Publication Date Title
US10905950B2 (en) Head-mounted display tracking
CN110140099B (en) System and method for tracking controller
CN111627116B (en) Image rendering control method and device and server
WO2019221980A1 (en) Dynamic graphics rendering based on predicted saccade landing point
EP3794581A1 (en) Eye tracking with prediction and late update to gpu for fast foveated rendering in an hmd environment
JP2021530814A (en) Methods and systems for resolving hemispherical ambiguities using position vectors
US10937220B2 (en) Animation streaming for media interaction
WO2018225187A1 (en) Information processing system, information processing device, server device, image presentation method, and image generation method
US20180357817A1 (en) Information processing method, program, and computer
RU2751130C1 (en) Method for coordinate alignment of coordinate systems used by computer-generated reality apparatus and tactile sensation transmission apparatus
US10888771B2 (en) Method and device for object pointing in virtual reality (VR) scene, and VR apparatus
KR102503337B1 (en) Image display method, apparatus and system
CN107229055B (en) Mobile equipment positioning method and mobile equipment positioning device
KR20220013657A (en) Recording medium for recording by axis synchronization program
KR20220013655A (en) Program for axis synchronization of extended reality service device
KR20220013652A (en) Method for axis synchronization of the internal sensor and external sensor of the terminal of the extended reality service device
KR20220013649A (en) Recording media in which the axis synchronization program of the terminal's internal sensor and external sensor is recorded
KR20220013647A (en) Program for axis synchronization of the internal sensor and external sensor of the terminal of the extended reality service device
KR20220013645A (en) Extended reality service apparatus including axis synchronization function
KR20220013646A (en) Method for axis synchronization of the internal sensor and external sensor of the terminal of the extended reality service device
KR20220013631A (en) Extended reality service apparatus including axis synchronization function
KR20220013687A (en) Apparatus for extended reality service including axis alignment verification function and method for verification of axis alignment
KR20220013702A (en) Recording medium for axis alignment verification program of extended reality service device
KR20220013695A (en) Program for verifying the axis alignment of the extended reality service apparatus
KR20220013709A (en) Recording medium for axis alignment verification program of extended reality service device