KR20190098003A - Method for estimating pose of device and thereof - Google Patents
Method for estimating pose of device and thereof Download PDFInfo
- Publication number
- KR20190098003A KR20190098003A KR1020180050747A KR20180050747A KR20190098003A KR 20190098003 A KR20190098003 A KR 20190098003A KR 1020180050747 A KR1020180050747 A KR 1020180050747A KR 20180050747 A KR20180050747 A KR 20180050747A KR 20190098003 A KR20190098003 A KR 20190098003A
- Authority
- KR
- South Korea
- Prior art keywords
- posture
- generating
- determining
- feature points
- imu data
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 102
- 230000033001 locomotion Effects 0.000 claims description 54
- 239000013598 vector Substances 0.000 claims description 46
- 230000003068 static effect Effects 0.000 claims description 17
- 230000008859 change Effects 0.000 claims description 9
- 238000005259 measurement Methods 0.000 claims description 8
- 238000013528 artificial neural network Methods 0.000 claims description 5
- 230000004886 head movement Effects 0.000 claims description 4
- 230000000306 recurrent effect Effects 0.000 claims description 4
- 238000009877 rendering Methods 0.000 claims description 3
- 238000009499 grossing Methods 0.000 claims description 2
- 230000036544 posture Effects 0.000 description 86
- 238000005457 optimization Methods 0.000 description 33
- 230000000386 athletic effect Effects 0.000 description 20
- 238000004891 communication Methods 0.000 description 12
- 238000001514 detection method Methods 0.000 description 11
- 238000010168 coupling process Methods 0.000 description 8
- 230000008878 coupling Effects 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 210000001508 eye Anatomy 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 206010047571 Visual impairment Diseases 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 210000001525 retina Anatomy 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 210000005252 bulbus oculi Anatomy 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000004424 eye movement Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0346—Pointing 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
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C21/00—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
- G01C21/10—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration
- G01C21/12—Navigation; 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/16—Navigation; 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
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03H—HOLOGRAPHIC PROCESSES OR APPARATUS
- G03H1/00—Holographic processes or apparatus using light, infrared or ultraviolet waves for obtaining holograms or for obtaining an image from them; Details peculiar thereto
- G03H1/04—Processes or apparatus for producing holograms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
- G06F1/1613—Constructional details or arrangements for portable computers
- G06F1/163—Wearable computers, e.g. on a belt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/002—Specific input/output arrangements not covered by G06F3/01 - G06F3/16
- G06F3/005—Input arrangements through a video camera
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/038—Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Automation & Control Theory (AREA)
- Image Analysis (AREA)
- Analysing Materials By The Use Of Radiation (AREA)
Abstract
Description
아래의 실시예들은 장치의 자세를 추정하기 위한 방법 및 그 장치에 관한 것으로, 보다 상세하게는 관성 측정 장치(IMU)를 이용하여 장치의 자세를 추정하는 방법 및 그 장치에 관한 것이다.The following embodiments relate to a method and apparatus for estimating the attitude of the apparatus, and more particularly, to a method and apparatus for estimating the attitude of the apparatus using an inertial measurement apparatus (IMU).
"가상 현실(virtual reality: VR)" 또는 "증강 현실(augmented reality: AR)"과 같은 디스플레이 기술들은 출력된 이미지가 실제인 것처럼 사용자에게 느껴져야 한다. 사용자는 이러한 기술들을 통해 현실에서는 경험할 수 없는, 다양한 경험을 체험할 수 있다. VR 또는 AR을 통해 사용자에게 제공되는 이미지는 실시간성이 중요하다. 특히, 사용자의 자세와 밀접한 관계가 있는 출력 이미지는 사용자의 자세를 정확히 검출해야 한다. 출력 이미지의 실시간성이 낮은 경우, 사용자는 사용자의 자세와 출력 이미지와의 차이에서 발생하는 오차에 의해 불편함을 느낀다.Display technologies such as "virtual reality (VR)" or "augmented reality (AR)" should be felt by the user as if the output image is real. These technologies allow the user to experience a variety of experiences that cannot be experienced in reality. Images provided to the user through VR or AR are important for real time. In particular, the output image closely related to the posture of the user should accurately detect the posture of the user. If the real time of the output image is low, the user may be uncomfortable due to an error occurring in the difference between the posture of the user and the output image.
예를 들어, 사용자의 자세를 검출하기 위해 사용자가 착용하는 방식의 장치가 이용될 수 있다. 많은 센서들을 통해 장치의 자세를 검출하는 타이트 커플링(tight coupling) 방법은 높은 정확도를 갖는 장점이 있으나, 많은 데이터로 인하여 고려해야할 제약들이 많아 계산 속도가 느리고, 지연이 발생한다.For example, a device worn by the user may be used to detect the posture of the user. Tight coupling method of detecting the attitude of the device through many sensors has the advantage of high accuracy, but due to a lot of data, there are many constraints to consider and the calculation speed is slow and delay occurs.
일 실시예는 장치의 위치를 추정하는 방법 및 그 장치를 제공할 수 있다.One embodiment may provide a method of estimating the location of a device and the device.
일 실시예는 루즈 커플링 방법을 이용하여 장치의 위치를 추정하는 방법 및 그 장치를 제공할 수 있다.One embodiment can provide a method and apparatus for estimating the position of a device using a loose coupling method.
일 측면에 따른, 장치에 의해 수행되는 장치의 자세 추정 방법은, 상기 장치의 관성 측정 장치(Inertial Measurement Unit: IMU)를 이용하여 IMU 데이터를 생성하는 단계, 상기 IMU 데이터에 기초하여 상기 장치의 제1 자세(first pose)를 결정하는 단계, 상기 IMU 데이터에 기초하여 현재 예측 운동 상태 배열(present prediction motional state array)을 생성하는 단계, 및 상기 현재 예측 운동 상태 배열에 기초하여, 상기 제1 자세의 제1 시점(first time point) 이후의 제M 시점에서의 제M 예측 자세(prediction pose)를 추정하는 단계를 포함한다.According to an aspect, a method of estimating a posture of a device performed by a device may include generating IMU data using an Inertial Measurement Unit (IMU) of the device, based on the IMU data. Determining a first pose, generating a present prediction motional state array based on the IMU data, and based on the current predicted motion state array, Estimating an M-th prediction pose at a M-th point after the first time point.
상기 현재 예측 운동 상태 배열을 생성하는 단계는, 상기 IMU 데이터를 평탄화(smoothing)하는 단계, 상기 평탄화된 IMU 데이터에 기초하여 상기 제1 시점의 제1 운동 상태 벡터(first motional state vector)를 생성하는 단계, 상기 제1 운동 상태 벡터에 기초하여 제N 시점의 제N 예측 운동 상태 벡터를 결정하는 단계, 및 운동 모델(motional model), 이전 예측 운동 상태 배열(previous prediction motional state array) 및 상기 제N 예측 운동 상태 벡터에 기초하여 상기 현재 예측 운동 상태 배열을 생성하는 단계를 포함할 수 있다.The generating of the current predicted motion state arrangement may include smoothing the IMU data and generating a first motional state vector of the first view based on the flattened IMU data. Determining an Nth predicted motion state vector of the Nth view based on the first motion state vector, and a motion model, a previous prediction motional state array, and the Nth view. And generating the current predicted exercise state array based on a predicted exercise state vector.
상기 제1 운동 상태 벡터를 생성하는 단계는, 상기 제1 자세와 미리 추정된 제1 예측 자세(first prediction pose) 간의 차이에 기초하여 상기 평탄화된 IMU 데이터를 보정함으로써 상기 제1 운동 상태 벡터를 생성하는 단계를 포함할 수 있다.The generating of the first motion state vector may include generating the first motion state vector by correcting the flattened IMU data based on a difference between the first pose and a first estimated pose. It may include the step.
상기 제N 예측 운동 상태 벡터를 결정하는 단계는, 상기 제1 운동 상태 벡터를 입력으로 하는 장단기 메모리(Long-Short Term Memory: LSTM) 방식의 순환 신경망(recurrent neural network)을 이용하여 상기 제N 예측 운동 상태 벡터를 생성하는 단계를 포함할 수 있다.The determining of the N th predicted motion state vector may include: determining the N th predicted motion state vector using a recurrent neural network of a Long-Short Term Memory (LSTM) method using the first motion state vector as an input. Generating an exercise state vector.
상기 제1 운동 상태 벡터를 생성하는 단계는, 상기 장치의 사용자의 안구 운동 속도(ocular movement velocity) 및 사용자의 머리 운동 속도(head movement velocity) 중 적어도 하나에 기초하여 상기 제1 운동 상태 벡터를 생성하는 빈도를 결정하는 단계를 포함할 수 있다.The generating of the first motion state vector may include generating the first motion state vector based on at least one of an ocular movement velocity of a user of the device and a head movement velocity of the user. And determining the frequency of doing so.
상기 자세 추정 방법은, 상기 IMU 데이터에 기초하여 상기 장치의 상태가 정적 상태인지 여부를 결정하는 단계를 더 포함하고, 상기 장치의 제1 자세를 결정하는 단계는, 상기 장치의 상태가 정적 상태인지 여부에 기초하여 제1 자세를 결정하는 단계를 포함할 수 있다.The attitude estimation method further includes determining whether the state of the device is a static state based on the IMU data, and determining the first attitude of the device comprises: determining whether the state of the device is a static state The method may include determining a first posture based on whether or not the posture is determined.
상기 자세 추정 방법은, 상기 제M 시점에서 출력될 가상 오브젝트(virtual object)를 생성하는 단계, 및 상기 가상 오브젝트를 출력하는 단계를 더 포함할 수 있다.The attitude estimation method may further include generating a virtual object to be output at the Mth time point, and outputting the virtual object.
상기 자세 추정 방법은, 상기 가상 오브젝트를 렌더링하는 기간동안 발생하는 장치의 자세 변화에 기초하여 상기 가상 오브젝트를 조정하는 단계를 더 포함할 수 있다.The posture estimating method may further include adjusting the virtual object based on a change in posture of the device occurring during the rendering of the virtual object.
상기 가상 오브젝트를 출력하는 단계는, 제M 시점에 대한 이미지와 상기 가상 오브젝트가 합성되도록 가상 오브젝트를 출력하는 단계를 포함할 수 있다.The outputting of the virtual object may include outputting the virtual object such that the image for the Mth viewpoint and the virtual object are synthesized.
상기 가상 오브제트는 홀로그래픽 이미지(holographic image)일 수 있다.The virtual object may be a holographic image.
상기 자세 추정 방법은, 상기 장치의 주변 공간에 대한 맵을 생성하는 단계, 상기 맵을 이용하여 초기 자세(initial pose)를 결정하는 단계, 및 IMU 데이터에 기초하여 상기 장치가 정적 상태(static state)인지 여부를 결정하는 단계를 더 포함하고, 상기 제1 자세는 상기 장치가 정적 상태인 경우에 결정될 수 있다.The pose estimation method may include generating a map of the surrounding space of the device, determining an initial pose using the map, and based on IMU data, the device is in a static state. Determining whether or not to recognize, wherein the first posture may be determined when the device is in a static state.
상기 맵을 생성하는 단계는, 상기 장치의 왼쪽 카메라를 이용하여 왼쪽 이미지를 생성하는 단계, 상기 왼쪽 이미지로부터 하나 이상의 제1 특징점들을 생성하는 단계, 상기 장치의 오른쪽 카메라를 이용하여 오른쪽 이미지를 생성하는 단계, 상기 오른쪽 이미지로부터 하나 이상의 제2 특징점들을 생성하는 단계, 상기 제1 특징점들 및 상기 제2 특징점들을 매칭하는 단계, 및 제1 특징점들 및 상기 제2 특징점들 중 매칭된 특징점들 및 매칭되지 않은 특징점들에 기초하여 상기 맵을 생성하는 단계를 포함할 수 있다.The generating of the map may include generating a left image using the left camera of the device, generating one or more first feature points from the left image, and generating a right image using the right camera of the device. Generating one or more second feature points from the right image, matching the first feature points and the second feature points, and matching and not matching one of the first feature points and the second feature points. And generating the map based on feature points that are not.
상기 초기 자세를 결정하는 단계는, 상기 왼쪽 카메라 및 상기 오른쪽 카메라 중 적어도 하나에 의해 생성된 이미지로부터 하나의 이상의 특징점(feature point)들을 생성하는 단계, 상기 맵에 미리 설정된 후보 특징점(candidate feature point)들 중 상기 하나 이상의 특징점들에 대응하는 타겟 특징점(target point)을 결정하는 단계, 및 상기 타겟 특징점에 기초하여 상기 초기 자세를 결정하는 단계를 포함할 수 있다.The determining of the initial posture may include generating one or more feature points from an image generated by at least one of the left camera and the right camera, and a candidate feature point preset in the map. The method may include determining a target point corresponding to the one or more feature points, and determining the initial posture based on the target feature point.
상기 초기 자세를 결정하는 단계는, 상기 하나 이상의 특징점들 중 상기 맵에 미리 설정된 후보 특징점들에 대응하지 않은 나머지 특징점(remaining feature point)을 결정하는 단계, 및 상기 나머지 특징점에 대응하는 특징점을 상기 맵에 추가함으로써 상기 맵을 업데이트하는 단계를 더 포함할 수 있다.The determining of the initial posture may include determining a remaining feature point that does not correspond to candidate feature points preset in the map among the one or more feature points, and the feature point corresponding to the remaining feature points. The method may further include updating the map by adding to.
상기 장치는, 웨어러블 장치(wearable device)일 수 있다.The device may be a wearable device.
다른 일 측면에 따른, 자세를 추정하는 장치는, 적어도 하나의 카메라, 관성 측정 장치(Inertial Measurement Unit: IMU), 자세를 추정하는 프로그램이 기록된 메모리, 및 상기 프로그램을 수행하는 프로세서를 포함하고, 상기 프로그램은, 상기 장치의 관성 측정 장치(Inertial Measurement Unit: IMU)를 이용하여 IMU 데이터를 생성하는 단계, 상기 IMU 데이터에 기초하여 상기 장치의 제1 자세(pose)를 결정하는 단계, 상기 IMU 데이터에 기초하여 현재 예측 운동 상태 배열을 생성하는 단계, 및 상기 현재 예측 운동 상태 배열에 기초하여, 상기 제1 자세의 제1 시점 이후의 제M 시점에서의 제M 예측 자세를 추정하는 단계를 수행한다.According to another aspect, an apparatus for estimating a pose includes at least one camera, an inertial measurement unit (IMU), a memory in which a program for estimating a pose is recorded, and a processor for performing the program, The program may include generating IMU data using an Inertial Measurement Unit (IMU) of the device, determining a first pose of the device based on the IMU data, and the IMU data. Generating a current predicted exercise state arrangement based on the second predictive state, and estimating an M-th predicted posture at an M-th time point after a first time point of the first posture based on the current predicted exercise state arrangement. .
도 1은 일 예에 따른 가상 오브젝트가 출력된 이미지들을 도시한다.
도 2는 일 실시예에 따른 장치의 구성도이다.
도 3은 일 예에 따른 장치의 자세 추정을 위한 클러스터 최적화 방법의 흐름도이다.
도 4는 일 예에 따른 제1 클러스터 최적화 방법의 흐름도이다.
도 5는 일 예에 따른 장치의 주변 공간에 대한 맵을 생성하는 방법의 흐름도이다.
도 6은 일 예에 따른 맵을 이용하여 초기 자세를 결정하는 방법의 흐름도이다.
도 7은 일 예에 따른 초기 자세를 결정하는 동안 클러스터를 최적화하는 방법을 도시한다.
도 8은 일 예에 따른 맵을 업데이트하는 방법의 흐름도이다.
도 9는 일 예에 따른 제2 클러스터 최적화 방법을 도시한다.
도 10은 일 실시예에 따른 제2 클러스터 최적화를 통해 제M 예측 자세를 추정하는 방법의 흐름도이다.
도 11은 일 예에 따른 현재 예측 운동 상태 배열을 생성하는 방법의 흐름도이다.
도 12는 일 예에 따른 제i 시점의 자세에 기초하여 제i+x 시점의 자세를 추정하는 방법을 도시한다.
도 13은 일 예에 따른 현재 예측 운동 상태 배열을 계산하는 방법을 도시한다.
도 14는 일 예에 따른 정적 상태를 검출하는 방법을 도시한다.
도 15는 일 예에 따른 순환 검출에 의해 발생한 지터에 의한 결과를 도시한다.
도 16은 일 예에 따른 가상 오브젝트를 출력하는 방법의 흐름도이다.
도 17은 일 예에 따른 장치의 추정 자세에 기초하여 합성 이미지를 출력하는 방법을 도시한다.
도 18은 일 예에 따른 장치의 모듈들의 구성도이다.
도 19는 일 예에 따른 다양한 검측 방법에 따른 자세 추정 결과를 도시한다.1 illustrates images in which a virtual object is output according to an example.
2 is a block diagram of an apparatus according to an embodiment.
3 is a flowchart illustrating a cluster optimization method for attitude estimation of an apparatus according to an example.
4 is a flowchart of a first cluster optimization method according to an example.
5 is a flowchart of a method of generating a map for a peripheral space of a device according to an example.
6 is a flowchart of a method of determining an initial posture using a map according to an example.
7 illustrates a method of optimizing a cluster while determining an initial posture according to an example.
8 is a flowchart of a method of updating a map, according to an example.
9 illustrates a second cluster optimization method according to an example.
10 is a flowchart of a method of estimating an M-th prediction attitude through second cluster optimization, according to an embodiment.
11 is a flowchart of a method of generating a current predicted exercise state arrangement according to an example.
12 illustrates a method of estimating an attitude of an i + x point of view based on an attitude of an i th view according to an example.
13 illustrates a method of calculating a current predicted exercise state arrangement according to an example.
14 illustrates a method of detecting a static state according to an example.
15 illustrates a result due to jitter generated by circular detection according to an example.
16 is a flowchart of a method of outputting a virtual object according to an example.
17 illustrates a method of outputting a composite image based on an estimated attitude of the apparatus according to an example.
18 is a block diagram illustrating modules of an apparatus according to an example.
19 is a view illustrating a pose estimation result according to various detection methods according to an example.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, exemplary embodiments will be described in detail with reference to the accompanying drawings. However, the scope of the patent application is not limited or limited by these embodiments. Like reference numerals in the drawings denote like elements.
아래 설명하는 실시예들에는 다양한 변경이 가해질 수 있다. 아래 설명하는 실시예들은 실시 형태에 대해 한정하려는 것이 아니며, 이들에 대한 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.Various modifications may be made to the embodiments described below. The examples described below are not intended to be limited to the embodiments and should be understood to include all modifications, equivalents, and substitutes for them.
실시예에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 실시예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular example embodiments only and is not intended to be limiting of examples. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this specification, terms such as "comprise" or "have" are intended to indicate that there is a feature, number, step, action, component, part, or combination thereof described on the specification, and one or more other features. It is to be understood that the present invention does not exclude the possibility of the presence or the addition of numbers, steps, operations, components, components, or a combination thereof.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art. Terms such as those defined in the commonly used dictionaries should be construed as having meanings consistent with the meanings in the context of the related art and shall not be construed in ideal or excessively formal meanings unless expressly defined in this application. Do not.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.In addition, in the description with reference to the accompanying drawings, the same components regardless of reference numerals will be given the same reference numerals and duplicate description thereof will be omitted. In the following description of the embodiment, when it is determined that the detailed description of the related known technology may unnecessarily obscure the gist of the embodiment, the detailed description thereof will be omitted.
도 1은 일 예에 따른 가상 오브젝트가 출력된 이미지들을 도시한다.1 illustrates images in which a virtual object is output according to an example.
예를 들어, 제1 이미지(110)는 실제 오브젝트(111) 및 가상 오브젝트(112)를 포함한다. 가상 오브젝트(112)는 실제 오브젝트(111)에 대한 부가 정보일 수 있다. 제1 이미지(11) 내의 가상 오브젝트(112)의 위치는 사용자의 시선 및 실제 오브젝트(111)의 위치에 기초하여 결정될 수 있다.For example, the
사용자의 시선이 변화하는 경우, 제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
일 측면에 따르면, 사용자의 시선은 사용자의 시선에 대응하는 장치의 자세를 결정함으로써 검출될 수 있다. 장치의 자세는 장치의 센서들을 통해 결정 또는 추정될 수 있다. 아래에서 도 2 내지 도 18을 참조하여 장치의 자세를 추정하는 방법에 대해 상세히 설명한다.According to one aspect, the gaze of the user may be detected by determining a posture of the device corresponding to the gaze of the user. The attitude of the device may be determined or estimated through the sensors of the device. Hereinafter, a method of estimating the attitude of the apparatus will be described in detail with reference to FIGS. 2 to 18.
아래에서 용어 "자세"는 현재 측정된 데이터를 이용하여 결정된 현재의 자세를 의미하고, 용어 "예측 자세"는 현재 측정된 데이터를 이용하여 추정된 미래의 자세를 의미한다.The term "posture" below means the current posture determined using the currently measured data, and the term "predictive posture" means the future posture estimated using the currently measured data.
도 2는 일 실시예에 따른 장치의 구성도이다.2 is a block diagram of an apparatus according to an embodiment.
장치(200)는 통신부(210), 프로세서(220), 메모리(230), 카메라(240) 및 관성 측정 장치(Inertial Measurement Unit: IMU)를 포함한다. 장치(200)는 전자 장치일 수 있다. 예를 들어, 장치(200)는 사용자에게 AR 또는 VR을 제공하기 위한 이미지를 출력하는 장치일 수 있다. 일 측면에 따르면, 장치(200)는 웨어러블 장치(wearable device)일 수 있다. 예를 들어, 장치(200)는 안경 형태 또는 HMD(head mounted display)일 수 있으나, 이에 한정되지 않는다. 다른 일 측면에 따르면, 장치(200)는 사용자의 위치 측정, 사용자의 위치 추정 등에 이용될 수 있다. 또 다른 일 측면에 따르면, 장치(200)는 자율 주행을 위해 이용될 수 있다.The
통신부(210)는 프로세서(220), 메모리(230), 카메라(240) 및 IMU(250)와 연결되어 데이터를 송수신한다. 통신부(210)는 외부의 다른 장치와 연결되어 데이터를 송수신할 수 있다.The
통신부(210)는 장치(200) 내의 회로망(circuitry)으로 구현될 수 있다. 예를 들어, 통신부(210)는 내부 버스(internal bus) 및 외부 버스(external bus)를 포함할 수 있다. 다른 예로, 통신부(210)는 장치(200)와 외부의 장치를 연결하는 요소일 수 있다. 통신부(210)는 인터페이스(interface)일 수 있다. 통신부(210)는 외부의 장치로부터 데이터를 수신하여, 프로세서(220) 및 메모리(230)에 데이터를 전송할 수 있다.The
프로세서(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
프로세서(220)는 메모리(예를 들어, 메모리(230))에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(220)에 의해 유발된 인스트럭션들을 실행한다.The
메모리(230)는 통신부(210)가 수신한 데이터 및 프로세서(220)가 처리한 데이터를 저장한다. 예를 들어, 메모리(230)는 프로그램을 저장할 수 있다. 저장되는 프로그램은 장치의 자세를 추정할 수 있도록 코딩되어 프로세서(220)에 의해 실행 가능한 신텍스(syntax)들의 집합일 수 있다.The
일 측면에 따르면, 메모리(230)는 하나 이상의 휘발성 메모리, 비휘발성 메모리 및 RAM(Random Access Memory), 플래시 메모리, 하드 디스크 드라이브 및 광학 디스크 드라이브를 포함할 수 있다.According to one aspect, the
메모리(230)는 장치(200)를 동작 시키는 명령어 세트(예를 들어, 소프트웨어)를 저장한다. 장치(200)를 동작 시키는 명령어 세트는 프로세서(220)에 의해 실행된다.The
카메라(240)는 장면을 촬영함으로써 이미지를 생성한다. 예를 들어, 카메라(240)는 사용자의 왼쪽 눈에 출력될 왼쪽 이미지를 생성하는 왼쪽 카메라 및 사용자의 오른쪽 눈에 출력될 오른쪽 이미지를 생성하는 오른쪽 카메라를 포함할 수 있다. 왼쪽 이미지 및 오른쪽 이미지 간에는 양안 시차가 있다. 다른 예로, 카메라(240)는 하나의 이미지를 생성할 수 있고, 프로세서(220)는 이미지 와핑(warping)과 같은 이미지 처리 방법을 이용하여 왼쪽 이미지 및 오른쪽 이미지를 생성할 수 있다.The
IMU(250)는 장치(200)의 움직임에 따른 가속도 및 각속도를 측정함으로써 IMU 데이터를 생성할 수 있다.The
도시되지는 않았으나, 장치(200)는 장치(200)의 위치 또는 자세를 측정할 수 있는 센서들을 포함할 수 있다. 예를 들어, 장치(200)는 GPS(global positioning system)를 포함할 수 있고, 기재된 실시예로 한정되지 않는다.Although not shown, the
통신부(210), 프로세서(220), 메모리(230), 카메라(240) 및 IMU(250)에 대해, 아래에서 도 3 내지 도 18을 참조하여 상세히 설명된다.The
도 3은 일 예에 따른 장치의 자세 추정을 위한 클러스터 최적화 방법의 흐름도이다.3 is a flowchart illustrating a cluster optimization method for attitude estimation of an apparatus according to an example.
일 측면에 따르면, 장치(200)의 자세를 추정하기 위해 제1 클러스터 최적화 단계(310) 및 제2 클러스터 최적화 단계(320)가 수행될 수 있다. 클러스터 최적화는 장치(200)의 자세를 추정하기 위해 이용되는 파라미터들 및 알고리즘을 최적화하는 것을 의미한다.According to one aspect, the first
제1 클러스터 최적화 단계(310)는 타이트 커플링(tight coupling) 클러스터 최적화 방식을 이용하여 수행될 수 있다. 타이트 커플링 클러스터 최적화 방식은 많은 수의 센서들을 이용하여 측정된 데이터를 이용하여 장치(200)의 자세를 추정한다. 예를 들어, 카메라(240)를 이용하여 생성된 이미지 및 IMU(250)를 이용하여 생성된 IMU 데이터가 장치(200)의 자세를 추정하기 위해 이용될 수 있다. 제1 클러스터 최적화 단계(310)에 대해 아래에서 도 4 내지 도 8을 참조하여 상세히 설명된다.The first
제2 클러스터 최적화 단계(320)는 루즈 커플링(loose coupling) 클러스터 최적화 방식을 이용하여 수행할 수 있다. 루즈 커플링 클러스터 최적화 방식은 적은 수의 센서들을 이용하여 측정된 데이터를 이용하여 장치(200)의 자세를 추정한다. 예를 들어, IMU(250)를 이용하여 생성된 IMU 데이터만이 장치(200)의 자세를 추정하기 위해 이용될 수 있다. IMU 데이터는 장치(200)의 가속도 및 각속도를 포함하므로, IMU 데이터를 적분하고, 적분된 값을 이전 자세에 중첩하는 경우 현재 자세를 결정할 수 있다.The second
자세를 추정하기 위해 이용되는 데이터가 적을수록 자세가 빠르게 추정될 수 있다. 제2 클러스터 최적화 단계(320)에 대해 아래에서 도 9 내지 도 15를 참조하여 상세히 설명된다. The less data used to estimate the posture, the faster the posture can be estimated. A second
도 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
단계(410)에서, 장치(200)는 장치(200)의 주변 공간에 대한 맵을 생성한다. 장치(200)의 카메라(240)를 통해 촬영된 이미지들을 이용하여 맵이 생성될 수 있다. 맵을 생성하는 방법에 대해, 아래에서 도 5를 참조하여 상세히 설명된다.In
단계(420)에서, 장치(200)는 맵을 이용하여 장치(200)의 초기 자세(initial pose)를 결정한다. 초기 자세를 결정하는 방법에 대해, 아래에서 도 6을 참조하여 상세히 설명된다.In
단계(430)에서, 장치(200)는 IMU 데이터에 기초하여 장치(200)의 상태가 정적 상태(static condition)인지 여부를 결정한다. 정적 상태는 장치(200)의 움직임이 없거나, 미리 설정된 임계 값 이하의 움직임이 나타나는 것을 의미한다.In
IMU 데이터에는 통상적으로 노이즈가 포함되어 있고, 노이즈는 장치(200)의 추측 자세의 오차를 유발한다. 장치(200)의 정적 상태(또는 정지 상태)를 이용하여 자세를 추정하는 경우 노이즈의 영향을 줄일 수 있다. IMU 데이터의 국부적 변이를 분석함으로써 장치(200)가 정적 상태에 있는지가 검출될 수 있다. 장치(200)가 정지 상태인 경우, 그 다음 시점에서 클러스터 최적화를 수행할 때 자세 추정의 정확성을 높이기 위해 제약 조건을 추가한다. 제약 조건은 아래와 같다.The IMU data typically contains noise, which causes errors in the guess pose of the
i) 장치(200)의 위치는 맵 포인트의 공간적 위치(예를 들어, 3차원 위치)와 이에 대응하는 이미지(왼쪽 이미지/또는 오른쪽 이미지)의 특징점의 위치에 기초하여 획득할 수 있다. ii) 공간에서의 새로운 맵 포인트의 위치는 장치(200)의 위치와 이미지 상의 새로운 맵 포인트에 대응하는 특징점의 위치에 의해 계산될 수 있다. iii) 전, 후의 이미지들 간의 IMU 데이터 및 IMU 파라미터들을 통해 전, 후의 이미지들 간의 장치의 위치 및 자세가 계산될 수 있다. IMU 파라미터들은 운동 상태 벡터일 수 있다. iv) IMU 파라미터들은 복수의 이미지들 간의 IMU 데이터 및 상기의 복수의 이미지들에 대응하는 장치(200)의 자세를 이용하여 계산될 수 있다. v) 검출된 정지 상태를 통해, 두 개의 이미지들 사이의 자세가 0으로 변화하는 것으로 결정될 수 있다.i) The location of the
맵 포인트, 장치(200)의 자세 및 IMU 데이터 간의 제약 조건이 존재하기 때문에, 이 제약 조건을 최대한 만족하는 장치(200)의 자세가 결정될 수 있다. 상기의 제약 조건의 개수를 많이 만족할수록 정확한 자세가 추정될 수 있으나, 추정 속도는 느려지게된다.Since there is a constraint between the map point, the attitude of the
단계(440)에서, 장치(200)의 상태에 따라 제1 클러스터 최적화가 재수행될지 또는 제2 클러스터 최적화가 수행될지가 결정된다.In
제1 클러스터 최적화 단계(310)를 통해, 제2 클러스터 최적화 단계(320)에서 자세 추정을 위해 이용될 파라미터 및 알고리즘이 최적화될 수 있다. 제2 클러스터 최적화 단계(320)에서 자세 추정을 위해 이용될 파라미터 및 알고리즘에 대해, 아래에서 도 10 내지 13을 참조하여 상세히 설명된다.Through the first
도 5는 일 예에 따른 장치의 주변 공간에 대한 맵을 생성하는 방법의 흐름도이다.5 is a flowchart of a method of generating a map for a peripheral space of a device according to an example.
도 4를 참조하여 전술된 단계(410)는 아래의 단계들(510 내지 540)을 포함한다.Step 410 described above with reference to FIG. 4 includes steps 510-540 below.
단계(510)에서, 장치(200)는 왼쪽 이미지를 생성할 수 있다. 예를 들어, 왼쪽 카메라를 이용하여 왼쪽 이미지를 생성한다. 다른 예로, 장치(200)는 카메라를 이용하여 촬영된 기준 이미지를 와핑함으로써 왼쪽 이미지를 생성할 수 있다.In
단계(515)에서, 장치(200)는 생성된 왼쪽 이미지 내의 하나 이상의 제1 특징점(feature point)들을 생성한다. 특징점은 이미지 내의 엣지 및 텍스쳐일 수 있다. 예를 들어, 장치(200)는 특징점을 생성하기 위해 brisk 및 sift와 같은 방법을 이용할 수 있다.In
단계(520)에서, 장치(200)는 오른쪽 이미지를 생성할 수 있다. 예를 들어, 오른쪽 카메라를 이용하여 오른쪽 이미지를 생성한다. 다른 예로, 장치(200)는 카메라를 이용하여 촬영된 기준 이미지를 와핑함으로써 오른쪽 이미지를 생성할 수 있다.In
단계(525)에서, 장치(200)는 생성된 오른쪽 이미지 내의 하나 이상의 제2 특징점들을 생성한다.In
단계(530)에서, 장치(200)는 제1 특징점 및 제2 특징점을 매칭한다. 예를 들어, 장치(200)는 RANSAC(fitting via random sample consensus) 방법을 이용하여 매칭 관계를 검증하고, 잘못된 매칭을 제거할 수 있다.In
단계(540)에서, 장치(200)는 제1 특징점 및 제2 특징점 중 매칭된 특징점 및 매칭되지 않은 특징점에 기초하여 맵을 생성한다.In
도 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
단계(610)에서, 장치(200)는 카메라에 의해 생성된 이미지로부터 하나 이상의 특징점들을 생성한다.In
단계(620)에서, 장치(200)는 맵에 미리 설정된 후보 특징점(candidate feature point)들 중 하나 이상의 특징점들에 대응하는 타겟 특징점을 결정한다.In
단계(630)에서, 장치(200)는 타겟 특징점에 기초하여 장치(200)의 초기 자세를 결정한다. 예를 들어, 초기 자세는 사용자의 시선에 대응하는 카메라(240)(또는 장치(200))의 현재 자세일 수 있다. 자세는 카메라의 시점(view point)를 의미할 수 있다.In
단계(310)가 반복적으로 수행되는 동안, 장치(200)의 미래 자세를 추정하기 위한 파라미터들이 최적화될 수 있다. 단계(310)를 통해 최적화된 파라미터들은 단계(320)에서 연속적으로 이용될 수 있다.While
도 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
제2 자세(711)에서 촬영된 이미지 및 맵을 이용하여 장치(200)의 제2 자세(711)가 결정된다. 예를 들어, 제2 자세(711)에서 촬영된 이미지에 기초하여 맵의 타겟 특징점들(721, 722, 723, 724, 725)이 결정될 수 있다. 결정된 제2 자세(711) 및 IMU 데이터에 기초하여 제2 자세(711) 이후의 장치(200)의 자세가 추정될 수 있다.The
제3 자세(712)에서 촬영된 이미지 및 맵을 이용하여 장치(200)의 제3 자세(712)가 결정된다. 예를 들어, 제3 자세(712)에서 촬영된 이미지에 기초하여 맵의 타겟 특징점들(723, 725, 726, 728, 729)이 결정될 수 있다. 결정된 제3 자세(712) 및 IMU 데이터에 기초하여 제3 자세(712) 이후의 장치(200)의 자세가 추정될 수 있다.The
제4 자세(713)에서 촬영된 이미지 및 맵을 이용하여 장치(200)의 제4 자세(713)가 결정된다. 예를 들어, 제4 자세(713)에서 촬영된 이미지에 기초하여 맵의 타겟 특징점들(726, 727, 728, 729)이 결정될 수 있다. 결정된 제4 자세(712) 및 IMU 데이터에 기초하여 제4 자세(713) 이후의 장치(200)의 자세가 추정될 수 있다.The
제1 자세(710) 내지 제4 자세(713)가 실제의 자세로 결정되고, 실제 자세에 기초하여 자세를 추정하기 위한 파라미터들이 조정될 수 있다. 반복적인 추정을 통해 실제 자세 및 추정 자세 간의 오차가 감소할 수 있다.The
제1 자세(710) 내지 제4 자세(713)의 각각은 초기 자세일 수 있고, 제2 클러스터 최적화를 위해 초기 자세가 업데이트되는 것으로 이해될 수 있다.Each of the
도 8은 일 예에 따른 맵을 업데이트하는 방법의 흐름도이다.8 is a flowchart of a method of updating a map, according to an example.
도 4를 참조하여 전술된 단계(420)는 아래의 단계들(810 및 820)을 더 포함할 수 있다.Step 420 described above with reference to FIG. 4 may further include
단계(810)에서, 장치(200)는 생성된 이미지의 하나 이상의 특징점들 중 맵에 미리 설정된 후보 특징점들에 대응하지 않은 나머지 특징점(remaining feature point)을 결정한다.In
단계(810)에서, 장치(200)는 나머지 특징점에 대응하는 특징점을 맵에 추가함으로써 맵을 업데이트한다. 추가된 특징점은 후보 특징점이 된다. 후보 특징점이 증가할수록 특징점을 이용하여 결정되는 장치(200)의 자세의 정확도가 증가할 수 있다.In
도 9는 일 예에 따른 제2 클러스터 최적화 방법을 도시한다.9 illustrates a second cluster optimization method according to an example.
루즈 커플링 클러스터 최적화 방식을 이용한 제2 클러스터 최적화 방법은 적은 수의 센서들에 의해 측정된 데이터를 이용하여 빠르게 장치(200)의 자세를 추정하는 방법이다. 예를 들어, 제1 클러스터 최적화 방법에서 이용되는 데이터들보다 적은 수의 데이터가 이용될 수 있다. 적은 수의 데이터가 이용됨으로써 장치(200)의 자세 추정 속도가 증가할 수 있다.The second cluster optimization method using the loose coupling cluster optimization method is a method of quickly estimating the attitude of the
일 측면에 따르면, IMU 데이터를 이용하여 장치(200)의 현재 자세를 결정하고, IMU 데이터의 히스토리를 이용하여 미래의 장치(200)의 자세를 추정할 수 있다. 현재 자세 및 추정 자세 간의 차이를 감소시키기 위해 순환 검출이 이용될 수 있다.According to one aspect, the current posture of the
아래에서 도 10 내지 도 15를 참조하여 루즈 커플링 클러스터 최적화 방식을 이용하여 장치(200)의 자세를 추정하는 방법이 상세히 설명된다.Hereinafter, a method of estimating the attitude of the
도 10은 일 실시예에 따른 제2 클러스터 최적화를 통해 제M 예측 자세를 추정하는 방법의 흐름도이다.10 is a flowchart of a method of estimating an M-th prediction attitude through second cluster optimization, according to an embodiment.
도 3을 참조하여 전술된 단계(320)는 아래의 단계들(1010 내지 1040)을 포함할 수 있다. 일 측면에 따르면, 단계(320)는 장치(200)의 상태가 정적 상태인 경우에 수행될 수 있다.Step 320 described above with reference to FIG. 3 may include
단계(1010)에서, 장치(200)는 IMU(250)를 이용하여 IMU 데이터를 생성한다.In
단계(1020)에서, 장치(200)는 IMU 데이터에 기초하여 장치(200)의 제1 자세(first pose)를 결정한다. 제1 자세는 현재 시점(i 시점)의 장치(200)의 자세이다.In
일 측면에 따르면, 장치(200)는 장치(200)의 상태가 정적 상태인지 여부에 기초하여 제1 자세를 결정할 수 있다. 예를 들어, 장치(200)는 장치(200)의 상태가 정적 상태인 경우, IMU 데이터를 이용하여 제1 자세를 결정한다.According to one aspect, the
단계(1030)에서, 장치(200)는 IMU 데이터에 기초하여 현재 예측 운동 상태 배열을 생성한다. 용어 "예측 운동 상태 배열"은 장치(200)의 운동 상태를 예측하는 벡터를 시점(time point)에 따라 나열한 것을 의미한다. 용어 "현재 예측 운동 상태 배열(present prediction motional state array)"은 현재 시점(i 시점)에서 추정한 예측 운동 상태 배열을 의미한다. 용어 "이전 예측 운동 상태 배열(previous prediction motional state array)"은 이전 시점(i-1 시점)에서 추정한 예측 운동 상태 배열을 의미한다. 즉, 이전 예측 운동 상태 배열이 갱신됨으로써 현재 예측 운동 상태 배열이 생성될 수 있다.In
현재 예측 운동 상태 배열을 생성하는 방법에 대해, 아래에서 도 11 내지 13을 참조하여 상세히 설명된다.A method for generating a current predicted athletic state arrangement is described in detail below with reference to FIGS. 11-13.
단계(1040)에서, 장치(200)는 현재 예측 운동 상태 배열에 기초하여 제1 자세 이후의 제M 시점에서의 제M 예측 자세를 추정한다. M은 1보다 큰 자연수이다.In
도 11은 일 예에 따른 현재 예측 운동 상태 배열을 생성하는 방법의 흐름도이다.11 is a flowchart of a method of generating a current predicted exercise state arrangement according to an example.
도 10을 참조하여 전술된 단계(1030)는 아래의 단계들(1110 내지 1140)을 포함한다.
단계(1110)에서, 장치(200)는 노이즈(noise) 및 이상점(outlier)을 제거하기 위해 측정된 IMU 데이터를 평탄화(smoothing)한다. 예를 들어, 칼만 필터(Kalman filter)가 IMU 데이터를 평탄화하기 위해 이용될 수 있다.In
단계(1120)에서, 장치(200)는 평탄화된 IMU 데이터에 기초하여 제1 시점의 제1 운동 상태 벡터를 생성한다. 예를 들어, 운동 상태 벡터는 아래의 [수학식 1]로 표현될 수 있다.In
[수학식 1]에서 S는 운동 상태 벡터이고, v는 운동 속도, av는 운동 가속도, w는 선회 속도, 및 aw는 선회 가속도이다. 선회 속도 및 선회 가속도는 각각의 6축 방향을 나타내도록 추가될 수 있다. 또한, 운동 상태 벡터는 카메라(240)의 위치를 더 포함할 수 있다.In
일 측면에 따르면, 장치(200)는 제1 자세와 미리 추정된 제1 예측 자세(first prediction pose) 간의 차이에 기초하여 상기 평탄화된 IMU 데이터를 보정함으로써 상기 제1 운동 상태 벡터를 생성할 수 있다. 제1 자세와 미리 추정된 제1 예측 자세 간의 차이는 보충량으로 정의될 수 있다.According to an aspect, the
일 측면에 따르면, 장치(200)는 장치(200)의 사용자의 안구 운동 속도(ocular movement velocity) 및 사용자의 머리 운동 속도(head movement velocity) 중 적어도 하나에 기초하여 제1 운동 상태 벡터를 생성하는 빈도를 결정할 수 있다. 예를 들어, 순화 검출 인하여 유발된 차이를 보충하는 경우, 보충 속도는 사용자의 안구 운동 속도 및/또는 사용자의 머리 운동 속도와 연관된다. 머리 운동 속도가 빨라질수록 보충 속도가 빨라진다.According to one aspect, the
단계(1130)에서, 장치(200)는 제1 운동 상태 벡터에 기초하여 제N 시점의 제N 운동 상태 벡터를 결정한다. 예를 들어, 제N 시점은 현재의 시점에서 예측할 수 있는 가장 먼 시점의 시점일 수 있다. N은 M보다 큰 자연수이다.In
일 측면에 따르면, 장치(200)는 제1 운동 상태 벡터를 입력으로 하는 장단기 메모리(Long-Short Term Memory: LSTM) 방식의 순환 신경망(recurrent neural network)을 이용하여 제N 예측 운동 상태 벡터를 생성할 수 있다. 순환 신경망은 딥 러닝 네트워크(deep learning network)로 구성될 수 있다.According to an aspect, the
단계(1140)에서, 장치(200)는 운동 모델(motional model), 이전 예측 운동 상태 배열 및 제N 예측 운동 상태 벡터에 기초하여 현재 예측 운동 상태 배열을 생성한다. 운동 모델은 선형 운동 모델 또는 비-선형 운동 모델을 포함할 수 있다. 생성된 IMU 데이터에 기초하여 복수의 운동 모델들 중 적절한 운동 모델이 선택될 수 있다.In
도 12는 일 예에 따른 제i 시점의 자세에 기초하여 제i+x 시점의 자세를 추정하는 방법을 도시한다.12 illustrates a method of estimating an attitude of an i + x point of view based on an attitude of an i th view according to an example.
장치(200)는 자세 추정 유닛일 수 있다. 현재 시점이 제i 시점인 경우, 결정된 제i 시점의 자세(Pi)가 자세 추정 유닛의 입력이고, 자세 추정 유닛의 출력은 예측 운동 상태 배열을 이용한 제i+x 시점의 예측 자세(P"i+x)일 수 있다.The
IMU 데이터는 제i+x 시점까지 반복적이고, 계속적으로 생성되므로, 제i+x 시점이 도달할 때까지, 순환 검출을 통해 제i+x 시점의 예측 자세(P"i+x)가 계속적으로 업데이트될 수 있다.Since the IMU data is iteratively and continuously generated until the i + x time point, the predicted attitude P ″ i + x at the i + x time point is continuously generated through circular detection until the i + x time point is reached. Can be updated.
자세 추정 유닛의 상세한 동작 과정은 아래와 같다.Detailed operation of the attitude estimation unit is as follows.
i) IMU 데이터를 통해 결정된 제i 시점의 자세(Pi) 및 제i-1 시점에서 예측된 제i 시점의 예측 자세(P'i)의 차이가 계산된다. 오차는 제i 시점의 운동 상태 벡터(Si)를 조정하기 위해 이용될 수 있다. 필요에 따라 칼만 이득(Kgi)이 추가로 운동 상태 벡터(Si)를 조정하기 위해 이용될 수 있다.i) The difference between the posture P i of the i-th time point determined from the IMU data and the predicted posture P ' i of the i-th time point predicted from the i-th time point is calculated. Error may be used to adjust the movement state vector (S i) of the i-th point. As needed, an additional Kalman gain (Kg i) may be used to adjust the movement state vector (S i).
ii) 제i 시점의 운동 상태 벡터(Si) 및 운동 모델(M)에 기초하여 제i+1 시점의 예측 자세(P'i+1)가 계산된다. 제i+1 시점의 예측 자세(P'i+1)는 제i+1 시점에서 자세 추정 유닛의 입력이 된다.ii) the movement state vector (S i) and a movement model (M) the i + 1 position prediction (P 'i + 1) of the start point on the basis of the i-th point in time is calculated. The predicted attitude P ′ i + 1 at the i + 1th time point is an input of the attitude estimation unit at the i + 1th time point.
iii) 운동 상태 벡터(Si)를 입력으로 하는 장단기 메모리(Long-Short Term Memory: LSTM) 방식의 순환 신경망(recurrent neural network)을 이용하여 제i+N-1 시점의 제i+N-1 예측 운동 상태 벡터(S'i+N-1)를 생성한다. 도 12의 실시예서는 운동 상태 벡터를 이용하였으나, 다른 실시예에서는 장치(200)의 상태를 나타내는 다른 정보들을 이용할 수 있고, 개시된 실시예로 한정되지 않는다.iii) i + N-1 at the i + N-1 time point using a recurrent neural network of a Long-Short Term Memory (LSTM) method using the motion state vector S i as an input; Generate a predicted motion state vector (S ' i + N-1 ). Although the embodiment of FIG. 12 uses an exercise state vector, other embodiments may use other information representing the state of the
예를 들어, 제i+N-1 예측 운동 상태 벡터(S'i+N-1)는 아래의 [수학식 2]를 이용하여 계산될 수 있다.For example, the i + N−1 predicted motion state vector S ′ i + N−1 may be calculated using
vi) 운동 모델(M), 이전 예측 운동 상태 배열 및 제i+N-1 예측 운동 상태 벡터(S'i+N-1)에 기초하여 현재 예측 운동 상태 배열을 생성한다. vi) Generates the current predicted exercise state array based on the exercise model M, the previous predicted exercise state array and the i + N-1 predicted exercise state vector S ′ i + N-1 .
현재 시점이 제i+1 시점으로 변화하는 경우, 제i+1 시점의 예측 자세(P'i+1) 및 이전에 계산된 현재 예측 운동 상태 배열이 이전 예측 운동 상태 배열로서 자세 추정 유닛에 순환 입력될 수 있다. 현재 시점이 제i+x 시점이 될 때까지 상기의 동작들이 순환적으로 수행될 수 있다. 순환 방식을 이용하여 제i+x 시점 예측 자세 및 IMU 데이터를 이용하여 결정된 제i+x 시점 예측 자세 간의 오차를 감소시킬 수 있다.If the present point is changed to the i + 1 time, the i + prediction of the first point position (P 'i + 1) and before the calculated current prediction motion state array is circulated to the posture estimation unit as previously predicted motion state arranged in Can be entered. The above operations may be cyclically performed until the current time point becomes the i + x time point. By using the cyclic scheme, an error between the i + x-th view prediction attitude and the i + x-th view prediction attitude determined using the IMU data may be reduced.
도 13은 일 예에 따른 현재 예측 운동 상태 배열을 계산하는 방법을 도시한다.13 illustrates a method of calculating a current predicted exercise state arrangement according to an example.
LSTM 방식을 이용하여 생성된 제i+N-1 예측 운동 상태 벡터(S'i+N-1)가 LSTM 예측 운동 상태 배열에 추가될 수 있다. 예를 들어, LSTM 예측 운동 상태 배열은 N개의 데이터들을 포함하고, 선입선출(first in first out: FIFO) 방식으로 최신의 데이터를 추가할 수 있다. LSTM 예측 운동 상태 배열은 운동 상태 슬라이딩 윈도우(motional state sliding window)일 수 있다.The i + N-1 predicted motion state vector S ′ i + N-1 generated using the LSTM method may be added to the LSTM predicted motion state array. For example, the LSTM predicted motion state arrangement may include N data and add the latest data in a first in first out (FIFO) manner. The LSTM predictive motor state arrangement may be a motion state sliding window.
과거의 시점인 제i-1 시점에서 계산된 이전 예측 운동 상태 배열(제i-1 시점에서는 현재 예측 운동 상태 배열) 및 LSTM 예측 운동 상태 배열에 기초하여 현재 예측 운동 상태 배열이 계산될 수 있다. 예를 들어, 이전 예측 운동 상태 배열 및 LSTM 예측 운동 상태 배열을 병합(combine)함으로써 현재 예측 운동 상태 배열이 계산될 수 있다. 최신의 예측 운동 상태 벡터일수록 더 큰 가중치가 부여될 수 있다.The current predicted exercise state arrangement may be calculated based on a previous predicted exercise state arrangement (the present predicted exercise state array at the i-1 point in time) and the LSTM predicted exercise state array calculated at the past point in time, i-1. For example, the current predicted athletic state arrangement may be calculated by combining the previous predicted athletic state arrangement and the LSTM predicted athletic state arrangement. The more recent the predicted motion state vector, the greater the weighting may be.
생성된 현재 예측 운동 상태 배열에 기초하여 제i+x 시점의 예측 자세(P"i+x)가 생성될 수 있다. 예를 들어, 아래의 [수학식 2]을 이용하여 제i+x 시점의 예측 자세(P"i+x)가 계산될 수 있다.A prediction pose P ″ i + x of the i + x time point may be generated based on the generated current predicted motion state arrangement. For example, the i + x time point may be generated using
도 14는 일 예에 따른 정적 상태를 검출하는 방법을 도시한다.14 illustrates a method of detecting a static state according to an example.
두꺼운 선은 사용자가 보행할 때의 IMU 데이터의 분산 변화 곡선이다. 사용자 보행의 반복성으로 인하여 IMU 데이터의 분산은 주기적으로 변한다. IMU 데이터의 국부적 분산(시간 창 내의 분산)이 예측된 임계 값보다 작은 경우, 무게 중심(center of mass)에 대응하여 발이 지면과 맞닿는 위상에 해당하며, 이 위상은 제로 속도(zero-speed) 구간이라고 한다. 일 실시예에서, 임계 값을 이용하여 장치(200)의 운동 과정에서 제로 속도 구간을 추출하여, 이 구간을 클러스터 최적화에 제약 조건으로서 부가한다.The thick line is the variance change curve of the IMU data as the user walks. Due to the repeatability of user walking, the distribution of IMU data changes periodically. If the local variance (variance in the time window) of the IMU data is less than the predicted threshold, it corresponds to the phase where the foot is in contact with the ground in response to the center of mass, which is the zero-speed interval. It is called. In one embodiment, the zero velocity interval is extracted during the exercise of the
도 15는 일 예에 따른 순환 검출에 의해 발생한 지터에 의한 결과를 도시한다.15 illustrates a result due to jitter generated by circular detection according to an example.
자세들 간의 차이를 유발할 수 있는 IMU 적분의 오류 외에도, 동일한 맵의 순환 검출로 인해 자세들 간의 차이가 발생할 수도 있다. 도 15는 순환 검출로 지터(jitter)가 발생한 장면을 나타낸다.In addition to errors in the IMU integration that can cause differences between poses, cyclical detection of the same map may cause differences between poses. 15 shows a scene in which jitter occurs due to cyclic detection.
장치(200)가 한바퀴 운동한 후, 이전에 경유한 위치에 도달했을 때, 이전에 저장된 맵 포인트와 최근에 저장된 맵 포인트 간에 일정한 편차가 있을 수 있다. 이 때, 순환 검출 기능을 이용하여 현재 맵 포인트의 위치를 업데이트해야 할 필요성이 있다. 즉, IMU 적분에 오차가 존재하여 유발된 자세 차이와 순환으로 유발된 자세 차이가 모두 보정되어야 할 필요성이 있다.After the
망막에 투사되는 오브젝트 운동 속도와 사람의 눈으로 오브젝트의 운동을 감지하는 민감성 사이에는 반비례 관계가 성립된다. 이에, 안구의 운동 속도 HS 및 가상 오브젝트의 운동 속도 P를 감지하여, 사람이 감지한 속도 HT가 계산될 수 있다. 그리고, 사람이 감지한 속도 HT를 이용하여 바이어스가 감소하는 속도가 결정된다. 사람이 감지한 속도 HT가 크면 클수록, 바이어스 감소가 빨라진다. 사람이 감지한 속도 HT는 아래의 [수학식 4]를 이용하여 계산될 수 있다.An inverse relationship is established between the speed of movement of the object projected onto the retina and the sensitivity of sensing the movement of the object with the human eye. Accordingly, by detecting the movement speed H S of the eyeball and the movement speed P of the virtual object, a speed H T detected by a person may be calculated. Then, the speed at which the bias decreases is determined using the speed H T sensed by a person. The larger the human perceived speed H T , the faster the bias reduction. The speed H T detected by a person can be calculated using Equation 4 below.
[수학식 4]에서, 는 대부분 상황에서 0.6이고, 는 오브젝트의 크기이고, 는 망막에 투사되는 오브젝트의 크기이다.In [Equation 4], Is 0.6 in most situations, Is the size of the object, Is the size of the object projected onto the retina.
도 16은 일 예에 따른 가상 오브젝트를 출력하는 방법의 흐름도이다.16 is a flowchart of a method of outputting a virtual object according to an example.
AR 시스템 또는 VR 시스템에서, SLAM(Simultaneous Localization and Mapping) 계산법을 이용하여 현재 시점의 장치(200)의 자세를 결정한 후, 장치(200)의 자세에 따라 가상 오브젝트를 제작할 필요성이 있다. 또한, 제작한 가상 오브젝트를 실제 오브젝트 상에 중첩하여 출력 또는 디스플레이 할 수 있다. 가상 오브젝트의 생성이 복잡하거나, 조명 계산이 포함되어 있는 경우, 가상 오브젝트를 생성하기 위해 일정한 시간이 소요된다. 이는 가상 오브젝트의 출력에 일정한 지연을 유발하여, AR 또는 VR 효과에 영향을 줄 수 있다. 아래에서는 이러한 지연을 감소시킬 수 있는 이미지 출력 방법에 대해 설명한다.In an AR system or a VR system, after determining the posture of the
아래의 단계들(1610 내지 1650)은 도 10을 참조하여 전술된 단계(1040)가 수행한 후에 수행될 수 있다.
단계(1610)에서, 장치(200)는 제M 시점에서 출력될 가상 오브젝트를 생성한다. 예를 들어, 가상 오브젝트는 홀로그래픽 이미지(holographic image) 또는 홀로그램(hologram)일 수 있다.In
이전 이미지에 대해 생성된 홀로그래픽 이미지와 깊이 이미지가 새로운 홀로그래픽 이미지를 생성하기 위해 이용될 수 있다. 이전 이미지의 각 포인트에 대한 깊이 정보 및 두 개의 이미지들의 홀로그램 이미지에 대응하는 장치(200)의 자세는 미리 알고 있는 정보이므로, 생성될 이미지의 화소에 대응하는 이전 이미지의 화소의 위치가 계산될 수 있다. 이전 이미지의 화소를 상기 화소에 대응하는 생성될 이미지의 화소에 복사한다. 이러한 방법은 처리해야할 계산량을 감소시키므로 가상 오브젝트의 생성 시간을 감소시킬 수 있다.The holographic image and the depth image generated for the previous image can be used to create a new holographic image. Since the depth information of each point of the previous image and the attitude of the
단계(1620)에서, 장치(200)는 가상 오브젝트를 조정한다.In
장치(200)는 가상 오브젝트를 렌더링(rendering)하는 기간 동안 발생하는 장치(200)의 자세 변화를 획득하고, 획득된 자세 변화에 대응하도록 가상 오브젝트를 조정한다.The
가상 오브젝트가 출력되는 시점은 제M 시점일 수 있다. IMU 데이터 생성의 주파수가 가상 오브젝트가 출력되는 주파수보다 큰 경우, 가상 오브젝트가 출력되는 시점들 사이의 시점들에서 IMU 데이터들이 생성될 수 있다. 예를 들어, IMU 데이터들을 적분함으로써 제1 시점 및 제M 시점 간의 장치(200)의 운동 상태가 획득될 수 있다. 획득된 운동 상태에 기초하여 자세 변화가 획득될 수 있고, 획득된 자세 변화를 이용하여 가상 오브젝트를 조정할 수 있다.The time point at which the virtual object is output may be the Mth time point. When the frequency of generating the IMU data is greater than the frequency at which the virtual object is output, the IMU data may be generated at the time points between the time points at which the virtual object is output. For example, the motion state of the
단계(1630)에서, 장치(200)는 가상 오브젝트를 출력한다. 예를 들어, 장치(200)는 제M 시점에 대한 이미지를 생성하고, 생성된 이미지와 가상 오브젝트가 합성되도록 가상 오브젝트를 출력할 수 있다. 다른 예로, 장치(200)는 가상 오브젝트만을 출력할 수 있다.In
도 17은 일 예에 따른 장치의 추정 자세에 기초하여 합성 이미지를 출력하는 방법을 도시한다.17 illustrates a method of outputting a composite image based on an estimated attitude of the apparatus according to an example.
제1 시점부터 제M 시점의 장치(200)의 자세가 추정될 수 있다. 제M 시점의 장치(200)의 자세가 추정된 시점부터 제M 시점에서 출력될 가상 오브젝트가 생성(또는 렌더링)될 수 있다.The attitude of the
제1 시점과 제M 시점 사이의 시점들에서 IMU 데이터들이 획득될 수 있고, 획득된 IMU 데이터들에 기초하여 제M 시점의 장치(200)의 자세가 계속적으로 재추정될 수 있다. 가상 오브젝트가 재추정된 장치(200)의 자세에 대응하도록 조정될 수 있다. 제M 시점에서 가상 오브젝트가 디스플레이된다.IMU data may be obtained at points in time between the first time point and the Mth time point, and the attitude of the
도 18은 일 예에 따른 장치의 모듈들의 구성도이다.18 is a block diagram illustrating modules of an apparatus according to an example.
장치(200)는 SLAM 모듈, 자세 추정 모듈 및 이미지 생성 모듈을 포함할 수 있다. SLAM 모듈은 복수의 센서들의 융합을 이용하고, 높은 프레임 레이트로 장치(200)의 현재 자세를 생성한다. 자세 추정 모듈은 SLAM 모듈의 출력과 데이터 필터링에 기초하여 장치(200)의 미래 자세를 추측한다. 이미지 생성 모듈은 가상 오브젝트 생성 기간 동안의 장치(200)의 자세 변화에 따라 생성된 가상 오브젝트 또는 이미지를 조정한다.The
도 19는 일 예에 따른 다양한 검측 방법에 따른 자세 추정 결과들을 도시한다.19 is a view illustrating posture estimation results according to various detection methods according to an example.
다양한 검측 방법에 따른 자세 추정 결과들 중 IMU 적분 필터링을 이용한 방법이 가장 평탄한 추정 결과를 나타낸다. 제1 클러스터 최적화 단계 및 제2 클러스터 최적화 단계를 연속적으로 수행하는 경우, IMU 데이터를 적분하고, 노이즈 등을 제거하는 필터링을 이용하면, 장치(200)의 자세가 급격한 변화를 갖도록 추정되는 것을 방지할 수 있다.Among the attitude estimation results according to various detection methods, the method using the IMU integral filtering shows the flattest estimation result. In the case of performing the first cluster optimization step and the second cluster optimization step continuously, by using filtering to integrate IMU data and remove noise, etc., it is possible to prevent the posture of the
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be embodied in the form of program instructions that can be executed by various computer means and recorded in a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. The program instructions recorded on the media may be those specially designed and constructed for the purposes of the embodiments, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks. Magneto-optical media, and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like. The hardware device described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the above, and configure the processing device to operate as desired, or process it independently or collectively. You can command the device. Software and / or data may be any type of machine, component, physical device, virtual equipment, computer storage medium or device in order to be interpreted by or to provide instructions or data to the processing device. Or may be permanently or temporarily embodied in a signal wave to be transmitted. The software may be distributed over networked computer systems so that they may be stored or executed in a distributed manner. Software and data may be stored on one or more computer readable recording media.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.Although the embodiments have been described by the limited embodiments and the drawings as described above, various modifications and variations are possible to those skilled in the art from the above description. For example, the described techniques may be performed in a different order than the described method, and / or components of the described systems, structures, devices, circuits, etc. may be combined or combined in a different form than the described method, or other components. Or even if replaced or substituted by equivalents, an appropriate result can be achieved.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are within the scope of the following claims.
200: 장치
210: 통신부
220: 프로세서
230: 메모리
240: IMU
250: 카메라200: device
210: communication unit
220: processor
230: memory
240: IMU
250: camera
Claims (17)
상기 장치의 관성 측정 장치(Inertial Measurement Unit: IMU)를 이용하여 IMU 데이터를 생성하는 단계;
상기 IMU 데이터에 기초하여 상기 장치의 제1 자세(first pose)를 결정하는 단계;
상기 IMU 데이터에 기초하여 현재 예측 운동 상태 배열(present prediction motional state array)을 생성하는 단계; 및
상기 현재 예측 운동 상태 배열에 기초하여, 상기 제1 자세의 제1 시점(first time point) 이후의 제M 시점에서의 제M 예측 자세(prediction pose)를 추정하는 단계
를 포함하고,
상기 M은 1 보다 큰 자연수인,
자세 추정 방법.
In the attitude estimation method of the device, performed by the device,
Generating IMU data using an Inertial Measurement Unit (IMU) of the device;
Determining a first pose of the device based on the IMU data;
Generating a present prediction motional state array based on the IMU data; And
Estimating an Mth prediction pose at an Mth point after a first time point of the first pose based on the current predicted exercise state arrangement;
Including,
M is a natural number greater than 1,
Posture estimation method.
상기 현재 예측 운동 상태 배열을 생성하는 단계는,
상기 IMU 데이터를 평탄화(smoothing)하는 단계;
상기 평탄화된 IMU 데이터에 기초하여 상기 제1 시점의 제1 운동 상태 벡터(first motional state vector)를 생성하는 단계;
상기 제1 운동 상태 벡터에 기초하여 제N 시점의 제N 예측 운동 상태 벡터를 결정하는 단계 - 상기 N은 상기 M보다 큰 자연수임 -; 및
운동 모델(motional model), 이전 예측 운동 상태 배열(previous prediction motional state array) 및 상기 제N 예측 운동 상태 벡터에 기초하여 상기 현재 예측 운동 상태 배열을 생성하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 1,
Generating the current prediction exercise state arrangement,
Smoothing the IMU data;
Generating a first motional state vector of the first time point based on the flattened IMU data;
Determining an Nth predicted motion state vector at an Nth time point based on the first motion state vector, wherein N is a natural number greater than M; And
Generating the current predicted kinematic state array based on a motion model, a previous predicted kinematic state array and the Nth predicted kinematic state vector;
Including,
Posture estimation method.
상기 제1 운동 상태 벡터를 생성하는 단계는,
상기 제1 자세와 미리 추정된 제1 예측 자세(first prediction pose) 간의 차이에 기초하여 상기 평탄화된 IMU 데이터를 보정함으로써 상기 제1 운동 상태 벡터를 생성하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 2,
Generating the first exercise state vector may include:
Generating the first motion state vector by correcting the flattened IMU data based on a difference between the first pose and a first estimated pose that is previously estimated.
Including,
Posture estimation method.
상기 제N 예측 운동 상태 벡터를 결정하는 단계는,
상기 제1 운동 상태 벡터를 입력으로 하는 장단기 메모리(Long-Short Term Memory: LSTM) 방식의 순환 신경망(recurrent neural network)을 이용하여 상기 제N 예측 운동 상태 벡터를 생성하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 2,
The determining of the N th predicted exercise state vector may include:
Generating the N-th predicted motion state vector by using a recurrent neural network of a Long-Short Term Memory (LSTM) method using the first motion state vector as an input;
Including,
Posture estimation method.
상기 제1 운동 상태 벡터를 생성하는 단계는,
상기 장치의 사용자의 안구 운동 속도(ocular movement velocity) 및 사용자의 머리 운동 속도(head movement velocity) 중 적어도 하나에 기초하여 상기 제1 운동 상태 벡터를 생성하는 빈도를 결정하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 1,
Generating the first exercise state vector may include:
Determining a frequency of generating the first exercise state vector based on at least one of an ocular movement velocity of the user of the device and a head movement velocity of the user.
Including,
Posture estimation method.
상기 IMU 데이터에 기초하여 상기 장치의 상태가 정적 상태인지 여부를 결정하는 단계
를 더 포함하고,
상기 장치의 제1 자세를 결정하는 단계는,
상기 장치의 상태가 정적 상태인지 여부에 기초하여 제1 자세를 결정하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 1,
Determining whether the state of the device is static based on the IMU data
More,
Determining the first posture of the device,
Determining a first posture based on whether the state of the device is a static state
Including,
Posture estimation method.
상기 제M 시점에서 출력될 가상 오브젝트(virtual object)를 생성하는 단계; 및
상기 가상 오브젝트를 출력하는 단계
를 더 포함하는,
자세 추정 방법.
The method of claim 1,
Generating a virtual object to be output at the Mth time point; And
Outputting the virtual object
Further comprising,
Posture estimation method.
상기 가상 오브젝트를 렌더링하는 기간동안 발생하는 장치의 자세 변화에 기초하여 상기 가상 오브젝트를 조정하는 단계
를 더 포함하는,
자세 추정 방법.
The method of claim 7, wherein
Adjusting the virtual object based on a change in attitude of the device that occurs during the rendering of the virtual object
Further comprising,
Posture estimation method.
상기 가상 오브젝트를 출력하는 단계는,
제M 시점에 대한 이미지와 상기 가상 오브젝트가 합성되도록 가상 오브젝트를 출력하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 7, wherein
The outputting of the virtual object may include:
Outputting a virtual object to synthesize the virtual object and an image for a Mth viewpoint
Including,
Posture estimation method.
상기 가상 오브제트는 홀로그래픽 이미지(holographic image)인,
자세 추정 방법.
The method of claim 7, wherein
The virtual object is a holographic image,
Posture estimation method.
상기 장치의 주변 공간에 대한 맵을 생성하는 단계;
상기 맵을 이용하여 초기 자세(initial pose)를 결정하는 단계; 및
IMU 데이터에 기초하여 상기 장치가 정적 상태(static state)인지 여부를 결정하는 단계
를 더 포함하고,
상기 제1 자세는 상기 장치가 정적 상태인 경우에 결정되는,
자세 추정 방법.
The method of claim 1,
Generating a map for the surrounding space of the device;
Determining an initial pose using the map; And
Determining whether the device is in a static state based on IMU data
More,
The first posture is determined when the device is in a static state,
Posture estimation method.
상기 맵을 생성하는 단계는,
상기 장치의 왼쪽 카메라를 이용하여 왼쪽 이미지를 생성하는 단계;
상기 왼쪽 이미지로부터 하나 이상의 제1 특징점들을 생성하는 단계;
상기 장치의 오른쪽 카메라를 이용하여 오른쪽 이미지를 생성하는 단계;
상기 오른쪽 이미지로부터 하나 이상의 제2 특징점들을 생성하는 단계;
상기 제1 특징점들 및 상기 제2 특징점들을 매칭하는 단계; 및
제1 특징점들 및 상기 제2 특징점들 중 매칭된 특징점들 및 매칭되지 않은 특징점들에 기초하여 상기 맵을 생성하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 11,
Generating the map,
Generating a left image using the left camera of the device;
Generating one or more first feature points from the left image;
Generating a right image using the right camera of the device;
Generating one or more second feature points from the right image;
Matching the first feature points and the second feature points; And
Generating the map based on matched and unmatched feature points of the first and second feature points.
Including,
Posture estimation method.
상기 초기 자세를 결정하는 단계는,
상기 왼쪽 카메라 및 상기 오른쪽 카메라 중 적어도 하나에 의해 생성된 이미지로부터 하나의 이상의 특징점(feature point)들을 생성하는 단계;
상기 맵에 미리 설정된 후보 특징점(candidate feature point)들 중 상기 하나 이상의 특징점들에 대응하는 타겟 특징점(target point)을 결정하는 단계; 및
상기 타겟 특징점에 기초하여 상기 초기 자세를 결정하는 단계
를 포함하는,
자세 추정 방법.
The method of claim 11,
Determining the initial posture,
Generating one or more feature points from an image generated by at least one of the left camera and the right camera;
Determining a target point corresponding to the one or more feature points among candidate feature points preset in the map; And
Determining the initial posture based on the target feature point
Including,
Posture estimation method.
상기 초기 자세를 결정하는 단계는,
상기 하나 이상의 특징점들 중 상기 맵에 미리 설정된 후보 특징점들에 대응하지 않은 나머지 특징점(remaining feature point)을 결정하는 단계; 및
상기 나머지 특징점에 대응하는 특징점을 상기 맵에 추가함으로써 상기 맵을 업데이트하는 단계
를 더 포함하는,
자세 추정 방법.
The method of claim 13,
Determining the initial posture,
Determining a remaining feature point of the one or more feature points that does not correspond to candidate feature points preset in the map; And
Updating the map by adding feature points corresponding to the remaining feature points to the map.
Further comprising,
Posture estimation method.
상기 장치는,
웨어러블 장치(wearable device)인,
자세 추정 방법.
The method of claim 1,
The device,
A wearable device,
Posture estimation method.
A computer-readable recording medium containing a program for performing the method of any one of claims 1 to 15.
적어도 하나의 카메라;
관성 측정 장치(Inertial Measurement Unit: IMU);
자세를 추정하는 프로그램이 기록된 메모리; 및
상기 프로그램을 수행하는 프로세서
를 포함하고,
상기 프로그램은,
상기 장치의 관성 측정 장치(Inertial Measurement Unit: IMU)를 이용하여 IMU 데이터를 생성하는 단계;
상기 IMU 데이터에 기초하여 상기 장치의 제1 자세(pose)를 결정하는 단계;
상기 IMU 데이터에 기초하여 현재 예측 운동 상태 배열을 생성하는 단계; 및
상기 현재 예측 운동 상태 배열에 기초하여, 상기 제1 자세의 제1 시점 이후의 제M 시점에서의 제M 예측 자세를 추정하는 단계 - 상기 M은 1 보다 큰 자연수임 -
를 수행하는,
자세 추정 방법.The device for estimating a posture,
At least one camera;
Inertial Measurement Unit (IMU);
A memory in which a program for estimating posture is recorded; And
A processor that executes the program
Including,
The program,
Generating IMU data using an Inertial Measurement Unit (IMU) of the device;
Determining a first pose of the device based on the IMU data;
Generating a current predicted workout state arrangement based on the IMU data; And
Estimating an Mth predictive posture at an Mth time after a first time point of the first posture based on the current predicted exercise state arrangement, wherein M is a natural number greater than 1
To do,
Posture estimation method.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/114,622 US10964030B2 (en) | 2018-02-12 | 2018-08-28 | Device and method with pose estimator based on current predicted motion state array |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810148359.1A CN110163909A (en) | 2018-02-12 | 2018-02-12 | For obtaining the method, apparatus and storage medium of equipment pose |
CN201810148359.1 | 2018-02-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190098003A true KR20190098003A (en) | 2019-08-21 |
KR102442780B1 KR102442780B1 (en) | 2022-09-14 |
Family
ID=67635306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180050747A KR102442780B1 (en) | 2018-02-12 | 2018-05-02 | Method for estimating pose of device and thereof |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102442780B1 (en) |
CN (1) | CN110163909A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200058168A1 (en) * | 2018-08-17 | 2020-02-20 | Disney Enterprises, Inc. | System and method for aligning virtual objects on peripheral devices in low-cost augmented reality/virtual reality slip-in systems |
US11430179B2 (en) * | 2020-02-24 | 2022-08-30 | Microsoft Technology Licensing, Llc | Depth buffer dilation for remote rendering |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110910447B (en) * | 2019-10-31 | 2023-06-06 | 北京工业大学 | Visual odometer method based on dynamic and static scene separation |
CN110954134B (en) * | 2019-12-04 | 2022-03-25 | 上海有个机器人有限公司 | Gyro offset correction method, correction system, electronic device, and storage medium |
CN113807124B (en) * | 2020-06-11 | 2023-12-12 | Oppo广东移动通信有限公司 | Image processing method, device, storage medium and electronic equipment |
CN111862288A (en) * | 2020-07-29 | 2020-10-30 | 北京小米移动软件有限公司 | Pose rendering method, device and medium |
CN113841025A (en) * | 2020-10-14 | 2021-12-24 | 深圳市大疆创新科技有限公司 | Position and attitude determination method for movable platform, related device and system |
CN112489224A (en) * | 2020-11-26 | 2021-03-12 | 北京字跳网络技术有限公司 | Image drawing method and device, readable medium and electronic equipment |
CN112734852B (en) * | 2021-03-31 | 2021-06-29 | 浙江欣奕华智能科技有限公司 | Robot mapping method and device and computing equipment |
CN113218389B (en) * | 2021-05-24 | 2024-05-17 | 北京航迹科技有限公司 | Vehicle positioning method, device, storage medium and computer program product |
CN113674412B (en) * | 2021-08-12 | 2023-08-29 | 浙江工商大学 | Pose fusion optimization-based indoor map construction method, system and storage medium |
CN113847907A (en) * | 2021-09-29 | 2021-12-28 | 深圳市慧鲤科技有限公司 | Positioning method and device, equipment and storage medium |
CN113838135B (en) * | 2021-10-11 | 2024-03-19 | 重庆邮电大学 | Pose estimation method, system and medium based on LSTM double-flow convolutional neural network |
CN114543797B (en) * | 2022-02-18 | 2024-06-07 | 北京市商汤科技开发有限公司 | Pose prediction method and device, equipment and medium |
CN114419259B (en) * | 2022-03-30 | 2022-07-12 | 中国科学院国家空间科学中心 | Visual positioning method and system based on physical model imaging simulation |
WO2024108394A1 (en) * | 2022-11-22 | 2024-05-30 | 北京小米移动软件有限公司 | Posture acquisition method, apparatus, virtual reality device, and readable storage medium |
CN117889853B (en) * | 2024-03-15 | 2024-06-04 | 歌尔股份有限公司 | SLAM positioning method, terminal device and readable storage medium |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160149252A (en) * | 2014-04-29 | 2016-12-27 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | Stabilization plane determination based on gaze location |
US20170206712A1 (en) * | 2014-11-16 | 2017-07-20 | Eonite Perception Inc. | Optimizing head mounted displays for augmented reality |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826206B (en) * | 2010-03-31 | 2011-12-28 | 北京交通大学 | Camera self-calibration method |
CN107065902B (en) * | 2017-01-18 | 2019-02-01 | 中南大学 | UAV Attitude fuzzy adaptive predictive control method and system based on nonlinear model |
CN106840151B (en) * | 2017-01-23 | 2019-05-17 | 厦门大学 | Model-free deformation of hull measurement method based on delay compensation |
CN107193279A (en) * | 2017-05-09 | 2017-09-22 | 复旦大学 | Robot localization and map structuring system based on monocular vision and IMU information |
-
2018
- 2018-02-12 CN CN201810148359.1A patent/CN110163909A/en active Pending
- 2018-05-02 KR KR1020180050747A patent/KR102442780B1/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160149252A (en) * | 2014-04-29 | 2016-12-27 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | Stabilization plane determination based on gaze location |
US20170206712A1 (en) * | 2014-11-16 | 2017-07-20 | Eonite Perception Inc. | Optimizing head mounted displays for augmented reality |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200058168A1 (en) * | 2018-08-17 | 2020-02-20 | Disney Enterprises, Inc. | System and method for aligning virtual objects on peripheral devices in low-cost augmented reality/virtual reality slip-in systems |
US11100713B2 (en) * | 2018-08-17 | 2021-08-24 | Disney Enterprises, Inc. | System and method for aligning virtual objects on peripheral devices in low-cost augmented reality/virtual reality slip-in systems |
US11430179B2 (en) * | 2020-02-24 | 2022-08-30 | Microsoft Technology Licensing, Llc | Depth buffer dilation for remote rendering |
Also Published As
Publication number | Publication date |
---|---|
CN110163909A (en) | 2019-08-23 |
KR102442780B1 (en) | 2022-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102442780B1 (en) | Method for estimating pose of device and thereof | |
US11010921B2 (en) | Distributed pose estimation | |
US10964030B2 (en) | Device and method with pose estimator based on current predicted motion state array | |
KR102006043B1 (en) | Head pose tracking using a depth camera | |
US7613356B2 (en) | Position and orientation detection method and apparatus | |
EP3896655B1 (en) | Augmented reality (ar) device and method of predicting pose therein | |
WO2020221307A1 (en) | Method and device for tracking moving object | |
KR20200037502A (en) | Method and apparatus of outputting pose information | |
US11398048B2 (en) | Estimating camera pose | |
KR20220122287A (en) | Method and apparatus for determining pose of augmented reality providing device | |
WO2022066486A1 (en) | Joint camera and inertial measurement unit calibration | |
TW202314593A (en) | Positioning method and equipment, computer-readable storage medium | |
JP2024074862A (en) | Method and system for performing eye tracking using an off-axis camera - Patents.com | |
US20230064242A1 (en) | Electronic device for predicting pose and operating method thereof | |
JP7452620B2 (en) | Image processing device, image processing method, and program | |
US11443455B2 (en) | Prior informed pose and scale estimation | |
EP2990085B1 (en) | Method and apparatus for estimating the value of an input in presence of a perturbing factor | |
KR20180061956A (en) | Method and apparatus for estimating eye location | |
KR20230018214A (en) | Method and apparatus of estimating pose | |
US11847750B2 (en) | Smooth object correction for augmented reality devices | |
KR20150081975A (en) | Apparatus for pose estimation of wearable display device using hybrid sensors | |
KR20220107471A (en) | Pose prediction method, pose prediction device, and augmented reality glasses based on pose prediction | |
JP2023554001A (en) | Bundle regulation using epipolar constraints | |
TR201702842A2 (en) | Attribute Mapping Method and Control Device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |