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

Method for estimating pose of device and thereof Download PDF

Info

Publication number
KR102442780B1
KR102442780B1 KR1020180050747A KR20180050747A KR102442780B1 KR 102442780 B1 KR102442780 B1 KR 102442780B1 KR 1020180050747 A KR1020180050747 A KR 1020180050747A KR 20180050747 A KR20180050747 A KR 20180050747A KR 102442780 B1 KR102442780 B1 KR 102442780B1
Authority
KR
South Korea
Prior art keywords
posture
generating
feature points
determining
imu data
Prior art date
Application number
KR1020180050747A
Other languages
Korean (ko)
Other versions
KR20190098003A (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)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (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

장치의 자세를 추정하기 위한 방법 및 그 장치가 제공된다. 장치의 자세를 추정하기 위해, 장치의 IMU 데이터를 생성하고, IMU 데이터에 기초하여 현재 시점의 자세를 결정하고, 현재 자세 및 IMU 데이터에 기초하여 생성된 현재 예측 운동 상태 배열을 이용하여 미래 시점의 자세를 추정한다.A method and apparatus for estimating a posture of a device are provided. In order to estimate the posture of the device, IMU data of the device is generated, the posture of the current time is determined based on the IMU data, and the current posture and the current predicted motion state array generated based on the IMU data are used to determine the posture of the future time point. Estimate your posture

Description

장치의 자세 추정 방법 및 그 장치{METHOD FOR ESTIMATING POSE OF DEVICE AND THEREOF}Method for estimating posture of a device and apparatus thereof

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

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

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

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

일 실시예는 루즈 커플링 방법을 이용하여 장치의 위치를 추정하는 방법 및 그 장치를 제공할 수 있다.An embodiment may provide a method and an apparatus for estimating a location 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 one aspect, a method for estimating a posture of a device performed by a device includes generating IMU data using an inertial measurement unit (IMU) of the device, and generating IMU data 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 motional state array, and estimating an M-th prediction pose at the M-th time 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 array may include smoothing the IMU data, and generating a first motional state vector of the first time based on the flattened IMU data. Step, determining an Nth predicted motional state vector of an Nth time based on the first motional state vector, and a motional model, a previous prediction motional state array, and the Nth and generating the current predicted motion state array based on the predicted motion 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 posture and a pre-estimated first prediction pose. may include the step of

상기 제N 예측 운동 상태 벡터를 결정하는 단계는, 상기 제1 운동 상태 벡터를 입력으로 하는 장단기 메모리(Long-Short Term Memory: LSTM) 방식의 순환 신경망(recurrent neural network)을 이용하여 상기 제N 예측 운동 상태 벡터를 생성하는 단계를 포함할 수 있다.The determining of the N-th predicted motion state vector may include predicting the N-th using a recurrent neural network of a Long-Short Term Memory (LSTM) method using the first motion state vector as an input. generating a motion 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 and a head movement velocity of a user of the device. It may include the step of determining the frequency of

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

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

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

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

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

상기 자세 추정 방법은, 상기 장치의 주변 공간에 대한 맵을 생성하는 단계, 상기 맵을 이용하여 초기 자세(initial pose)를 결정하는 단계, 및 IMU 데이터에 기초하여 상기 장치가 정적 상태(static state)인지 여부를 결정하는 단계를 더 포함하고, 상기 제1 자세는 상기 장치가 정적 상태인 경우에 결정될 수 있다.The method for estimating the posture includes generating a map for the surrounding space of the device, determining an initial pose using the map, and setting the device to a static state based on IMU data. The method may further include determining whether to recognize the first posture, 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 a left camera of the device, generating one or more first feature points from the left image, and generating a right image using a 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 unmatched first feature points and among the second feature points It may include generating the map based on the 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 feature 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 a feature point corresponding to the remaining feature point on the map 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 an attitude includes at least one camera, an inertial measurement unit (IMU), a memory in which a program for estimating an attitude is recorded, and a processor for executing 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 motion state array based on .

도 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 from 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 of a cluster optimization method for estimating a posture of a device 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 surrounding space of an apparatus 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 for 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 predicted posture through second cluster optimization according to an embodiment.
11 is a flowchart of a method for generating a current predicted motion state arrangement according to an example.
12 illustrates a method of estimating a posture at an i+x time point based on the posture at the i-th time point according to an example.
13 illustrates a method of calculating a current predicted motion state arrangement according to an example.
14 illustrates a method for detecting a static state according to an example.
15 illustrates a result due to jitter generated by cyclic 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 posture of an apparatus according to an example.
18 is a block diagram of modules of an apparatus according to an example.
19 illustrates posture estimation results according to various detection methods according to an example.

이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, 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 each figure indicate like elements.

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

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

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

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

도 1은 일 예에 따른 가상 오브젝트가 출력된 이미지들을 도시한다.1 illustrates images from 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 user's gaze 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 real object 121 in the second image 120 is immediately changed by reflecting the user's gaze. However, when the user's gaze 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 positions between the real object 121 and the virtual object 122 appearing in the second image 120 may not be appropriate.

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

아래에서 용어 "자세"는 현재 측정된 데이터를 이용하여 결정된 현재의 자세를 의미하고, 용어 "예측 자세"는 현재 측정된 데이터를 이용하여 추정된 미래의 자세를 의미한다.Hereinafter, the term “posture” refers to a current posture determined using currently measured data, and the term “predicted posture” refers to a 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 device 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 the user. According to one 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 for measuring a location of a user, estimating a location of a 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/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 circuitry 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 that connects the device 200 and an external device. The communication unit 210 may be an interface. The communication unit 210 may receive data from an external device and transmit the 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, a data processing device implemented as hardware includes 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)에 의해 유발된 인스트럭션들을 실행한다.Processor 220 executes computer readable code (eg, software) stored in memory (eg, memory 230 ) and instructions issued by 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 coded to estimate the posture of the device and executable by the processor 220 .

일 측면에 따르면, 메모리(230)는 하나 이상의 휘발성 메모리, 비휘발성 메모리 및 RAM(Random Access Memory), 플래시 메모리, 하드 디스크 드라이브 및 광학 디스크 드라이브를 포함할 수 있다.According to one aspect, memory 230 may include one or more volatile memory, non-volatile 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 set of instructions for operating the device 200 is executed by the processor 220 .

카메라(240)는 장면을 촬영함으로써 이미지를 생성한다. 예를 들어, 카메라(240)는 사용자의 왼쪽 눈에 출력될 왼쪽 이미지를 생성하는 왼쪽 카메라 및 사용자의 오른쪽 눈에 출력될 오른쪽 이미지를 생성하는 오른쪽 카메라를 포함할 수 있다. 왼쪽 이미지 및 오른쪽 이미지 간에는 양안 시차가 있다. 다른 예로, 카메라(240)는 하나의 이미지를 생성할 수 있고, 프로세서(220)는 이미지 와핑(warping)과 같은 이미지 처리 방법을 이용하여 왼쪽 이미지 및 오른쪽 이미지를 생성할 수 있다.The camera 240 creates an image by photographing the 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 disparity between the left and right images. 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 an acceleration and an 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 below with reference to FIGS. 3 to 18 .

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

일 측면에 따르면, 장치(200)의 자세를 추정하기 위해 제1 클러스터 최적화 단계(310) 및 제2 클러스터 최적화 단계(320)가 수행될 수 있다. 클러스터 최적화는 장치(200)의 자세를 추정하기 위해 이용되는 파라미터들 및 알고리즘을 최적화하는 것을 의미한다.According to an aspect, a first cluster optimization step 310 and a second cluster optimization step 320 may be performed to estimate the posture of the device 200 . Cluster optimization refers to optimizing parameters and algorithms used to estimate the posture 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 method. The tight coupling cluster optimization method estimates the posture of the device 200 using 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 posture of the device 200 . The first cluster optimization step 310 is described in detail below with reference to FIGS. 4 to 8 .

제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 method. The loose coupling cluster optimization method estimates the posture of the device 200 using data measured using a small number of sensors. For example, only IMU data generated using the IMU 250 may be used to estimate the posture of the device 200 . Since the IMU data includes the acceleration and angular velocity of the device 200 , the current posture may be determined by integrating the IMU data and superimposing the integrated value on the previous posture.

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

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

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

단계(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 that movement below a preset threshold value appears.

IMU 데이터에는 통상적으로 노이즈가 포함되어 있고, 노이즈는 장치(200)의 추측 자세의 오차를 유발한다. 장치(200)의 정적 상태(또는 정지 상태)를 이용하여 자세를 추정하는 경우 노이즈의 영향을 줄일 수 있다. IMU 데이터의 국부적 변이를 분석함으로써 장치(200)가 정적 상태에 있는지가 검출될 수 있다. 장치(200)가 정지 상태인 경우, 그 다음 시점에서 클러스터 최적화를 수행할 때 자세 추정의 정확성을 높이기 위해 제약 조건을 추가한다. 제약 조건은 아래와 같다.IMU data typically includes noise, and the noise causes an error in the guess posture of the device 200 . When the posture is estimated using the static state (or the still state) of the apparatus 200 , the influence of noise may be reduced. Whether the device 200 is in a static state can be detected by analyzing local variations in the IMU data. When the device 200 is in a stationary state, a constraint is added to increase the accuracy of the posture estimation when performing cluster optimization at the next time point. The 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 a spatial location (eg, a three-dimensional location) of a map point and a location of a feature point of an 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 location of the feature point corresponding to the new map point on the image. iii) The position and posture of the device between the before and after images may be calculated through IMU data and IMU parameters between the before and after images. The IMU parameters may be motion state vectors. iv) IMU parameters may be calculated using IMU data between the plurality of images and the posture of the apparatus 200 corresponding to the plurality of images. v) Through the detected still state, it may be determined that the posture between the two images changes to zero.

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

단계(440)에서, 장치(200)의 상태에 따라 제1 클러스터 최적화가 재수행될지 또는 제2 클러스터 최적화가 수행될지가 결정된다.In step 440 , it is determined whether the first cluster optimization is to be performed again or the second cluster optimization is to be 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 posture estimation in the second cluster optimization step 320 may be optimized. Parameters and algorithms to be used for posture estimation in the second cluster optimization step 320 will be described in detail below with reference to FIGS. 10 to 13 .

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

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

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

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

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

단계(525)에서, 장치(200)는 생성된 오른쪽 이미지 내의 하나 이상의 제2 특징점들을 생성한다.In step 525 , the 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 apparatus 200 may verify a matching relationship using a fitting via random sample consensus (RANSAC) method, and may remove an erroneous match.

단계(540)에서, 장치(200)는 제1 특징점 및 제2 특징점 중 매칭된 특징점 및 매칭되지 않은 특징점에 기초하여 맵을 생성한다.In operation 540 , the apparatus 200 generates a map based on matched and unmatched key points among the first and second key 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 the following steps 610 to 630 .

단계(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 apparatus 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 posture of the device 200 based on the target feature point. For example, the initial posture may be a current posture of the camera 240 (or the device 200 ) corresponding to the user's gaze. The posture may mean a view point of the camera.

단계(310)가 반복적으로 수행되는 동안, 장치(200)의 미래 자세를 추정하기 위한 파라미터들이 최적화될 수 있다. 단계(310)를 통해 최적화된 파라미터들은 단계(320)에서 연속적으로 이용될 수 있다.While step 310 is iteratively performed, parameters for estimating a future posture 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 posture 710 of the device 200 is determined using the image and the map captured in the first posture 710 . For example, target feature points 721 and 722 of the map may be determined based on the image captured in the first posture 710 . A user may wear the device 200 and move. While moving, the motion state of the device 200 may be detected. The motion state may be IMU data. Based on the determined first posture 710 and the IMU data, the posture of the device 200 after the first posture 710 may be estimated. In order to reduce the error of the estimated posture, noise-filtered IMU data may be used. For example, noise biased IMU data may be used to estimate pose.

제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 captured 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 captured in the second posture 711 . Based on the determined second posture 711 and the IMU data, the posture of the device 200 after the second posture 711 may be estimated.

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

제4 자세(713)에서 촬영된 이미지 및 맵을 이용하여 장치(200)의 제4 자세(713)가 결정된다. 예를 들어, 제4 자세(713)에서 촬영된 이미지에 기초하여 맵의 타겟 특징점들(726, 727, 728, 729)이 결정될 수 있다. 결정된 제4 자세(712) 및 IMU 데이터에 기초하여 제4 자세(713) 이후의 장치(200)의 자세가 추정될 수 있다.A fourth posture 713 of the device 200 is determined using the image and the map captured at the fourth posture 713 . For example, target feature points 726 , 727 , 728 , and 729 of the map may be determined based on the image captured 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 posture 710 to the fourth posture 713 may be determined as the actual posture, and parameters for estimating the posture based on the actual posture may be adjusted. Through iterative estimation, the error between the actual posture and the estimated posture can 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 optimizing the second cluster.

도 8은 일 예에 따른 맵을 업데이트하는 방법의 흐름도이다.8 is a flowchart of a method for 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 remaining feature points that do 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 the 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 posture 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 rapidly estimating the posture of the apparatus 200 using data measured by a small number of sensors. For example, a smaller number of data than data used in the first cluster optimization method may be used. Since a small number of data is used, the posture estimation speed of the apparatus 200 may be increased.

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

아래에서 도 10 내지 도 15를 참조하여 루즈 커플링 클러스터 최적화 방식을 이용하여 장치(200)의 자세를 추정하는 방법이 상세히 설명된다.Hereinafter, a method of estimating the posture of the apparatus 200 using the loose coupling cluster optimization method 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 predicted posture 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 the following steps 1010 to 1040 . According to one aspect, step 320 may be performed when the state of the device 200 is a static state.

단계(1010)에서, 장치(200)는 IMU(250)를 이용하여 IMU 데이터를 생성한다.At step 1010 , device 200 generates IMU data using 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 current time point (time i).

일 측면에 따르면, 장치(200)는 장치(200)의 상태가 정적 상태인지 여부에 기초하여 제1 자세를 결정할 수 있다. 예를 들어, 장치(200)는 장치(200)의 상태가 정적 상태인 경우, IMU 데이터를 이용하여 제1 자세를 결정한다.According to an 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 state of the apparatus 200 is a static state, the device 200 determines the first posture by 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 an array of current predicted motion states based on the IMU data. The term “predicted motion state arrangement” means that vectors for predicting motion states of the device 200 are arranged according to time points. The term “present prediction motional state array” refers to a predicted motional state array estimated at a current time point (time i). The term "previous prediction motional state array" means an array of predicted motional states estimated at a previous time point (time i-1). That is, the current predicted motion state sequence may be generated by updating the previous predicted motion state sequence.

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

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

도 11은 일 예에 따른 현재 예측 운동 상태 배열을 생성하는 방법의 흐름도이다.11 is a flowchart of a method for generating a current predicted motion 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 may be used to flatten the IMU data.

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

Figure 112018043509004-pat00001
Figure 112018043509004-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. The turning speed and turning acceleration can be added to indicate the respective six-axis directions. In addition, the motion state vector may further include a position of the camera 240 .

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

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

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

일 측면에 따르면, 장치(200)는 제1 운동 상태 벡터를 입력으로 하는 장단기 메모리(Long-Short Term Memory: LSTM) 방식의 순환 신경망(recurrent neural network)을 이용하여 제N 예측 운동 상태 벡터를 생성할 수 있다. 순환 신경망은 딥 러닝 네트워크(deep learning network)로 구성될 수 있다.According to one aspect, the apparatus 200 generates an 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. can do. The recurrent 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 motion state sequence based on the motional model, the previous predicted motion state sequence, and the Nth predicted motion state vector. The motion model may include a linear motion model or a non-linear motion model. An appropriate motion model may be selected from among a plurality of motion models based on the generated IMU data.

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

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

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

자세 추정 유닛의 상세한 동작 과정은 아래와 같다.A detailed operation process of the posture 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 determined through the IMU data and the predicted posture (P′ i ) of the i-th time predicted at the i-1 time is calculated. The error may be used to adjust the motion state vector (S i ) of the i-th time point. The Kalman gain (Kg i ) may be used to further adjust the motion state vector (S i ) as needed.

ii) 제i 시점의 운동 상태 벡터(Si) 및 운동 모델(M)에 기초하여 제i+1 시점의 예측 자세(P'i+1)가 계산된다. 제i+1 시점의 예측 자세(P'i+1)는 제i+1 시점에서 자세 추정 유닛의 입력이 된다.ii) The predicted posture (P′ i+1 ) at the i+1th time point is calculated based on the motion state vector (S i ) and the motion model (M) at the i-th time point. The predicted posture P′ i+1 at the i+1th time point becomes an input to the posture 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) Using a recurrent neural network of a Long-Short Term Memory (LSTM) method with a motion state vector (S i ) as an input, i+N-1 at the i+N-1 time point A predicted motion state vector (S' i+N-1 ) is generated. In the embodiment of FIG. 12 , a motion state vector is used, but in another embodiment, other information indicating the state of the device 200 may be used, and the embodiment is not limited thereto.

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

Figure 112018043509004-pat00002
Figure 112018043509004-pat00002

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

현재 시점이 제i+1 시점으로 변화하는 경우, 제i+1 시점의 예측 자세(P'i+1) 및 이전에 계산된 현재 예측 운동 상태 배열이 이전 예측 운동 상태 배열로서 자세 추정 유닛에 순환 입력될 수 있다. 현재 시점이 제i+x 시점이 될 때까지 상기의 동작들이 순환적으로 수행될 수 있다. 순환 방식을 이용하여 제i+x 시점 예측 자세 및 IMU 데이터를 이용하여 결정된 제i+x 시점 예측 자세 간의 오차를 감소시킬 수 있다.When the current time point changes to the i+1th time point, the predicted posture (P′ i+1 ) of the i+1th time point and the previously calculated current predicted motion state arrangement are circulated to the posture estimation unit as the previous predicted motion state arrangement. can be entered. The above operations may be cyclically performed until the current time point becomes the i+x time point. An error between the predicted posture at the i+x time point and the posture predicted using the IMU data may be reduced by using the cycle method.

도 13은 일 예에 따른 현재 예측 운동 상태 배열을 계산하는 방법을 도시한다.13 illustrates a method of calculating a current predicted motion 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-1th 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 prediction motion state array may include N pieces of data, and the latest data may be added in a first in first out (FIFO) manner. The LSTM prediction motion state arrangement may be a motional state sliding window.

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

생성된 현재 예측 운동 상태 배열에 기초하여 제i+x 시점의 예측 자세(P"i+x)가 생성될 수 있다. 예를 들어, 아래의 [수학식 2]을 이용하여 제i+x 시점의 예측 자세(P"i+x)가 계산될 수 있다.The predicted posture (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 using the following [Equation 2] A predicted posture (P" i+x ) of can be calculated.

Figure 112018043509004-pat00003
Figure 112018043509004-pat00003

도 14는 일 예에 따른 정적 상태를 검출하는 방법을 도시한다.14 illustrates a method for 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 when the user walks. Due to the repeatability of the user's gait, the distribution of the IMU data changes periodically. If the local variance (dispersion within the time window) of the IMU data is smaller than the predicted threshold, it corresponds to the phase in which the foot touches the ground in response to the center of mass, and this phase corresponds to the zero-speed interval. It is said In one embodiment, a zero velocity section is extracted from the motion process of the device 200 using a threshold value, and this section is added as a constraint to cluster optimization.

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

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

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

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

Figure 112018043509004-pat00004
Figure 112018043509004-pat00004

[수학식 4]에서,

Figure 112018043509004-pat00005
는 대부분 상황에서 0.6이고,
Figure 112018043509004-pat00006
는 오브젝트의 크기이고,
Figure 112018043509004-pat00007
는 망막에 투사되는 오브젝트의 크기이다.In [Equation 4],
Figure 112018043509004-pat00005
is 0.6 in most situations,
Figure 112018043509004-pat00006
is the size of the object,
Figure 112018043509004-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, there is a need to determine the posture of the device 200 at the current viewpoint by using a Simultaneous Localization and Mapping (SLAM) calculation method, and then create a virtual object according to the posture of the device 200 . In addition, the created virtual object can be output or displayed by superimposing it on the real object. When the creation of the virtual object is complicated or lighting calculation is included, it takes a certain amount of time to create the virtual object. This may cause a certain delay in the output of the virtual object, which may affect the AR or VR effect. An image output method that can reduce this delay is described below.

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

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

이전 이미지에 대해 생성된 홀로그래픽 이미지와 깊이 이미지가 새로운 홀로그래픽 이미지를 생성하기 위해 이용될 수 있다. 이전 이미지의 각 포인트에 대한 깊이 정보 및 두 개의 이미지들의 홀로그램 이미지에 대응하는 장치(200)의 자세는 미리 알고 있는 정보이므로, 생성될 이미지의 화소에 대응하는 이전 이미지의 화소의 위치가 계산될 수 있다. 이전 이미지의 화소를 상기 화소에 대응하는 생성될 이미지의 화소에 복사한다. 이러한 방법은 처리해야할 계산량을 감소시키므로 가상 오브젝트의 생성 시간을 감소시킬 수 있다.The holographic image and depth image created for the previous image can be used to create a new holographic image. Since the depth information for each point of the previous image and the posture of the device 200 corresponding to the holographic 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 can be calculated. have. The pixels of the previous image are copied to the pixels of the image to be created corresponding to those pixels. Since this method reduces the amount of computation to be processed, it is possible to reduce 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 a rendering period of the virtual object, and adjusts the virtual object to correspond to the obtained 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, IMU data may be generated at time points between the time points at which the virtual object is output. For example, the motion state of the apparatus 200 between the first time point and the M-th time point may be obtained by integrating the IMU data. A posture change may be obtained based on the obtained motion state, and the virtual object may be adjusted using the obtained posture change.

단계(1630)에서, 장치(200)는 가상 오브젝트를 출력한다. 예를 들어, 장치(200)는 제M 시점에 대한 이미지를 생성하고, 생성된 이미지와 가상 오브젝트가 합성되도록 가상 오브젝트를 출력할 수 있다. 다른 예로, 장치(200)는 가상 오브젝트만을 출력할 수 있다.In step 1630 , the device 200 outputs a virtual object. For example, the apparatus 200 may generate an image for the M-th viewpoint, and output the virtual object so that the generated image and the virtual object are synthesized. 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 posture of an apparatus according to an example.

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

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

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

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

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

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

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through 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 medium may be specially designed and configured for the embodiment, or may be known and available to those skilled in the art of computer software. Examples of the computer-readable recording medium include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic such as floppy disks. - includes magneto-optical media, and hardware devices specially configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like. The hardware devices 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 comprise a computer program, code, instructions, or a combination of one or more thereof, which configures a processing device to operate as desired or is independently or collectively processed You can command the device. The software and/or data may be any kind of machine, component, physical device, virtual equipment, computer storage medium or device, to be interpreted by or to provide instructions or data to the processing device. , or may be permanently or temporarily embody in a transmitted signal wave. The software may be distributed over networked computer systems and stored or executed in a distributed manner. Software and data may be stored in one or more computer-readable recording media.

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

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also 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 보다 큰 자연수임 -
를 포함하고,
상기 현재 예측 운동 상태 배열을 생성하는 단계는,
상기 IMU 데이터를 평탄화(smoothing)하는 단계;
상기 평탄화된 IMU 데이터에 기초하여 상기 제1 시점의 제1 운동 상태 벡터(first motional state vector)를 생성하는 단계;
상기 제1 운동 상태 벡터에 기초하여 제N 시점의 제N 예측 운동 상태 벡터를 결정하는 단계 - 상기 N은 상기 M보다 큰 자연수임 -; 및
운동 모델(motional model), 이전 예측 운동 상태 배열(previous prediction motional state array) 및 상기 제N 예측 운동 상태 벡터에 기초하여 상기 현재 예측 운동 상태 배열을 생성하는 단계
를 포함하는,
자세 추정 방법.
A method for estimating a posture of a device, performed by the device, comprising:
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 M th prediction pose at an M th time point after a first time point of the first pose, based on the current predicted motion state arrangement, wherein M is greater than 1 natural Commitment -
including,
The step of generating the current predicted motion state array comprises:
smoothing the IMU data;
generating a first motional state vector of the first time point based on the flattened IMU data;
determining an N-th predicted motion-state vector at an N-th time based on the first motion-state vector, wherein N is a natural number greater than M; and
generating the current predicted motional state array based on a motional model, a previous prediction motional state array, and the Nth predicted motional state vector;
containing,
Posture estimation method.
삭제delete 제1항에 있어서,
상기 제1 운동 상태 벡터를 생성하는 단계는,
상기 제1 자세와 미리 추정된 제1 예측 자세(first prediction pose) 간의 차이에 기초하여 상기 평탄화된 IMU 데이터를 보정함으로써 상기 제1 운동 상태 벡터를 생성하는 단계
를 포함하는,
자세 추정 방법.
According to claim 1,
The step of generating the first motion state vector comprises:
generating the first motion state vector by correcting the flattened IMU data based on a difference between the first pose and a pre-estimated first prediction pose;
containing,
Posture estimation method.
제1항에 있어서,
상기 제N 예측 운동 상태 벡터를 결정하는 단계는,
상기 제1 운동 상태 벡터를 입력으로 하는 장단기 메모리(Long-Short Term Memory: LSTM) 방식의 순환 신경망(recurrent neural network)을 이용하여 상기 제N 예측 운동 상태 벡터를 생성하는 단계
를 포함하는,
자세 추정 방법.
According to claim 1,
The determining of the N-th predicted motion state vector comprises:
Generating 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
containing,
Posture estimation method.
제1항에 있어서,
상기 제1 운동 상태 벡터를 생성하는 단계는,
상기 장치의 사용자의 안구 운동 속도(ocular movement velocity) 및 사용자의 머리 운동 속도(head movement velocity) 중 적어도 하나에 기초하여 상기 제1 운동 상태 벡터를 생성하는 빈도를 결정하는 단계
를 포함하는,
자세 추정 방법.
According to claim 1,
The step of generating the first motion state vector comprises:
determining a frequency of generating the first motion state vector based on at least one of a user's ocular movement velocity and a user's head movement velocity of the device;
containing,
Posture estimation method.
제1항에 있어서,
상기 IMU 데이터에 기초하여 상기 장치의 상태가 정적 상태인지 여부를 결정하는 단계
를 더 포함하고,
상기 장치의 제1 자세를 결정하는 단계는,
상기 장치의 상태가 정적 상태인지 여부에 기초하여 제1 자세를 결정하는 단계
를 포함하는,
자세 추정 방법.
According to claim 1,
determining whether the state of the device is a static state based on the IMU data;
further comprising,
Determining the first posture of the device comprises:
determining a first posture based on whether the state of the device is a static state;
containing,
Posture estimation method.
제1항에 있어서,
상기 제M 시점에서 출력될 가상 오브젝트(virtual object)를 생성하는 단계; 및
상기 가상 오브젝트를 출력하는 단계
를 더 포함하는,
자세 추정 방법.
According to 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항에 있어서,
상기 가상 오브젝트를 렌더링하는 기간동안 발생하는 장치의 자세 변화에 기초하여 상기 가상 오브젝트를 조정하는 단계
를 더 포함하는,
자세 추정 방법.
8. The method of claim 7,
adjusting the virtual object based on a change in the posture of the device that occurs during the rendering period of the virtual object;
further comprising,
Posture estimation method.
제7항에 있어서,
상기 가상 오브젝트를 출력하는 단계는,
제M 시점에 대한 이미지와 상기 가상 오브젝트가 합성되도록 가상 오브젝트를 출력하는 단계
를 포함하는,
자세 추정 방법.
8. The method of claim 7,
The step of outputting the virtual object comprises:
Outputting a virtual object so that the image for the Mth viewpoint and the virtual object are synthesized
containing,
Posture estimation method.
제7항에 있어서,
상기 가상 오브젝트는 홀로그래픽 이미지(holographic image)인,
자세 추정 방법.
8. The method of claim 7,
The virtual object is a holographic image (holographic image),
Posture estimation method.
제1항에 있어서,
상기 장치의 주변 공간에 대한 맵을 생성하는 단계;
상기 맵을 이용하여 초기 자세(initial pose)를 결정하는 단계; 및
IMU 데이터에 기초하여 상기 장치가 정적 상태(static state)인지 여부를 결정하는 단계
를 더 포함하고,
상기 제1 자세는 상기 장치가 정적 상태인 경우에 결정되는,
자세 추정 방법.
According to claim 1,
generating a map of 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;
further comprising,
wherein the first posture is determined when the device is in a static state;
Posture estimation method.
제11항에 있어서,
상기 맵을 생성하는 단계는,
상기 장치의 왼쪽 카메라를 이용하여 왼쪽 이미지를 생성하는 단계;
상기 왼쪽 이미지로부터 하나 이상의 제1 특징점들을 생성하는 단계;
상기 장치의 오른쪽 카메라를 이용하여 오른쪽 이미지를 생성하는 단계;
상기 오른쪽 이미지로부터 하나 이상의 제2 특징점들을 생성하는 단계;
상기 제1 특징점들 및 상기 제2 특징점들을 매칭하는 단계; 및
제1 특징점들 및 상기 제2 특징점들 중 매칭된 특징점들 및 매칭되지 않은 특징점들에 기초하여 상기 맵을 생성하는 단계
를 포함하는,
자세 추정 방법.
12. The method of claim 11,
Creating the map includes:
generating a left image using a 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 among the first feature points and the second feature points
containing,
Posture estimation method.
제12항에 있어서,
상기 초기 자세를 결정하는 단계는,
상기 왼쪽 카메라 및 상기 오른쪽 카메라 중 적어도 하나에 의해 생성된 이미지로부터 하나의 이상의 특징점(feature point)들을 생성하는 단계;
상기 맵에 미리 설정된 후보 특징점(candidate feature point)들 중 상기 하나 이상의 특징점들에 대응하는 타겟 특징점(target point)을 결정하는 단계; 및
상기 타겟 특징점에 기초하여 상기 초기 자세를 결정하는 단계
를 포함하는,
자세 추정 방법.
13. The method of claim 12,
The step of determining the initial posture comprises:
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 feature 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
containing,
Posture estimation method.
제13항에 있어서,
상기 초기 자세를 결정하는 단계는,
상기 하나 이상의 특징점들 중 상기 맵에 미리 설정된 후보 특징점들에 대응하지 않은 나머지 특징점(remaining feature point)을 결정하는 단계; 및
상기 나머지 특징점에 대응하는 특징점을 상기 맵에 추가함으로써 상기 맵을 업데이트하는 단계
를 더 포함하는,
자세 추정 방법.
14. The method of claim 13,
The step of determining the initial posture comprises:
determining, among the one or more feature points, remaining feature points that do 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)인,
자세 추정 방법.
According to claim 1,
The device is
A wearable device,
Posture estimation method.
제1항 및 제3항 내지 제15항 중 어느 한 항의 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
A computer-readable recording medium storing 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 보다 큰 자연수임 -
를 수행하고,
상기 현재 예측 운동 상태 배열을 생성하는 단계는,
상기 IMU 데이터를 평탄화(smoothing)하는 단계;
상기 평탄화된 IMU 데이터에 기초하여 상기 제1 시점의 제1 운동 상태 벡터(first motional state vector)를 생성하는 단계;
상기 제1 운동 상태 벡터에 기초하여 제N 시점의 제N 예측 운동 상태 벡터를 결정하는 단계 - 상기 N은 상기 M보다 큰 자연수임 -; 및
운동 모델(motional model), 이전 예측 운동 상태 배열(previous prediction motional state array) 및 상기 제N 예측 운동 상태 벡터에 기초하여 상기 현재 예측 운동 상태 배열을 생성하는 단계
를 포함하는,
자세 추정 장치.
In the posture estimation device,
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 is
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 motion state array based on the IMU data; and
estimating an M-th predicted posture at an M-th time point after the first time point of the first posture based on the current predicted motion state arrangement, wherein M is a natural number greater than 1;
do,
The step of generating the current predicted motion state array comprises:
smoothing the IMU data;
generating a first motional state vector of the first time point based on the flattened IMU data;
determining an N-th predicted motion-state vector at an N-th time based on the first motion-state vector, wherein N is a natural number greater than M; and
generating the current predicted motional state array based on a motional model, a previous prediction motional state array, and the Nth predicted motional state vector;
containing,
Posture estimation device.
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.1 2018-02-12
CN201810148359.1A CN110163909B (en) 2018-02-12 2018-02-12 Method, apparatus and storage medium for obtaining device pose

Publications (2)

Publication Number Publication Date
KR20190098003A KR20190098003A (en) 2019-08-21
KR102442780B1 true 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) CN110163909B (en)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN110910447B (en) * 2019-10-31 2023-06-06 北京工业大学 Visual odometer method based on dynamic and static scene separation
CN112785682A (en) * 2019-11-08 2021-05-11 华为技术有限公司 Model generation method, model reconstruction method and device
CN110954134B (en) * 2019-12-04 2022-03-25 上海有个机器人有限公司 Gyro offset correction method, correction system, electronic device, and storage medium
US11430179B2 (en) * 2020-02-24 2022-08-30 Microsoft Technology Licensing, Llc Depth buffer dilation for remote rendering
CN113807124B (en) * 2020-06-11 2023-12-12 Oppo广东移动通信有限公司 Image processing method, device, storage medium and electronic equipment
CN111862288B (en) * 2020-07-29 2024-08-13 北京小米移动软件有限公司 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
CN113847907B (en) * 2021-09-29 2024-09-13 深圳市慧鲤科技有限公司 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
CN117726678B (en) * 2023-12-12 2024-09-20 中山大学·深圳 Unmanned system pose estimation method, unmanned system pose estimation device, computer equipment and storage medium
CN117889853B (en) * 2024-03-15 2024-06-04 歌尔股份有限公司 SLAM positioning method, terminal device and readable storage medium

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170206712A1 (en) * 2014-11-16 2017-07-20 Eonite Perception Inc. Optimizing head mounted displays for augmented reality

Family Cites Families (5)

* 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
US9652893B2 (en) * 2014-04-29 2017-05-16 Microsoft Technology Licensing, Llc Stabilization plane determination based on gaze location
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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170206712A1 (en) * 2014-11-16 2017-07-20 Eonite Perception Inc. Optimizing head mounted displays for augmented reality

Also Published As

Publication number Publication date
CN110163909B (en) 2024-08-13
CN110163909A (en) 2019-08-23
KR20190098003A (en) 2019-08-21

Similar Documents

Publication Publication Date Title
KR102442780B1 (en) Method for estimating pose of device and thereof
US11010921B2 (en) Distributed pose estimation
US20190251696A1 (en) Device and method with pose estimator
KR102006043B1 (en) Head pose tracking using a depth camera
CN107748569B (en) Motion control method and device for unmanned aerial vehicle and unmanned aerial vehicle system
US7613356B2 (en) Position and orientation detection method and apparatus
US12073630B2 (en) Moving object tracking method and apparatus
US20060146046A1 (en) Eye tracking system and method
EP3896655B1 (en) Augmented reality (ar) device and method of predicting pose therein
KR20170053007A (en) Method and apparatus for estimating pose
KR102559203B1 (en) Method and apparatus of outputting pose information
Tomažič et al. Fusion of visual odometry and inertial navigation system on a smartphone
WO2022066486A1 (en) Joint camera and inertial measurement unit calibration
KR20220122287A (en) Method and apparatus for determining pose of augmented reality providing device
CN117044194A (en) Contextualization and refinement of synchronous positioning and map construction
US11188787B1 (en) End-to-end room layout estimation
US20240071018A1 (en) Smooth object correction for augmented reality devices
KR20230018214A (en) Method and apparatus of estimating pose
US12094154B2 (en) Electronic device for predicting pose and operating method thereof
EP2990085B1 (en) Method and apparatus for estimating the value of an input in presence of a perturbing factor
US11443455B2 (en) Prior informed pose and scale estimation
KR20180061956A (en) Method and apparatus for estimating eye location
KR102555269B1 (en) Posture estimation fusion method and system using omnidirectional image sensor and inertial measurement sensor
WO2021065607A1 (en) Information processing device and method, and program
KR20220107471A (en) Pose prediction method, pose prediction device, and augmented reality glasses based on pose prediction

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