KR20190098003A - Method for estimating pose of device and thereof - Google Patents

Method for estimating pose of device and thereof Download PDF

Info

Publication number
KR20190098003A
KR20190098003A KR1020180050747A KR20180050747A KR20190098003A KR 20190098003 A KR20190098003 A KR 20190098003A KR 1020180050747 A KR1020180050747 A KR 1020180050747A KR 20180050747 A KR20180050747 A KR 20180050747A KR 20190098003 A KR20190098003 A KR 20190098003A
Authority
KR
South Korea
Prior art keywords
posture
generating
determining
feature points
imu data
Prior art date
Application number
KR1020180050747A
Other languages
Korean (ko)
Other versions
KR102442780B1 (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 US16/114,622 priority Critical patent/US10964030B2/en
Publication of KR20190098003A publication Critical patent/KR20190098003A/en
Application granted granted Critical
Publication of KR102442780B1 publication Critical patent/KR102442780B1/en

Links

Images

Classifications

    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/10Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration
    • G01C21/12Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning
    • G01C21/16Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning by integrating acceleration or speed, i.e. inertial navigation
    • GPHYSICS
    • G03PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
    • G03HHOLOGRAPHIC PROCESSES OR APPARATUS
    • G03H1/00Holographic processes or apparatus using light, infrared or ultraviolet waves for obtaining holograms or for obtaining an image from them; Details peculiar thereto
    • G03H1/04Processes or apparatus for producing holograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/1613Constructional details or arrangements for portable computers
    • G06F1/163Wearable computers, e.g. on a belt
    • 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/002Specific input/output arrangements not covered by G06F3/01 - G06F3/16
    • G06F3/005Input arrangements through a video camera
    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • 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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Automation & Control Theory (AREA)
  • Image Analysis (AREA)
  • Analysing Materials By The Use Of Radiation (AREA)

Abstract

Provided are a method for estimating a posture of a device and a device thereof. To estimate a posture of the device, the method generates IMU data of the device, determines a posture at a current time point based on the IMU data, and estimates a posture at a future time point using a current predicted motional state array generated based on the current posture and IMU data.

Description

장치의 자세 추정 방법 및 그 장치{METHOD FOR ESTIMATING POSE OF DEVICE AND THEREOF}Posture estimation method of a device and its device {METHOD FOR ESTIMATING POSE OF DEVICE AND THEREOF}

아래의 실시예들은 장치의 자세를 추정하기 위한 방법 및 그 장치에 관한 것으로, 보다 상세하게는 관성 측정 장치(IMU)를 이용하여 장치의 자세를 추정하는 방법 및 그 장치에 관한 것이다.The following embodiments relate to a method and apparatus for estimating the attitude of the apparatus, and more particularly, to a method and apparatus for estimating the attitude of the apparatus using an inertial measurement apparatus (IMU).

"가상 현실(virtual reality: VR)" 또는 "증강 현실(augmented reality: AR)"과 같은 디스플레이 기술들은 출력된 이미지가 실제인 것처럼 사용자에게 느껴져야 한다. 사용자는 이러한 기술들을 통해 현실에서는 경험할 수 없는, 다양한 경험을 체험할 수 있다. VR 또는 AR을 통해 사용자에게 제공되는 이미지는 실시간성이 중요하다. 특히, 사용자의 자세와 밀접한 관계가 있는 출력 이미지는 사용자의 자세를 정확히 검출해야 한다. 출력 이미지의 실시간성이 낮은 경우, 사용자는 사용자의 자세와 출력 이미지와의 차이에서 발생하는 오차에 의해 불편함을 느낀다.Display technologies such as "virtual reality (VR)" or "augmented reality (AR)" should be felt by the user as if the output image is real. These technologies allow the user to experience a variety of experiences that cannot be experienced in reality. Images provided to the user through VR or AR are important for real time. In particular, the output image closely related to the posture of the user should accurately detect the posture of the user. If the real time of the output image is low, the user may be uncomfortable due to an error occurring in the difference between the posture of the user and the output image.

예를 들어, 사용자의 자세를 검출하기 위해 사용자가 착용하는 방식의 장치가 이용될 수 있다. 많은 센서들을 통해 장치의 자세를 검출하는 타이트 커플링(tight coupling) 방법은 높은 정확도를 갖는 장점이 있으나, 많은 데이터로 인하여 고려해야할 제약들이 많아 계산 속도가 느리고, 지연이 발생한다.For example, a device worn by the user may be used to detect the posture of the user. Tight coupling method of detecting the attitude of the device through many sensors has the advantage of high accuracy, but due to a lot of data, there are many constraints to consider and the calculation speed is slow and delay occurs.

일 실시예는 장치의 위치를 추정하는 방법 및 그 장치를 제공할 수 있다.One embodiment may provide a method of estimating the location of a device and the device.

일 실시예는 루즈 커플링 방법을 이용하여 장치의 위치를 추정하는 방법 및 그 장치를 제공할 수 있다.One embodiment can provide a method and apparatus for estimating the position of a device using a loose coupling method.

일 측면에 따른, 장치에 의해 수행되는 장치의 자세 추정 방법은, 상기 장치의 관성 측정 장치(Inertial Measurement Unit: IMU)를 이용하여 IMU 데이터를 생성하는 단계, 상기 IMU 데이터에 기초하여 상기 장치의 제1 자세(first pose)를 결정하는 단계, 상기 IMU 데이터에 기초하여 현재 예측 운동 상태 배열(present prediction motional state array)을 생성하는 단계, 및 상기 현재 예측 운동 상태 배열에 기초하여, 상기 제1 자세의 제1 시점(first time point) 이후의 제M 시점에서의 제M 예측 자세(prediction pose)를 추정하는 단계를 포함한다.According to an aspect, a method of estimating a posture of a device performed by a device may include generating IMU data using an Inertial Measurement Unit (IMU) of the device, based on the IMU data. Determining a first pose, generating a present prediction motional state array based on the IMU data, and based on the current predicted motion state array, Estimating an M-th prediction pose at a M-th point after the first time point.

상기 현재 예측 운동 상태 배열을 생성하는 단계는, 상기 IMU 데이터를 평탄화(smoothing)하는 단계, 상기 평탄화된 IMU 데이터에 기초하여 상기 제1 시점의 제1 운동 상태 벡터(first motional state vector)를 생성하는 단계, 상기 제1 운동 상태 벡터에 기초하여 제N 시점의 제N 예측 운동 상태 벡터를 결정하는 단계, 및 운동 모델(motional model), 이전 예측 운동 상태 배열(previous prediction motional state array) 및 상기 제N 예측 운동 상태 벡터에 기초하여 상기 현재 예측 운동 상태 배열을 생성하는 단계를 포함할 수 있다.The generating of the current predicted motion state arrangement may include smoothing the IMU data and generating a first motional state vector of the first view based on the flattened IMU data. Determining an Nth predicted motion state vector of the Nth view based on the first motion state vector, and a motion model, a previous prediction motional state array, and the Nth view. And generating the current predicted exercise state array based on a predicted exercise state vector.

상기 제1 운동 상태 벡터를 생성하는 단계는, 상기 제1 자세와 미리 추정된 제1 예측 자세(first prediction pose) 간의 차이에 기초하여 상기 평탄화된 IMU 데이터를 보정함으로써 상기 제1 운동 상태 벡터를 생성하는 단계를 포함할 수 있다.The generating of the first motion state vector may include generating the first motion state vector by correcting the flattened IMU data based on a difference between the first pose and a first estimated pose. It may include the step.

상기 제N 예측 운동 상태 벡터를 결정하는 단계는, 상기 제1 운동 상태 벡터를 입력으로 하는 장단기 메모리(Long-Short Term Memory: LSTM) 방식의 순환 신경망(recurrent neural network)을 이용하여 상기 제N 예측 운동 상태 벡터를 생성하는 단계를 포함할 수 있다.The determining of the N th predicted motion state vector may include: determining the N th predicted motion state vector using a recurrent neural network of a Long-Short Term Memory (LSTM) method using the first motion state vector as an input. Generating an exercise state vector.

상기 제1 운동 상태 벡터를 생성하는 단계는, 상기 장치의 사용자의 안구 운동 속도(ocular movement velocity) 및 사용자의 머리 운동 속도(head movement velocity) 중 적어도 하나에 기초하여 상기 제1 운동 상태 벡터를 생성하는 빈도를 결정하는 단계를 포함할 수 있다.The generating of the first motion state vector may include generating the first motion state vector based on at least one of an ocular movement velocity of a user of the device and a head movement velocity of the user. And determining the frequency of doing so.

상기 자세 추정 방법은, 상기 IMU 데이터에 기초하여 상기 장치의 상태가 정적 상태인지 여부를 결정하는 단계를 더 포함하고, 상기 장치의 제1 자세를 결정하는 단계는, 상기 장치의 상태가 정적 상태인지 여부에 기초하여 제1 자세를 결정하는 단계를 포함할 수 있다.The attitude estimation method further includes determining whether the state of the device is a static state based on the IMU data, and determining the first attitude of the device comprises: determining whether the state of the device is a static state The method may include determining a first posture based on whether or not the posture is determined.

상기 자세 추정 방법은, 상기 제M 시점에서 출력될 가상 오브젝트(virtual object)를 생성하는 단계, 및 상기 가상 오브젝트를 출력하는 단계를 더 포함할 수 있다.The attitude estimation method may further include generating a virtual object to be output at the Mth time point, and outputting the virtual object.

상기 자세 추정 방법은, 상기 가상 오브젝트를 렌더링하는 기간동안 발생하는 장치의 자세 변화에 기초하여 상기 가상 오브젝트를 조정하는 단계를 더 포함할 수 있다.The posture estimating method may further include adjusting the virtual object based on a change in posture of the device occurring during the rendering of the virtual object.

상기 가상 오브젝트를 출력하는 단계는, 제M 시점에 대한 이미지와 상기 가상 오브젝트가 합성되도록 가상 오브젝트를 출력하는 단계를 포함할 수 있다.The outputting of the virtual object may include outputting the virtual object such that the image for the Mth viewpoint and the virtual object are synthesized.

상기 가상 오브제트는 홀로그래픽 이미지(holographic image)일 수 있다.The virtual object may be a holographic image.

상기 자세 추정 방법은, 상기 장치의 주변 공간에 대한 맵을 생성하는 단계, 상기 맵을 이용하여 초기 자세(initial pose)를 결정하는 단계, 및 IMU 데이터에 기초하여 상기 장치가 정적 상태(static state)인지 여부를 결정하는 단계를 더 포함하고, 상기 제1 자세는 상기 장치가 정적 상태인 경우에 결정될 수 있다.The pose estimation method may include generating a map of the surrounding space of the device, determining an initial pose using the map, and based on IMU data, the device is in a static state. Determining whether or not to recognize, wherein the first posture may be determined when the device is in a static state.

상기 맵을 생성하는 단계는, 상기 장치의 왼쪽 카메라를 이용하여 왼쪽 이미지를 생성하는 단계, 상기 왼쪽 이미지로부터 하나 이상의 제1 특징점들을 생성하는 단계, 상기 장치의 오른쪽 카메라를 이용하여 오른쪽 이미지를 생성하는 단계, 상기 오른쪽 이미지로부터 하나 이상의 제2 특징점들을 생성하는 단계, 상기 제1 특징점들 및 상기 제2 특징점들을 매칭하는 단계, 및 제1 특징점들 및 상기 제2 특징점들 중 매칭된 특징점들 및 매칭되지 않은 특징점들에 기초하여 상기 맵을 생성하는 단계를 포함할 수 있다.The generating of the map may include generating a left image using the left camera of the device, generating one or more first feature points from the left image, and generating a right image using the right camera of the device. Generating one or more second feature points from the right image, matching the first feature points and the second feature points, and matching and not matching one of the first feature points and the second feature points. And generating the map based on feature points that are not.

상기 초기 자세를 결정하는 단계는, 상기 왼쪽 카메라 및 상기 오른쪽 카메라 중 적어도 하나에 의해 생성된 이미지로부터 하나의 이상의 특징점(feature point)들을 생성하는 단계, 상기 맵에 미리 설정된 후보 특징점(candidate feature point)들 중 상기 하나 이상의 특징점들에 대응하는 타겟 특징점(target point)을 결정하는 단계, 및 상기 타겟 특징점에 기초하여 상기 초기 자세를 결정하는 단계를 포함할 수 있다.The determining of the initial posture may include generating one or more feature points from an image generated by at least one of the left camera and the right camera, and a candidate feature point preset in the map. The method may include determining a target point corresponding to the one or more feature points, and determining the initial posture based on the target feature point.

상기 초기 자세를 결정하는 단계는, 상기 하나 이상의 특징점들 중 상기 맵에 미리 설정된 후보 특징점들에 대응하지 않은 나머지 특징점(remaining feature point)을 결정하는 단계, 및 상기 나머지 특징점에 대응하는 특징점을 상기 맵에 추가함으로써 상기 맵을 업데이트하는 단계를 더 포함할 수 있다.The determining of the initial posture may include determining a remaining feature point that does not correspond to candidate feature points preset in the map among the one or more feature points, and the feature point corresponding to the remaining feature points. The method may further include updating the map by adding to.

상기 장치는, 웨어러블 장치(wearable device)일 수 있다.The device may be a wearable device.

다른 일 측면에 따른, 자세를 추정하는 장치는, 적어도 하나의 카메라, 관성 측정 장치(Inertial Measurement Unit: IMU), 자세를 추정하는 프로그램이 기록된 메모리, 및 상기 프로그램을 수행하는 프로세서를 포함하고, 상기 프로그램은, 상기 장치의 관성 측정 장치(Inertial Measurement Unit: IMU)를 이용하여 IMU 데이터를 생성하는 단계, 상기 IMU 데이터에 기초하여 상기 장치의 제1 자세(pose)를 결정하는 단계, 상기 IMU 데이터에 기초하여 현재 예측 운동 상태 배열을 생성하는 단계, 및 상기 현재 예측 운동 상태 배열에 기초하여, 상기 제1 자세의 제1 시점 이후의 제M 시점에서의 제M 예측 자세를 추정하는 단계를 수행한다.According to another aspect, an apparatus for estimating a pose includes at least one camera, an inertial measurement unit (IMU), a memory in which a program for estimating a pose is recorded, and a processor for performing the program, The program may include generating IMU data using an Inertial Measurement Unit (IMU) of the device, determining a first pose of the device based on the IMU data, and the IMU data. Generating a current predicted exercise state arrangement based on the second predictive state, and estimating an M-th predicted posture at an M-th time point after a first time point of the first posture based on the current predicted exercise state arrangement. .

도 1은 일 예에 따른 가상 오브젝트가 출력된 이미지들을 도시한다.
도 2는 일 실시예에 따른 장치의 구성도이다.
도 3은 일 예에 따른 장치의 자세 추정을 위한 클러스터 최적화 방법의 흐름도이다.
도 4는 일 예에 따른 제1 클러스터 최적화 방법의 흐름도이다.
도 5는 일 예에 따른 장치의 주변 공간에 대한 맵을 생성하는 방법의 흐름도이다.
도 6은 일 예에 따른 맵을 이용하여 초기 자세를 결정하는 방법의 흐름도이다.
도 7은 일 예에 따른 초기 자세를 결정하는 동안 클러스터를 최적화하는 방법을 도시한다.
도 8은 일 예에 따른 맵을 업데이트하는 방법의 흐름도이다.
도 9는 일 예에 따른 제2 클러스터 최적화 방법을 도시한다.
도 10은 일 실시예에 따른 제2 클러스터 최적화를 통해 제M 예측 자세를 추정하는 방법의 흐름도이다.
도 11은 일 예에 따른 현재 예측 운동 상태 배열을 생성하는 방법의 흐름도이다.
도 12는 일 예에 따른 제i 시점의 자세에 기초하여 제i+x 시점의 자세를 추정하는 방법을 도시한다.
도 13은 일 예에 따른 현재 예측 운동 상태 배열을 계산하는 방법을 도시한다.
도 14는 일 예에 따른 정적 상태를 검출하는 방법을 도시한다.
도 15는 일 예에 따른 순환 검출에 의해 발생한 지터에 의한 결과를 도시한다.
도 16은 일 예에 따른 가상 오브젝트를 출력하는 방법의 흐름도이다.
도 17은 일 예에 따른 장치의 추정 자세에 기초하여 합성 이미지를 출력하는 방법을 도시한다.
도 18은 일 예에 따른 장치의 모듈들의 구성도이다.
도 19는 일 예에 따른 다양한 검측 방법에 따른 자세 추정 결과를 도시한다.
1 illustrates images in which a virtual object is output according to an example.
2 is a block diagram of an apparatus according to an embodiment.
3 is a flowchart illustrating a cluster optimization method for attitude estimation of an apparatus according to an example.
4 is a flowchart of a first cluster optimization method according to an example.
5 is a flowchart of a method of generating a map for a peripheral space of a device according to an example.
6 is a flowchart of a method of determining an initial posture using a map according to an example.
7 illustrates a method of optimizing a cluster while determining an initial posture according to an example.
8 is a flowchart of a method of updating a map, according to an example.
9 illustrates a second cluster optimization method according to an example.
10 is a flowchart of a method of estimating an M-th prediction attitude through second cluster optimization, according to an embodiment.
11 is a flowchart of a method of generating a current predicted exercise state arrangement according to an example.
12 illustrates a method of estimating an attitude of an i + x point of view based on an attitude of an i th view according to an example.
13 illustrates a method of calculating a current predicted exercise state arrangement according to an example.
14 illustrates a method of detecting a static state according to an example.
15 illustrates a result due to jitter generated by circular detection according to an example.
16 is a flowchart of a method of outputting a virtual object according to an example.
17 illustrates a method of outputting a composite image based on an estimated attitude of the apparatus according to an example.
18 is a block diagram illustrating modules of an apparatus according to an example.
19 is a view illustrating a pose estimation result according to various detection methods according to an example.

이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, exemplary embodiments will be described in detail with reference to the accompanying drawings. However, the scope of the patent application is not limited or limited by these embodiments. Like reference numerals in the drawings denote like elements.

아래 설명하는 실시예들에는 다양한 변경이 가해질 수 있다. 아래 설명하는 실시예들은 실시 형태에 대해 한정하려는 것이 아니며, 이들에 대한 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.Various modifications may be made to the embodiments described below. The examples described below are not intended to be limited to the embodiments and should be understood to include all modifications, equivalents, and substitutes for them.

실시예에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 실시예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular example embodiments only and is not intended to be limiting of examples. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this specification, terms such as "comprise" or "have" are intended to indicate that there is a feature, number, step, action, component, part, or combination thereof described on the specification, and one or more other features. It is to be understood that the present invention does not exclude the possibility of the presence or the addition of numbers, steps, operations, components, components, or a combination thereof.

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

또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.In addition, in the description with reference to the accompanying drawings, the same components regardless of reference numerals will be given the same reference numerals and duplicate description thereof will be omitted. In the following description of the embodiment, when it is determined that the detailed description of the related known technology may unnecessarily obscure the gist of the embodiment, the detailed description thereof will be omitted.

도 1은 일 예에 따른 가상 오브젝트가 출력된 이미지들을 도시한다.1 illustrates images in which a virtual object is output according to an example.

예를 들어, 제1 이미지(110)는 실제 오브젝트(111) 및 가상 오브젝트(112)를 포함한다. 가상 오브젝트(112)는 실제 오브젝트(111)에 대한 부가 정보일 수 있다. 제1 이미지(11) 내의 가상 오브젝트(112)의 위치는 사용자의 시선 및 실제 오브젝트(111)의 위치에 기초하여 결정될 수 있다.For example, the first image 110 includes a real object 111 and a virtual object 112. The virtual object 112 may be additional information about the real object 111. The position of the virtual object 112 in the first image 11 may be determined based on the gaze of the user and the position of the real object 111.

사용자의 시선이 변화하는 경우, 제2 이미지(120)는 변화한다. 제2 이미지(120)는 실제 오브젝트(110)에 대응하는 실제 오브젝트(121) 및 가상 오브젝트(112)에 대응하는 가상 오브젝트(122)를 포함한다. 제2 이미지(120) 내의 실제 오브젝트(121)의 위치는 사용자의 시선을 반영하여 즉각적으로 변화한다. 그러나, 사용자의 시선이 즉각적으로 검출되지 않는 경우, 제2 이미지(120) 내의 가상 오브젝트(122)의 위치가 변경되지 않고, 가상 오브젝트(112)의 위치와 동일하게 결정될 수 있다. 이에 따라, 제2 이미지(120)에 나타나는 실제 오브젝트(121) 및 가상 오브젝트(122) 간의 상대 위치가 적절하지 않을 수 있다.When the user's gaze changes, the second image 120 changes. The second image 120 includes a real object 121 corresponding to the real object 110 and a virtual object 122 corresponding to the virtual object 112. The position of the actual object 121 in the second image 120 changes immediately to reflect the user's gaze. However, when the gaze of the user is not immediately detected, the position of the virtual object 122 in the second image 120 is not changed and may be determined to be the same as the position of the virtual object 112. Accordingly, the relative position between the real object 121 and the virtual object 122 appearing in the second image 120 may not be appropriate.

일 측면에 따르면, 사용자의 시선은 사용자의 시선에 대응하는 장치의 자세를 결정함으로써 검출될 수 있다. 장치의 자세는 장치의 센서들을 통해 결정 또는 추정될 수 있다. 아래에서 도 2 내지 도 18을 참조하여 장치의 자세를 추정하는 방법에 대해 상세히 설명한다.According to one aspect, the gaze of the user may be detected by determining a posture of the device corresponding to the gaze of the user. The attitude of the device may be determined or estimated through the sensors of the device. Hereinafter, a method of estimating the attitude of the apparatus will be described in detail with reference to FIGS. 2 to 18.

아래에서 용어 "자세"는 현재 측정된 데이터를 이용하여 결정된 현재의 자세를 의미하고, 용어 "예측 자세"는 현재 측정된 데이터를 이용하여 추정된 미래의 자세를 의미한다.The term "posture" below means the current posture determined using the currently measured data, and the term "predictive posture" means the future posture estimated using the currently measured data.

도 2는 일 실시예에 따른 장치의 구성도이다.2 is a block diagram of an apparatus according to an embodiment.

장치(200)는 통신부(210), 프로세서(220), 메모리(230), 카메라(240) 및 관성 측정 장치(Inertial Measurement Unit: IMU)를 포함한다. 장치(200)는 전자 장치일 수 있다. 예를 들어, 장치(200)는 사용자에게 AR 또는 VR을 제공하기 위한 이미지를 출력하는 장치일 수 있다. 일 측면에 따르면, 장치(200)는 웨어러블 장치(wearable device)일 수 있다. 예를 들어, 장치(200)는 안경 형태 또는 HMD(head mounted display)일 수 있으나, 이에 한정되지 않는다. 다른 일 측면에 따르면, 장치(200)는 사용자의 위치 측정, 사용자의 위치 추정 등에 이용될 수 있다. 또 다른 일 측면에 따르면, 장치(200)는 자율 주행을 위해 이용될 수 있다.The apparatus 200 includes a communication unit 210, a processor 220, a memory 230, a camera 240, and an inertial measurement unit (IMU). The device 200 may be an electronic device. For example, the device 200 may be a device that outputs an image for providing AR or VR to a user. According to an aspect, the device 200 may be a wearable device. For example, the device 200 may be in the form of glasses or a head mounted display (HMD), but is not limited thereto. According to another aspect, the device 200 may be used to measure the location of the user, estimate the location of the user, and the like. According to another aspect, the device 200 may be used for autonomous driving.

통신부(210)는 프로세서(220), 메모리(230), 카메라(240) 및 IMU(250)와 연결되어 데이터를 송수신한다. 통신부(210)는 외부의 다른 장치와 연결되어 데이터를 송수신할 수 있다.The communication unit 210 is connected to the processor 220, the memory 230, the camera 240, and the IMU 250 to transmit and receive data. The communication unit 210 may be connected to another external device to transmit and receive data.

통신부(210)는 장치(200) 내의 회로망(circuitry)으로 구현될 수 있다. 예를 들어, 통신부(210)는 내부 버스(internal bus) 및 외부 버스(external bus)를 포함할 수 있다. 다른 예로, 통신부(210)는 장치(200)와 외부의 장치를 연결하는 요소일 수 있다. 통신부(210)는 인터페이스(interface)일 수 있다. 통신부(210)는 외부의 장치로부터 데이터를 수신하여, 프로세서(220) 및 메모리(230)에 데이터를 전송할 수 있다.The communication unit 210 may be implemented as a circuit in the device 200. For example, the communication unit 210 may include an internal bus and an external bus. As another example, the communication unit 210 may be an element connecting the device 200 to an external device. The communication unit 210 may be an interface. The communication unit 210 may receive data from an external device and transmit data to the processor 220 and the memory 230.

프로세서(220)는 통신부(210)가 수신한 데이터 및 메모리(230)에 저장된 데이터를 처리한다. "프로세서"는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다. 예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.The processor 220 processes data received by the communication unit 210 and data stored in the memory 230. A "processor" may be a data processing device implemented in hardware having circuitry having a physical structure for performing desired operations. For example, desired operations may include code or instructions included in a program. For example, data processing devices implemented in hardware may include a microprocessor, a central processing unit, a processor core, a multi-core processor, and a multiprocessor. , An application-specific integrated circuit (ASIC), and a field programmable gate array (FPGA).

프로세서(220)는 메모리(예를 들어, 메모리(230))에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(220)에 의해 유발된 인스트럭션들을 실행한다.The processor 220 executes computer readable code (eg, software) stored in the memory (eg, memory 230) and instructions caused by the processor 220.

메모리(230)는 통신부(210)가 수신한 데이터 및 프로세서(220)가 처리한 데이터를 저장한다. 예를 들어, 메모리(230)는 프로그램을 저장할 수 있다. 저장되는 프로그램은 장치의 자세를 추정할 수 있도록 코딩되어 프로세서(220)에 의해 실행 가능한 신텍스(syntax)들의 집합일 수 있다.The memory 230 stores data received by the communication unit 210 and data processed by the processor 220. For example, the memory 230 may store a program. The stored program may be a set of syntaxes that are coded to estimate the attitude of the device and executable by the processor 220.

일 측면에 따르면, 메모리(230)는 하나 이상의 휘발성 메모리, 비휘발성 메모리 및 RAM(Random Access Memory), 플래시 메모리, 하드 디스크 드라이브 및 광학 디스크 드라이브를 포함할 수 있다.According to one aspect, the memory 230 may include one or more volatile memory, nonvolatile memory and random access memory (RAM), flash memory, hard disk drive, and optical disk drive.

메모리(230)는 장치(200)를 동작 시키는 명령어 세트(예를 들어, 소프트웨어)를 저장한다. 장치(200)를 동작 시키는 명령어 세트는 프로세서(220)에 의해 실행된다.The memory 230 stores a set of instructions (eg, software) for operating the device 200. The instruction set for operating the device 200 is executed by the processor 220.

카메라(240)는 장면을 촬영함으로써 이미지를 생성한다. 예를 들어, 카메라(240)는 사용자의 왼쪽 눈에 출력될 왼쪽 이미지를 생성하는 왼쪽 카메라 및 사용자의 오른쪽 눈에 출력될 오른쪽 이미지를 생성하는 오른쪽 카메라를 포함할 수 있다. 왼쪽 이미지 및 오른쪽 이미지 간에는 양안 시차가 있다. 다른 예로, 카메라(240)는 하나의 이미지를 생성할 수 있고, 프로세서(220)는 이미지 와핑(warping)과 같은 이미지 처리 방법을 이용하여 왼쪽 이미지 및 오른쪽 이미지를 생성할 수 있다.The camera 240 generates an image by photographing a scene. For example, the camera 240 may include a left camera that generates a left image to be output to the user's left eye and a right camera that generates a right image to be output to the user's right eye. There is a binocular parallax between the left image and the right image. As another example, the camera 240 may generate one image, and the processor 220 may generate a left image and a right image using an image processing method such as image warping.

IMU(250)는 장치(200)의 움직임에 따른 가속도 및 각속도를 측정함으로써 IMU 데이터를 생성할 수 있다.The IMU 250 may generate IMU data by measuring acceleration and angular velocity according to the movement of the device 200.

도시되지는 않았으나, 장치(200)는 장치(200)의 위치 또는 자세를 측정할 수 있는 센서들을 포함할 수 있다. 예를 들어, 장치(200)는 GPS(global positioning system)를 포함할 수 있고, 기재된 실시예로 한정되지 않는다.Although not shown, the device 200 may include sensors capable of measuring the position or posture of the device 200. For example, device 200 may include a global positioning system (GPS) and is not limited to the described embodiments.

통신부(210), 프로세서(220), 메모리(230), 카메라(240) 및 IMU(250)에 대해, 아래에서 도 3 내지 도 18을 참조하여 상세히 설명된다.The communication unit 210, the processor 220, the memory 230, the camera 240, and the IMU 250 will be described in detail with reference to FIGS. 3 to 18 below.

도 3은 일 예에 따른 장치의 자세 추정을 위한 클러스터 최적화 방법의 흐름도이다.3 is a flowchart illustrating a cluster optimization method for attitude estimation of an apparatus according to an example.

일 측면에 따르면, 장치(200)의 자세를 추정하기 위해 제1 클러스터 최적화 단계(310) 및 제2 클러스터 최적화 단계(320)가 수행될 수 있다. 클러스터 최적화는 장치(200)의 자세를 추정하기 위해 이용되는 파라미터들 및 알고리즘을 최적화하는 것을 의미한다.According to one aspect, the first cluster optimization step 310 and the second cluster optimization step 320 may be performed to estimate the attitude of the apparatus 200. Cluster optimization means optimizing the parameters and algorithms used to estimate the attitude of the device 200.

제1 클러스터 최적화 단계(310)는 타이트 커플링(tight coupling) 클러스터 최적화 방식을 이용하여 수행될 수 있다. 타이트 커플링 클러스터 최적화 방식은 많은 수의 센서들을 이용하여 측정된 데이터를 이용하여 장치(200)의 자세를 추정한다. 예를 들어, 카메라(240)를 이용하여 생성된 이미지 및 IMU(250)를 이용하여 생성된 IMU 데이터가 장치(200)의 자세를 추정하기 위해 이용될 수 있다. 제1 클러스터 최적화 단계(310)에 대해 아래에서 도 4 내지 도 8을 참조하여 상세히 설명된다.The first cluster optimization step 310 may be performed using a tight coupling cluster optimization scheme. The tight coupling cluster optimization method estimates the attitude of the device 200 using the data measured using a large number of sensors. For example, an image generated using the camera 240 and IMU data generated using the IMU 250 may be used to estimate the attitude of the device 200. The first cluster optimization step 310 is described in detail with reference to FIGS. 4 to 8 below.

제2 클러스터 최적화 단계(320)는 루즈 커플링(loose coupling) 클러스터 최적화 방식을 이용하여 수행할 수 있다. 루즈 커플링 클러스터 최적화 방식은 적은 수의 센서들을 이용하여 측정된 데이터를 이용하여 장치(200)의 자세를 추정한다. 예를 들어, IMU(250)를 이용하여 생성된 IMU 데이터만이 장치(200)의 자세를 추정하기 위해 이용될 수 있다. IMU 데이터는 장치(200)의 가속도 및 각속도를 포함하므로, IMU 데이터를 적분하고, 적분된 값을 이전 자세에 중첩하는 경우 현재 자세를 결정할 수 있다.The second cluster optimization step 320 may be performed using a loose coupling cluster optimization scheme. The loose coupling cluster optimization method estimates the attitude of the device 200 using the data measured using a small number of sensors. For example, only IMU data generated using IMU 250 may be used to estimate the attitude of device 200. Since the IMU data includes the acceleration and the angular velocity of the device 200, the current attitude may be determined when integrating the IMU data and overlapping the integrated value with the previous attitude.

자세를 추정하기 위해 이용되는 데이터가 적을수록 자세가 빠르게 추정될 수 있다. 제2 클러스터 최적화 단계(320)에 대해 아래에서 도 9 내지 도 15를 참조하여 상세히 설명된다. The less data used to estimate the posture, the faster the posture can be estimated. A second cluster optimization step 320 is described in detail below with reference to FIGS. 9-15.

도 4는 일 예에 따른 제1 클러스터 최적화 방법의 흐름도이다.4 is a flowchart of a first cluster optimization method according to an example.

도 3을 참조하여 전술된 단계(310)는 아래의 단계들(410 내지 440)을 포함한다.Step 310 described above with reference to FIG. 3 includes steps 410 through 440 below.

단계(410)에서, 장치(200)는 장치(200)의 주변 공간에 대한 맵을 생성한다. 장치(200)의 카메라(240)를 통해 촬영된 이미지들을 이용하여 맵이 생성될 수 있다. 맵을 생성하는 방법에 대해, 아래에서 도 5를 참조하여 상세히 설명된다.In operation 410, the device 200 generates a map of the surrounding space of the device 200. The map may be generated using the images captured by the camera 240 of the device 200. A method of generating a map is described in detail with reference to FIG. 5 below.

단계(420)에서, 장치(200)는 맵을 이용하여 장치(200)의 초기 자세(initial pose)를 결정한다. 초기 자세를 결정하는 방법에 대해, 아래에서 도 6을 참조하여 상세히 설명된다.In operation 420, the device 200 determines an initial pose of the device 200 using the map. A method of determining an initial posture is described in detail with reference to FIG. 6 below.

단계(430)에서, 장치(200)는 IMU 데이터에 기초하여 장치(200)의 상태가 정적 상태(static condition)인지 여부를 결정한다. 정적 상태는 장치(200)의 움직임이 없거나, 미리 설정된 임계 값 이하의 움직임이 나타나는 것을 의미한다.In step 430, the device 200 determines whether the state of the device 200 is a static condition based on the IMU data. The static state means that there is no movement of the device 200 or a movement below a preset threshold appears.

IMU 데이터에는 통상적으로 노이즈가 포함되어 있고, 노이즈는 장치(200)의 추측 자세의 오차를 유발한다. 장치(200)의 정적 상태(또는 정지 상태)를 이용하여 자세를 추정하는 경우 노이즈의 영향을 줄일 수 있다. IMU 데이터의 국부적 변이를 분석함으로써 장치(200)가 정적 상태에 있는지가 검출될 수 있다. 장치(200)가 정지 상태인 경우, 그 다음 시점에서 클러스터 최적화를 수행할 때 자세 추정의 정확성을 높이기 위해 제약 조건을 추가한다. 제약 조건은 아래와 같다.The IMU data typically contains noise, which causes errors in the guess pose of the device 200. When the posture is estimated using the static state (or the stationary state) of the device 200, the influence of noise may be reduced. By analyzing local variations of the IMU data, it may be detected whether the device 200 is in a static state. If the device 200 is stationary, then constraints are added to increase the accuracy of attitude estimation when performing cluster optimization at the next point in time. Constraints are as follows:

i) 장치(200)의 위치는 맵 포인트의 공간적 위치(예를 들어, 3차원 위치)와 이에 대응하는 이미지(왼쪽 이미지/또는 오른쪽 이미지)의 특징점의 위치에 기초하여 획득할 수 있다. ii) 공간에서의 새로운 맵 포인트의 위치는 장치(200)의 위치와 이미지 상의 새로운 맵 포인트에 대응하는 특징점의 위치에 의해 계산될 수 있다. iii) 전, 후의 이미지들 간의 IMU 데이터 및 IMU 파라미터들을 통해 전, 후의 이미지들 간의 장치의 위치 및 자세가 계산될 수 있다. IMU 파라미터들은 운동 상태 벡터일 수 있다. iv) IMU 파라미터들은 복수의 이미지들 간의 IMU 데이터 및 상기의 복수의 이미지들에 대응하는 장치(200)의 자세를 이용하여 계산될 수 있다. v) 검출된 정지 상태를 통해, 두 개의 이미지들 사이의 자세가 0으로 변화하는 것으로 결정될 수 있다.i) The location of the device 200 may be obtained based on the spatial location of the map point (eg, three-dimensional location) and the location of the feature point of the image (left image / or right image) corresponding thereto. ii) The location of the new map point in space may be calculated by the location of the device 200 and the feature point corresponding to the new map point on the image. iii) The position and attitude of the device between the before and after images can be calculated through the IMU data and the IMU parameters between the before and after images. The IMU parameters may be a workout state vector. iv) IMU parameters may be calculated using IMU data between a plurality of images and a pose of the device 200 corresponding to the plurality of images. v) Through the detected still state, it can be determined that the posture between two images changes to zero.

맵 포인트, 장치(200)의 자세 및 IMU 데이터 간의 제약 조건이 존재하기 때문에, 이 제약 조건을 최대한 만족하는 장치(200)의 자세가 결정될 수 있다. 상기의 제약 조건의 개수를 많이 만족할수록 정확한 자세가 추정될 수 있으나, 추정 속도는 느려지게된다.Since there is a constraint between the map point, the attitude of the device 200 and the IMU data, the attitude of the device 200 that satisfies this constraint as much as possible may be determined. The more the number of the above constraints is satisfied, the more accurate attitude can be estimated, but the estimation speed is slower.

단계(440)에서, 장치(200)의 상태에 따라 제1 클러스터 최적화가 재수행될지 또는 제2 클러스터 최적화가 수행될지가 결정된다.In step 440, it is determined whether the first cluster optimization or the second cluster optimization is performed according to the state of the device 200.

제1 클러스터 최적화 단계(310)를 통해, 제2 클러스터 최적화 단계(320)에서 자세 추정을 위해 이용될 파라미터 및 알고리즘이 최적화될 수 있다. 제2 클러스터 최적화 단계(320)에서 자세 추정을 위해 이용될 파라미터 및 알고리즘에 대해, 아래에서 도 10 내지 13을 참조하여 상세히 설명된다.Through the first cluster optimization step 310, parameters and algorithms to be used for attitude estimation in the second cluster optimization step 320 may be optimized. Parameters and algorithms to be used for attitude estimation in the second cluster optimization step 320 are described in detail with reference to FIGS. 10 to 13 below.

도 5는 일 예에 따른 장치의 주변 공간에 대한 맵을 생성하는 방법의 흐름도이다.5 is a flowchart of a method of generating a map for a peripheral space of a device according to an example.

도 4를 참조하여 전술된 단계(410)는 아래의 단계들(510 내지 540)을 포함한다.Step 410 described above with reference to FIG. 4 includes steps 510-540 below.

단계(510)에서, 장치(200)는 왼쪽 이미지를 생성할 수 있다. 예를 들어, 왼쪽 카메라를 이용하여 왼쪽 이미지를 생성한다. 다른 예로, 장치(200)는 카메라를 이용하여 촬영된 기준 이미지를 와핑함으로써 왼쪽 이미지를 생성할 수 있다.In operation 510, the device 200 may generate a left image. For example, the left camera is used to generate the left image. As another example, the device 200 may generate a left image by warping a reference image photographed using a camera.

단계(515)에서, 장치(200)는 생성된 왼쪽 이미지 내의 하나 이상의 제1 특징점(feature point)들을 생성한다. 특징점은 이미지 내의 엣지 및 텍스쳐일 수 있다. 예를 들어, 장치(200)는 특징점을 생성하기 위해 brisk 및 sift와 같은 방법을 이용할 수 있다.In step 515, device 200 generates one or more first feature points in the generated left image. The feature points can be edges and textures in the image. For example, device 200 may use methods such as brisk and sift to generate feature points.

단계(520)에서, 장치(200)는 오른쪽 이미지를 생성할 수 있다. 예를 들어, 오른쪽 카메라를 이용하여 오른쪽 이미지를 생성한다. 다른 예로, 장치(200)는 카메라를 이용하여 촬영된 기준 이미지를 와핑함으로써 오른쪽 이미지를 생성할 수 있다.In operation 520, the device 200 may generate a right image. For example, the right camera is used to generate the right image. As another example, the device 200 may generate a right image by warping a reference image photographed using a camera.

단계(525)에서, 장치(200)는 생성된 오른쪽 이미지 내의 하나 이상의 제2 특징점들을 생성한다.In step 525, device 200 generates one or more second feature points in the generated right image.

단계(530)에서, 장치(200)는 제1 특징점 및 제2 특징점을 매칭한다. 예를 들어, 장치(200)는 RANSAC(fitting via random sample consensus) 방법을 이용하여 매칭 관계를 검증하고, 잘못된 매칭을 제거할 수 있다.In step 530, the device 200 matches the first feature point and the second feature point. For example, the device 200 may verify a matching relationship and remove erroneous matching using a fitting via random sample consensus (RANSAC) method.

단계(540)에서, 장치(200)는 제1 특징점 및 제2 특징점 중 매칭된 특징점 및 매칭되지 않은 특징점에 기초하여 맵을 생성한다.In operation 540, the device 200 generates a map based on the matched and non-matched feature points of the first and second feature points.

도 6은 일 예에 따른 맵을 이용하여 초기 자세를 결정하는 방법의 흐름도이다.6 is a flowchart of a method of determining an initial posture using a map according to an example.

도 4를 참조하여 전술된 단계(420)는 아래의 단계들(610 내지 630)을 포함한다.Step 420 described above with reference to FIG. 4 includes steps 610 through 630 below.

단계(610)에서, 장치(200)는 카메라에 의해 생성된 이미지로부터 하나 이상의 특징점들을 생성한다.In step 610, the device 200 generates one or more feature points from the image generated by the camera.

단계(620)에서, 장치(200)는 맵에 미리 설정된 후보 특징점(candidate feature point)들 중 하나 이상의 특징점들에 대응하는 타겟 특징점을 결정한다.In operation 620, the device 200 determines a target feature point corresponding to one or more feature points among candidate feature points preset in the map.

단계(630)에서, 장치(200)는 타겟 특징점에 기초하여 장치(200)의 초기 자세를 결정한다. 예를 들어, 초기 자세는 사용자의 시선에 대응하는 카메라(240)(또는 장치(200))의 현재 자세일 수 있다. 자세는 카메라의 시점(view point)를 의미할 수 있다.In step 630, the device 200 determines an initial pose of the device 200 based on the target feature point. For example, the initial pose may be the current pose of the camera 240 (or the device 200) corresponding to the gaze of the user. The posture may mean a view point of the camera.

단계(310)가 반복적으로 수행되는 동안, 장치(200)의 미래 자세를 추정하기 위한 파라미터들이 최적화될 수 있다. 단계(310)를 통해 최적화된 파라미터들은 단계(320)에서 연속적으로 이용될 수 있다.While step 310 is repeatedly performed, parameters for estimating the future pose of the device 200 may be optimized. The parameters optimized through step 310 may be used continuously in step 320.

도 7은 일 예에 따른 초기 자세를 결정하는 동안 클러스터를 최적화하는 방법을 도시한다.7 illustrates a method of optimizing a cluster while determining an initial posture according to an example.

제1 자세(710)에서 촬영된 이미지 및 맵을 이용하여 장치(200)의 제1 자세(710)가 결정된다. 예를 들어, 제1 자세(710)에서 촬영된 이미지에 기초하여 맵의 타겟 특징점들(721, 722)이 결정될 수 있다. 사용자는 장치(200)를 착용하고 이동할 수 있다. 이동하는 동안, 장치(200)의 운동 상태가 검출될 수 있다. 운동 상태는 IMU 데이터일 수 있다. 결정된 제1 자세(710) 및 IMU 데이터에 기초하여 제1 자세(710) 이후의 장치(200)의 자세가 추정될 수 있다. 추정된 자세의 오차를 감소시키기 위해 노이즈가 필터링된 IMU 데이터가 이용될 수 있다. 예를 들어, 노이즈 바이어스된 IMU 데이터가 자세를 추정하기 위해 이용될 수 있다.The first pose 710 of the apparatus 200 is determined by using the image and the map photographed in the first pose 710. For example, target feature points 721 and 722 of the map may be determined based on the image photographed in the first posture 710. The user may wear and move the device 200. While moving, the athletic state of the device 200 may be detected. The athletic condition may be IMU data. The posture of the device 200 after the first posture 710 may be estimated based on the determined first posture 710 and the IMU data. Noise-filtered IMU data may be used to reduce the error of the estimated pose. For example, noise biased IMU data may be used to estimate attitude.

제2 자세(711)에서 촬영된 이미지 및 맵을 이용하여 장치(200)의 제2 자세(711)가 결정된다. 예를 들어, 제2 자세(711)에서 촬영된 이미지에 기초하여 맵의 타겟 특징점들(721, 722, 723, 724, 725)이 결정될 수 있다. 결정된 제2 자세(711) 및 IMU 데이터에 기초하여 제2 자세(711) 이후의 장치(200)의 자세가 추정될 수 있다.The second posture 711 of the device 200 is determined by using the image and the map photographed in the second posture 711. For example, target feature points 721, 722, 723, 724, and 725 of the map may be determined based on the image photographed in the second posture 711. The posture of the device 200 after the second posture 711 may be estimated based on the determined second posture 711 and the IMU data.

제3 자세(712)에서 촬영된 이미지 및 맵을 이용하여 장치(200)의 제3 자세(712)가 결정된다. 예를 들어, 제3 자세(712)에서 촬영된 이미지에 기초하여 맵의 타겟 특징점들(723, 725, 726, 728, 729)이 결정될 수 있다. 결정된 제3 자세(712) 및 IMU 데이터에 기초하여 제3 자세(712) 이후의 장치(200)의 자세가 추정될 수 있다.The third pose 712 of the apparatus 200 is determined by using the image and the map photographed in the third pose 712. For example, target feature points 723, 725, 726, 728, and 729 of the map may be determined based on the image photographed in the third posture 712. The posture of the device 200 after the third posture 712 may be estimated based on the determined third posture 712 and the IMU data.

제4 자세(713)에서 촬영된 이미지 및 맵을 이용하여 장치(200)의 제4 자세(713)가 결정된다. 예를 들어, 제4 자세(713)에서 촬영된 이미지에 기초하여 맵의 타겟 특징점들(726, 727, 728, 729)이 결정될 수 있다. 결정된 제4 자세(712) 및 IMU 데이터에 기초하여 제4 자세(713) 이후의 장치(200)의 자세가 추정될 수 있다.The fourth posture 713 of the apparatus 200 is determined using the image and the map photographed in the fourth posture 713. For example, target feature points 726, 727, 728, and 729 of the map may be determined based on the image photographed in the fourth posture 713. The posture of the device 200 after the fourth posture 713 may be estimated based on the determined fourth posture 712 and the IMU data.

제1 자세(710) 내지 제4 자세(713)가 실제의 자세로 결정되고, 실제 자세에 기초하여 자세를 추정하기 위한 파라미터들이 조정될 수 있다. 반복적인 추정을 통해 실제 자세 및 추정 자세 간의 오차가 감소할 수 있다.The first postures 710 to 713 may be determined as actual postures, and parameters for estimating postures based on the actual postures may be adjusted. By iterative estimation, the error between the actual pose and the estimated pose may be reduced.

제1 자세(710) 내지 제4 자세(713)의 각각은 초기 자세일 수 있고, 제2 클러스터 최적화를 위해 초기 자세가 업데이트되는 것으로 이해될 수 있다.Each of the first postures 710 to 713 may be an initial posture, and it may be understood that the initial posture is updated for the second cluster optimization.

도 8은 일 예에 따른 맵을 업데이트하는 방법의 흐름도이다.8 is a flowchart of a method of updating a map, according to an example.

도 4를 참조하여 전술된 단계(420)는 아래의 단계들(810 및 820)을 더 포함할 수 있다.Step 420 described above with reference to FIG. 4 may further include steps 810 and 820 below.

단계(810)에서, 장치(200)는 생성된 이미지의 하나 이상의 특징점들 중 맵에 미리 설정된 후보 특징점들에 대응하지 않은 나머지 특징점(remaining feature point)을 결정한다.In operation 810, the apparatus 200 determines a remaining feature point that does not correspond to candidate feature points preset in the map among one or more feature points of the generated image.

단계(810)에서, 장치(200)는 나머지 특징점에 대응하는 특징점을 맵에 추가함으로써 맵을 업데이트한다. 추가된 특징점은 후보 특징점이 된다. 후보 특징점이 증가할수록 특징점을 이용하여 결정되는 장치(200)의 자세의 정확도가 증가할 수 있다.In step 810, the device 200 updates the map by adding feature points corresponding to the remaining feature points to the map. The added feature point becomes a candidate feature point. As the candidate feature points increase, the accuracy of the attitude of the device 200 determined using the feature points may increase.

도 9는 일 예에 따른 제2 클러스터 최적화 방법을 도시한다.9 illustrates a second cluster optimization method according to an example.

루즈 커플링 클러스터 최적화 방식을 이용한 제2 클러스터 최적화 방법은 적은 수의 센서들에 의해 측정된 데이터를 이용하여 빠르게 장치(200)의 자세를 추정하는 방법이다. 예를 들어, 제1 클러스터 최적화 방법에서 이용되는 데이터들보다 적은 수의 데이터가 이용될 수 있다. 적은 수의 데이터가 이용됨으로써 장치(200)의 자세 추정 속도가 증가할 수 있다.The second cluster optimization method using the loose coupling cluster optimization method is a method of quickly estimating the attitude of the apparatus 200 using data measured by a small number of sensors. For example, fewer data may be used than data used in the first cluster optimization method. By using a small number of data, the attitude estimation speed of the device 200 may be increased.

일 측면에 따르면, IMU 데이터를 이용하여 장치(200)의 현재 자세를 결정하고, IMU 데이터의 히스토리를 이용하여 미래의 장치(200)의 자세를 추정할 수 있다. 현재 자세 및 추정 자세 간의 차이를 감소시키기 위해 순환 검출이 이용될 수 있다.According to one aspect, the current posture of the device 200 may be determined using the IMU data, and the posture of the future device 200 may be estimated using the history of the IMU data. Circular detection may be used to reduce the difference between the current pose and the estimated pose.

아래에서 도 10 내지 도 15를 참조하여 루즈 커플링 클러스터 최적화 방식을 이용하여 장치(200)의 자세를 추정하는 방법이 상세히 설명된다.Hereinafter, a method of estimating the attitude of the apparatus 200 using the loose coupling cluster optimization scheme will be described in detail with reference to FIGS. 10 to 15.

도 10은 일 실시예에 따른 제2 클러스터 최적화를 통해 제M 예측 자세를 추정하는 방법의 흐름도이다.10 is a flowchart of a method of estimating an M-th prediction attitude through second cluster optimization, according to an embodiment.

도 3을 참조하여 전술된 단계(320)는 아래의 단계들(1010 내지 1040)을 포함할 수 있다. 일 측면에 따르면, 단계(320)는 장치(200)의 상태가 정적 상태인 경우에 수행될 수 있다.Step 320 described above with reference to FIG. 3 may include steps 1010 to 1040 below. According to one aspect, step 320 may be performed when the state of the device 200 is in a static state.

단계(1010)에서, 장치(200)는 IMU(250)를 이용하여 IMU 데이터를 생성한다.In step 1010, the device 200 generates IMU data using the IMU 250.

단계(1020)에서, 장치(200)는 IMU 데이터에 기초하여 장치(200)의 제1 자세(first pose)를 결정한다. 제1 자세는 현재 시점(i 시점)의 장치(200)의 자세이다.In step 1020, the device 200 determines a first pose of the device 200 based on the IMU data. The first posture is the posture of the device 200 at the present time (i time point).

일 측면에 따르면, 장치(200)는 장치(200)의 상태가 정적 상태인지 여부에 기초하여 제1 자세를 결정할 수 있다. 예를 들어, 장치(200)는 장치(200)의 상태가 정적 상태인 경우, IMU 데이터를 이용하여 제1 자세를 결정한다.According to one aspect, the device 200 may determine the first posture based on whether the state of the device 200 is a static state. For example, when the device 200 is in a static state, the device 200 determines the first posture using the IMU data.

단계(1030)에서, 장치(200)는 IMU 데이터에 기초하여 현재 예측 운동 상태 배열을 생성한다. 용어 "예측 운동 상태 배열"은 장치(200)의 운동 상태를 예측하는 벡터를 시점(time point)에 따라 나열한 것을 의미한다. 용어 "현재 예측 운동 상태 배열(present prediction motional state array)"은 현재 시점(i 시점)에서 추정한 예측 운동 상태 배열을 의미한다. 용어 "이전 예측 운동 상태 배열(previous prediction motional state array)"은 이전 시점(i-1 시점)에서 추정한 예측 운동 상태 배열을 의미한다. 즉, 이전 예측 운동 상태 배열이 갱신됨으로써 현재 예측 운동 상태 배열이 생성될 수 있다.In step 1030, the device 200 generates a current predicted workout state arrangement based on the IMU data. The term “predictive athletic state arrangement” means a list of vectors predicting the athletic state of the device 200 according to time points. The term " present prediction motional state array " means the predicted motion state array estimated at the current point in time (i point). The term "previous prediction motional state array" means a predicted motion state array estimated at a previous time point (i-1 time point). That is, the current prediction exercise state arrangement may be generated by updating the previous prediction exercise state arrangement.

현재 예측 운동 상태 배열을 생성하는 방법에 대해, 아래에서 도 11 내지 13을 참조하여 상세히 설명된다.A method for generating a current predicted athletic state arrangement is described in detail below with reference to FIGS. 11-13.

단계(1040)에서, 장치(200)는 현재 예측 운동 상태 배열에 기초하여 제1 자세 이후의 제M 시점에서의 제M 예측 자세를 추정한다. M은 1보다 큰 자연수이다.In operation 1040, the device 200 estimates the M-th predicted posture at the M-th point after the first posture based on the current predicted athletic state arrangement. M is a natural number greater than one.

도 11은 일 예에 따른 현재 예측 운동 상태 배열을 생성하는 방법의 흐름도이다.11 is a flowchart of a method of generating a current predicted exercise state arrangement according to an example.

도 10을 참조하여 전술된 단계(1030)는 아래의 단계들(1110 내지 1140)을 포함한다.Step 1030 described above with reference to FIG. 10 includes the following steps 1110 to 1140.

단계(1110)에서, 장치(200)는 노이즈(noise) 및 이상점(outlier)을 제거하기 위해 측정된 IMU 데이터를 평탄화(smoothing)한다. 예를 들어, 칼만 필터(Kalman filter)가 IMU 데이터를 평탄화하기 위해 이용될 수 있다.In step 1110, the device 200 smoothes the measured IMU data to remove noise and outliers. For example, a Kalman filter can be used to smooth the IMU data.

단계(1120)에서, 장치(200)는 평탄화된 IMU 데이터에 기초하여 제1 시점의 제1 운동 상태 벡터를 생성한다. 예를 들어, 운동 상태 벡터는 아래의 [수학식 1]로 표현될 수 있다.In step 1120, the device 200 generates a first motion state vector of the first time point based on the flattened IMU data. For example, the exercise state vector may be expressed by Equation 1 below.

Figure pat00001
Figure pat00001

[수학식 1]에서 S는 운동 상태 벡터이고, v는 운동 속도, av는 운동 가속도, w는 선회 속도, 및 aw는 선회 가속도이다. 선회 속도 및 선회 가속도는 각각의 6축 방향을 나타내도록 추가될 수 있다. 또한, 운동 상태 벡터는 카메라(240)의 위치를 더 포함할 수 있다.In Equation 1, S is a motion state vector, v is a motion speed, a v is a motion acceleration, w is a turning speed, and a w is a turning acceleration. Swing speed and swing acceleration can be added to indicate each of the six axis directions. In addition, the exercise state vector may further include a position of the camera 240.

일 측면에 따르면, 장치(200)는 제1 자세와 미리 추정된 제1 예측 자세(first prediction pose) 간의 차이에 기초하여 상기 평탄화된 IMU 데이터를 보정함으로써 상기 제1 운동 상태 벡터를 생성할 수 있다. 제1 자세와 미리 추정된 제1 예측 자세 간의 차이는 보충량으로 정의될 수 있다.According to an aspect, the device 200 may generate the first exercise state vector by correcting the flattened IMU data based on a difference between a first pose and a first estimated pose that is previously estimated. . The difference between the first posture and the first estimated posture estimated in advance may be defined as the supplemental amount.

일 측면에 따르면, 장치(200)는 장치(200)의 사용자의 안구 운동 속도(ocular movement velocity) 및 사용자의 머리 운동 속도(head movement velocity) 중 적어도 하나에 기초하여 제1 운동 상태 벡터를 생성하는 빈도를 결정할 수 있다. 예를 들어, 순화 검출 인하여 유발된 차이를 보충하는 경우, 보충 속도는 사용자의 안구 운동 속도 및/또는 사용자의 머리 운동 속도와 연관된다. 머리 운동 속도가 빨라질수록 보충 속도가 빨라진다.According to one aspect, the device 200 generates a first motion state vector based on at least one of an ocular movement velocity of a user of the device 200 and a head movement velocity of the user. Frequency can be determined. For example, when compensating for differences caused by purifying detection, the replenishment rate is associated with the user's eye movement rate and / or the user's head movement rate. The faster the hair movement, the faster the replenishment.

단계(1130)에서, 장치(200)는 제1 운동 상태 벡터에 기초하여 제N 시점의 제N 운동 상태 벡터를 결정한다. 예를 들어, 제N 시점은 현재의 시점에서 예측할 수 있는 가장 먼 시점의 시점일 수 있다. N은 M보다 큰 자연수이다.In operation 1130, the device 200 determines the Nth athletic state vector at the Nth time point based on the first athletic state vector. For example, the Nth view may be a view of the farthest view that can be predicted from the current view. N is a natural number larger than M.

일 측면에 따르면, 장치(200)는 제1 운동 상태 벡터를 입력으로 하는 장단기 메모리(Long-Short Term Memory: LSTM) 방식의 순환 신경망(recurrent neural network)을 이용하여 제N 예측 운동 상태 벡터를 생성할 수 있다. 순환 신경망은 딥 러닝 네트워크(deep learning network)로 구성될 수 있다.According to an aspect, the device 200 generates an N-th predicted motion state vector using a recurrent neural network of a long-short memory (LSTM) method using the first motion state vector as an input. can do. The cyclic neural network may be configured as a deep learning network.

단계(1140)에서, 장치(200)는 운동 모델(motional model), 이전 예측 운동 상태 배열 및 제N 예측 운동 상태 벡터에 기초하여 현재 예측 운동 상태 배열을 생성한다. 운동 모델은 선형 운동 모델 또는 비-선형 운동 모델을 포함할 수 있다. 생성된 IMU 데이터에 기초하여 복수의 운동 모델들 중 적절한 운동 모델이 선택될 수 있다.In step 1140, the device 200 generates a current predicted athletic state array based on an athletic model, a previous predicted athletic state array, and an Nth predicted athletic state vector. The athletic model can include a linear athletic model or a non-linear athletic model. An appropriate athletic model may be selected from among the plurality of athletic models based on the generated IMU data.

도 12는 일 예에 따른 제i 시점의 자세에 기초하여 제i+x 시점의 자세를 추정하는 방법을 도시한다.12 illustrates a method of estimating an attitude of an i + x point of view based on an attitude of an i th view according to an example.

장치(200)는 자세 추정 유닛일 수 있다. 현재 시점이 제i 시점인 경우, 결정된 제i 시점의 자세(Pi)가 자세 추정 유닛의 입력이고, 자세 추정 유닛의 출력은 예측 운동 상태 배열을 이용한 제i+x 시점의 예측 자세(P"i+x)일 수 있다.The apparatus 200 may be an attitude estimation unit. If the current view is the i-th view, the determined posture P i of the i-th view is the input of the posture estimation unit, and the output of the posture estimation unit is the predicted posture P (i. i + x ).

IMU 데이터는 제i+x 시점까지 반복적이고, 계속적으로 생성되므로, 제i+x 시점이 도달할 때까지, 순환 검출을 통해 제i+x 시점의 예측 자세(P"i+x)가 계속적으로 업데이트될 수 있다.Since the IMU data is iteratively and continuously generated until the i + x time point, the predicted attitude P ″ i + x at the i + x time point is continuously generated through circular detection until the i + x time point is reached. Can be updated.

자세 추정 유닛의 상세한 동작 과정은 아래와 같다.Detailed operation of the attitude estimation unit is as follows.

i) IMU 데이터를 통해 결정된 제i 시점의 자세(Pi) 및 제i-1 시점에서 예측된 제i 시점의 예측 자세(P'i)의 차이가 계산된다. 오차는 제i 시점의 운동 상태 벡터(Si)를 조정하기 위해 이용될 수 있다. 필요에 따라 칼만 이득(Kgi)이 추가로 운동 상태 벡터(Si)를 조정하기 위해 이용될 수 있다.i) The difference between the posture P i of the i-th time point determined from the IMU data and the predicted posture P ' i of the i-th time point predicted from the i-th time point is calculated. Error may be used to adjust the movement state vector (S i) of the i-th point. As needed, an additional Kalman gain (Kg i) may be used to adjust the movement state vector (S i).

ii) 제i 시점의 운동 상태 벡터(Si) 및 운동 모델(M)에 기초하여 제i+1 시점의 예측 자세(P'i+1)가 계산된다. 제i+1 시점의 예측 자세(P'i+1)는 제i+1 시점에서 자세 추정 유닛의 입력이 된다.ii) the movement state vector (S i) and a movement model (M) the i + 1 position prediction (P 'i + 1) of the start point on the basis of the i-th point in time is calculated. The predicted attitude P ′ i + 1 at the i + 1th time point is an input of the attitude estimation unit at the i + 1th time point.

iii) 운동 상태 벡터(Si)를 입력으로 하는 장단기 메모리(Long-Short Term Memory: LSTM) 방식의 순환 신경망(recurrent neural network)을 이용하여 제i+N-1 시점의 제i+N-1 예측 운동 상태 벡터(S'i+N-1)를 생성한다. 도 12의 실시예서는 운동 상태 벡터를 이용하였으나, 다른 실시예에서는 장치(200)의 상태를 나타내는 다른 정보들을 이용할 수 있고, 개시된 실시예로 한정되지 않는다.iii) i + N-1 at the i + N-1 time point using a recurrent neural network of a Long-Short Term Memory (LSTM) method using the motion state vector S i as an input; Generate a predicted motion state vector (S ' i + N-1 ). Although the embodiment of FIG. 12 uses an exercise state vector, other embodiments may use other information representing the state of the device 200 and are not limited to the disclosed embodiment.

예를 들어, 제i+N-1 예측 운동 상태 벡터(S'i+N-1)는 아래의 [수학식 2]를 이용하여 계산될 수 있다.For example, the i + N−1 predicted motion state vector S ′ i + N−1 may be calculated using Equation 2 below.

Figure pat00002
Figure pat00002

vi) 운동 모델(M), 이전 예측 운동 상태 배열 및 제i+N-1 예측 운동 상태 벡터(S'i+N-1)에 기초하여 현재 예측 운동 상태 배열을 생성한다. vi) Generates the current predicted exercise state array based on the exercise model M, the previous predicted exercise state array and the i + N-1 predicted exercise state vector S ′ i + N-1 .

현재 시점이 제i+1 시점으로 변화하는 경우, 제i+1 시점의 예측 자세(P'i+1) 및 이전에 계산된 현재 예측 운동 상태 배열이 이전 예측 운동 상태 배열로서 자세 추정 유닛에 순환 입력될 수 있다. 현재 시점이 제i+x 시점이 될 때까지 상기의 동작들이 순환적으로 수행될 수 있다. 순환 방식을 이용하여 제i+x 시점 예측 자세 및 IMU 데이터를 이용하여 결정된 제i+x 시점 예측 자세 간의 오차를 감소시킬 수 있다.If the present point is changed to the i + 1 time, the i + prediction of the first point position (P 'i + 1) and before the calculated current prediction motion state array is circulated to the posture estimation unit as previously predicted motion state arranged in Can be entered. The above operations may be cyclically performed until the current time point becomes the i + x time point. By using the cyclic scheme, an error between the i + x-th view prediction attitude and the i + x-th view prediction attitude determined using the IMU data may be reduced.

도 13은 일 예에 따른 현재 예측 운동 상태 배열을 계산하는 방법을 도시한다.13 illustrates a method of calculating a current predicted exercise state arrangement according to an example.

LSTM 방식을 이용하여 생성된 제i+N-1 예측 운동 상태 벡터(S'i+N-1)가 LSTM 예측 운동 상태 배열에 추가될 수 있다. 예를 들어, LSTM 예측 운동 상태 배열은 N개의 데이터들을 포함하고, 선입선출(first in first out: FIFO) 방식으로 최신의 데이터를 추가할 수 있다. LSTM 예측 운동 상태 배열은 운동 상태 슬라이딩 윈도우(motional state sliding window)일 수 있다.The i + N-1 predicted motion state vector S ′ i + N-1 generated using the LSTM method may be added to the LSTM predicted motion state array. For example, the LSTM predicted motion state arrangement may include N data and add the latest data in a first in first out (FIFO) manner. The LSTM predictive motor state arrangement may be a motion state sliding window.

과거의 시점인 제i-1 시점에서 계산된 이전 예측 운동 상태 배열(제i-1 시점에서는 현재 예측 운동 상태 배열) 및 LSTM 예측 운동 상태 배열에 기초하여 현재 예측 운동 상태 배열이 계산될 수 있다. 예를 들어, 이전 예측 운동 상태 배열 및 LSTM 예측 운동 상태 배열을 병합(combine)함으로써 현재 예측 운동 상태 배열이 계산될 수 있다. 최신의 예측 운동 상태 벡터일수록 더 큰 가중치가 부여될 수 있다.The current predicted exercise state arrangement may be calculated based on a previous predicted exercise state arrangement (the present predicted exercise state array at the i-1 point in time) and the LSTM predicted exercise state array calculated at the past point in time, i-1. For example, the current predicted athletic state arrangement may be calculated by combining the previous predicted athletic state arrangement and the LSTM predicted athletic state arrangement. The more recent the predicted motion state vector, the greater the weighting may be.

생성된 현재 예측 운동 상태 배열에 기초하여 제i+x 시점의 예측 자세(P"i+x)가 생성될 수 있다. 예를 들어, 아래의 [수학식 2]을 이용하여 제i+x 시점의 예측 자세(P"i+x)가 계산될 수 있다.A prediction pose P ″ i + x of the i + x time point may be generated based on the generated current predicted motion state arrangement. For example, the i + x time point may be generated using Equation 2 below. The predicted attitude P " i + x of can be calculated.

Figure pat00003
Figure pat00003

도 14는 일 예에 따른 정적 상태를 검출하는 방법을 도시한다.14 illustrates a method of detecting a static state according to an example.

두꺼운 선은 사용자가 보행할 때의 IMU 데이터의 분산 변화 곡선이다. 사용자 보행의 반복성으로 인하여 IMU 데이터의 분산은 주기적으로 변한다. IMU 데이터의 국부적 분산(시간 창 내의 분산)이 예측된 임계 값보다 작은 경우, 무게 중심(center of mass)에 대응하여 발이 지면과 맞닿는 위상에 해당하며, 이 위상은 제로 속도(zero-speed) 구간이라고 한다. 일 실시예에서, 임계 값을 이용하여 장치(200)의 운동 과정에서 제로 속도 구간을 추출하여, 이 구간을 클러스터 최적화에 제약 조건으로서 부가한다.The thick line is the variance change curve of the IMU data as the user walks. Due to the repeatability of user walking, the distribution of IMU data changes periodically. If the local variance (variance in the time window) of the IMU data is less than the predicted threshold, it corresponds to the phase where the foot is in contact with the ground in response to the center of mass, which is the zero-speed interval. It is called. In one embodiment, the zero velocity interval is extracted during the exercise of the device 200 using the threshold value, and this interval is added as a constraint to the cluster optimization.

도 15는 일 예에 따른 순환 검출에 의해 발생한 지터에 의한 결과를 도시한다.15 illustrates a result due to jitter generated by circular detection according to an example.

자세들 간의 차이를 유발할 수 있는 IMU 적분의 오류 외에도, 동일한 맵의 순환 검출로 인해 자세들 간의 차이가 발생할 수도 있다. 도 15는 순환 검출로 지터(jitter)가 발생한 장면을 나타낸다.In addition to errors in the IMU integration that can cause differences between poses, cyclical detection of the same map may cause differences between poses. 15 shows a scene in which jitter occurs due to cyclic detection.

장치(200)가 한바퀴 운동한 후, 이전에 경유한 위치에 도달했을 때, 이전에 저장된 맵 포인트와 최근에 저장된 맵 포인트 간에 일정한 편차가 있을 수 있다. 이 때, 순환 검출 기능을 이용하여 현재 맵 포인트의 위치를 업데이트해야 할 필요성이 있다. 즉, IMU 적분에 오차가 존재하여 유발된 자세 차이와 순환으로 유발된 자세 차이가 모두 보정되어야 할 필요성이 있다.After the device 200 has taken a turn, when there is a previously routed location, there may be a constant deviation between the previously stored map point and the recently stored map point. At this time, it is necessary to update the position of the current map point by using the circular detection function. That is, it is necessary to correct both the posture difference caused by the error in the IMU integration and the posture difference caused by the circulation.

망막에 투사되는 오브젝트 운동 속도와 사람의 눈으로 오브젝트의 운동을 감지하는 민감성 사이에는 반비례 관계가 성립된다. 이에, 안구의 운동 속도 HS 및 가상 오브젝트의 운동 속도 P를 감지하여, 사람이 감지한 속도 HT가 계산될 수 있다. 그리고, 사람이 감지한 속도 HT를 이용하여 바이어스가 감소하는 속도가 결정된다. 사람이 감지한 속도 HT가 크면 클수록, 바이어스 감소가 빨라진다. 사람이 감지한 속도 HT는 아래의 [수학식 4]를 이용하여 계산될 수 있다.An inverse relationship is established between the speed of movement of the object projected onto the retina and the sensitivity of sensing the movement of the object with the human eye. Accordingly, by detecting the movement speed H S of the eyeball and the movement speed P of the virtual object, a speed H T detected by a person may be calculated. Then, the speed at which the bias decreases is determined using the speed H T sensed by a person. The larger the human perceived speed H T , the faster the bias reduction. The speed H T detected by a person can be calculated using Equation 4 below.

Figure pat00004
Figure pat00004

[수학식 4]에서,

Figure pat00005
는 대부분 상황에서 0.6이고,
Figure pat00006
는 오브젝트의 크기이고,
Figure pat00007
는 망막에 투사되는 오브젝트의 크기이다.In [Equation 4],
Figure pat00005
Is 0.6 in most situations,
Figure pat00006
Is the size of the object,
Figure pat00007
Is the size of the object projected onto the retina.

도 16은 일 예에 따른 가상 오브젝트를 출력하는 방법의 흐름도이다.16 is a flowchart of a method of outputting a virtual object according to an example.

AR 시스템 또는 VR 시스템에서, SLAM(Simultaneous Localization and Mapping) 계산법을 이용하여 현재 시점의 장치(200)의 자세를 결정한 후, 장치(200)의 자세에 따라 가상 오브젝트를 제작할 필요성이 있다. 또한, 제작한 가상 오브젝트를 실제 오브젝트 상에 중첩하여 출력 또는 디스플레이 할 수 있다. 가상 오브젝트의 생성이 복잡하거나, 조명 계산이 포함되어 있는 경우, 가상 오브젝트를 생성하기 위해 일정한 시간이 소요된다. 이는 가상 오브젝트의 출력에 일정한 지연을 유발하여, AR 또는 VR 효과에 영향을 줄 수 있다. 아래에서는 이러한 지연을 감소시킬 수 있는 이미지 출력 방법에 대해 설명한다.In an AR system or a VR system, after determining the posture of the device 200 at the present time using a Simulaneous Localization and Mapping (SLAM) calculation method, there is a need to manufacture a virtual object according to the posture of the device 200. In addition, the created virtual object can be output or displayed by being superimposed on the real object. When the creation of a virtual object is complicated or lighting calculation is included, it takes a certain time to generate the virtual object. This causes a certain delay in the output of the virtual object, which may affect the AR or VR effect. The following describes an image output method that can reduce this delay.

아래의 단계들(1610 내지 1650)은 도 10을 참조하여 전술된 단계(1040)가 수행한 후에 수행될 수 있다.Steps 1610 to 1650 below may be performed after step 1040 described above with reference to FIG. 10.

단계(1610)에서, 장치(200)는 제M 시점에서 출력될 가상 오브젝트를 생성한다. 예를 들어, 가상 오브젝트는 홀로그래픽 이미지(holographic image) 또는 홀로그램(hologram)일 수 있다.In operation 1610, the device 200 generates a virtual object to be output at the Mth time point. For example, the virtual object may be a holographic image or hologram.

이전 이미지에 대해 생성된 홀로그래픽 이미지와 깊이 이미지가 새로운 홀로그래픽 이미지를 생성하기 위해 이용될 수 있다. 이전 이미지의 각 포인트에 대한 깊이 정보 및 두 개의 이미지들의 홀로그램 이미지에 대응하는 장치(200)의 자세는 미리 알고 있는 정보이므로, 생성될 이미지의 화소에 대응하는 이전 이미지의 화소의 위치가 계산될 수 있다. 이전 이미지의 화소를 상기 화소에 대응하는 생성될 이미지의 화소에 복사한다. 이러한 방법은 처리해야할 계산량을 감소시키므로 가상 오브젝트의 생성 시간을 감소시킬 수 있다.The holographic image and the depth image generated for the previous image can be used to create a new holographic image. Since the depth information of each point of the previous image and the attitude of the device 200 corresponding to the hologram image of the two images are known in advance, the position of the pixel of the previous image corresponding to the pixel of the image to be generated may be calculated. have. Copies the pixels of the previous image to the pixels of the image to be created corresponding to the pixels. This method reduces the amount of computation to be processed, thereby reducing the creation time of the virtual object.

단계(1620)에서, 장치(200)는 가상 오브젝트를 조정한다.In step 1620, the device 200 adjusts the virtual object.

장치(200)는 가상 오브젝트를 렌더링(rendering)하는 기간 동안 발생하는 장치(200)의 자세 변화를 획득하고, 획득된 자세 변화에 대응하도록 가상 오브젝트를 조정한다.The device 200 obtains a posture change of the device 200 that occurs during the rendering of the virtual object, and adjusts the virtual object to correspond to the acquired posture change.

가상 오브젝트가 출력되는 시점은 제M 시점일 수 있다. IMU 데이터 생성의 주파수가 가상 오브젝트가 출력되는 주파수보다 큰 경우, 가상 오브젝트가 출력되는 시점들 사이의 시점들에서 IMU 데이터들이 생성될 수 있다. 예를 들어, IMU 데이터들을 적분함으로써 제1 시점 및 제M 시점 간의 장치(200)의 운동 상태가 획득될 수 있다. 획득된 운동 상태에 기초하여 자세 변화가 획득될 수 있고, 획득된 자세 변화를 이용하여 가상 오브젝트를 조정할 수 있다.The time point at which the virtual object is output may be the Mth time point. When the frequency of generating the IMU data is greater than the frequency at which the virtual object is output, the IMU data may be generated at the time points between the time points at which the virtual object is output. For example, the motion state of the device 200 between the first time point and the Mth time point may be obtained by integrating the IMU data. A posture change may be obtained based on the acquired exercise state, and the virtual object may be adjusted using the acquired posture change.

단계(1630)에서, 장치(200)는 가상 오브젝트를 출력한다. 예를 들어, 장치(200)는 제M 시점에 대한 이미지를 생성하고, 생성된 이미지와 가상 오브젝트가 합성되도록 가상 오브젝트를 출력할 수 있다. 다른 예로, 장치(200)는 가상 오브젝트만을 출력할 수 있다.In step 1630, the device 200 outputs the virtual object. For example, the device 200 may generate an image for the Mth view and output a virtual object to synthesize the generated image and the virtual object. As another example, the device 200 may output only a virtual object.

도 17은 일 예에 따른 장치의 추정 자세에 기초하여 합성 이미지를 출력하는 방법을 도시한다.17 illustrates a method of outputting a composite image based on an estimated attitude of the apparatus according to an example.

제1 시점부터 제M 시점의 장치(200)의 자세가 추정될 수 있다. 제M 시점의 장치(200)의 자세가 추정된 시점부터 제M 시점에서 출력될 가상 오브젝트가 생성(또는 렌더링)될 수 있다.The attitude of the apparatus 200 from the first time point to the Mth time may be estimated. The virtual object to be output at the Mth view may be generated (or rendered) from the time at which the attitude of the apparatus 200 at the Mth view is estimated.

제1 시점과 제M 시점 사이의 시점들에서 IMU 데이터들이 획득될 수 있고, 획득된 IMU 데이터들에 기초하여 제M 시점의 장치(200)의 자세가 계속적으로 재추정될 수 있다. 가상 오브젝트가 재추정된 장치(200)의 자세에 대응하도록 조정될 수 있다. 제M 시점에서 가상 오브젝트가 디스플레이된다.IMU data may be obtained at points in time between the first time point and the Mth time point, and the attitude of the apparatus 200 at the Mth time point may be continuously estimated based on the obtained IMU data. The virtual object may be adjusted to correspond to the posture of the re-estimated device 200. The virtual object is displayed at the M point of time.

도 18은 일 예에 따른 장치의 모듈들의 구성도이다.18 is a block diagram illustrating modules of an apparatus according to an example.

장치(200)는 SLAM 모듈, 자세 추정 모듈 및 이미지 생성 모듈을 포함할 수 있다. SLAM 모듈은 복수의 센서들의 융합을 이용하고, 높은 프레임 레이트로 장치(200)의 현재 자세를 생성한다. 자세 추정 모듈은 SLAM 모듈의 출력과 데이터 필터링에 기초하여 장치(200)의 미래 자세를 추측한다. 이미지 생성 모듈은 가상 오브젝트 생성 기간 동안의 장치(200)의 자세 변화에 따라 생성된 가상 오브젝트 또는 이미지를 조정한다.The apparatus 200 may include a SLAM module, an attitude estimation module, and an image generation module. The SLAM module utilizes the fusion of a plurality of sensors and generates the current pose of the device 200 at a high frame rate. The attitude estimation module estimates the future attitude of the device 200 based on the output of the SLAM module and the data filtering. The image generation module adjusts the generated virtual object or image according to the change of attitude of the device 200 during the virtual object generation period.

도 19는 일 예에 따른 다양한 검측 방법에 따른 자세 추정 결과들을 도시한다.19 is a view illustrating posture estimation results according to various detection methods according to an example.

다양한 검측 방법에 따른 자세 추정 결과들 중 IMU 적분 필터링을 이용한 방법이 가장 평탄한 추정 결과를 나타낸다. 제1 클러스터 최적화 단계 및 제2 클러스터 최적화 단계를 연속적으로 수행하는 경우, IMU 데이터를 적분하고, 노이즈 등을 제거하는 필터링을 이용하면, 장치(200)의 자세가 급격한 변화를 갖도록 추정되는 것을 방지할 수 있다.Among the attitude estimation results according to various detection methods, the method using the IMU integral filtering shows the flattest estimation result. In the case of performing the first cluster optimization step and the second cluster optimization step continuously, by using filtering to integrate IMU data and remove noise, etc., it is possible to prevent the posture of the device 200 from being estimated to have a sudden change. Can be.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be embodied in the form of program instructions that can be executed by various computer means and recorded in a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. The program instructions recorded on the media may be those specially designed and constructed for the purposes of the embodiments, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks. Magneto-optical media, and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like. The hardware device described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the above, and configure the processing device to operate as desired, or process it independently or collectively. You can command the device. Software and / or data may be any type of machine, component, physical device, virtual equipment, computer storage medium or device in order to be interpreted by or to provide instructions or data to the processing device. Or may be permanently or temporarily embodied in a signal wave to be transmitted. The software may be distributed over networked computer systems so that they may be stored or executed in a distributed manner. Software and data may be stored on one or more computer readable recording media.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.Although the embodiments have been described by the limited embodiments and the drawings as described above, various modifications and variations are possible to those skilled in the art from the above description. For example, the described techniques may be performed in a different order than the described method, and / or components of the described systems, structures, devices, circuits, etc. may be combined or combined in a different form than the described method, or other components. Or even if replaced or substituted by equivalents, an appropriate result can be achieved.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are within the scope of the following claims.

200: 장치
210: 통신부
220: 프로세서
230: 메모리
240: IMU
250: 카메라
200: device
210: communication unit
220: processor
230: memory
240: IMU
250: camera

Claims (17)

장치에 의해 수행되는, 장치의 자세 추정 방법에 있어서,
상기 장치의 관성 측정 장치(Inertial Measurement Unit: IMU)를 이용하여 IMU 데이터를 생성하는 단계;
상기 IMU 데이터에 기초하여 상기 장치의 제1 자세(first pose)를 결정하는 단계;
상기 IMU 데이터에 기초하여 현재 예측 운동 상태 배열(present prediction motional state array)을 생성하는 단계; 및
상기 현재 예측 운동 상태 배열에 기초하여, 상기 제1 자세의 제1 시점(first time point) 이후의 제M 시점에서의 제M 예측 자세(prediction pose)를 추정하는 단계
를 포함하고,
상기 M은 1 보다 큰 자연수인,
자세 추정 방법.
In the attitude estimation method of the device, performed by the device,
Generating IMU data using an Inertial Measurement Unit (IMU) of the device;
Determining a first pose of the device based on the IMU data;
Generating a present prediction motional state array based on the IMU data; And
Estimating an Mth prediction pose at an Mth point after a first time point of the first pose based on the current predicted exercise state arrangement;
Including,
M is a natural number greater than 1,
Posture estimation method.
제1항에 있어서,
상기 현재 예측 운동 상태 배열을 생성하는 단계는,
상기 IMU 데이터를 평탄화(smoothing)하는 단계;
상기 평탄화된 IMU 데이터에 기초하여 상기 제1 시점의 제1 운동 상태 벡터(first motional state vector)를 생성하는 단계;
상기 제1 운동 상태 벡터에 기초하여 제N 시점의 제N 예측 운동 상태 벡터를 결정하는 단계 - 상기 N은 상기 M보다 큰 자연수임 -; 및
운동 모델(motional model), 이전 예측 운동 상태 배열(previous prediction motional state array) 및 상기 제N 예측 운동 상태 벡터에 기초하여 상기 현재 예측 운동 상태 배열을 생성하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 1,
Generating the current prediction exercise state arrangement,
Smoothing the IMU data;
Generating a first motional state vector of the first time point based on the flattened IMU data;
Determining an Nth predicted motion state vector at an Nth time point based on the first motion state vector, wherein N is a natural number greater than M; And
Generating the current predicted kinematic state array based on a motion model, a previous predicted kinematic state array and the Nth predicted kinematic state vector;
Including,
Posture estimation method.
제2항에 있어서,
상기 제1 운동 상태 벡터를 생성하는 단계는,
상기 제1 자세와 미리 추정된 제1 예측 자세(first prediction pose) 간의 차이에 기초하여 상기 평탄화된 IMU 데이터를 보정함으로써 상기 제1 운동 상태 벡터를 생성하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 2,
Generating the first exercise state vector may include:
Generating the first motion state vector by correcting the flattened IMU data based on a difference between the first pose and a first estimated pose that is previously estimated.
Including,
Posture estimation method.
제2항에 있어서,
상기 제N 예측 운동 상태 벡터를 결정하는 단계는,
상기 제1 운동 상태 벡터를 입력으로 하는 장단기 메모리(Long-Short Term Memory: LSTM) 방식의 순환 신경망(recurrent neural network)을 이용하여 상기 제N 예측 운동 상태 벡터를 생성하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 2,
The determining of the N th predicted exercise state vector may include:
Generating the N-th predicted motion state vector by using a recurrent neural network of a Long-Short Term Memory (LSTM) method using the first motion state vector as an input;
Including,
Posture estimation method.
제1항에 있어서,
상기 제1 운동 상태 벡터를 생성하는 단계는,
상기 장치의 사용자의 안구 운동 속도(ocular movement velocity) 및 사용자의 머리 운동 속도(head movement velocity) 중 적어도 하나에 기초하여 상기 제1 운동 상태 벡터를 생성하는 빈도를 결정하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 1,
Generating the first exercise state vector may include:
Determining a frequency of generating the first exercise state vector based on at least one of an ocular movement velocity of the user of the device and a head movement velocity of the user.
Including,
Posture estimation method.
제1항에 있어서,
상기 IMU 데이터에 기초하여 상기 장치의 상태가 정적 상태인지 여부를 결정하는 단계
를 더 포함하고,
상기 장치의 제1 자세를 결정하는 단계는,
상기 장치의 상태가 정적 상태인지 여부에 기초하여 제1 자세를 결정하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 1,
Determining whether the state of the device is static based on the IMU data
More,
Determining the first posture of the device,
Determining a first posture based on whether the state of the device is a static state
Including,
Posture estimation method.
제1항에 있어서,
상기 제M 시점에서 출력될 가상 오브젝트(virtual object)를 생성하는 단계; 및
상기 가상 오브젝트를 출력하는 단계
를 더 포함하는,
자세 추정 방법.
The method of claim 1,
Generating a virtual object to be output at the Mth time point; And
Outputting the virtual object
Further comprising,
Posture estimation method.
제7항에 있어서,
상기 가상 오브젝트를 렌더링하는 기간동안 발생하는 장치의 자세 변화에 기초하여 상기 가상 오브젝트를 조정하는 단계
를 더 포함하는,
자세 추정 방법.
The method of claim 7, wherein
Adjusting the virtual object based on a change in attitude of the device that occurs during the rendering of the virtual object
Further comprising,
Posture estimation method.
제7항에 있어서,
상기 가상 오브젝트를 출력하는 단계는,
제M 시점에 대한 이미지와 상기 가상 오브젝트가 합성되도록 가상 오브젝트를 출력하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 7, wherein
The outputting of the virtual object may include:
Outputting a virtual object to synthesize the virtual object and an image for a Mth viewpoint
Including,
Posture estimation method.
제7항에 있어서,
상기 가상 오브제트는 홀로그래픽 이미지(holographic image)인,
자세 추정 방법.
The method of claim 7, wherein
The virtual object is a holographic image,
Posture estimation method.
제1항에 있어서,
상기 장치의 주변 공간에 대한 맵을 생성하는 단계;
상기 맵을 이용하여 초기 자세(initial pose)를 결정하는 단계; 및
IMU 데이터에 기초하여 상기 장치가 정적 상태(static state)인지 여부를 결정하는 단계
를 더 포함하고,
상기 제1 자세는 상기 장치가 정적 상태인 경우에 결정되는,
자세 추정 방법.
The method of claim 1,
Generating a map for the surrounding space of the device;
Determining an initial pose using the map; And
Determining whether the device is in a static state based on IMU data
More,
The first posture is determined when the device is in a static state,
Posture estimation method.
제11항에 있어서,
상기 맵을 생성하는 단계는,
상기 장치의 왼쪽 카메라를 이용하여 왼쪽 이미지를 생성하는 단계;
상기 왼쪽 이미지로부터 하나 이상의 제1 특징점들을 생성하는 단계;
상기 장치의 오른쪽 카메라를 이용하여 오른쪽 이미지를 생성하는 단계;
상기 오른쪽 이미지로부터 하나 이상의 제2 특징점들을 생성하는 단계;
상기 제1 특징점들 및 상기 제2 특징점들을 매칭하는 단계; 및
제1 특징점들 및 상기 제2 특징점들 중 매칭된 특징점들 및 매칭되지 않은 특징점들에 기초하여 상기 맵을 생성하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 11,
Generating the map,
Generating a left image using the left camera of the device;
Generating one or more first feature points from the left image;
Generating a right image using the right camera of the device;
Generating one or more second feature points from the right image;
Matching the first feature points and the second feature points; And
Generating the map based on matched and unmatched feature points of the first and second feature points.
Including,
Posture estimation method.
제11항에 있어서,
상기 초기 자세를 결정하는 단계는,
상기 왼쪽 카메라 및 상기 오른쪽 카메라 중 적어도 하나에 의해 생성된 이미지로부터 하나의 이상의 특징점(feature point)들을 생성하는 단계;
상기 맵에 미리 설정된 후보 특징점(candidate feature point)들 중 상기 하나 이상의 특징점들에 대응하는 타겟 특징점(target point)을 결정하는 단계; 및
상기 타겟 특징점에 기초하여 상기 초기 자세를 결정하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 11,
Determining the initial posture,
Generating one or more feature points from an image generated by at least one of the left camera and the right camera;
Determining a target point corresponding to the one or more feature points among candidate feature points preset in the map; And
Determining the initial posture based on the target feature point
Including,
Posture estimation method.
제13항에 있어서,
상기 초기 자세를 결정하는 단계는,
상기 하나 이상의 특징점들 중 상기 맵에 미리 설정된 후보 특징점들에 대응하지 않은 나머지 특징점(remaining feature point)을 결정하는 단계; 및
상기 나머지 특징점에 대응하는 특징점을 상기 맵에 추가함으로써 상기 맵을 업데이트하는 단계
를 더 포함하는,
자세 추정 방법.
The method of claim 13,
Determining the initial posture,
Determining a remaining feature point of the one or more feature points that does not correspond to candidate feature points preset in the map; And
Updating the map by adding feature points corresponding to the remaining feature points to the map.
Further comprising,
Posture estimation method.
제1항에 있어서,
상기 장치는,
웨어러블 장치(wearable device)인,
자세 추정 방법.
The method of claim 1,
The device,
A wearable device,
Posture estimation method.
제1항 내지 제15항 중 어느 한 항의 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
A computer-readable recording medium containing a program for performing the method of any one of claims 1 to 15.
자세를 추정하는 장치는,
적어도 하나의 카메라;
관성 측정 장치(Inertial Measurement Unit: IMU);
자세를 추정하는 프로그램이 기록된 메모리; 및
상기 프로그램을 수행하는 프로세서
를 포함하고,
상기 프로그램은,
상기 장치의 관성 측정 장치(Inertial Measurement Unit: IMU)를 이용하여 IMU 데이터를 생성하는 단계;
상기 IMU 데이터에 기초하여 상기 장치의 제1 자세(pose)를 결정하는 단계;
상기 IMU 데이터에 기초하여 현재 예측 운동 상태 배열을 생성하는 단계; 및
상기 현재 예측 운동 상태 배열에 기초하여, 상기 제1 자세의 제1 시점 이후의 제M 시점에서의 제M 예측 자세를 추정하는 단계 - 상기 M은 1 보다 큰 자연수임 -
를 수행하는,
자세 추정 방법.
The device for estimating a posture,
At least one camera;
Inertial Measurement Unit (IMU);
A memory in which a program for estimating posture is recorded; And
A processor that executes the program
Including,
The program,
Generating IMU data using an Inertial Measurement Unit (IMU) of the device;
Determining a first pose of the device based on the IMU data;
Generating a current predicted workout state arrangement based on the IMU data; And
Estimating an Mth predictive posture at an Mth time after a first time point of the first posture based on the current predicted exercise state arrangement, wherein M is a natural number greater than 1
To do,
Posture estimation method.
KR1020180050747A 2018-02-12 2018-05-02 Method for estimating pose of device and thereof KR102442780B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/114,622 US10964030B2 (en) 2018-02-12 2018-08-28 Device and method with pose estimator based on current predicted motion state array

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810148359.1A CN110163909A (en) 2018-02-12 2018-02-12 For obtaining the method, apparatus and storage medium of equipment pose
CN201810148359.1 2018-02-12

Publications (2)

Publication Number Publication Date
KR20190098003A true KR20190098003A (en) 2019-08-21
KR102442780B1 KR102442780B1 (en) 2022-09-14

Family

ID=67635306

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180050747A KR102442780B1 (en) 2018-02-12 2018-05-02 Method for estimating pose of device and thereof

Country Status (2)

Country Link
KR (1) KR102442780B1 (en)
CN (1) CN110163909A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200058168A1 (en) * 2018-08-17 2020-02-20 Disney Enterprises, Inc. System and method for aligning virtual objects on peripheral devices in low-cost augmented reality/virtual reality slip-in systems
US11430179B2 (en) * 2020-02-24 2022-08-30 Microsoft Technology Licensing, Llc Depth buffer dilation for remote rendering

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110910447B (en) * 2019-10-31 2023-06-06 北京工业大学 Visual odometer method based on dynamic and static scene separation
CN110954134B (en) * 2019-12-04 2022-03-25 上海有个机器人有限公司 Gyro offset correction method, correction system, electronic device, and storage medium
CN113807124B (en) * 2020-06-11 2023-12-12 Oppo广东移动通信有限公司 Image processing method, device, storage medium and electronic equipment
CN111862288A (en) * 2020-07-29 2020-10-30 北京小米移动软件有限公司 Pose rendering method, device and medium
CN113841025A (en) * 2020-10-14 2021-12-24 深圳市大疆创新科技有限公司 Position and attitude determination method for movable platform, related device and system
CN112489224A (en) * 2020-11-26 2021-03-12 北京字跳网络技术有限公司 Image drawing method and device, readable medium and electronic equipment
CN112734852B (en) * 2021-03-31 2021-06-29 浙江欣奕华智能科技有限公司 Robot mapping method and device and computing equipment
CN113218389B (en) * 2021-05-24 2024-05-17 北京航迹科技有限公司 Vehicle positioning method, device, storage medium and computer program product
CN113674412B (en) * 2021-08-12 2023-08-29 浙江工商大学 Pose fusion optimization-based indoor map construction method, system and storage medium
CN113847907A (en) * 2021-09-29 2021-12-28 深圳市慧鲤科技有限公司 Positioning method and device, equipment and storage medium
CN113838135B (en) * 2021-10-11 2024-03-19 重庆邮电大学 Pose estimation method, system and medium based on LSTM double-flow convolutional neural network
CN114543797B (en) * 2022-02-18 2024-06-07 北京市商汤科技开发有限公司 Pose prediction method and device, equipment and medium
CN114419259B (en) * 2022-03-30 2022-07-12 中国科学院国家空间科学中心 Visual positioning method and system based on physical model imaging simulation
WO2024108394A1 (en) * 2022-11-22 2024-05-30 北京小米移动软件有限公司 Posture acquisition method, apparatus, virtual reality device, and readable storage medium
CN117889853B (en) * 2024-03-15 2024-06-04 歌尔股份有限公司 SLAM positioning method, terminal device and readable storage medium

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160149252A (en) * 2014-04-29 2016-12-27 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 Stabilization plane determination based on gaze location
US20170206712A1 (en) * 2014-11-16 2017-07-20 Eonite Perception Inc. Optimizing head mounted displays for augmented reality

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101826206B (en) * 2010-03-31 2011-12-28 北京交通大学 Camera self-calibration method
CN107065902B (en) * 2017-01-18 2019-02-01 中南大学 UAV Attitude fuzzy adaptive predictive control method and system based on nonlinear model
CN106840151B (en) * 2017-01-23 2019-05-17 厦门大学 Model-free deformation of hull measurement method based on delay compensation
CN107193279A (en) * 2017-05-09 2017-09-22 复旦大学 Robot localization and map structuring system based on monocular vision and IMU information

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160149252A (en) * 2014-04-29 2016-12-27 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 Stabilization plane determination based on gaze location
US20170206712A1 (en) * 2014-11-16 2017-07-20 Eonite Perception Inc. Optimizing head mounted displays for augmented reality

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200058168A1 (en) * 2018-08-17 2020-02-20 Disney Enterprises, Inc. System and method for aligning virtual objects on peripheral devices in low-cost augmented reality/virtual reality slip-in systems
US11100713B2 (en) * 2018-08-17 2021-08-24 Disney Enterprises, Inc. System and method for aligning virtual objects on peripheral devices in low-cost augmented reality/virtual reality slip-in systems
US11430179B2 (en) * 2020-02-24 2022-08-30 Microsoft Technology Licensing, Llc Depth buffer dilation for remote rendering

Also Published As

Publication number Publication date
CN110163909A (en) 2019-08-23
KR102442780B1 (en) 2022-09-14

Similar Documents

Publication Publication Date Title
KR102442780B1 (en) Method for estimating pose of device and thereof
US11010921B2 (en) Distributed pose estimation
US10964030B2 (en) Device and method with pose estimator based on current predicted motion state array
KR102006043B1 (en) Head pose tracking using a depth camera
US7613356B2 (en) Position and orientation detection method and apparatus
EP3896655B1 (en) Augmented reality (ar) device and method of predicting pose therein
WO2020221307A1 (en) Method and device for tracking moving object
KR20200037502A (en) Method and apparatus of outputting pose information
US11398048B2 (en) Estimating camera pose
KR20220122287A (en) Method and apparatus for determining pose of augmented reality providing device
WO2022066486A1 (en) Joint camera and inertial measurement unit calibration
TW202314593A (en) Positioning method and equipment, computer-readable storage medium
JP2024074862A (en) Method and system for performing eye tracking using an off-axis camera - Patents.com
US20230064242A1 (en) Electronic device for predicting pose and operating method thereof
JP7452620B2 (en) Image processing device, image processing method, and program
US11443455B2 (en) Prior informed pose and scale estimation
EP2990085B1 (en) Method and apparatus for estimating the value of an input in presence of a perturbing factor
KR20180061956A (en) Method and apparatus for estimating eye location
KR20230018214A (en) Method and apparatus of estimating pose
US11847750B2 (en) Smooth object correction for augmented reality devices
KR20150081975A (en) Apparatus for pose estimation of wearable display device using hybrid sensors
KR20220107471A (en) Pose prediction method, pose prediction device, and augmented reality glasses based on pose prediction
JP2023554001A (en) Bundle regulation using epipolar constraints
TR201702842A2 (en) Attribute Mapping Method and Control Device

Legal Events

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