KR101722068B1 - 디바이스의 다수의 센서들로부터 수신된 데이터를 동기화시키는 방법들 및 시스템들 - Google Patents

디바이스의 다수의 센서들로부터 수신된 데이터를 동기화시키는 방법들 및 시스템들 Download PDF

Info

Publication number
KR101722068B1
KR101722068B1 KR1020167020636A KR20167020636A KR101722068B1 KR 101722068 B1 KR101722068 B1 KR 101722068B1 KR 1020167020636 A KR1020167020636 A KR 1020167020636A KR 20167020636 A KR20167020636 A KR 20167020636A KR 101722068 B1 KR101722068 B1 KR 101722068B1
Authority
KR
South Korea
Prior art keywords
data
processor
sensors
camera
sensor
Prior art date
Application number
KR1020167020636A
Other languages
English (en)
Other versions
KR20160120721A (ko
Inventor
조엘 헤슈
제임스 풍
쟈니 리
Original Assignee
구글 테크놀로지 홀딩스 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 테크놀로지 홀딩스 엘엘씨 filed Critical 구글 테크놀로지 홀딩스 엘엘씨
Publication of KR20160120721A publication Critical patent/KR20160120721A/ko
Application granted granted Critical
Publication of KR101722068B1 publication Critical patent/KR101722068B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01DMEASURING NOT SPECIALLY ADAPTED FOR A SPECIFIC VARIABLE; ARRANGEMENTS FOR MEASURING TWO OR MORE VARIABLES NOT COVERED IN A SINGLE OTHER SUBCLASS; TARIFF METERING APPARATUS; MEASURING OR TESTING NOT OTHERWISE PROVIDED FOR
    • G01D21/00Measuring or testing not otherwise provided for
    • G01D21/02Measuring two or more variables by means not covered by a single other subclass
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01DMEASURING NOT SPECIALLY ADAPTED FOR A SPECIFIC VARIABLE; ARRANGEMENTS FOR MEASURING TWO OR MORE VARIABLES NOT COVERED IN A SINGLE OTHER SUBCLASS; TARIFF METERING APPARATUS; MEASURING OR TESTING NOT OTHERWISE PROVIDED FOR
    • G01D9/00Recording measured values
    • G01D9/005Solid-state data loggers
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01DMEASURING NOT SPECIALLY ADAPTED FOR A SPECIFIC VARIABLE; ARRANGEMENTS FOR MEASURING TWO OR MORE VARIABLES NOT COVERED IN A SINGLE OTHER SUBCLASS; TARIFF METERING APPARATUS; MEASURING OR TESTING NOT OTHERWISE PROVIDED FOR
    • G01D21/00Measuring or testing not otherwise provided for
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01PMEASURING LINEAR OR ANGULAR SPEED, ACCELERATION, DECELERATION, OR SHOCK; INDICATING PRESENCE, ABSENCE, OR DIRECTION, OF MOVEMENT
    • G01P15/00Measuring acceleration; Measuring deceleration; Measuring shock, i.e. sudden change of acceleration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock

Abstract

디바이스의 다수의 센서들로부터 수신된 데이터를 동기화시키기 위한 예시적 방법들 및 시스템들이 제공된다. 방법은 운영 시스템에 기초하여 동작하도록 구성된 애플리케이션 프로세서 및 디바이스의 센서들로부터 데이터를 수신하도록 구성된 코-프로세서를 갖는 디바이스에 의해 수행될 수 있다. 방법은, 디바이스의 센서에 의한 인터럽트를 결정하는 단계, 및 코-프로세서에 의해, 센서가 출력을 위한 데이터를 갖는 시간을 표시하는 인터럽트의 타임스탬프를 제공하는 단계를 포함할 수 있다. 방법은 또한, 센서로부터 출력을 위한 데이터를 수신하는 단계, 센서에 의한 인터럽트의 타임스탬프를 수신된 데이터와 연관시키는 단계, 다수의 센서들로부터 수신된 데이터를 데이터의 타임스탬프들에 기초하여 데이터 구조들에 연관시키는 단계, 및 데이터의 타임스탬프들에 기초한 시퀀스대로 데이터 구조들을 애플리케이션 프로세서에 제공하는 단계를 포함한다.

Description

디바이스의 다수의 센서들로부터 수신된 데이터를 동기화시키는 방법들 및 시스템들 {METHODS AND SYSTEMS FOR SYNCHRONIZING DATA RECEIVED FROM MULTIPLE SENSORS OF A DEVICE}
[0001] 본원에서 달리 표시되지 않는다면, 본 섹션에서 설명되는 자료들이 본 출원의 청구항들에 대한 종래 기술은 아니며 본 섹션에서의 포함에 의해 종래 기술인 것으로 인정되는 것은 아니다.
[0002] 센서 융합(sensor fusion)은, 결과적으로 생성되는 정보가 보다 완벽해지도록, 독립 소스들로부터의 감지(sensory) 데이터로부터 유추되는 데이터또는 센서 데이터를 결합하는 것을 포함한다. 융합 프로세스를 위한 데이터 소스들은 다수의 개별 센서들을 포함할 수 있다. 각각의 센서는, 예를 들어, 임의의 환경에서의 동일한 오브젝트에 관해 또는 임의의 환경에서의 동일한 위치에 관해 서로 다른 정보를 제공할 수 있다. 센서 데이터를 결합함으로써, 오브젝트 또는 위치의 보다 완벽한 묘사가 제공될 수 있다. 예로서, 하나의 센서는 오브젝트의 이미지를 캡처하기 위한 카메라를 포함할 수 있고, 또 다른 센서는 이미지를 캡처하기 위해 사용되는 디바이스의 위치를 결정하기 위한 위치 검출 능력들을 포함할 수 있다. 센서 데이터를 조합함으로써, 이미지 데이터에 대한 특정 위치 정보가 제공된다.
[0003] 일 예에서, 운영 시스템에 기초하여 기능하도록 구성된 애플리케이션 프로세서 및 디바이스의 복수의 센서들로부터 데이터를 수신하도록 구성된 코-프로세서를 갖는 디바이스에 의해 수행되는 방법이 제공된다. 방법은 디바이스의 복수의 센서들 중 정해진(given) 센서에 의한 인터럽트(interrupt)를 결정하는 단계를 포함하며, 인터럽트는 정해진 센서가 출력을 위한 데이터를 가짐을 표시한다. 방법은 또한, 코-프로세서에 의해, 정해진 센서가 출력을 위한 데이터를 갖는 시간을 표시하는, 정해진 센서에 의한 인터럽트의 타임스탬프를 제공하는 단계, 및 코-프로세서에 의해, 정해진 센서로부터의 출력을 위한 데이터를 수신하는 단계를 포함한다. 방법은 또한, 정해진 센서에 의한 인터럽트의 타임스탬프를 정해진 센서로부터 수신된 데이터와 연관시키는 단계, 코-프로세서에 의해 제공되는 데이터의 타임스탬프들에 기초하여 복수의 센서들로부터 수신된 데이터를 데이터 구조들에 함께 연관시키는 단계, 및 코-프로세서에 의해, 데이터의 타임스탬프들에 기초한 시퀀스대로 데이터 구조들을 애플리케이션 프로세서에 제공하는 단계를 포함한다.
[0004] 다른 예에서는, 운영 시스템에 기초하여 기능하도록 구성된 애플리케이션 프로세서 및 디바이스의 복수의 센서들로부터 데이터를 수신하도록 구성된 코-프로세서에 의해 실행될 때, 디바이스로 하여금 기능들을 수행하게 하는 명령들을 저장하도록 구성된 컴퓨터 판독가능 메모리가 제공된다. 기능들은, 디바이스의 복수의 센서들 중 정해진 센서에 의한 인터럽트를 결정하는 것을 포함하고, 인터럽트는 정해진 센서가 출력을 위한 데이터를 가짐을 표시한다. 기능들은 또한, 코-프로세서에 의해, 정해진 센서가 출력을 위한 데이터를 갖는 시간을 표시하는, 정해진 센서에 의한 인터럽트의 타임스탬프를 제공하는 것, 및 코-프로세서에 의해, 정해진 센서로부터의 출력을 위한 데이터를 수신하는 것을 포함한다. 기능들은 또한, 정해진 센서에 의한 인터럽트의 타임스탬프를 정해진 센서로부터 수신된 데이터와 연관시키는 것, 코-프로세서에 의해 제공되는 데이터의 타임스탬프들에 기초하여 복수의 센서들로부터 수신된 데이터를 데이터 구조들에 함께 연관시키는 것, 및 코-프로세서에 의해, 데이터의 타임스탬프들에 기초한 시퀀스대로 데이터 구조들을 애플리케이션 프로세서에 제공하는 것을 포함한다.
[0005] 다른 예에서, 운영 시스템에 기초하여 기능하도록 구성된 애플리케이션 프로세서, 복수의 센서들 및 복수의 센서들로부터 데이터를 수신하고 기능들을 수행하도록 구성된 코-프로세서를 포함하는 디바이스가 제공된다. 기능들은, 복수의 센서들 중 정해진 센서에 의한 인터럽트를 결정하는 것을 포함하고, 인터럽트는 정해진 센서가 출력을 위한 데이터를 가짐을 표시한다. 기능들은 또한, 정해진 센서가 출력을 위한 데이터를 갖는 시간을 표시하는, 정해진 센서에 의한 인터럽트의 타임스탬프를 제공하는 것, 정해진 센서로부터 출력을 위한 데이터를 수신하는 것, 정해진 센서에 의한 인터럽트의 타임스탬프를 정해진 센서로부터 수신된 데이터와 연관시키는 것, 코-프로세서에 의해 제공되는 데이터의 타임스탬프들에 기초하여 복수의 센서들로부터 수신된 데이터를 데이터 구조들에 함께 연관시키는 것, 및 데이터의 타임스탬프들에 기초한 시퀀스대로 데이터 구조들을 애플리케이션 프로세서에 제공하는 것을 포함한다.
[0006] 이러한 및 다른 양상들, 장점들, 및 대안들은, 적절한 경우 첨부 도면들을 참조로 하여, 하기의 상세한 설명을 판독함으로써 당업자들에게 명백해질 것이다.
[0007] 도 1은 예시적인 컴퓨팅 디바이스를 예시한다.
[0008] 도 2는 또 다른 예시적 컴퓨팅 디바이스를 예시한다.
[0009] 도 3a-3b는 도 2의 컴퓨팅 디바이스의 일부 센서들의 구성을 도시하는 컴퓨팅 디바이스의 개념적 예시들이다.
[0010] 도 4는, 본원에 설명된 적어도 일부 실시예들에 따라, 디바이스의 다수의 센서 센서들로부터 수신된 데이터를 동기화시키기 위한 예시적인 방법의 블록도이다.
[0011] 도 5a는 디바이스의 복수의 센서들로부터 수신된 데이터의 동기화를 개념적으로 예시하는 예시적 타이밍도이다.
[0012] 도 5b는 디바이스의 다수의 센서들로부터 수신된 데이터의 동기화를 개념적으로 예시하는 또 다른 예시적 타이밍도이다.
[0013] 도 6은 디바이스의 다수의 센서들로부터 수신된 데이터의 동기화를 개념적으로 예시하는 또 다른 예시적 타이밍도이다.
[0014] 하기의 상세한 설명은 첨부 도면들을 참조로 개시된 시스템들 및 방법들의 다양한 특징들 및 기능들을 설명한다. 도면들에서, 문맥이 달리 지시하지 않는 한, 유사한 심볼들은 유사한 컴포넌트들을 식별한다. 본원에 설명된 예시적 시스템 및 방법 실시예들은 제한적인 것을 의미하지 않는다. 개시된 시스템들 및 방법들의 특정 양상들은 광범위한 여러 구성들로 배열 및 결합될 수 있다는 것이 쉽게 이해될 것이며, 이들 모두가 본원에서 고려된다.
[0015] 예들 내에서, 디바이스의 다수의 센서들로부터 수신된 데이터를 동기화시키기 위한 방법들 및 시스템들이 설명된다. 예시적 방법들은 운영 시스템에 기초하여 기능하도록 구성된 애플리케이션 프로세서 및 디바이스의 복수의 센서들로부터 데이터를 수신하도록 구성된 코-프로세서를 갖는 디바이스에 의해 수행될 수 있다. 예시적 방법은, 디바이스의 복수의 센서들 중 정해진 센서에 의한 인터럽트를 결정하는 단계를 포함하고, 인터럽트는 정해진 센서가 출력을 위한 데이터를 가짐을 표시한다. 방법은 또한, 코-프로세서에 의해, 정해진 센서가 출력을 위한 데이터를 갖는 시간을 표시하는, 정해진 센서에 의한 인터럽트의 타임스탬프를 제공하는 단계, 및 코-프로세서에 의해, 정해진 센서로부터의 출력을 위한 데이터를 수신하는 단계를 포함한다. 방법은 또한, 정해진 센서에 의한 인터럽트의 타임스탬프를 정해진 센서로부터 수신된 데이터와 연관시키는 단계, 및 코-프로세서에 의해 제공되는 데이터의 타임스탬프들에 기초하여 복수의 센서들로부터 수신된 데이터를 데이터 구조들에 함께 연관시키는 단계를 포함한다. 방법은 또한, 코-프로세서에 의해, 데이터의 타임스탬프들에 기초한 시퀀스대로 데이터 구조들을 애플리케이션 프로세서에 제공하는 단계를 포함한다.
[0016] 일부 기존의 디바이스들에서, 센서 데이터는 애플리케이션 프로세서에 제공되며 센서 데이터는 애플리케이션 프로세서에 의해 실행되는 소프트웨어로부터의 타임스탬프를 수신한다. 그러나, 센서와 애플리케이션 프로세서 사이에서 통신 버스를 통한 데이터의 송신으로 인해 또는 데이터의 버퍼링 또는 큐잉으로 인해 소프트웨어에 의한 데이터 타임스탬프와 데이터 수집(collection) 사이에는 소정의 시간이 경과하게 되며, 따라서 타임스탬프들은 다수의 센서들로부터 수신된 모든 데이터에 걸쳐 부정확하거나 동기화되지 않을 수 있다. 본원에 제시되는 예들내에서, 코-프로세서는 센서들에 의해 수집되는 또는 측정되는 데이터에 대한 정확하고 정밀한 타임스탬프들을 캡처하기 위해 디바이스의 모든 센서 데이터에 대한 타임스탬프들에 기초하는 하드웨어를 제공하도록 구성될 수 있다.
[0017] 이제 도면들을 참조로, 도 1은 예시적인 컴퓨팅 디바이스(100) 예시한다. 일부 예들에서, 도 1에 예시된 컴포넌트들은 다수의 컴퓨팅 디바이스들에 걸처 분포될 수 있다. 그러나, 예를 돕기 위해, 컴포넌트들은 하나의 예시적 컴퓨팅 디바이스(100)의 일부로서 도시되고 설명된다. 컴퓨팅 디바이스(100)는, 모바일 디바이스(예컨대, 모바일 전화), 데스크톱 컴퓨터, 랩톱 컴퓨터, 이메일/메시징 디바이스, 테블릿 컴퓨터, 또는 본원에 설명된 기능들을 수행하도록 구성될 수 있는 유사한 디바이스일 수 있거나 또는 이들을 포함할 수 있다. 일반적으로, 컴퓨팅 디바이스(100)는, 본원에 설명된 방법들 및 기능들에 따라 데이터를 송신하거나 또는 데이터를 수신하도록 구성되는, 임의의 타입의 컴퓨팅 디바이스 또는 송신기일 수 있다.
[0018] 컴퓨팅 디바이스(100)는 인터페이스(102), 무선 통신 컴포넌트(104), 셀룰러 라디오 통신 컴포넌트(106), GPS(global position system) 수신기(108), 센서(들)(110), 데이터 저장소(112) 및 프로세서(들)(114)를 포함할 수 있다. 도 1에 예시된 컴포넌트들은 통신 링크(116)에 의해 함께 링크될 수 있다. 컴퓨팅 디바이스(100)는 또한, 컴퓨팅 디바이스(100) 내에서의 통신 및 컴퓨팅 디바이스(100)와 다른 컴퓨팅 디바이스들(미도시), 예컨대 서버 엔티티 간의 통신을 가능하게 하기 위한 하드웨어를 포함할 수 있다. 하드웨어는, 예를 들어, 송신기들, 수신기들 및 안테나들을 포함할 수 있다.
[0019] 인터페이스(102)는 컴퓨팅 디바이스(100)가 다른 컴퓨팅 디바이스들(미도시), 예컨대 서버와 통신하는 것을 허용하도록 구성될 수 있다. 따라서, 인터페이스(102)는 하나 또는 그 초과의 컴퓨팅 디바이스들로부터 입력 데이터를 수신하도록 구성될 수 있으며, 또한 출력 데이터를 하나 또는 그 초과의 컴퓨팅 디바이스들로 전송하도록 구성될 수 있다. 인터페이스(102)는 유선 또는 무선 통신 프로토콜에 따라 기능하도록 구성될 수 있다. 일부 예들에서, 인터페이스(102)는 버튼들, 키보드, 터치 스크린, 스피커(들)(118), 마이크로폰(들)(120) 및/또는 입력들을 수신하기 위한 임의의 다른 엘리먼트들뿐만 아니라, 하나 또는 그 초과의 디스플레이들 및/또는 출력들을 통신하기 위한 임의의 다른 엘리먼트들을 포함할 수 있다.
[0020] 무선 통신 컴포넌트(104)는 하나 또는 그 초과의 무선 통신 표준들에 따라 컴퓨팅 디바이스(100)에 대한 무선 데이터 통신을 원활하게 하도록 구성된 통신 인터페이스일 수 있다. 예를 들어, 무선 통신 컴포넌트(104)는 하나 또는 그 초과의 IEEE 802.11 표준들에 따라 무선 데이터 통신을 원활하게 하도록 구성된 Wi-Fi 통신 컴포넌트를 포함할 수 있다. 다른 예로서, 무선 통신 컴포넌트(104)는 하나 또는 그 초과의 블루투스 표준들에 따라 무선 데이터 통신을 원활하게 하도록 구성된 블루투스 통신 컴포넌트를 포함할 수 있다. 다른 예들이 또한 가능하다.
[0021] 셀룰러 라디오 통신 컴포넌트(106)는, 네트워크에 대한 모바일 연결성(mobile connectivity)을 제공하기 위해 셀룰러 무선 기지국과의 무선 통신(음성 및/또는 데이터)을 원활하게 하도록 구성된 통신 인터페이스일 수 있다. 셀룰러 라디오 통신 컴포넌트(106)는, 예를 들어, 컴퓨팅 디바이스(100)가 위치되는 셀의 기지국에 연결되도록 구성될 수 있다.
[0022] GPS 수신기 (108)는 GPS 위성들에 의해 전송되는 신호들을 정밀하게 시간설정(timing)함으로써 컴퓨팅 디바이스(100)의 위치를 추정하도록 구성 될 수 있다.
[0023] 센서(들)(110)는 하나 또는 그 초과의 센서들을 포함할 수 있거나, 또는 컴퓨팅 디바이스(100)내에 포함된 하나 또는 그 초과의 센서들을 나타낼 수 있다. 예시적인 센서들은 가속도계, 자이로스코프, 보수계, 광 센서들, 마이크로폰, 카메라(들), 적외선 플래시, 기압계, 자력계, GPS, WiFi, NFC(near field communication), 블루투스, 프로젝터, 깊이 센서, 온도 센서들, 또는 다른 위치 및/또는 상황 인식 센서들을 포함한다.
[0024] 데이터 저장소(112)는, 프로세서(들)(114)에 의해 액세스되고 실행될 수 있는 프로그램 로직(122)을 저장할 수 있다. 데이터 저장소(112)는 또한 센서(들)(110)에 의해 수집된 데이터, 또는 무선 통신 컴포넌트(104), 셀룰러 라디오 통신 컴포넌트(106) 및 GPS 수신기(108) 중 임의의 것에 의해 수집된 데이터를 저장할 수 있다.
[0025] 프로세서(들)(114)는 임의의 센서(들)(110)에 의해 수집된 데이터를 수신하고 데이터에 기초하여 임의의 수의 기능들을 수행하도록 구성될 수 있다. 예로서, 프로세서(들)(114)는 하나 또는 그 초과의 위치-결정 컴포넌트들, 예컨대 무선 통신 컴포넌트(104), 셀룰러 라디오 통신 컴포넌트(106), 또는 GPS 수신기(108)를 사용하여 컴퓨팅 디바이스(100)의 하나 또는 그 초과의 지리적 위치 추정(estimate)들을 결정하도록 구성될 수 있다. 프로세서(들)(114)는 컴퓨팅 디바이스(100)의 무선 범위내에서 하나 또는 그 초과의 알려진 무선 액세스 포인트들의 존재 및/또는 이들의 위치에 기초하여 컴퓨팅 디바이스(100)의 위치를 결정하기 위해 위치-결정 알고리즘을 사용할 수 있다. 일 예에서, 무선 위치 컴포넌트(104)는 하나 또는 그 초과의 무선 액세스 포인트들(예를 들어, MAC 어드레스)의 아이덴티티를 결정하고 하나 또는 그 초과의 무선 액세스 포인트들 각각으로부터 수신되는 신호들의 세기(예를 들어, 수신 신호 강도 표시)를 측정할 수 있다. 각각의 고유한 무선 액세스 포인트로부터의 수신 신호 강도 표시(RSSI:received signal strength indication)는 각각의 무선 액세스 포인트로부터의 거리를 결정하는데 사용될 수 있다. 이후 거리들은 각각의 고유한 무선 액세스 포인트가 위치되는 장소에 관한 정보를 저장하는 데이터베이스와 비교될 수 있다. 각각의 무선 액세스 포인트로부터의 거리 그리고 각각의 무선 액세스 포인트들의 알려진 위치에 기초하여, 컴퓨팅 디바이스(100)의 위치 추정이 결정될 수 있다.
[0026] 다른 경우에서, 프로세서(들)(114)는 인근 셀룰러 기지국들에 기초하여 컴퓨팅 디바이스(100)의 위치를 결정하기 위해 위치-결정 알고리즘을 사용할 수 있다. 예를 들어, 셀룰러 라디오 통신 컴포넌트(106)는, 셀룰러 네트워크로부터의 신호를, 컴퓨팅 디바이스(100)로 송신하고 있는 또는 컴퓨팅 디바이스(100)로 마지막 송신한 셀을 식별하도록 구성될 수 있다. 셀룰러 라디오 통신 컴포넌트(106)는 또한 신호를 제공하는 기지국에 대한 RTT(round trip time)를 측정하고, 이 정보를 식별된 셀과 결합하여 위치 추정을 결정하도록 구성될 수 있다. 다른 예에서, 셀룰러 통신 컴포넌트(106)는 컴퓨팅 디바이스(100)의 위치를 추정하기 위해 3 또는 그 초과의 기지국들로부터의 OTDOA(observed time difference of arrival)를 사용하도록 구성될 수 있다.
[0027] 일부 구현들에서, 컴퓨팅 디바이스(100)는 다층 리눅스 플랫폼으로 구성될 수 있는 디바이스 플랫폼(미도시)을 포함할 수 있다. 디바이스 플랫폼은 상이한 애플리케이션들 및 애플리케이션 프레임워크뿐만 아니라 다양한 커널들, 라이브러리들 및 런타임 엔티티들을 포함할 수 있다. 다른 예들에서, 다른 포맷들 또는 운영 시스템들이 마찬가지로 컴퓨팅 디바이스(100)를 동작시킬 수 있다.
[0028] 통신 링크(116)가 유선 연결로서 예시되었으나; 무선 연결들이 또한 사용될 수 있다. 예를 들어, 통신 링크(116)는, 다른 가능성들 중에서도, 유선 직렬 버스, 예컨대 유니버셜 직렬 버스 또는 병렬 버스, 또는 예를 들어, IEEE 802.11(임의의 IEEE 802.11 개정들 포함)에 설명된 통신 프로토콜들 또는 단거리 무선 라디오 기술을 사용하는 무선 연결일 수 있다.
[0029] 컴퓨팅 디바이스(100)는 더 많은 수의 또는 더 적은 수의 컴포넌트들을 포함할 수 있다. 또한, 본원에 설명된 예시적인 방법들은 컴퓨팅의 디바이스(100)의 컴포넌트들에 의해 개별적으로 또는 컴퓨팅 디바이스(100)의 컴포넌트들 중 하나 또는 이들 모두에 의한 결합으로 수행될 수 있다.
[0030] 도 2는 또 다른 예시적 컴퓨팅 디바이스(200)를 예시한다. 도 2에서의 컴퓨팅 디바이스(200)는 도 1에 도시된 컴퓨팅 디바이스(100)의 일부를 나타낼 수 있다. 도 2에서, 컴퓨팅 디바이스(200)는 다수의 센서들, 예컨대 자이로스코프(204) 및 가속도계(206)를 포함하는 IMU(inertial measurement unit)(202), 글로벌 셔터(GS) 카메라(208), 롤링 셔터(RS) 카메라(210), 전면 카메라(front facing camera)(212), IR(infrared) 플래시(214), 기압계(216), 자력계(218), GPS 수신기(220), WiFi/NFC/블루투스 센서(222), 프로젝터(224), 깊이 센서(226) 및 온도 센서(228)를 포함하는 것으로 도시되며, 이들 각각은 코-프로세서(230)로 출력한다. 코-프로세서(230)는 애플리케이션 프로세서(232)로부터 입력을 수신하고 애플리케이션 프로세서(232)로 출력한다. 컴퓨팅 디바이스(200)는 애플리케이션 프로세서(232)로 직접 출력하는 제 2 IMU(234)를 더 포함할 수 있다.
[0031] IMU(202)는 자이로스코프(204) 및 가속도계(206)의 출력들에 기초하여 컴퓨팅 디바이스(200)의 속도, 배향 및 중력들을 결정하도록 구성될 수 있다.
[0032] GS 카메라(208)는, 컴퓨팅 디바이스(200)의 정면을 등지는 후면 카메라(rear facing camera)가 되도록 컴퓨팅 디바이스(200)상에 구성될 수 있다. GS 카메라(208)는 카메라(208)의 모든 픽셀들의 출력들을 동시에 판독하도록 구성될 수 있다. GS 카메라(208)는, 광각 뷰잉을 위해, 어안 센서(fish eye sensor)와 같이 대략 120-170도의 시계를 갖도록 구성될 수 있다.
[0033] RS 카메라(210)는 픽셀 디스플레이의 상단(top)으로부터 픽셀 디스플레이의 하단(bottom)으로 픽셀들의 출력들을 판독하도록 구성될 수 있다. 일 예로서, 다른 센서들도 마찬가지로 가능하지만, RS 카메라(210)는 적색/녹색/청색(RGB) 적외선(IR) 4 메가픽셀 이미지 센서일 수 있다. RS 카메라(210)는, 예를 들어, 대략 5.5ms의 최소 판독(readout) 시간으로 동작하도록 빠른 노출을 가질 수 있다. GS 카메라(208)와 마찬가지로, RS 카메라(210)는 후면 카메라일 수 있다.
[0034] 카메라(212)는, 전면 카메라로서 또는 GS 카메라(208)와 RS 카메라(210)의 반대쪽을 향하는 방향에 구성된, 컴퓨팅 장치(200)의 추가 카메라일 수 있다. 카메라(212)는 컴퓨팅 디바이스(200)의 제 1 시점(viewpoint)의 이미지들을 캡처하도록 구성될 수 있고 GS 카메라(208) 및 RS 카메라(210)는 디바이스의 제 2 시점(제 1 시점과는 반대임)의 이미지들을 캡처하도록 구성될 수 있다. 예를 들면, 카메라(212)는 광각 카메라일 수 있으며, 광각 뷰잉을 위해 대략 120-170도 시계를 가질 수 있다.
[0035] 예를 들어, IR 플래시(214)는 컴퓨팅 디바이스(200)에 대한 광원을 제공할 수 있고, GS 카메라(208) 및 RS 카메라(210)에 대한 광을 제공하기 위해 컴퓨팅 디바이스(200)의 후방을 향하는 방향으로 광을 출력하도록 구성될 수 있다. 일부 예들에서, IR 플래시(214)는 낮은 듀티 사이클, 예컨대 5 ㎐로, 또는 코-프로세서(230) 또는 애플리케이션 프로세서(232)에 의해 지시될 때 비-연속적인 방식으로 플래시하도록 구성될 수 있다. 예를 들어, IR 플래시(214)는 모바일 디바이스들에서 사용하도록 구성된 LED 광원을 포함할 수 있다.
[0036] 도 3a-3b는 도 2의 컴퓨팅 디바이스(200)의 일부 센서들의 구성을 도시하는 컴퓨팅 디바이스(300)의 개념적 예시들이다. 도 3a-3b에서, 컴퓨팅 디바이스(300)는 모바일 전화로 도시되어 있다. 컴퓨팅 디바이스(300)는 도 1의 컴퓨팅 디바이스(100)나 도 2의 컴퓨팅 디바이스(200)와 유사할 수 있다. 도 3a는 전면 카메라(304) 및 P/L 센서 개구(306)(예를 들어, 근접도 또는 광 센서)와 함께, 디스플레이(302)가 제공되는 컴퓨팅 디바이스(300)의 정면을 예시한다. 전면 카메라(304)는 도 2에 설명된 것과 같은 카메라(212)일 수 있다.
[0037] 도 3b는 후방 카메라(310) 및 또 다른 후방 카메라(314)가 제공된 컴퓨팅 디바이스(300)의 후면(308)을 예시한다. 도 2의 컴퓨팅 디바이스(200)에 설명된 것과 같이, 후방 카메라(310)는 RS 카메라(210)일 수 있고 후방 카메라(312)는 GS 카메라(208)일 수 있다. 컴퓨팅 디바이스(300)의 후면(308)은 또한 IR 플래시(314)를 포함하며, 이 IR 플래시(314)는 도 2의 컴퓨팅 디바이스(200)에서 설명된 것과 같은 IR 플래시(214) 또는 프로젝터(224)일 수 있다. 일 예에서, IR 플래시(214)와 프로젝터(224)는 동일한 하나일 수 있다. 이를 테면, 하나의 IR 플래시가 IR 플래시(214) 및 프로젝터(224)의 기능들을 수행하도록 사용될 수 있다. 다른 예에서, 컴퓨팅 장치(300)는 후방 카메라(310) 근처에 위치된 제 2 플래시(예를 들면, LED 플래시)(미도시)를 포함할 수 있다. 센서들의 구성 및 배치는, 예를 들면, 컴퓨팅 디바이스(300)의 원하는 기능을 제공하는데 유용할 수 있으나, 다른 구성들도 마찬가지로 가능하다.
[0038] 다시 도 2를 참조하면, 기압계(216)는 압력 센서를 포함할 수 있고, 기압들(air pressures) 및 고도 변화들을 결정하도록 구성될 수 있다.
[0039] 예를 들어, 자력계(218)는 컴퓨팅 디바이스(200)의 롤(roll), 요(yaw) 및 피치(pitch) 측정들을 제공하도록 구성될 수 있으며, 내부 나침반으로서 동작하도록 구성될 수 있다. 일부 예들에서, 자력계(218)는 IMU(202)의 컴포넌트(미도시)일 수 있다.
[0040] GPS 수신기(220)는 도 1의 컴퓨팅 디바이스(100)에서 설명된 GPS 수신기(108)와 유사할 수 있다. 추가 예들에서, GPS(220)는 또한 GPS 위성들 또는 다른 네트워크 엔티티들로부터 수신되는 타이밍 신호들을 출력할 수 있다. 이러한 타이밍 신호들은 동일한 위성 타임스탬프들을 포함하는 다수의 디바이스들에 걸쳐 센서들로부터 수집된 데이터를 동기화하는데 사용될 수 있다.
[0041] WiFi/NFC/블루투스 센서(222)는, 다른 디바이스와의 무선 통신을 이 다른 디바이스와의 접촉을 통해 또는 이와 아주 근접해지는 것을 통해 구축하기 위해, 도 1의 컴퓨팅 디바이스(100)에 대해 위에서 논의된 것과 같은 WiFi 및 블루투스 표준들에 따라 그리고 NFC 표준들에 따라 동작하도록 구성된 무선 통신 컴포넌트들을 포함할 수 있다.
[0042] 프로젝터(224)는 임의의 환경의 도트 패턴을 생성하는 패턴 발생기와 함께 레이저를 갖는 구조화된 광 프로젝터일 수 있거나 또는 이를 포함할 수 있다. 프로젝터(224)는 이 환경에서의 오브젝트들의 깊이에 대한 정보, 예컨대 오브젝트들의 3차원(3D) 특징들을 복원하기 위해 RS 카메라(210)와 함께 동작하도록 구성될 수 있다. 예를 들어, 별도의 깊이 센서(226)는 환경에서의 오브젝트들의 범위를 감지하기 위해 주변 광 조건들하에서 3D로 도트 패턴의 비디오 데이터를 캡처하도록 구성될 수 있다. 프로젝터(224) 및/또는 깊이 센서(226)는 투사된 도트 패턴에 기초하여 오브젝트들의 형상들을 결정하도록 구성될 수 있다. 예로서, 깊이 센서(226)는 프로젝터(224)로 하여금 도트 패턴을 생성하게 하고 RS 카메라(210)로 하여금 도트 패턴의 이미지를 캡처하게 하도록 구성될 수 있다. 깊이 센서(226)는 이후 도트 패턴의 이미지를 프로세싱하고, 다양한 알고리즘들을 사용하여 3D 데이터를 삼각측량 및 추출하고, 깊이 이미지를 코-프로세서(230)에 출력할 수 있다.
[0043] 온도 센서(228)는 예를 들어 컴퓨팅 디바이스(200)의 주변 환경의 온도 또는 온도 구배, 예컨대 온도 변화를 측정하도록 구성될 수 있다.
[0044] 코-프로세서(230)는 컴퓨팅 디바이스(200) 상의 모든 센서들을 제어하도록 구성될 수 있다. 예들에서, 코-프로세서(230)는, IR 플래시(214)에 매칭하도록 카메라들(208, 210 및 212) 중 임의의 카메라의 노출 시간들을 제어하고, 프로젝터(224) 펄스 싱크(sync), 듀레이션 및 세기를 제어하고, 그리고 일반적으로는, 센서들의 데이터 캡처 또는 수집 시간들을 제어할 수 있다. 코-프로세서(230)는 또한 애플리케이션 프로세서(232)에 대한 적절한 포맷으로 센서들 중 임의의 센서로부터의 데이터를 프로세싱하도록 구성될 수 있다. 일부 예들에서, 코-프로세서(230)는, 센서들 중 동일한 타임스탬프 또는 데이터 수집 시간(또는 시간 기간)에 해당하는 임의의 센서로부터의 모든 데이터를 애플리케이션 프로세서(232)에 제공될 하나의 데이터 구조로 병합한다.
[0045] 애플리케이션 프로세서(232)는 컴퓨팅 디바이스(200)의 다른 기능을 제어하도록, 예컨대 운영 시스템 또는 컴퓨팅 디바이스(200)에 저장된 임의의 수의 소프트웨어 애플리케이션에 따라 동작하도록 컴퓨팅 디바이스(200)를 제어하도록 구성될 수 있다. 애플리케이션 프로세서(232)는, 임의의 수의 타입들의 기능을 수행하기 위해, 센서들에 의해 수집되고 코-프로세서로부터 수신된 데이터를 사용할 수 있다. 애플리케이션 프로세서(232)는 코-프로세서(230)의 출력들을 수신할 수 있으며, 일부 예들에서, 애플리케이션 프로세서(232)는 GS 카메라(208) 및 RS 카메라(210)를 비롯한 다른 센서들로부터의 원시 데이터(raw data) 출력들을 마찬가지로 수신할 수 있다.
[0046] 제 2 IMU(234)는 애플리케이션 프로세서(232)로 직접 수집된 데이터를 출력할 수 있고, 이 수집된 데이터는 애플리케이션 프로세서(232)에 의해 수신되고, 데이터 수집을 시작하도록 다른 센서들을 트리거링하는데 사용될 수 있다. 예로서, 제 2 IMU(234)의 출력들은 컴퓨팅 디바이스(200)의 모션을 표시할 수 있고, 컴퓨팅 디바이스(200)가 모션 상태일 때, 컴퓨팅 디바이스(200)가 이미지 데이터, GPS 데이터 등을 수집하는 것이 바람직할 수 있다. 따라서, 애플리케이션 프로세서(232)는 IMU(234)의 출력들이 모션을 표시하는 시간들에 데이터를 수집하기 위해 공통 버스들을 통한 통신 시그널링을 통해 다른 센서들을 트리거링시킬 수 있다.
[0047] 도 2에 도시된 컴퓨팅 디바이스(200)는 센서들과 프로세서들 각각의 사이에 다수의 통신 버스들을 포함할 수 있다. 예를 들어, 코-프로세서(230)는 통신용 멀티-마스터 직렬 싱글-엔드형 버스(multi-master serial single-ended bus)를 포함하는 I2C(inter-integrated circuit) 버스를 통해 IMU(202), GS 카메라(208) 및 RS 카메라(212) 각각과 통신할 수 있다. 코-프로세서(230)는 동일한 I2C 버스 또는 개별 통신 버스를 통해, IMU(202), GS 카메라(208) 및 RS 카메라(212) 각각에 의해 수집된, 측정된 또는 검출된 원시 데이터를 수신할 수 있다. 코-프로세서(230)는, 풀 듀플렉스 모드(full duplex mode)에서 동작할 수 있는 동기식 직렬 데이터 링크를 포함하는 SPI(serial peripheral interface) 버스, I2C 버스, 그리고 카메라 또는 픽셀 정보를 통신하도록 구성된 직렬 인터페이스를 포함하는 MIPI(mobile industry processor interface)를 포함하는 다수의 통신 버스들을 통해 애플리케이션 프로세서(232)와 통신할 수 있다. 다양한 버스들의 사용은, 예를 들어, 개별 통신 버스에 의해 제공되는 대역폭뿐만 아니라 데이터의 통신 속도에 대한 요구(need)에 기초하여 결정될 수 있다.
[0048] 도 4는, 본원에 설명된 적어도 일부 실시예들에 따라, 디바이스의 다수의 센서 센서들로부터 수신된 데이터를 동기화하기 위한 예시적인 방법의 블록도이다. 도 4에 도시된 방법(400)은, 예를 들면, 예를 들어, 도 1의 컴퓨팅 디바이스(100), 도 2의 컴퓨팅 디바이스(200) 또는 도 3의 컴퓨팅 디바이스(300)에 사용될 수 있거나, 또는 도 1의 컴퓨팅 디바이스(100), 도 2의 컴퓨팅 디바이스(200) 또는 도 3의 컴퓨팅 디바이스(300)의 임의의 컴포넌트들의 결합에 의해 수행될 수 있는 방법의 실시예를 제시한다. 방법(400)은 하나 또는 그 초과의 블록들(402-412)에 의해 예시된 것과 같은 하나 또는 그 초과의 동작들, 기능들 또는 동작들을 포함할 수 있다. 블록들이 순차적인 순서로 예시되었지만, 이들 블록들은 어떤 경우들에서는 동시에 그리고/또는 본원에 설명된 것들과는 상이한 순서로 수행될 수 있다. 또한, 다양한 블록들은 더 적은 수의 블록들로 결합되거나, 추가의 블록들로 나뉘거나 그리고/또는 원하는 구현에 기초하여 제거될 수 있다.
[0049] 또한, 본원에 개시된 방법(400) 및 다른 프로세스들 및 방법들에 대해, 흐름도는 본원의 실시예들에 대한 하나의 가능성 있는 구현의 동작 및 기능을 나타낸다. 이와 관련하여, 각각의 블록은 모듈, 세그먼트, 또는 프로세스에서의 특정한 논리적 기능들 또는 단계들을 구현하도록 프로세서에 의해 실행가능한 하나 또는 그 초과의 명령들을 포함하는 프로그램 코드의 일부를 나타낼 수 있다. 프로그램 코드는 예를 들어 임의의 타입의 컴퓨터 판독가능 매체, 예컨대 디스크 또는 하드 드라이브를 포함하는 저장 디바이스 상에 저장될 수 있다. 컴퓨터 판독가능 매체는, 예를 들어, 비일시적 컴퓨터 판독가능 매체, 예컨대 레지스터 메모리, 프로세서 캐시 및 RAM(Random Access Memory)과 같이 짧은 시간 기간들 동안 데이터를 저장하는 컴퓨터 판독가능 매체를 포함할 수 있다. 컴퓨터 판독 가능 매체는 또한, 예를 들어, 다른 비일시적 매체, 예컨대 ROM(read only memory), 광학 또는 자기 디스크들, CD-ROM(compact-disc read only memory)와 같은 보조의 또는 영구적 장기간 저장소를 포함할 수 있다. 컴퓨터 판독가능 매체는 또한 임의의 다른 휘발성 또는 비휘발성 저장 시스템들일 수 있다. 컴퓨터 판독가능 매체로는, 예를 들어, 컴퓨터 판독가능 저장 매체, 유형의(tangible) 저장 디바이스 또는 다른 제조 물품이 고려될 수 있다. 프로그램 코드(또는 코드를 위한 데이터)는 또한, 예를 들어, 통신 매체를 포함하는 다른 매체, 예컨대 무선 통신 매체 상에 저장 또는 제공될 수 있다.
[0050] 또한, 본원에 개시된 방법(400) 및 다른 프로세스들 및 방법들에 대해, 도 4에서의 각각의 블록은 프로세스에서의 특정한 논리적 기능들을 수행하도록 배선된 회로를 나타낼 수 있다.
[0051] 방법(400)의 기능들은 컴퓨팅 디바이스에 의해 완전히 수행될 수 있거나, 또는 다수의 컴퓨팅 디바이스들 및/또는 서버에 걸쳐 분포될 수 있다. 일부 예들에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스의 센서들로부터 정보를 수신할 수 있거나, 또는 컴퓨팅 디바이스가 서버인 경우, 정보는 정보를 수집하는 다른 디바이스로부터 수신될 수 있다. 컴퓨팅의 디바이스는 추가로, 예를 들어, 다른 디바이스들의 센서로부터 정보를 수신하기 위해 서버와 통신할 수 있다. 방법(400)은 추가로, 운영 시스템에 기초하여 기능하도록 구성된 애플리케이션 프로세서 및 디바이스의 복수의 센서들로부터 데이터를 수신하도록 구성된 코-프로세서를 갖는 디바이스에 의해 수행될 수 있다. 센서들은, 예를 들어, IMU, 글로벌 셔터 카메라, 롤링 셔터 카메라, 구조화된 광 프로젝터, 깊이 카메라, 적외선 플래시, 기압계, 자력계 및 온도 센서를 비롯하여, 도 1, 도 2, 또는 도 3a-3b 중 임의의 도면에서 앞서 설명된 것과 같은 임의의 센서들을 포함할 수 있다.
[0052] 블록(402)에서, 방법(400)은 복수의 센서들 중 정해진 센서에 의한 인터럽트를 결정하는 단계를 포함한다. 인터럽트는 정해진 센서가 출력을 위한 데이터를 가짐을 표시한다. 예로서, 코-프로세서는, 센서로부터 인터럽트를 표시하는 신호, 예컨대 참(true)으로 설정된 플래그를 포함하는 신호를 수신할 수 있다. 센서는, 예를 들어, 감지 기능을 수행한 후, 센서가 출력을 위한 데이터를 갖는다면 신호를 전송할 수 있다. 센서는 데이터 수집을 수행하도록 트리거링되는 것에 기초하여, 또는 내부적으로 데이터 수집을 수행하는 센서에 기초하여 출력을 위한 데이터를 가질 수 있다.
[0053] 블록(404)에서, 방법(400)은, 코-프로세서에 의해, 정해진 센서가 출력을 위한 데이터를 갖는 시간을 표시하는, 주어진 센서에 의한 인터럽트의 타임스탬프를 제공하는 단계를 포함한다. 이를 테면, 코-프로세서가 인터럽트를 결정할 때, 코-프로세서는 인터럽트에 대한 타임스탬프를 생성하고, 인터럽트 및 인터럽트를 제공하는 센서를 표시하는 다른 메타데이터와 함께 타임스탬프를 저장한다. 이런 식으로, 코-프로세서는 센서가 데이터를 수집한 정확한 시간을 마킹한다.
[0054] 다른 예로서, 카메라들의 경우, 이미지 캡처는, 이미지 캡처가 이미지를 노출하기 위해 시간을 요구하기 때문에, 시간에 있어 불연속 포인트들로 발생할 수 없다. 노출의 처음, 중간 또는 마지막에 해당하는 이미지의 타임스탬프를 결정하는 것이 바람직할 수 있다. 예를 들어, 상단에서 하단으로 노출하는 RS 카메라에 대해, 이미지의 상단부는 이미지의 하단부보다 시간에 있어 조기에 발생하며, 이미지는 단지 하나의 타임스탬프에만 연관될 수 있고, 이에 코-프로세서는 이미지의 상단부와 하단부 간의 시간차를 최소화하기 위해 노출 시간 중간에 타임스탬프를 생성할 수 있다. 코-프로세서는, 예를 들어, 카메라의 노출 시간을 알 수 있으며, 일단 이미지를 캡처하도록 트리거링되면 카메라의 노출 시간들의 평균에 기초하여 노출 시간 중간에 있게 타임스탬프를 생성할 수 있다.
[0055] 블록(406)에서, 방법(400)은, 코-프로세서에 의해, 정해진 센서로부터의 출력을 위한 데이터를 수신하는 단계를 포함한다. 따라서, 타임스탬프를 생성한 후, 코-프로세서는 센서로부터 데이터를 리트리브할 수 있다. 데이터는 컴퓨팅 디바이스 내의 임의의 수의 통신 버스에 따라 센서로부터 코-프로세서로 제공될 수 있다. 데이터 송신은 임의의 시간 기간(a time period)에 걸쳐, 예를 들어, 대략 10-30 ms에 걸쳐 발생할 수 있다. 따라서, 코-프로세서는 센서로부터 인터럽트에 대응하는 데이터를 요청할 수 있다. 센서 데이터에 대한 쿼리가 느려지고 시간이 걸릴 수 있으므로 타임스탬핑 및 데이터 리트리벌은 별도로 수행되며, 정확한 타임스탬프들이 데이터 프로세싱을 위해 요구될 수 있다. 그러므로, 인터럽트는 타임스탬프를 생성하는 플래그로서 사용되고, 이후 나중에 데이터 페치(data fetch)가 수행된다.
[0056] 블록(408)에서, 방법(400)은 정해진 센서에 의한 인터럽트의 타임스탬프를 정해진 센서로부터 수신된 데이터와 연관시키는 단계를 포함한다. 이러한 방식으로, 코-프로세서는, 코-프로세서에서의 데이터의 수신 시간을 데이터 수집 시간으로서 연관시키기보다는, 데이터가 센서에 의해 수집되었던 시간을 데이터와 연관시킬 수 있다. 센서로부터 코-프로세서로의 데이터 송신은 일정 시간을 소모하기 때문에, 센서에 의한 데이터 수집 시에 정확한 타임스탬프는 이전에 수신된 인터럽트의 타임스탬프에 기초하여 제공된다.
[0057] 블록(410)에서, 방법(400)은 코-프로세서에 의해 제공되는 데이터의 타임스탬프에 기초하여 복수의 센서들로부터 수신된 데이터를 데이터 구조들에 함께 연관시키는 단계를 포함한다. 예를 들어, 코-프로세서는 디바이스의 다수의 센서들로부터 데이터를 수신할 수 있고, 데이터는 코-프로세서에 의해 제공되는 인터럽트들에 대해 생성되는 타임스탬프들에 기초하여 구성될 수 있다. 센서들로부터 코-프로세서에 의해 수신되고 동일 시간의 인터럽트 타임스탬프와 연관된 데이터에 대해, 이러한 데이터는 하나의 데이터 구조로 함께 연관되거나 함께 포맷될 수 있다.
[0058] 데이터는 임의의 수의 타입들의 데이터 구조들로 포맷될 수 있다. 일 예에서, 데이터는 데이터의 타입, 데이터를 수집한 센서 및 데이터에 대한 타임스탬프를 표시하는 하나의 파일로 저장될 수 있다. 다른 예에서, 데이터는 이미지 프레임 포맷 데이터 구조로 포맷될 수 있고, 여기서 데이터는 정해진 타임스탬프에 대한 픽셀 값들로서 저장된다. 이미지 프레임 포맷은 카메라 인터페이스에 걸친 통상의 송신에 대해 "RGB" 또는 "YUV"의 트랜스포트 데이터타입(transport datatype)의 형태를 취할 수 있다.
[0059] 블록(412)에서, 방법(400)은, 코-프로세서에 의해, 데이터의 타임스탬프들에 기초한 시퀀스대로 데이터 구조들을 애플리케이션 프로세서에 제공하는 단계를 포함한다. 이후 애플리케이션 프로세서는 데이터가 수집되는 시퀀스대로 데이터를 수신할 수 있다.
[0060] 예들 내에서, 도 4의 방법(400)을 사용하여, 센서에 의한 데이터 수집의 정확한 타이밍은 모든 센서 데이터를 타임스탬핑/동기화하는데 전용되는 코-프로세서에 의해 제공되는 타임스탬프들에 기초하여 제공된다. 동기화된 센서 데이터에 기초하여 수행되는 기능은 애플리케이션 프로세서에 의해 수행될 수 있다. 모든 센서 데이터는, 모든 데이터가 하드웨어 레벨 시간 동기화를 제공하도록 마스터 클록에 따라 실행되는 동일한 코-프로세서에 의해 타임스탬핑되기 때문에 동일한 시간 클록에 기초하여 동기화된다. 또한, 타임스탬프는 인터럽트에 기초하여 생성되며, 이에 타임스탬프는, 코-프로세서에서의 데이터 수신의 시간이라기보다는, 센서에 의한 데이터 수집의 시간이다.
[0061] 일부 예들에서, 방법(400)은, 코-프로세서에 의해, 복수의 센서들로부터 수신된 데이터를 데이터 구조들에 함께 연관시키기 이전에, IMU로부터 수신된 데이터를 애플리케이션 프로세서에 제공하는 단계, 및 이후에 데이터 구조들을 애플리케이션 프로세서에 제공하는 단계를 더 포함할 수 있다. IMU는 다른 센서들보다 높은 주파수에서 데이터를 수집할 수 있고, IMU 데이터는 다른 데이터보다 애플리케이션 프로세서에 더 유용할 수 있다. 따라서, 코-프로세서는 IMU 데이터에 대한 타임스탬프를 생성하고, IMU 데이터를 리트리브하고, 동일한 타임스탬프와 연관된 다른 데이터에 앞서 IMU 데이터를 애플리케이션 프로세서에 즉시 제공할 수 있어, 애플리케이션 프로세서는 시간-감지 기능들을 수행하기 위한 데이터를 가질 수 있다
[0062] 컴퓨팅 디바이스는 애플리케이션 프로세서와 코-프로세서 사이의 통신을 위한 버스, 및 애플리케이션 프로세서와 코-프로세서 간의 통신보다 적은 레이턴시를 갖는 센서들과 코-프로세서 간의 통신을 위한 또 다른 버스를 포함 할 수 있다. 일부 경우들에서, 코-프로세서는 IMU로부터 데이터를 수신하고 이 데이터를 동일 버스를 통해 애플리케이션 프로세서에 제공하여 애플리케이션 프로세서에 데이터를 보다 빠르게 제공할 수 있다. 버스는 IMU 데이터에 대한 고속의 저-레이턴시 통신 채널로서의 SPI 버스일 수 있다. 더 많은 양의 데이터가 있는 데이터 구조들이 이후 어셈블리되고 예를 들어 I2C 버스를 통해 애플리케이션 프로세서에 제공될 수 있으며, 이는 더 큰 데이터 송신 대역폭들을 허용한다. 애플리케이션 프로세서는 예를 들어, IMU 데이터만을 신속하게 수신함으로써 유리할 수 있다.
[0063] 추가 예들에서, 디바이스는 다수의 카메라들을 포함할 수 있고, 코-프로세서는 제 1 카메라로부터의 데이터 출력을 요청하는 트리거 신호를 제 1 카메라에 제공할 수 있다. 트리거 신호는 제 1 카메라를 통해 디바이스의 다른 카메라들에 의해 수신될 수 있어, 이미지들의 캡처가 동시에 발생될 수 있다. 예들로서, 하나의 카메라는 RS 카메라일 수 있고 다른 카메라는 GS 카메라일 수 있다. RS 카메라의 노출 시간 대략 중간에 GS 카메라의 노출이 발생하도록, RS 카메라의 노출 시간 대략 중간에 트리거 신호가 GS 카메라에 제공될 수 있다.
[0064] 센서들은 또한 적색-녹색-청색(RGB) 카메라 및 적외선(IR) 센서를 포함할 수 있다. IR 센서는 RGB 카메라의 출력 주파수보다 낮은 주파수에서 데이터를 출력하도록 구성될 수 있다. 따라서, 센서들로부터의 데이터를 함께 연관시킬 때, IR 센서에 의해 출력되는 데이터는 코-프로세서에 의해 제공되는 각각의 데이터의 타임스탬프에 기초하여 RGB 카메라에 의해 출력되는 데이터내에서 인터리빙될 수 있다. 예로서, 이미지 데이터의 대략 4개의 프레임이 IR 센서로부터의 깊이 데이터의 매 하나의 프레임에 대해 카메라로부터 수신될 수 있다.
[0065] 추가 예들에서, 센서들은 제 1 주파수에서 데이터를 출력할 수 있고, 데이터는 제 1 주파수보다 작은 제 2 주파수에서 코-프로세서에 의해 데이터 구조들에 함께 연관될 수 있다. 예를 들어, 데이터는 데이터를 송신하는데 사용되는 카메라 프레임 레이트보다 더 빨리 센서들에 의해 출력될 수 있고, 이에 따라 코-프로세서는 하나의 데이터 구조내에 다수의 IMU 데이터 샘플들을 제공하기 위해 보다 느린 주파수로 데이터 구조 내에 가장 최근의 IMU 데이터 샘플들(120Hz에서 실행하도록 구성될 수 있음)을 제공할 수 있다.
[0066] 일부 예들에서, 센서들은 최근에 수집된 데이터를 저장하기 위해 버퍼를 포함할 수 있고, 센서들은 코-프로세서에 대한 출력을 위해 이전 데이터뿐만 아니라 수집된 현재 데이터를 제공할 수 있다. 이전 데이터는, 이전 데이터가 코-프로세서에 의해 이전에 이미 수신되었을 가능성이 있기 때문에, 에러 정정을 위해 수신된 리던던트(redundant) 데이터일 수 있다. 이를 테면, IMU는 리던던트 IMU 데이터의 실행(running) 버퍼를 가질 수 있고 그리고 단순히 IMU로부터 최신(latest) 데이터를 풀링(pulling)하는 대신, 코-프로세서는 IMU로부터 가장 최근 X개의 샘플들을 수신하기 위해 버퍼로부터의 모든 데이터를 수집할 수 있다. 데이터의 프레임이 데이터 송신 동안 항상 누락되거나 손상되는 경우, 데이터의 다음 프레임에서 수신되는, 코-프로세서에 의해 수신되는 리던던트 데이터는 누락 데이터를 채우는데 사용될 수 있다. 예로서, 컴퓨팅 디바이스가 초당 30도 회전했고, 데이터의 프레임이 누락되었다면, 컴퓨팅 디바이스의 정확한 위치 및 배향은 알 수 없을 수도 있다(즉, 위치/배향 추정은, 디바이스가 실제 위치된 장소로부터 지금은 어느 정도 떨어져 있을 수도 있다). 리던던트 데이터를 제공함으로써, IMU로부터의 손실된 또는 누락 데이터가 식별되어 디바이스의 임의의 위치/배향 추정들에 대한 정정들이 이루어질 수 있다.
[0067] 도 5a는 디바이스의 복수의 센서들로부터 수신된 데이터의 동기화를 개념적으로 예시하는 예시적 타이밍도이다. 도시된 바와 같이, 센서(502)는 코-프로세서(504)에 인터럽트를 제공할 수 있고, 이때 코-프로세서(504)는 타임스탬프를 생성할 것이다. 다수의 센서들이 동시에 또는 다양한 인터벌들로 코-프로세서(504)에 인터럽트들을 제공할 수 있고, 인터럽트의 수신시, 코-프로세서(504)는 연관된 타임스탬프를 생성할 것이다. 이후 코-프로세서(504)는 센서(502)로부터 인터럽트에 대응하는 데이터를 요청하고, 이후에 센서(502)로부터 데이터를 수신할 수 있다. 다른 예들에서, 인터럽트를 제공한 후 센서(502)가 데이터를 제공할 것이기 때문에, 코-프로세서(504)는 센서(502)로부터 데이터를 요청할 필요가 없을 수도 있다. 센서 데이터의 수신시, 코-프로세서는 인터럽트 타임스탬프들을 대응하는 센서 데이터에 매칭시킴으로써 각각의 데이터와 타임스탬프를 연관시킬 수 있고, 이후 타임스탬프마다의 센서 데이터를 타임스탬프마다의 단일 데이터 구조에 결합시킬 수 있다. 코-프로세서(504)는 이후 데이터 구조들을 시퀀스대로 애플리케이션 프로세서(506)에 제공할 수 있다.
[0068] 도 5b는 디바이스의 다수의 센서들로부터 수신된 데이터의 동기화를 개념적으로 예시하는 또 다른 예시적 타이밍도이다. 도 5b에서, 센서(502)는 코-프로세서(504)에 인터럽트를 제공할 수 있고, 이때 코-프로세서(504)는 타임스탬프를 생성할 것이다. 다수의 센서들이 동시에 또는 다양한 인터벌들로 코-프로세서(504)에 인터럽트들을 제공할 수 있고, 인터럽트의 수신시, 코-프로세서(504)는 연관된 타임스탬프를 생성할 것이다. 코-프로세서(504)는 이후 센서(502)로부터 인터럽트에 대응하는 데이터를 요청할 수 있고, 이후 센서(502)는 애플리케이션 프로세서(508)로 데이터를 포워딩할 수 있다. 코-프로세서(504)는 이후 타임스탬프 데이터를 애플리케이션 프로세서(508)로 전송할 수 있다. 데이터 수신시, 애플리케이션 프로세서(508)는 인터럽트 타임스탬프들을 대응하는 센서 데이터에 매칭시킴으로써 각각의 데이터와 타임스탬프를 연관시킬 수 있고, 이후 타임스탬프마다의 센서 데이터를 타임스탬프마다의 단일 데이터 구조에 결합시킬 수 있다.
[0069] 도 6은 디바이스의 다수의 센서들로부터 수신된 데이터의 동기화를 개념적으로 예시하는 또 다른 예시적 타이밍도이다. 도 6에서, 2개의 타임라인들은 IMU에 의해 출력되는 데이터의 타임라인 및 코-프로세서의 시간 축에 대응하는 것으로 도시된다. IMU는 IMU 데이터 시간 축을 따라 도시된 인터벌들로 데이터를 출력할 수 있다. 각각의 IMU 데이터 패킷은 IMU에 의해 코-프로세서에 제공되는 데이터 준비 인터럽트에 기초하여 코-프로세서 시간 축에 대하여 타임스탬핑된다.
[0070] RS 카메라 및 GS 카메라에 대한 예시적 RS 노출 및 GS 노출 시간들이 마찬가지로 코-프로세서에 따라 도시된다. RS 노출이 이미지의 상단에서 하단으로 발생하기 때문에, 노출은 GS 카메라의 노출보다 긴 시간 기간에 걸친다. RS 카메라는, 예를 들어, 30 Hz의 주파수에서 동작할 수 있다. GS 카메라 트리거 시간은, GS 카메라 및 RS 카메라 노출들 중간이 시간 정렬되도록, RS 카메라의 중간 스캔라인의 노출과 일치하게 설정된다. 예를 들어, RS 카메라는 이미지를 캡처하는데 30ms를 요구할 수 있고, GS 카메라는 단지 20ms만을 요구할 수 있고, 이에 따라, GS 트리거 시간은 GS 카메라 및 RS 카메라 노출 시간의 중간들이 정렬되도록 RS 노출 시간 이후 5ms로 설정될 수 있다. 이후 카메라에 대한 트리거 시간들은 다음과 같을 수 있다
GS 트리거 시간 = RS 노출 시작 시간 + ½ RS 노출 시간 - ½ 노출 시간
[0071] 카메라의 중간 스캔라인은, 예를 들어, 프레임에 대한 결정적 판독 및 노출 시간을 차감하고 카메라 판독의 타임스탬핑된 단부에서 결정되는, 코-프로세서에 의해 카메라 이미지들에 대해 생성된 타임스탬프이다.
[0072] 코-프로세서는 동기화 방식으로 카메라 및 IMU 양자 모두로부터의 데이터를 캡처하고, 이후 데이터를 애플리케이션 프로세서에 제공될 데이터 구조로 결합한다. 데이터 구조들은 이미지 프레임 포맷일 수 있다. 도 6은, 단일 프레임이 RS 카메라로부터의 이미지, GS 카메라로부터의 이미지, 및 IMU로부터 대략 4 내지 5개 출력들을 포함한다는 것을 예시한다. IMU가 카메라들보다 더 빨리 실행될 수 있기 때문에, 예를 들어, IMU 데이터가 보다 신속하게 축적될 수 있고 즉시 사용을 위해 애플리케이션 프로세서에 개별적으로 제공될 수 있다
[0073] 따라서, IMU 데이터는 패킷이 준비되자마자 기록될 수 있고 IMU의 프레임 레이트로 타임스탬핑될 수 있다(즉, IMU가 100 Hz 모드로 설정되면, IMU 패킷들은 100 Hz에서 판독될 수 있으며, IMU 패킷들에 대해 대응하는 코-프로세서 타임스탬프들은 100 Hz에서 발생할 수 있다). 이후 IMU 데이터는 IMU 데이터가 팩킹되는 이미지 프레임과 시간 정렬될 수 있다. 예들에서, 프레임의 제 1 IMU 데이터 패킷은 GS 카메라의 이미지 트리거 시간에 대응한다. 다른 예들에서, 아래의 표는 이미지들의 샘플 세트를 도시하며 IMU 데이터는, 카메라가 30Hz(표에서 33ms 델타 t로 근사화됨)에서 실행되고 IMU는 120Hz(표에서 8 ms 델타 t로 근사됨)에서 실행될 때 프레임들로 팩킹된다.
Figure 112016073102341-pct00001
[0074] RS 카메라 및 GS 카메라 양자 모두 그 각각의 노출의 시작시 코-프로세서 시간 축과 관련하여 타임스탬핑될 수 있다. RS 카메라 및 GS 카메라 노출 시간들 양자 모두 또한 노출의 시작, 중간 및 마지막을 컴퓨팅하도록 기록된다
[0075] 추가 예들에서, 이미지 프레들임은 이전 프레임들로부터의 데이터와 같은 추가 데이터를 마찬가지로 포함할 수 있다. 예로서, 프레임 2는 프레임 2에 대한 모든 데이터뿐만 아니라, 프레임 1 내의 모든 데이터를 포함할 수 있고, 프레임 2 내의 프레임 1로부터 재전송 데이터의 리던던시가 에러 정정 또는 데이터 검증을 위해 사용될 수 있다
[0076] 본원에 설명된 예들 내에서, 센서들로부터 출력되는 데이터는 데이터가 센서들에 의해 수집된 시간에 대응하는 데이터의 정확한 타임 스탬프와 연관될 수 있고, 다수의 센서들로부터의 데이터는 데이터 구조들로 동기화될 수 있다. 일부 예들에서, 이는, 카메라 이미지들로 디바이스의 모션을 표시하는 데이터(예를 들어, 자이로스코프에 의해 출력되는 데이터)의 동기화를 가능하게 한다. 디바이스의 모든 센서들로부터의 센서 데이터는, 예를 들어, 임의의 소프트웨어 타임스탬프 지연들 또는 부정확성들 없이, 센서들의 판독이 취해지고 그리고 모든 센서들로부터의 수집되었던 데이터가 매칭하도록 동시에 함께 데이터 구조에 정확하게 동기화될 수 있다.
[0077] 본원에 설명된 어레인지먼트들은 단지 예시 목적인 것임이 이해되어야 한다. 이로써, 당업자들은 다른 어레인지먼트들 및 다른 엘리먼트들(예를 들어, 머신들, 인터페이스들, 기능들, 순서들 및 기능들의 그룹핑들 등)이 대신 사용될 수 있고, 일부 엘리먼트들은 원하는 결과들에 따라 완전히 생략될 수 있다는 것을 인식할 것이다. 또한, 설명된 다수의 엘리먼트들은 별개의 또는 분포된 컴포넌트들로서 또는 임의의 적절한 결합 및 위치에서, 다른 컴포넌트들과 함께 구현될 수 있는 기능 엔티티들이며, 또는 독립 구조들로서 설명된 다른 구조적 엘리먼트들이 결합될 수도 있다.
[0078] 다양한 양상들 및 실시예들이 본원에 개시되었지만, 다른 양상들 및 실시예들이 당업자들에게 명백할 것이다. 본원에 개시된 다양한 양상들 및 실시예들은 예시를 목적으로 하며 제한되는 것으로 의도되지 않으며, 하기 청구항들에 부여되는 등가물들의 전체 범위와 함께, 실제 범위는 하기의 청구항들에 의해 표시된다. 본원에서 사용되는 용어는 단지 특정 실시예들만을 설명하기 위한 것이며 제한되는 것으로 의도되지 않음이 또한 이해될 것이다.

Claims (22)

  1. 디바이스에 의해 수행되는 데이터 동기화 방법으로서,
    상기 디바이스는 운영 시스템에 기초하여 기능하도록 구성된 애플리케이션 프로세서 및 상기 디바이스의 복수의 센서들로부터 데이터를 수신하도록 구성된 코-프로세서를 가지며,
    상기 방법은,
    상기 디바이스의 복수의 센서들 중 정해진(given) 센서에 의한 인터럽트(interrupt)를 결정하는 단계 ―상기 인터럽트는 상기 정해진 센서가 출력을 위한 데이터를 가짐을 표시함―;
    상기 코-프로세서에 의해, 상기 정해진 센서가 출력을 위한 데이터를 갖는 시간을 표시하는, 상기 정해진 센서에 의한 상기 인터럽트의 타임스탬프를 제공하는 단계;
    상기 코-프로세서에 의해, 상기 정해진 센서로부터의 출력을 위한 데이터를 수신하는 단계;
    상기 정해진 센서에 의한 상기 인터럽트의 타임스탬프를 상기 정해진 센서로부터 수신된 데이터와 연관시키는 단계;
    상기 코-프로세서에 의해 제공되는 데이터의 타임스탬프들에 기초하여, 상기 복수의 센서들로부터 수신된 데이터를 데이터 구조들에 함께 연관시키는 단계; 및
    상기 코-프로세서에 의해, 상기 데이터의 타임스탬프들에 기초한 시퀀스대로(in sequence) 상기 데이터 구조들을 상기 애플리케이션 프로세서에 제공하는 단계
    를 포함하는, 디바이스에 의해 수행되는 데이터 동기화 방법.
  2. 제 1 항에 있어서,
    상기 데이터 구조들은 이미지 프레임 포맷을 포함하는, 디바이스에 의해 수행되는 데이터 동기화 방법.
  3. 제 1 항에 있어서,
    상기 복수의 센서들 중 하나는 IMU(inertial measurement unit)를 포함하고,
    상기 방법은,
    상기 복수의 센서들로부터 수신된 데이터를 상기 데이터 구조들에 함께 연관시키기 이전에, 상기 코-프로세서에 의해, 상기 IMU로부터 수신된 데이터를 상기 애플리케이션 프로세서에 제공하는 단계; 및
    이후에, 상기 데이터 구조들을 상기 애플리케이션 프로세서에 제공하는 단계
    를 더 포함하는, 디바이스에 의해 수행되는 데이터 동기화 방법.
  4. 제 1 항에 있어서,
    상기 디바이스는 상기 애플리케이션 프로세서와 상기 코-프로세서 간의 통신을 위한 제 1 버스 및 상기 코-프로세서와 상기 복수의 센서들 간의 통신을 위한 제 2 버스를 포함하며, 상기 제 2 버스는 상기 제 1 버스를 통한 통신보다 적은 레이턴시를 갖는 통신을 위해 구성되며,
    상기 방법은,
    상기 코-프로세서에 의해, 상기 복수의 센서들의 IMU(inertial measurement unit)로부터 수신된 데이터를 상기 제 2 버스를 통해 상기 애플리케이션 프로세서에 제공하는 단계; 및
    상기 코-프로세서에 의해, 상기 데이터 구조들을 상기 제 1 버스를 통해 상기 애플리케이션 프로세서에 제공하는 단계
    를 더 포함하는, 디바이스에 의해 수행되는 데이터 동기화 방법.
  5. 제 1 항에 있어서,
    상기 정해진 센서로부터의 출력을 위한 데이터 이외에, 상기 정해진 센서의 버퍼로부터 상기 정해진 센서에 의한 출력을 위한 이전 데이터를 수신하는 단계를 더 포함하며, 상기 이전 데이터는 에러 정정을 위해 수신된 리던던트 데이터(redundant data)인, 디바이스에 의해 수행되는 데이터 동기화 방법.
  6. 제 5 항에 있어서,
    상기 정해진 센서는 제 1 주파수에서 데이터를 출력하도록 구성되며,
    상기 방법은,
    상기 코-프로세서에 의해, 상기 복수의 센서들로부터 수신된 데이터를 제 2 주파수에서 데이터 구조들에 함께 연관시키는 단계 ―상기 제 1 주파수는 상기 제 2 주파수보다 큼―; 및
    상기 데이터 구조들에 상기 정해진 센서의 버퍼로부터의 출력을 위해 수신된 이전 데이터를 제공하는 단계
    를 더 포함하는, 디바이스에 의해 수행되는 데이터 동기화 방법.
  7. 제 1 항에 있어서,
    상기 디바이스의 복수의 센서들은 다수의 카메라들을 포함하며,
    상기 방법은, 상기 코-프로세서에 의해, 상기 다수의 카메라들 중 제 1 카메라에 트리거 신호를 제공하는 단계를 더 포함하며, 상기 트리거 신호는 상기 제 1 카메라로부터의 데이터 출력을 요청하며, 상기 트리거 신호는 상기 제 1 카메라를 통해 상기 다수의 카메라들 중 다른 카메라들에 의해 수신되어, 이미지들의 캡처가 동시에 발생되게 하는, 디바이스에 의해 수행되는 데이터 동기화 방법.
  8. 제 7 항에 있어서,
    상기 제 1 카메라는 롤링 셔터(rolling shutter) 카메라이며 제 2 카메라는 글로벌 셔터(global shutter) 카메라이며,
    상기 방법은, 상기 제 1 카메라의 노출 시간 대략 중간에 상기 제 2 카메라의 노출이 발생되도록, 상기 제 1 카메라의 노출 시간 대략 중간에 상기 제 2 카메라에 상기 트리거 신호를 제공하는 단계를 더 포함하는, 디바이스에 의해 수행되는 데이터 동기화 방법.
  9. 제 1 항에 있어서,
    상기 복수의 센서들은 적색-녹색-청색(RGB) 카메라 및 적외선(IR) 센서를 포함하며, 상기 RGB 카메라는 제 1 주파수에서 데이터를 출력하도록 구성되며 상기 IR 센서는 상기 제 1 주파수보다 작은 제 2 주파수에서 데이터를 출력하도록 구성되며,
    상기 방법은, 상기 코-프로세서에 의해 제공되는 각각의 데이터의 타임스탬프들에 기초하여, 상기 RGB 카메라에 의해 출력되는 데이터 내에 상기 IR 센서에 의해 출력되는 데이터를 인터리빙하는 단계를 더 포함하는, 디바이스에 의해 수행되는 데이터 동기화 방법.
  10. 제 1 항에 있어서,
    상기 복수의 센서들은 IMU(inertial measurement unit), 글로벌 셔터 카메라, 롤링 셔터 카메라, 구조화된 광 프로젝터, 깊이 카메라(depth camera), 적외선 플래시, 기압계, 자력계 및 온도 센서를 포함하는, 디바이스에 의해 수행되는 데이터 동기화 방법.
  11. 제 1 항에 있어서,
    상기 복수의 센서들은 3개의 카메라들을 포함하고, 상기 제 1 카메라는 전면 카메라(front facing camera)이고, 제 2 카메라 및 제 3 카메라는 각각 후면 카메라들(rear facing cameras)이며, 상기 전면 카메라는 상기 디바이스의 제 1 시점(viewpoint)의 이미지들을 캡처하도록 구성되며, 상기 후면 카메라들은 상기 디바이스의, 상기 제 1 시점과 반대인 제 2 시점의 이미지들을 캡처하도록 구성되는, 디바이스에 의해 수행되는 데이터 동기화 방법.
  12. 제 1 항에 있어서,
    상기 정해진 센서는 상기 디바이스의 위치 및 네트워크 엔티티로부터 수신되는 위치의 타임스탬프를 표시하는 데이터를 출력하도록 구성된 GPS 센서를 포함하며,
    상기 방법은, 상기 네트워크 엔티티로부터 수신되는 상기 위치의 타임스탬프에 기초하여 상기 위치 및 상기 타임스탬프를 정해진 데이터 구조에 연관시키는 단계를 더 포함하는, 디바이스에 의해 수행되는 데이터 동기화 방법.
  13. 데이터 동기화 명령들을 저장하도록 구성된 컴퓨터-판독가능 메모리로서,
    상기 명령들은, 운영 시스템에 기초하여 기능하도록 구성된 애플리케이션 프로세서 및 디바이스의 복수의 센서들로부터 데이터를 수신하도록 구성된 코-프로세서를 갖는 디바이스에 의해 실행될 때, 상기 디바이스로 하여금,
    상기 디바이스의 복수의 센서들 중 정해진 센서에 의한 인터럽트를 결정하는 것 ―상기 인터럽트는 상기 정해진 센서가 출력을 위한 데이터를 가짐을 표시함―;
    상기 코-프로세서에 의해, 상기 정해진 센서가 출력을 위한 데이터를 갖는 시간을 표시하는, 상기 정해진 센서에 의한 상기 인터럽트의 타임스탬프를 제공하는 것;
    상기 코-프로세서에 의해, 상기 정해진 센서로부터의 출력을 위한 데이터를 수신하는 것;
    상기 정해진 센서에 의한 상기 인터럽트의 타임스탬프를 상기 정해진 센서로부터 수신된 데이터와 연관시키는 것;
    상기 코-프로세서에 의해 제공되는 데이터의 타임스탬프들에 기초하여, 상기 복수의 센서들로부터 수신된 데이터를 데이터 구조들에 함께 연관시키는 것; 및
    상기 코-프로세서에 의해, 상기 데이터의 타임스탬프들에 기초한 시퀀스대로 상기 데이터 구조들을 상기 애플리케이션 프로세서에 제공하는 것
    을 포함하는 기능들을 수행하게 하는, 데이터 동기화 명령들을 저장하도록 구성된 컴퓨터-판독가능 메모리.
  14. 제 13 항에 있어서,
    상기 복수의 센서들 중 하나는 IMU(inertial measurement unit)를 포함하며,
    상기 기능은,
    상기 복수의 센서들로부터 수신된 데이터를 상기 데이터 구조들에 함께 연관시키기 이전에, 상기 코-프로세서에 의해, 상기 IMU로부터 수신된 데이터를 상기 애플리케이션 프로세서에 제공하는 것; 및
    이후에, 상기 데이터 구조들을 상기 애플리케이션 프로세서에 제공하는 것
    을 더 포함하는, 데이터 동기화 명령들을 저장하도록 구성된 컴퓨터-판독가능 메모리.
  15. 제 13 항에 있어서,
    상기 기능들은,
    상기 정해진 센서로부터의 출력을 위한 데이터 이외에, 상기 정해진 센서의 버퍼로부터 상기 정해진 센서에 의한 출력을 위한 이전 데이터를 수신하는 것 ―상기 이전 데이터는 에러 정정을 위해 수신된 리던던트 데이터임―; 및
    상기 코-프로세서에 의해, 상기 정해진 센서의 버퍼로부터의 출력을 위한 수신된 이전 데이터를 상기 데이터 구조들에 함께 연관시키는 것
    을 더 포함하는, 데이터 동기화 명령들을 저장하도록 구성된 컴퓨터-판독가능 메모리.
  16. 제 13 항에 있어서,
    상기 디바이스의 복수의 센서들은 롤링 셔터 카메라 및 글로벌 셔터 카메라를 포함하며,
    상기 기능은, 상기 코-프로세서에 의해, 상기 롤링 셔터 카메라의 노출 시간 대략 중간에 상기 롤링 셔터 카메라에 트리거 신호를 제공하는 것을 더 포함하며, 상기 트리거 신호는 상기 롤링 셔터 카메라로부터의 데이터 출력을 요청하며,
    상기 트리거 신호는, 상기 롤링 셔터 카메라의 노출 시간 대략 중간에 상기 글로벌 셔터 카메라와 롤링 셔텨 카메라에 의한 이미지들의 캡처가 발생하도록, 상기 롤링 셔터 카메라를 통해 상기 글로벌 셔터 카메라에 의해 수신되는, 데이터 동기화 명령들을 저장하도록 구성된 컴퓨터-판독가능 메모리.
  17. 제 13 항에 있어서,
    상기 복수의 센서들은 적색-녹색-청색(RGB) 카메라 및 적외선(IR) 센서를 포함하며, 상기 RGB 카메라는 제 1 주파수에서 데이터를 출력하도록 구성되며 상기 IR 센서는 상기 제 1 주파수보다 작은 제 2 주파수에서 데이터를 출력하도록 구성되며,
    상기 기능들은, 상기 코-프로세서에 의해 제공되는 각각의 데이터의 타임스탬프들에 기초하여, 상기 RGB 카메라에 의해 출력되는 데이터 내에 상기 IR 센서에 의해 출력되는 데이터를 인터리빙하는 것을 더 포함하는, 데이터 동기화 명령들을 저장하도록 구성된 컴퓨터-판독가능 메모리.
  18. 데이터 동기화 디바이스로서,
    운영 시스템에 기초하여 기능하도록 구성된 애플리케이션 프로세서,
    복수의 센서들; 및
    상기 복수의 센서들로부터 데이터를 수신하도록 구성되는 코-프로세서
    를 포함하며,
    상기 코-프로세서는,
    상기 복수의 센서들 중 정해진 센서에 의한 인터럽트를 결정하는 것 ―상기 인터럽트는 상기 정해진 센서가 출력을 위한 데이터를 가짐을 표시함―;
    상기 정해진 센서가 출력을 위한 데이터를 갖는 시간을 표시하는, 상기 정해진 센서에 의한 상기 인터럽트의 타임스탬프를 제공하는 것;
    상기 정해진 센서로부터의 출력을 위한 데이터를 수신하는 것;
    상기 정해진 센서에 의한 상기 인터럽트의 타임스탬프를 상기 정해진 센서로부터 수신된 데이터와 연관시키는 것;
    상기 코-프로세서에 의해 제공되는 데이터의 타임스탬프들에 기초하여, 상기 복수의 센서들로부터 수신된 데이터를 데이터 구조들에 함께 연관시키는 것; 및
    상기 데이터의 타임스탬프들에 기초한 시퀀스대로 상기 데이터 구조들을 상기 애플리케이션 프로세서에 제공하는 것
    을 포함하는 기능들을 수행하도록 구성된, 데이터 동기화 디바이스.
  19. 제 18 항에 있어서,
    상기 코-프로세서는 상기 복수의 센서들로부터 수신된 데이터를 이미지 프레임 포맷을 갖는 상기 데이터 구조들에 함께 연관시키도록 구성되는, 데이터 동기화 디바이스.
  20. 제 18 항에 있어서,
    상기 복수의 센서들 중 하나는 IMU(inertial measurement unit)를 포함하고,
    상기 코-프로세서는 추가로,
    상기 복수의 센서들로부터 수신된 데이터를 상기 데이터 구조들에 함께 연관시키기 이전에, 상기 IMU로부터 수신된 데이터를 상기 애플리케이션 프로세서에 제공하고; 그리고
    이후에, 상기 데이터 구조들을 상기 애플리케이션 프로세서에 제공하도록 구성되는, 데이터 동기화 디바이스.
  21. 제 18 항에 있어서,
    상기 애플리케이션 프로세서와 상기 코-프로세서 간의 통신을 위한 제 1 버스; 및
    상기 코-프로세서와 상기 복수의 센서들 간의 통신을 위한 제 2 버스
    를 더 포함하며, 상기 제 2 버스는 상기 제 1 버스를 통한 통신보다 적은 레이턴시를 갖는 통신을 위해 구성되며, 그리고
    상기 코-프로세서는, 상기 복수의 센서들의 IMU(inertial measurement unit)로부터 수신된 데이터를 상기 제 2 버스를 통해 상기 애플리케이션 프로세서에 제공하고 그리고 상기 데이터 구조들을 상기 제 1 버스를 통해 상기 애플리케이션 프로세서에 제공하도록 구성되는, 데이터 동기화 디바이스.
  22. 디바이스에 의해 수행되는 데이터 동기화 방법으로서,
    상기 디바이스는 운영 시스템에 기초하여 기능하도록 구성된 애플리케이션 프로세서 및 상기 디바이스의 복수의 센서들로부터 데이터를 수신하도록 구성된 코-프로세서를 가지며,
    상기 방법은,
    상기 디바이스의 복수의 센서들 중 정해진 센서에 의한 인터럽트를 결정하는 단계 ―상기 인터럽트는 상기 정해진 센서가 출력을 위한 데이터를 가짐을 표시함―;
    상기 코-프로세서에 의해, 상기 정해진 센서가 출력을 위한 데이터를 갖는 시간을 표시하는, 상기 정해진 센서에 의한 상기 인터럽트의 타임스탬프를 제공하는 단계;
    상기 코-프로세서에 의해, 상기 타임스탬프를 상기 애플리케이션 프로세서에 제공하는 단계;
    상기 애플리케이션 프로세서에 의해, 상기 정해진 센서로부터의 출력을 위한 데이터를 수신하는 단계;
    상기 정해진 센서에 의한 상기 인터럽트의 타임스탬프를 상기 정해진 센서로부터 수신된 데이터와 연관시키는 단계; 및
    상기 코-프로세서에 의해 제공되는 데이터의 타임스탬프들에 기초하여, 상기 복수의 센서들로부터 수신된 데이터를 데이터 구조들에 함께 연관시키는 단계
    를 포함하는, 디바이스에 의해 수행되는 데이터 동기화 방법.
KR1020167020636A 2013-12-30 2014-12-29 디바이스의 다수의 센서들로부터 수신된 데이터를 동기화시키는 방법들 및 시스템들 KR101722068B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/143,038 2013-12-30
US14/143,038 US20150185054A1 (en) 2013-12-30 2013-12-30 Methods and Systems for Synchronizing Data Received from Multiple Sensors of a Device
PCT/US2014/072468 WO2015103093A1 (en) 2013-12-30 2014-12-29 Methods and systems for synchronizing data received from multiple sensors of a device

Publications (2)

Publication Number Publication Date
KR20160120721A KR20160120721A (ko) 2016-10-18
KR101722068B1 true KR101722068B1 (ko) 2017-03-31

Family

ID=53481340

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167020636A KR101722068B1 (ko) 2013-12-30 2014-12-29 디바이스의 다수의 센서들로부터 수신된 데이터를 동기화시키는 방법들 및 시스템들

Country Status (5)

Country Link
US (1) US20150185054A1 (ko)
EP (1) EP3090354B1 (ko)
KR (1) KR101722068B1 (ko)
CN (1) CN105940390B9 (ko)
WO (1) WO2015103093A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101877927B1 (ko) * 2018-02-01 2018-07-12 유니마이크로텍 주식회사 영상과 데이터를 동기화한 패킷 구조, 패킷 무선 송신장치 및 패킷 무선 수신장치
KR101948728B1 (ko) 2018-09-28 2019-02-15 네이버랩스 주식회사 데이터 수집 방법 및 시스템
KR102201893B1 (ko) * 2019-09-06 2021-01-12 엘아이지넥스원 주식회사 타임라인 파일 기반 실시간 다중 센서 데이터 통합저장/리시뮬레이션 시스템 및 방법
KR20210029476A (ko) * 2019-09-06 2021-03-16 엘아이지넥스원 주식회사 다중 센서 데이터 저장/리시뮬레이션 시스템 및 오류 예측 방법

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9664539B2 (en) * 2012-11-30 2017-05-30 Blackberry Limited Time stamping a sensor sample
WO2014208378A1 (ja) * 2013-06-28 2014-12-31 ソニー株式会社 情報処理装置、情報処理方法、プログラム、及び、情報処理システム
US10180340B2 (en) * 2014-10-09 2019-01-15 Invensense, Inc. System and method for MEMS sensor system synchronization
CN107025162A (zh) * 2016-02-01 2017-08-08 财团法人资讯工业策进会 调整数据收集频率的系统及方法
TWI619365B (zh) * 2016-02-01 2018-03-21 財團法人資訊工業策進會 調整資料收集頻率的系統及方法
KR102514730B1 (ko) * 2016-02-18 2023-03-29 삼성전자주식회사 데이터와 시간 정보를 연관시키는 방법 및 장치
US10719107B2 (en) 2016-03-29 2020-07-21 Intel Corporation Method and apparatus to maintain node power budget for systems that share a power supply
US9813783B2 (en) * 2016-04-01 2017-11-07 Intel Corporation Multi-camera dataset assembly and management with high precision timestamp requirements
JP6487386B2 (ja) * 2016-07-22 2019-03-20 ファナック株式会社 時刻精度を維持するためのサーバ、方法、プログラム、記録媒体、及びシステム
US10803499B1 (en) * 2016-07-27 2020-10-13 Intuit Inc. Using sensor data to determine employee tasks
WO2018103013A1 (en) * 2016-12-07 2018-06-14 SZ DJI Technology Co., Ltd. System and method for supporting synchronization in a movable platform
CN108279014B (zh) * 2017-01-05 2020-11-20 武汉四维图新科技有限公司 自动驾驶地图数据采集装置及系统、地图智能生产系统
US9894439B1 (en) * 2017-01-31 2018-02-13 Dell Products L.P. Adaptive microphone signal processing for a foldable computing device
US10554958B2 (en) 2017-03-13 2020-02-04 Microsoft Technology Licensing, Llc Systems and methods for interleaving multiple active camera frames
CA3068992A1 (en) * 2017-07-06 2019-01-10 James R. Selevan Devices and methods for synchronized signaling of the positions of moving pedestrians or vehicles
CN107395280A (zh) * 2017-08-23 2017-11-24 华南理工大学 适用于可见光通信的智能手机图像接收方法及其系统
CN107743054A (zh) * 2017-08-25 2018-02-27 杭州德泽机器人科技有限公司 一种多传感器同步对时系统
CN109711421A (zh) * 2017-10-25 2019-05-03 腾讯科技(深圳)有限公司 一种数据处理方法和装置
CN110196074B (zh) * 2018-02-24 2021-08-10 山东新北洋信息技术股份有限公司 快件测量系统和测量数据处理方法
GB2579760B (en) * 2018-03-29 2023-03-22 Displaylink Uk Ltd Position error measurement in an extended reality mobile display device
US10969760B2 (en) * 2018-04-12 2021-04-06 Faro Technologies, Inc. Coordinate measurement system with auxiliary axis
US11874101B2 (en) 2018-04-12 2024-01-16 Faro Technologies, Inc Modular servo cartridges for precision metrology
US10788841B2 (en) 2018-08-24 2020-09-29 Baidu Usa Llc Hardware centralized time synchronization hub for an autonomous driving vehicle
US11451688B2 (en) * 2018-09-26 2022-09-20 Zoox, Inc. Image scan line timestamping
CN110139041B (zh) * 2018-11-19 2021-09-28 魔门塔(苏州)科技有限公司 远程多传感信号同步采集方法
CN109729278B (zh) * 2018-11-19 2020-12-25 魔门塔(苏州)科技有限公司 可设定各通道传输速率的远程多传感器同步接收装置
CN109729277B (zh) * 2018-11-19 2021-10-01 魔门塔(苏州)科技有限公司 多传感器采集时间戳同步装置
CN111200698B (zh) * 2018-11-19 2022-05-13 魔门塔(苏州)科技有限公司 远程多传感器多通道接收方法
WO2020113358A1 (en) * 2018-12-03 2020-06-11 Beijing Didi Infinity Technology And Development Co., Ltd. Systems and methods for synchronizing vehicle sensors and devices
CN109725572A (zh) * 2018-12-25 2019-05-07 初速度(苏州)科技有限公司 一种多传感器精准时钟同步系统及方法
CN111600670B (zh) * 2019-02-20 2023-04-18 阿里巴巴集团控股有限公司 感应数据计算控制方法以及授时装置
CN110139066B (zh) * 2019-03-24 2021-02-02 初速度(苏州)科技有限公司 一种传感器数据的传输系统、方法和装置
CN109933418B (zh) * 2019-03-25 2022-10-25 联想(北京)有限公司 一种时间戳同步方法、电子设备及异构设备
US11227194B2 (en) * 2019-07-16 2022-01-18 Baidu Usa Llc Sensor synchronization offline lab validation system
CN110702099B (zh) * 2019-10-31 2022-05-27 中国科学院长春光学精密机械与物理研究所 高动态范围恒星探测成像方法及星敏感器
WO2021093586A1 (zh) 2019-11-11 2021-05-20 北京嘀嘀无限科技发展有限公司 一种数据同步系统和方法
EP3822924B1 (en) * 2019-11-14 2024-04-03 Rohde & Schwarz GmbH & Co. KG System and method for recording field data in a vehicle
US11662475B2 (en) * 2019-12-19 2023-05-30 U-Blox Ag Time stamping asynchronous sensor measurements
US11503405B2 (en) * 2020-06-03 2022-11-15 Bose Corporation Capturing and synchronizing data from multiple sensors
US11968602B2 (en) * 2020-06-30 2024-04-23 Stmicroelectronics S.R.L. Device, system and method for synchronizing of data from multiple sensors
EP4184712A4 (en) 2020-09-15 2024-01-10 Samsung Electronics Co Ltd ELECTRONIC DEVICE HAVING AN ANTENNA STRUCTURE
WO2022099482A1 (zh) * 2020-11-10 2022-05-19 深圳市大疆创新科技有限公司 曝光控制方法、装置、可移动平台及计算机可读存储介质
US11632823B1 (en) 2021-03-23 2023-04-18 Waymo Llc Estimating sensor timestamps by oversampling
IT202100008045A1 (it) * 2021-03-31 2022-10-01 St Microelectronics Srl Sensore, in particolare sensore mems, per la generazione di un segnale digitale di uscita, accoppiabile ad una pluralita' di sensori in un apparecchio elettronico
WO2022226978A1 (zh) * 2021-04-30 2022-11-03 深圳市大疆创新科技有限公司 数据处理方法及装置
KR20220161878A (ko) * 2021-05-31 2022-12-07 삼성전자주식회사 전자 장치 및 전자 장치의 센서 데이터 처리 방법
CN117203616A (zh) 2021-05-31 2023-12-08 三星电子株式会社 电子设备及电子设备的传感器数据处理方法
CN113489880A (zh) * 2021-07-29 2021-10-08 Oppo广东移动通信有限公司 电子设备、信息同步方法和计算机可读存储介质
KR20230099898A (ko) * 2021-12-28 2023-07-05 삼성전자주식회사 측위를 위한 센싱 시점을 독립적으로 관리 및 이용하는 방법 및 전자 장치
TWI817345B (zh) * 2022-01-28 2023-10-01 滿拓科技股份有限公司 影格對齊方法及系統

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080309774A1 (en) 2007-06-15 2008-12-18 Microsoft Corporation Multiple sensor input data synthesis
US20120163520A1 (en) 2010-12-27 2012-06-28 Microsoft Corporation Synchronizing sensor data across devices
US20130176453A1 (en) 2012-01-06 2013-07-11 Nokia Corporation Methods, apparatuses and computer program products for facilitating image registration based in part on using sensor data
US20130286242A1 (en) 2010-09-30 2013-10-31 Apple Inc. Flash synchronization using image sensor interface timing signal

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5600576A (en) * 1994-03-11 1997-02-04 Northrop Grumman Corporation Time stress measurement device
US6640222B1 (en) * 2000-09-29 2003-10-28 Motorola, Inc. Method for selecting an information unit among conflicting information units based on context fields by a user device
CN100502284C (zh) * 2004-04-21 2009-06-17 华为技术有限公司 通信系统中数据同步方法及其装置
US8887190B2 (en) * 2009-05-28 2014-11-11 Harris Corporation Multimedia system generating audio trigger markers synchronized with video source data and related methods
US8744807B2 (en) * 2009-08-10 2014-06-03 Siemens Aktiengesellschaft Scalable and extensible framework for storing and analyzing sensor data
CA2771286C (en) * 2009-08-11 2016-08-30 Certusview Technologies, Llc Locating equipment communicatively coupled to or equipped with a mobile/portable device
US8762091B1 (en) * 2010-06-08 2014-06-24 Thales Visionix, Inc. Inertial measurement system
US9075545B2 (en) * 2012-08-01 2015-07-07 Hewlett-Packard Development Company, L.P. Synchronizing sensor data using timestamps and signal interpolation
US9186909B1 (en) * 2014-09-26 2015-11-17 Intel Corporation Method and system of lens shading color correction using block matching

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080309774A1 (en) 2007-06-15 2008-12-18 Microsoft Corporation Multiple sensor input data synthesis
US20130286242A1 (en) 2010-09-30 2013-10-31 Apple Inc. Flash synchronization using image sensor interface timing signal
US20120163520A1 (en) 2010-12-27 2012-06-28 Microsoft Corporation Synchronizing sensor data across devices
US20130176453A1 (en) 2012-01-06 2013-07-11 Nokia Corporation Methods, apparatuses and computer program products for facilitating image registration based in part on using sensor data

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101877927B1 (ko) * 2018-02-01 2018-07-12 유니마이크로텍 주식회사 영상과 데이터를 동기화한 패킷 구조, 패킷 무선 송신장치 및 패킷 무선 수신장치
KR101948728B1 (ko) 2018-09-28 2019-02-15 네이버랩스 주식회사 데이터 수집 방법 및 시스템
US11747477B2 (en) 2018-09-28 2023-09-05 Naver Labs Corporation Data collecting method and system
KR102201893B1 (ko) * 2019-09-06 2021-01-12 엘아이지넥스원 주식회사 타임라인 파일 기반 실시간 다중 센서 데이터 통합저장/리시뮬레이션 시스템 및 방법
KR20210029476A (ko) * 2019-09-06 2021-03-16 엘아이지넥스원 주식회사 다중 센서 데이터 저장/리시뮬레이션 시스템 및 오류 예측 방법
KR102237057B1 (ko) 2019-09-06 2021-04-07 엘아이지넥스원 주식회사 다중 센서 데이터 저장/리시뮬레이션 시스템 및 오류 예측 방법

Also Published As

Publication number Publication date
CN105940390B9 (zh) 2019-03-26
EP3090354A1 (en) 2016-11-09
CN105940390A (zh) 2016-09-14
US20150185054A1 (en) 2015-07-02
EP3090354B1 (en) 2018-09-19
CN105940390B (zh) 2019-02-01
EP3090354A4 (en) 2017-10-11
KR20160120721A (ko) 2016-10-18
WO2015103093A1 (en) 2015-07-09

Similar Documents

Publication Publication Date Title
KR101722068B1 (ko) 디바이스의 다수의 센서들로부터 수신된 데이터를 동기화시키는 방법들 및 시스템들
US9596443B2 (en) Methods and systems for providing sensor data and image data to an application processor in a digital image format
US9485366B2 (en) Methods and systems for communicating sensor data on a mobile device
US9631956B2 (en) Methods and systems for calibrating sensors of a computing device
US9303999B2 (en) Methods and systems for determining estimation of motion of a device
US20150237479A1 (en) Methods and Systems for Cross-Validating Sensor Data Acquired Using Sensors of a Mobile Device
US9752892B2 (en) Methods and systems for acquiring sensor data on a device using multiple acquisition modes
AU2015275198B2 (en) Methods and systems for calibrating sensors using recognized objects
US9424619B2 (en) Methods and systems for detecting frame tears
US9445015B2 (en) Methods and systems for adjusting sensor viewpoint to a virtual viewpoint
CN115729743A (zh) 感知系统测试数据回灌装置、方法、可读存储介质
CN110999274A (zh) 对多个传感器设备中的图像捕获进行同步
WO2019176150A1 (ja) 位置推定装置、位置推定方法及びプログラム
US11694409B1 (en) Augmented reality using a split architecture

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200313

Year of fee payment: 4