KR20160145159A - 위치 제공자 프로세스들을 실행 - Google Patents

위치 제공자 프로세스들을 실행 Download PDF

Info

Publication number
KR20160145159A
KR20160145159A KR1020167031998A KR20167031998A KR20160145159A KR 20160145159 A KR20160145159 A KR 20160145159A KR 1020167031998 A KR1020167031998 A KR 1020167031998A KR 20167031998 A KR20167031998 A KR 20167031998A KR 20160145159 A KR20160145159 A KR 20160145159A
Authority
KR
South Korea
Prior art keywords
computing device
estimated
data
location
processor
Prior art date
Application number
KR1020167031998A
Other languages
English (en)
Other versions
KR101837709B1 (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 KR20160145159A publication Critical patent/KR20160145159A/ko
Application granted granted Critical
Publication of KR101837709B1 publication Critical patent/KR101837709B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/025Services making use of location information using location based information parameters
    • H04W4/027Services making use of location information using location based information parameters using movement velocity, acceleration information
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S19/00Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
    • G01S19/01Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
    • G01S19/13Receivers
    • G01S19/34Power consumption
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S5/00Position-fixing by co-ordinating two or more direction or position line determinations; Position-fixing by co-ordinating two or more distance determinations
    • G01S5/01Determining conditions which influence positioning, e.g. radio environment, state of motion or energy consumption
    • G01S5/019Energy consumption
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S5/00Position-fixing by co-ordinating two or more direction or position line determinations; Position-fixing by co-ordinating two or more distance determinations
    • G01S5/02Position-fixing by co-ordinating two or more direction or position line determinations; Position-fixing by co-ordinating two or more distance determinations using radio waves
    • G01S5/0257Hybrid positioning
    • G01S5/0263Hybrid positioning by combining or switching between positions derived from two or more separate positioning systems
    • G01S5/0264Hybrid positioning by combining or switching between positions derived from two or more separate positioning systems at least one of the systems being a non-radio wave positioning system
    • H04W4/028
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/029Location-based management or tracking services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W52/00Power management, e.g. TPC [Transmission Power Control], power saving or power classes
    • H04W52/02Power saving arrangements
    • H04W52/0209Power saving arrangements in terminal devices
    • H04W52/0261Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W52/00Power management, e.g. TPC [Transmission Power Control], power saving or power classes
    • H04W52/02Power saving arrangements
    • H04W52/0209Power saving arrangements in terminal devices
    • H04W52/0261Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level
    • H04W52/0274Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level by switching on or off the equipment or parts thereof
    • H04W52/0277Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level by switching on or off the equipment or parts thereof according to available power supply, e.g. switching off when a low battery condition is detected
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W64/00Locating users or terminals or network equipment for network management purposes, e.g. mobility management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W64/00Locating users or terminals or network equipment for network management purposes, e.g. mobility management
    • H04W64/006Locating users or terminals or network equipment for network management purposes, e.g. mobility management with additional information processing, e.g. for direction or speed determination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W52/00Power management, e.g. TPC [Transmission Power Control], power saving or power classes
    • H04W52/02Power saving arrangements
    • H04W52/0209Power saving arrangements in terminal devices
    • H04W52/0261Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level
    • H04W52/0264Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level by selectively disabling software applications
    • Y02B60/50
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Telephone Function (AREA)
  • Position Fixing By Use Of Radio Waves (AREA)

Abstract

예시들은 컴퓨팅 디바이스의 전력 소비를 줄이면서 컴퓨팅 디바이스의 인접 위치를 정확하게 식별하기 위해 위치 제공자(LP) 프로세스들을 사용하는 방법들, 컴퓨팅 디바이스들, 및 시스템들을 기술한다. 예시적인 방법은 시구간 동안 컴퓨팅 디바이스의 위치들을 나타내는 출력들을 결정하기 위해, 시구간의 적어도 일부 동안 컴퓨팅 디바이스 상에서 제1 LP 프로세스 및 제2 LP 프로세스 모두를 동시에 실행하는 것을 포함할 수 있다. 더욱이, 방법은 컴퓨팅 디바이스의 예상된 위치들을 표시하는 컴퓨팅 디바이스의 모션 모델을 결정하는 것을 포함할 수 있다. 더욱이, 방법은 시구간 동안 모션 모델과 출력들을 비교하는 것을 포함할 수 있다. 추가적으로, 방법은 상기 비교에 기초하여, LP 프로세스들 중 하나를 디스에이블 하는 것을 포함할 수 있다.

Description

위치 제공자 프로세스들을 실행{RUNNING LOCATION PROVIDER PROCESSES}
[관련 출원]
본 출원은 2014년 5월 16일자로 출원된 발명의 명칭이 "위치들을 표시하는 출력들을 결정하기 위한 하드웨어 및 소프트웨어 프로세스들을 실행"인 미국 가출원 제61/994,546호의 우선권을 주장하며, 상기 출원들의 전체 내용은 본 명세서에 참조로서 포함된다.
본 명세서에서 달리 명시되지 않는 한, 본 섹션에 기술된 내용들은 본 명세서의 청구항들에 대한 선행 기술이 아니며, 본 섹션에 포함됨으로써 선행 기술로 인정되지 않는다.
컴퓨팅 디바이스의 인접 위치(proximate location)는 서로 다른 여러 프로세스를 사용함으로써 결정될 수 있다. 더욱이, 컴퓨팅 디바이스의 인접 위치를 결정하기 위해, 다양한 종류의 데이터들, 예컨데, 글로벌 포지셔닝 시스템(GPS) 데이터 및/또는 무선 액세스 포인트(예컨데, 셀룰러 기지국 또는 802.11 액세스 포인트)와 관련된 데이터가 획득될 수 있다. 예를 들어, 컴퓨팅 디바이스는 GPS 신호를 수신할 수 있고, 이에 응답하여 지구 표면 상에서의 상기 컴퓨팅 디바이스의 위치(예를 들어, 절대적 위치)를 결정할 수 있다. 다른 예시에서, 컴퓨팅 디바이스는 셀룰러 기지국 및/또는 802.11 액세스 포인트로부터 신호를 수신할 수 있다. 수신된 신호에 기초하여, 컴퓨팅 디바이스는 컴퓨팅 디바이스의 인접 위치를 계산할 수 있다.
일부 예시들에서, 컴퓨팅 디바이스의 인접 위치는 다수의 서로 다른 네트워크들로부터 결정될 수 있다. 모바일 컴퓨팅 디바이스의 인접 위치를 결정하기 위해, 많은 위치-기반 서비스들이 구현될 수 있다.
본 명세서의 실시예들은 컴퓨팅 디바이스의 추정된 위치 (estimated location)를 결정하기 위해 하나 이상의 위치 제공자(LP) 프로세스를 실행하는 예시적인 방법들, 컴퓨팅 디바이스들, 및 시스템들을 제공한다. 각각의 LP 프로세스는 각각의 프로세서를 사용하여 특정한 시구간(time period)의 적어도 일부 동안 컴퓨팅 디바이스 상에서 실행될 수 있다. 예를 들면, 제1 위치 제공자(LP) 프로세스는 어플리케이션 제1 프로세서 상에서 실행될 수 있고, 제2 LP 프로세스는 제2 프로세서 상에서 실행될 수 있다. 각각의 LP 프로세스에 의해 소비되는 전력을 측정함으로써, 가능하게는 컴퓨팅 디바이스의 전력을 절약하기 위해, 계속되는 시구간들 동안 LP 프로세스들 중 하나가 사용될 수 있다.
일 예시에서, 방법이 제공된다. 상기 방법은 컴퓨팅 디바이스 상에서, 제1 시구간의 적어도 일부 동안 제1 위치 제공자(LP) 프로세스 및 제2 LP 프로세스를 실행하는 단계를 포함하고, 상기 제1 LP 프로세스를 실행하는 것은 제1 프로세서를 사용하는 것을 포함하고, 상기 제2 LP 프로세스를 실행하는 것은 제2 프로세서를 실행하는 것을 포함한다. 더욱이, 상기 방법은 상기 제1 LP 프로세스로부터 상기 컴퓨팅 디바이스의 제1 추정된 위치를 획득하는 단계를 포함한다. 더욱이, 상기 방법은 상기 제2 LP 프로세스로부터 상기 컴퓨팅 디바이스의 제2 추정된 위치를 획득하는 단계를 포함한다. 추가적으로, 상기 방법은 상기 제1 LP 프로세스로부터 제1 전력 소비를 결정하는 단계를 포함한다. 더욱이, 상기 방법은 상기 제2 LP 프로세스로부터 제2 전력 소비를 결정하는 단계를 포함한다. 상기 제1 전력 소비와 상기 제2 전력 소비에 적어도 기초하여, 상기 방법은 제2 시구간의 적어도 일부 동안 실행하기 위해 상기 제1 LP 프로세스와 상기 제2 LP 프로세스 중 하나를 결정하는 단계를 포함한다.
다른 예시에서, 시스템이 제공된다. 상기 시스템은 하나 이상의 프로세서들을 포함하며, 상기 하나 이상의 프로세서들은 제1 프로세서 및 제2 프로세서를 포함한다. 더욱이, 상기 시스템은 동작들을 수행하기 위해 상기 하나 이상의 프로세서들에 의해 실행가능한 명령어들을 포함하는 데이터 저장소를 포함한다. 상기 동작들은 제1 시구간의 적어도 일부 동안 제1 위치 제공자(LP) 프로세스 및 제2 LP 프로세스를 실행하는 동작을 포함하고, 상기 제1 LP 프로세스를 실행하는 것은 상기 제1 프로세서를 사용하는 것을 포함하고, 상기 제2 LP 프로세스를 실행하는 것은 상기 제2 프로세서를 사용하는 것을 포함한다. 더욱이, 상기 동작들은 상기 제1 LP 프로세스로부터 상기 시스템의 제1 추정된 위치를 획득하는 동작을 포함한다. 더욱이, 상기 동작들은 상기 제2 LP 프로세스로부터 상기 시스템의 제2 추정된 위치를 획득하는 동작을 포함한다. 추가적으로, 상기 동작들은 상기 제1 LP 프로세스로부터 제1 전력 소비를 결정하는 동작을 포함한다. 더욱이, 상기 동작들은 상기 제2 LP 프로세스로부터 제2 전력 소비를 결정하는 동작을 포함한다. 상기 제1 전력 소비와 상기 제2 전력 소비에 적어도 기초하여, 상기 동작들은 제2 시구간의 적어도 일부 동안 실행하기 위해 상기 제1 LP 프로세스와 상기 제2 LP 프로세스 중 하나를 결정하는 동작을 포함한다.
또 다른 예시에서, 방법이 제공된다. 상기 방법은 컴퓨팅 디바이스 상에서, 상기 컴퓨팅 디바이스의 제1 추정된 위치들을 획득하기 위해, 제1 위치 제공자(LP) 프로세스와 제2 LP 프로세스 중 하나를 실행하는 단계를 포함하고, 상기 제1 LP 프로세스를 실행하는 것은 제1 프로세서를 사용하는 것을 포함하고, 상기 제2 프로세스를 실행하는 것은 제2 프로세서를 사용하는 것을 포함한다. 더욱이, 상기 방법은 상기 컴퓨팅 디바이스의 예상된 위치들을 제공하는 상기 컴퓨팅 디바이스의 모션 모델을 결정하는 단계를 포함한다. 더욱이, 상기 방법은 상기 모션 모델로부터의 상기 예상된 위치들과 상기 제1 추정된 위치들을 비교하는 단계를 포함한다. 상기 비교에 적어도 기초하여, 상기 방법은 상기 제1 LP 프로세스와 상기 제2 LP 프로세스 중 어느 것이 상기 예상된 위치들에 가까운 제2 추정된 위치들을 표시하는지 재평가(reevaluate)하기 위해, 시구간의 적어도 일부 동안 상기 제1 LP 프로세스 및 상기 제2 LP 프로세스 모두로 하여금 상기 컴퓨팅 디바이스 상에서 동시에 실행되도록 하는 단계를 포함한다.
또 다른 예시에서, 시스템이 제공된다. 상기 시스템은 컴퓨팅 디바이스 상에서, 제1 시구간의 적어도 일부 동안 제1 위치 제공자(LP) 프로세스 및 제2 LP 프로세스를 실행하는 수단들을 포함하고, 상기 제1 LP 프로세스를 실행하는 것은 제1 프로세서를 사용하는 것을 포함하고, 상기 제2 LP 프로세스를 실행하는 것은 제2 프로세서를 실행하는 것을 포함한다. 더욱이 상기 시스템은 상기 제1 LP 프로세스로부터 상기 컴퓨팅 디바이스의 제1 추정된 위치를 획득하는 수단들을 포함한다. 더욱이, 상기 시스템은 상기 제2 LP 프로세스로부터 상기 컴퓨팅 디바이스의 제2 추정된 위치를 획득하는 수단들을 포함한다. 추가적으로, 상기 시스템은 상기 제1 LP 프로세스로부터 제1 전력 소비를 결정하는 수단들을 포함한다. 더욱이, 상기 시스템은 상기 제2 LP 프로세스로부터 제2 전력 소비를 결정하는 수단들을 포함한다. 상기 제1 전력 소비와 상기 제2 전력 소비에 적어도 기초하여, 상기 시스템은 제2 시구간의 적어도 일부 동안 실행하기 위해 상기 제1 LP 프로세스와 상기 제2 LP 프로세스 중 하나를 선택하는 수단들을 포함한다.
첨부 도면들을 참조하여 다음의 상세한 설명을 읽음으로써 이들뿐만 아니라 다른 양태들, 장점들, 및 대안들이 당해 기술 분야의 통상의 기술자에게 명백해질 것이다.
도 1은 예시적인 구현예에 따른 시스템을 도시한다.
도 2는 예시적인 구현예에 따른 컴퓨팅 디바이스를 도시한다.
도 3은 예시적인 구현예에 따른 다른 컴퓨팅 디바이스를 도시한다.
도 4는 예시적인 구현예에 따른 흐름도를 도시한다.
도 5는 예시적인 구현예에 따른 모션 모델을 도시한다.
도 6은 예시적인 구현예에 따른 프로세스 차트를 도시한다.
도 7은 예시적인 구현예에 따른 다른 흐름도를 도시한다.
도 8A는 예시적인 구현예에 따른 데이터를 도시한다.
도 8B는 예시적인 구현예에 따른 임계치 거리를 도시한다.
도 9는 예시적인 구현예에 따른 다른 프로세스 차트를 도시한다.
도 10은 예시적인 구현예에 따른 다른 시스템을 도시한다.
다음의 상세한 설명은 첨부 도면들을 참조하여, 개시된 시스템들 및 방법들의 다양한 구성들 및 동작들을 기술한다. 컨텍스트(context)가 달리 지정하지 않는 한, 구성들에서, 유사한 기호는 유사한 컴포넌트들을 식별한다. 본 명세서에 기술된 도시된 방법, 디바이스들, 및/또는 시스템 실시예들로 제한되지 않는다. 개시된 방법들, 디바이스들, 및/또는 시스템들의 특정 양태들은, 본 명세서에서 고려된 광범위한 서로 다른 구성으로 배열되고 결합될 수 있음이 쉽게 이해될 수 있다.
Ⅰ. 개요
컴퓨팅 디바이스의 추정된 위치를 결정하기 위해, 다양한 프로세스들이 컴퓨팅 디바이스 상에서 실행될 수 있다. 예를 들면, 스마트폰이 상기 스마트폰의 인접 위치를 나타내는 파란색 점을 표시하는 지도를 디스플레이 하는 시나리오를 고려해보자. 일부 경우들에서, 스마트폰은 지도 상의 파란색 점을 표시하기 위해 하나 이상의 신호들을 획득할 수 있다. 예를 들면, 스마트폰은 글로벌 포지셔닝 시스템(GPS) 신호, Wi-Fi 신호, 및/또는 센서 신호와 같은 신호들을 획득할 수 있다. 일부 경우들에서, 이러한 신호들은, 스마트폰 상에서 하나 이상의 위치 제공자(LP) 프로세스들을 실행함으로써, 결합되거나 융합될 수 있다. 이와 같이, 파란색 점의 위치는 하나 이상의 LP 프로세스들의 실행의 결과일 수 있다.
그러나, LP 프로세스를 사용하기 위한 보다 덜 이상적인 조건들에서 및/또는 보다 덜 이상적인 LP 프로세스들에서, 지도에서 파란색 점의 정확성은 변할 수 있다. 특히, 정확성들을 변화시키는 것은 지도 내 파란색 점의 추정된 위치들 사이의 점프(jumpiness)를 초래할 수 있다. 이와 같이, 파란색 점이 지도 상에서 점프할 수 있는바, 이는 컴퓨팅 디바이스의 인접 위치를 확인하는 것을 어렵게 한다. 이러한 경우들에서, 스마트폰의 인접 위치들을 추정하는 각각의 LP 프로세스의 정확성을 평가하기 위해, 다수의 LP 프로세스들이 스마트폰 상에서 실행될 수 있다.
일부 실시예들에서, 다수의 LP 프로세스들을 실행하는 것은 도전적일 수 있다. 예를 들면, 하나의 LP 프로세스는 어플리케이션 프로세서를 웨이크 업(wake up)하거나 실행하는 것을 수반할 수 있다. 일부 경우들에서, 어플리케이션 프로세서를 실행하는 것은 스마트폰 내 다른 프로세서들을 실행하는 것 보다 더 많은 전력을 소비할 수 있다. 예를 들면, 어플리케이션 프로세서를 실행하는 것은 어플리케이션 프로세서를 실행하는 것과 연관된 과도한 프로세싱으로 인해 더 많은 배터리 전력을 소비할 수 있다. 이와 같이, 스마트폰의 인접 위치를 식별하기 위해 어플리케이션 프로세서 상의 LP 프로세스를 실행하는 것은 스마트폰으로 하여금 빠른 속도로 전력을 소비하도록 할 수 있다.
그러므로, 본 명세서의 실시예들은 컴퓨팅 디바이스의 인접 위치를 정확하게 식별하기 위해 다수의 LP 프로세스들을 실행하는 예시적인 방법들, 컴퓨팅 디바이스들, 및 시스템들을 제공하며, 컴퓨팅 디바이스의 전력 소비를 줄인다. 예를 들면, 상기 시나리오를 고려하면, 지도 상의 파란색 점을 도시하기 위해, 제1 LP 프로세스가 스마트폰의 제1 프로세서 상에서 실행될 수 있다. 더욱이, 파란색 점의 위치에 근접한 위치들을 추정하기 위해, 제2 LP 프로세스가 스마트폰의 제2 프로세서 상에서 실행될 수 있다. 그러므로, 다른 가능한 것들 중에서도 특히, 제1 프로세서를 실행하는 것과 관련된 전력 소비를 줄이기 위해, 스마트폰은 제1 LP 프로세스를 디스에이블(disable)하고, 제2 LP 프로세스를 계속할 수 있다.
Ⅱ. 소개(Introduction)
도 1은 예시적인 구현예에 따른 시스템을 도시한다. 예시적인 통신 시스템(100)은 본 명세서에 기술된 방법들 중 하나 이상을 수행할 수 있다. 본 명세서에서 "컴퓨팅 디바이스"는, 예컨데, 서버(104)를 가진 통신 시스템(100) 내 클라이언트 디바이스(102)와 같은 그러한 본 명세서의 "클라이언트 디바이스"와 상호 교환적으로 지칭될 수 있음이 주목되어야 한다.
클라이언트 디바이스(102)는 예컨데, 다른 컴퓨팅 디바이스들 중에서도 특히, 랩탑 컴퓨터, 웨어러블 컴퓨팅 디바이스(wearable computing device), 헤드-마운트에이블 컴퓨팅 디바이스(head-mountable computing device), 모바일 텔레폰, 및/또는 태블릿 컴퓨팅 디바이스와 같은 그러한 클라이언트 디바이스 및/또는 전송 디바이스의 임의의 타입일 수 있다. 클라이언트 디바이스(102)는 본 명세서에 기술된 방법 및 동작들에 따라, 데이터(106)를 서버(104)로 전송 및/또는 서버(104)로부터 데이터(106)를 수신하도록 구성될 수 있다. 예를 들면, 도 1에서, 클라이언트 디바이스(102)는 하나 이상의 유선 및/또는 무선 인터페이스들을 통해, 서버(104)와 통신할 수 있다. 클라이언트 디바이스(102) 및 서버(104)는 네트워크 내에서 통신할 수 있다. 대안적으로, 클라이언트 디바이스(102) 및 서버(104)는 각각의 네트워크 내에서 각각 존재할 수 있다.
클라이언트 디바이스(102)는 사용자 인터페이스, 통신 인터페이스, 프로세서, 및 비-일시적인 컴퓨터-판독가능한 매체들을 포함하는 데이터 저장소를 포함할 수 있다. 또한, 데이터 저장소는 데이터를 서버(104)로 전송하거나, 서버(104)로부터 데이터를 수신하는 것과 관련된 하나 이상의 동작들을 수행하는 프로세서에 의해 실행될 수 있는 명령어들을 포함할 수 있다. 클라이언트 디바이스(102)의 사용자 인터페이스는 스피커, 하나 이상의 디스플레이들, 및/또는 출력들을 전달하기 위한 임의의 다른 엘리먼트들 뿐만 아니라, 버튼들, 터치스크린, 마이크로폰, 및/또는 입력들을 수신하기 위한 임의의 다른 엘리먼트들을 포함할 수 있다.
서버(104)는 본 명세서에 기술된 방법들 및 동작들을 수행하기 위해 준비된 임의의 엔티티(entity) 또는 컴퓨팅 디바이스일 수 있다. 더욱이, 서버(104)는 데이터(108)를 클라이언트 디바이스(102)로 전송 및/또는 클라이언트 디바이스(102)로부터 데이터(106)를 수신하도록 구성될 수 있다. 서버(104)는 위치 모듈(110)을 포함할 수 있고, 상기 위치 모듈(110)은 클라이언트 디바이스(102)와 관련된 하나 이상의 추정된 위치들(예를 들어, 현재 및 역대 인접 위치들)을 결정하기 위해, 클라이언트 디바이스(102)로부터 수신된 데이터(106)를 프로세스하도록 구성될 수 있다.
서버(104)에 의해 클라이언트 디바이스(102)로부터 수신된 데이터(106)는 다양한 형태들을 취할 수 있다. 예를 들면, 클라이언트 디바이스(102)는 클라이언트 디바이스(102)의 하나 이상의 인접 위치들, 클라이언트 디바이스(102)의 하나 이상의 움직임들, 및/또는 클라이언트 디바이스(102)의 사용자로부터의 입력들을 나타내는 데이터 또는 정보를 제공할 수 있다. 상기 수신된 데이터와 일치하는 위치 히스토리(location history)를 식별하기 위해, 그 후 서버(104)는 데이터(106)를 프로세스할 수 있다.
서버(104)로부터 클라이언트 디바이스(102)로 전송된 데이터(108)는 다양한 형태들을 취할 수 있다. 예를 들면, 서버(104)는 하나 이상의 인접 위치들의 표시, 업데이트 된 위치 히스토리 정보, 및/또는 디바이스의 하나 이상의 인접 위치들에 기초한 다른 정보를 클라이언트 디바이스(102)로 전송할 수 있다. 예를 들면, 서버(104)는 클라이언트 디바이스(102)의 인접 위치를 둘러싸는 영역들에 관한 데이터 또는 정보를 클라이언트 디바이스(102)로 전송할 수 있다.
도 2는 예시적인 디바이스(200)의 개략적인 도면을 도시한다. 도 2에서, 클라이언트 디바이스(200)는, 예를 들면, 도 1과 관련하여 상기 기술된 클라이언트 임의의 디바이스의 형태를 취할 수 있다. 일부 예시들에서, 도 2에 도시된 일부 컴포넌트들은 다수의 컴퓨팅 디바이스들에 걸쳐 분산될 수 있다. 추가적으로, 예시적인 목적들을 위하여, 일 예시적인 클라이언트 디바이스(200)의 일부로서, 컴포넌트들이 도 2에 표시되고 기술된다. 클라이언트 디바이스(200)는, 예를 들면, 도 1과 관련하여 상기 기술된 임의의 디바이스의 형태를 취할 수 있거나, 본 명세서에 기술된 동작들을 수행하도록 구성될 수 있는 유사한 디바이스를 취할 수 있다.
일부 구현예들에서, 클라이언트 디바이스(200)는 디바이스 플랫폼 또는 운영 체제를 포함할 수 있고, 이들은 다수의-레이어 리눅스 플랫폼 및/또는 기능적으로 균등한 운영 체제로서 구성될 수 있다. 디바이스 플랫폼은 다양한 커널들, 라이브러리들, 및 런타임 엔티티들 뿐만 아니라, 서로 다른 어플리케이션들 및 어프리케이션 프레임워크를 포함할 수 있다. 다른 예시들에서, 다른 포맷들 또는 시스템들 또한 클라이언트 디바이스(200)를 작동시킬 수 있다.
클라이언트 디바이스(200)는 인터페이스(202), 무선 통신 컴포넌트(204), 셀룰러 무선 통신 컴포넌트(206), 글로벌 포지션 시스템(GPS)(208), 센서(들)(210), 데이터 저장소(212), 및 프로세서(214)를 포함할 수 있다. 도 2에 도시된 컴포넌트들은 통신 링크(216)를 통해 서로 연결될 수 있다. 또한, 클라이언트 디바이스(200)는, 클라이언트 디바이스(200) 내의 통신 및 클라이언트 디바이스(200)와 다른 컴퓨팅 디바이스(예컨데, 도 1의 서버(104)와 같은) 사이의 통신을 인에이블(enable) 하기 위해, 추가적인 하드웨어를 포함할 수 있다. 클라이언트 디바이스(200)의 추가적인 하드웨어는, 예를 들면, 전송기들(transmitters), 수신기들(receivers), 및 안테나들을 포함할 수 있다.
인터페이스(202)는 클라이언트 디바이스(200)로 하여금 다른 컴퓨팅 디바이스(예컨데, 도 1의 서버(104)와 같은)와 통신하도록 구성될 수 있다. 그러므로, 인터페이스(202)는 하나 이상의 다른 컴퓨팅 디바이스들로부터 입력 데이터를 수신하도록 구성될 수 있고, 또한 출력 데이터를 하나 이상의 다른 컴퓨팅 디바이스들에게 전송하도록 구성될 수 있다. 일부 예시들에서, 인터페이스(202)는 또한 데이터 또는 클라이언트 디바이스(200)에 의해 송/수신된 데이터 레코드들을 유지 및 관리할 수 있다. 다른 예시들에서, 이러한 데이터 또는 데이터 레코드들은 클라이언트 디바이스(200)의 다른 컴포넌트들에 의해 유지 및 관리될 수 있다. 또한, 인터페이스(202)는 데이터를 송수신하기 위해, 수신기 및 송신기를 각각 포함할 수 있다. 다른 예시들에서, 인터페이스(202)는 또한 입력들을 수신하기 위해, 다른 인터페이스들 중에서도 특히, 예컨데, 키보드, 마이크로폰, 및 터치스크린과 같은, 사용자-인터페이스를 포함할 수 있다.
무선 통신 컴포넌트(204)는 하나 이상의 무선 통신 표준들(wireless communication standars)에 따라, 클라이언트 디바이스(200)에 대한 무선 데이터를 송수신 하도록 구성된 통신 인터페이스일 수 있다. 예를 들면, 무선 통신 컴포넌트(204)는 하나 이상의 IEEE 802.11 표준들에 따라 무선 데이터를 송수신 하도록 구성된 Wi-Fi 통신 컴포넌트를 포함할 수 있다. 다른 예시들에 따라, 무선 통신 컴포넌트(204)는 다른 가능한 표준들 중, 하나 이상의 블루투스 표준들에 따라 무선 데이터를 송수신 하도록 구성된 블루투스 통신 컴포넌트를 포함할 수 있다.
데이터 저장소(212)는 프로세서(214) 및/또는 프로세서(222)에 의해 액세스되고 실행될 수 있는 프로그램 로직(program logic)(218)을 저장할 수 있다. 또한, 데이터 저장소(210)는 무선 통신 컴포넌트(204), 셀룰러 무선 통신 컴포넌트(206), GPS(208) 중에서 어느 것, 및 센서들(210) 중 어느 것에 의해 수집된 데이터를 포함하는 수집된 센서 데이터(220)를 저장할 수 있다.
통신 링크(216)는 유선 연결로서 도시될 수 있으나, 그러나, 뿐만 아니라 무선 연결들 또한 구현될 수 있다. 예를 들면, 통신 링크(216)는 예컨데, 범용 직렬 버스(universal serial bus), 병렬 버스(parallel bus)와 같은, 유선 직렬 버스 및/또는 단거리 무선 라디오 기술을 사용한 무선 연결일 수 있다. 더욱이, 다른 가능한 것들 중에서도 특히, IEEE 802.11(임의의 IEEE 802.11 변경들을 포함한다), 또는 셀룰러 기술에 기술된 통신 프로토콜들과 같은, 추가적인 무선 연결들이 사용될 수 있다.
프로세서(214) 및 프로세서(222)는 프로세서들의 동일하거나 서로 다른 타입들일 수 있다. 일 예시에서, 프로세서(214)는 어플리케이션 프로세서일 수 있고, 프로세서(222)는 클라이언트 디바이스(200)의 제2 프로세서일 수 있다. 프로세서(214)는 데이터를 클라이언트 디바이스(200)의 다양한 컴포넌트들에게 전송하고, 이들로부터 데이터를 수신하도록 구성될 수 있다. 일부 구현예들에서, 프로세서(222)는 또한 데이터를 클라이언트 디바이스(200)의 다양한 컴포넌트들에게 전송하고, 이들로부터 데이터를 수신하도록 구성된 제네럴 프로세싱 유닛(general processing unit)(GPU) 또는 가능하게는 베이스밴드 프로세서(baseband processor)일 수 있다. 또한, 일부 구현예들에서, 프로세서(222)는 어플리케이션 프로세서일 수 있고, 가능하게는 프로세서(214)와 유사하거나 프로세서(214)와 서로 다를 수 있다.
일부 경우들에서, 클라이언트 디바이스(200)의 인접 위치들을 포함하여, 클라이언트 디바이스(200)의 하나 이상의 추정된 위치들을 결정하기 위해, 프로세서들(214 및 222)은 하나 이상의 위치 제공자(LP) 프로세서들을 실행하거나 수행할 수 있다. 프로세서들(214 및 222)는 다른 가능한 것들 중에서도 특히, 클라이언트 디바이스(200)의 컴포넌트들을 수반하는 하드웨어 프로세스들 및/또는 융합된 위치 제공자들(FLP)를 수반하는 소프트웨어 프로세서들, 하드웨어 추상화 계층들(hardware abstraction layers), 및 위치 배칭(location batching)을 실행할 수 있다. 그러므로, 클라이언트 디바이스의 추정된 위치들을 결정하기 위해, 프로세서들(214 및 222)은 인터페이스(202), 무선 통신 컴포넌트(204), 셀룰러 무선 통신 컴포넌트(206), GPS(208), 센서들(210), 데이터 저장소(212), 및 프로세서(222) 중 하나 이상과 통신할 수 있다.
일부 실시예들에서, 프로세서(214)는 클라이언트 디바이스(200)의 추정된 위치를 결정하기 위해 위치-결정 알고리즘을 활용하는 LP 프로세스를 실행할 수 있다. 예를 들면, 클라이언트 디바이스(200)의 추정된 위치는 근처의 셀룰러 기지국들에 기초하여 결정될 수 있다. 특히, 셀룰러 무선 통신 컴포넌트(206)는 셀룰러 네트워크로부터 클라이언트 디바이스(200)가 하나 이상의 신호들을 수신하고 있는 셀을 적어도 식별하도록 구성될 수 있다. 더욱이, 셀룰러 무선 통신 컴포넌트(206)는 또한 신호들을 제공하는 기지국으로의 왕복시간(round trip time)(RTT)을 측정하도록 구성될 수 있다. 클라이언트 디바이스(200)의 인접 위치를 추정하기 위해, 프로세서(214)는 본 정보와 식별된 셀을 결합할 수 있다. 다른 예에서, 셀룰러 무선 컴포넌트(206)는 3 이상의 기지국들로부터의 관측 도착 차등 시간(observed time difference of arrival)(OTDOA)을 사용하도록 구성될 수 있어, 프로세서(214)는 클라이언트 디바이스(200)의 추정된 위치들을 연산할 수 있다.
일부 구현예들에서, 프로세서(214)는 하나 이상의 알려진 무선 액세스 포인트들의 현재 및/또는 인접 위치에 기초하여, LP 프로세스를 실행할 수 있다. 예를 들면, 하나 이상의 액세스 포인트들은 클라이언트 디바이스(200)의 무선 범위 내에 있을 수 있다. 더욱이, 무선 통신 컴포넌트(204)는 하나 이상의 무선 액세스 포인트들(예를 들어, MAC 주소)의 신원(identity)을 결정하고, 하나 이상의 무선 액세스 포인트들 각각으로부터 수신된 신호들의 강도(예를 들어, 수신 신호 강도 지수(received signal strength indication))를 측정할 수 있다. 그러므로, 무선 액세스 포인트로부터의 수신 신호 강도 지수(RSSI)가 사용되어, 프로세서(214)가 각 무선 액세스 포인트로부터의 각각의 거리를 연산할 수 있도록 한다. 이와 같이, 거리들은 무선 액세스 포인트들이 위치한 곳에 대한 정보를 저장하는 데이터베이스와 비교될 수 있다. 각 무선 액세스 포인트로부터의 거리 및 무선 액세스 포인트의 각각의 알려진 위치로부터의 거리에 기초하여, 프로세서(214)는 결정될 수 있는 클라이언트 디바이스(200)의 위치들을 추정할 수 있다.
일부 실시예들에서, 제1 LP 프로세스 및 제2 LP 프로세스를 실행하는 것은 프로세서들(214 및 222)을 사용하는 것을 수반한다. 예를 들면, 프로세서(214)는 다수의 위치-결정 컴포넌트들에 의해 결정된 위치 추정들을 결합하는 위치-결정 알고리즘을 수반하는 제1 LP 프로세스를 실행할 수 있다. 특히, 이러한 컴포넌트들은 인터페이스(202), 무선 통신 컴포넌트(204), 셀룰러 무선 컴포넌트(206), GPS(208), 데이터 저장소(212), 및 센서들(210)을 포함할 수 있다. 더욱이, 센서들(210)은 다른 가능한 것들 중에서도 특히, 가속도계들(accelerometers), 자이로스코프들(gyroscopes), 자력계들(magnetometers), 및 저전력 블루투스(Bluetooth Low Energy)를 포함할 수 있다. 더욱이, 프로세서(222)는 Wi-Fi 데이터베이스 및 클라이언트 디바이스(200)의 하드웨어 계층들 내 캐쉬 데이터를 활용하는 제2 LP 프로세스를 실행할 수 있다. 프로세서(222)는 가능하게는 컴퓨팅 디바이스(220) 내 전력을 절약하며, 클라이언트 디바이스(200)의 추정된 위치들을 결정할 수 있다. 이와 같이, 클라이언트 디바이스(200)가 저전력 모드에 있는 동안, 제2 LP 프로세스는 추정된 위치들을 결정할 수 있다.
일부 실시예들에서, 프로세서들(214 및 222)은 센서 데이터 또는 센서 출력들의 수신을 수반하는 LP 프로세스들을 실행할 수 있다. 예를 들면, LP 프로세서들은 센서(들)(210) 및/또는 GPS(208)로부터 데이터를 수신하는 것을 수반할 수 있다. 일부 경우들에서, 컴퓨팅 디바이스(200)의 인접 위치들을 결정하기 위해, LP 프로세스들은 데이터를 수신할 수 있다. 일부 경우들에서, LP 프로세스들은 예컨데, 하드웨어 추상화 계층(HAL)과 같은, 클라이언트 디바이스(200)의 운영 체제를 인터페이싱(interfacing)하는 하드웨어 프로세스를 수반할 수 있다. 예를 들면, HAL은 센서들(210) 및 GPS(208)와 운영 체제 사이의 인터페이스를 제공할 수 있다. 특히, HAL은 센서들(210) 및 GPS(208)이 호출하는 인터페이스를 제공할 수 있으며, 센서들(210) 및 GPS(208)로 하여금 정확하게 기능하고, 컴퓨팅 디바이스(200)의 추정된 위치들을 표시하는 데이터를 제공하게 한다. 센서들(210)은 하나 또는 다수의 센서들을 포함할 수 있다. 예를 들면, 센서들(210)은 가속도계들, 자이로스코프들, 자력계들, 계보기(pedometer), 광 센서들(light sensors), 마이크로폰, 카메라 또는 다른 위치 및/또는 상황-인식 센서들(context-aware sensors)을 포함할 수 있다.
일부 실시예들에서, LP 프로세스를 실행하는 것은 예컨데, GPS(208)로부터 획득된 GPS 의사거리들(GPS pseudo ranges)과 같은, 낮은-레벨 데이터에 액세스하는 것을 수반할 수 있다. 예를 들면, 지구 위의 GPS 인공위성들에 의해 전송된 GPS 신호들에 기초하여 클라이언트 디바이스(200)의 추정된 위치들을 결정하기 위해, 프로세서(214 및/또는 222)는 위치-결정 알고리즘을 실행할 수 있다.
일부 실시예들에서, LP 프로세스를 실행하는 것은 융합된 위치 제공자(FLP)를 수반할 수 있다. 예를 들면, 클라이언트 디바이스(200)의 추정된 위치들을 결정하기 위해, FLP는 위치-결정 알고리즘들, 방법들, 및/또는 코드를 융합하거나 결합할 수 있다. 예를 들면, 프로세서들(214)은 FLP를 수반하는 LP 프로세스를 실행하여, 프로세서(222)보다 더 많은 전력을 소비하도록 한다.
일부 실시예들에서, LP 프로세스를 실행하는 것은 위치 배칭을 수반한다. 일부 경우들에서, 위치 배칭은 추정된 위치들을 그루핑(grouping) 또는 스태킹(stacking)하는 것을 포함할 수 있다. 예를 들면, 위치 배칭은 인터벌들(intervals) "LocationRequest.setDeliveryInterval(long deliveryIntervalMs)" 동안, 위치들을 그루핑 하기 위해 특정 명령어들을 사용하는 것을 수반할 수 있다. 일부 경우들에서, 추정된 위치들을 클라이언트 디바이스(200)로 전송하기 위한 시구간들(time periods) 또는 대기 구간(waiting periods)이 결정될 수 있다.
일부 경우들에서, LP 프로세스를 실행하는 것은 콜백 메커니즘(callback mechanism)을 수반한다. 예를 들면, LP 프로세스는 배치 위치들로의 다수의 호출들을 수반할 수 있다. 특히, 응용 프로그램 인터페이스(application programming interfaces)(API)는 "리스너(listener)" 콜백을 통해 구현될 수 있다:
public interface LocationBatchListener {
void onLocationChanged(List<Location> locations);
}
일부 경우들에서, 추정된 위치들은 분류되거나 정렬될 수 있다. 예를 들면, 리스너 콜백은, 다른 가능한 것들 중에서도 특히, 추정된 위치들을 가장 최신부터 가장 오래된 것까지 분류하도록 구현될 수 있다. 일부 경우들에서, 동작들을 수행하기 위해, LP 프로세스들은 하나 이상의 어플리케이션들을 사용하는 것을 수반할 수 있다. 예를 들면, 동작들을 수행하기 위해, 어플리케이션은 권리들 또는 권한들을 부여 받을 수 있다. 이러한 권리들 또는 권한들(예를 들어, PendingtonIntent 권리들)에 대해, 어플리케이션들은 가장 최신부터 가장 오래된 것까지 정렬된 추정된 위치들을 검색할 수 있다. ArrayList<Location> locations = intent.getParcelableArrayListExtra(FusedLocationProvider.KEY_LOCATION_LIST_CHANGED);
일부 구현예들에서, LP 프로세스를 실행하는 것은, 가능하게는 리스너 콜백에 추가하여, HAL 배칭을 수반할 수 있다. 그러나, 만일 HAL 배칭을 사용할 수 없다면, LP 프로세스는, 다른 가능한 것들 중에서도 특히, 추정된 위치들을 가장 최신부터 가장 오래된 것까지 분류하기 위해, 리스너 콜백을 통해 Wi-Fi 배칭을 수반할 수 있다.
본 명세서에 기술된 예시적인 방법들은 클라이언트 디바이스(200)의 하나 이상의 컴포넌트들, 또는 클라이언트 디바이스(200)의 하나 또는 모든 컴포넌트들의 결합으로 수행될 수 있다. 일 경우에서, 클라이언트 디바이스(200)의 부분들은, 예를 들면, 데이터를 프로세스하고, 클라이언트 디바이스(200) 내 출력을 프로세서들(214 및 222)로 내부적으로 제공할 수 있다. 다른 경우들에서, 클라이언트 디바이스(200)의 부분들은 데이터를 프로세스하고, 출력들을 다른 컴퓨팅 디바이스들로 외부적으로 제공할 수 있다.
도 3은 예시적인 구현예에 따른 다른 컴퓨팅 디바이스를 도시한다. 도 3에서, 서버(300)는, 예를 들면, 도 1 및 2와 관련하여 상기 기술된 임의의 컴퓨팅 디바이스의 형태를 취할 수 있다. 일부 예시들에서, 도 3에 도시된 일부 컴포넌트들은 다수의 서버들에 걸쳐 분산될 수 있다. 예를 들자면, 하나의 예시적인 서버(300)의 일부로서 컴포넌트들이 표시되고 기술된다. 서버(300)는 컴퓨팅 디바이스, 클라우드 내 디바이스, 및/또는 본 명세서에 기술된 기능들을 수행하도록 구성된 유사한 엔티티일 수 있다.
서버(300)는 통신 인터페이스(302), 위치 모듈(304), 프로세서(306), 및 데이터 저장소(308)를 포함할 수 있다. 도 3에 도시된 모든 컴포넌트들은 통신 링크(310)(예를 들어, 유선 또는 무선 링크)를 통해 서로 연결될 수 있다. 또한, 서버(300)는, 서버(300) 내의 통신 및 서버(300)와 다른 컴퓨팅 디바이스 사이의 통신을 인에이블 하기 위해, 하드웨어를 포함할 수 있다. 상기 하드웨어는, 예를 들면, 전송기들, 수신기들, 및 안테나들을 포함할 수 있다.
통신 인터페이스(302)는 서버(300)로 하여금 예컨데, 도 1 및 2와 관련하여 상기 기술된 컴퓨팅 디바이스와 같은, 다른 디바이스와 통신하도록 할 수 있다. 그러므로, 통신 인터페이스(302)는 하나 이상의 컴퓨팅 디바이스들로부터 입력 데이터를 수신하도록 구성될 수 있고, 또한 출력 데이터를 하나 이상의 컴퓨팅 디바이스들에게 전송하도록 구성될 수 있다. 일부 경우들에서, 통신 인터페이스(302)는 또한 서버(300)에 의해 송수신 되는 데이터 및 데이터 레코드들을 유지 및 관리할 수 있다. 다른 예시들에서, 데이터 레코드들은 서버(300)의 다른 컴포넌트들에 의해 유지 및 관리될 수 있다.
위치 모듈(304)은 컴퓨팅 디바이스로부터 데이터를 수신하도록 구성될 수 있다. 더욱이, 위치 모듈(304)은 컴퓨팅 디바이스의 지리적 위치(geographic location)를 결정할 수 있다. 상기 결정은 가속도계, 자이로스코프, 및/또는 컴퓨팅 디바이스의 다른 센서들로부터의 데이터에 기초할 수 있다. 위치 모듈(304)은 컴퓨팅 디바이스의 센서 측정치들의 히스토리를 결정하고 저장할 수 있다. 이러한 경우들에서, 위치 모듈(304)은, 네트워크들로부터의 업데이트 된 데이터 및/또는 위치들을 결정하는데 사용되는 정보에 기초하여, 이러한 측정치들을 다시 프로세스 할 수 있다.
데이터 저장소(308)는 프로세서(306)에 의해 액세스 되고 실행될 수 있는 프로그램 로직(312)을 저장할 수 있다. 또한, 데이터 저장소(308)는 위치 데이터베이스(314)를 포함할 수 있다. 일부 경우들에서, 위치 데이터베이스(314)는, 다른 가능한 것들 중에서도 특히, 무선 액세스 포인트들, GPS 네트워크 내 위성들의 위치들, 빌딩의 평면도(floor plans), 및 컴퓨팅 디바이스의 위치를 결정하는 데 유용한 정보의 임의의 다른 타입에 관한 정보를 검색하기 위해, 프로세서(306)에 의해 액세스될 수 있다.
서버는 어플리케이션 프로세서 및/또는 입력/출력 기능에 대한 특정한 프로세서일 수 있는 제2 프로세서(316)와 함께 도시된다. 일부 경우들에서, 프로세서(306) 및 프로세서(316)의 기능들은 상기 프로세서들의 하나 또는 모두에 의해 결합되고 수행될 수 있다.
일부 실시예들에서, 측정치들은 예컨데, 다른 가능한 것들 중에서도 특히, Wi-Fi 컴포넌트들, GPS 센서들, 및/또는 관성 센서들과 같은, 컴퓨팅 디바이스의 다양한 센서들로부터 수집될 수 있다. 일부 경우들에서, 이러한 측정치들은 예컨데, Wi-Fi 신호 정보 또는 모델링 정보, 위치 정보 또는 Wi-Fi 액세스 포인트 정보, 및/또는 빌딩 정보(예를 들어, 평면도 정보)와 같은, 외부 데이터베이스들로부터의 정보와 결합될 수 있다. 더욱이, 이러한 측정치들 및/또는 정보는 실시간으로 컴퓨팅 디바이스의 인접 위치 또는 움직임을 추정하는데 사용될 수 있다. 상시로 또는 다수의 시간 인터벌들로 실시간 위치 추정들을 레코딩 하거나 분석함으로써, 측정들은 위치 히스토리를 생성하기 위해 사용될 수 있다.
Ⅲ. 예시적인 방법들
도 4는 예시적인 구현예에 따른 흐름도를 도시한다. 방법(400)은, 예를 들면, 도 1 내지 3과 관련하여 상기 기술된 임의의 방식으로 수행될 수 있다. 예를 들면, 방법들(400 및 700)의 블록들 및 구현예들은 도 1의 시스템(100), 도 2의 컴퓨팅 디바이스(200), 및/또는 도 3의 서버(300)에 의해 수행될 수 있다.
방법(400)은, 블록(402 내지 412) 중 하나 이상에 의해 도시되는 것으로서, 하나 이상의 동작들, 기능들, 또는 액션들을 포함한다. 비록 블록들이 순차적인 순서로 도시되었지만, 이 블록들은 또한 병렬로 그리고/또는 본 명세서에 기술된 것들과는 서로 다른 순서로 수행될 수 있다. 또한, 다양한 블록들은 몇몇 블록들 내로 결합될 수 있고, 추가적인 블록들로 분할될 수 있고, 그리고/또는 특정 구현예들에 기초하여 제거될 수 있다.
추가적으로, 방법(400) 및 본 명세서에 개시된 다른 프로세스들 및 다른 구현예들에 대해, 흐름도는 현재 실시예들의 기능 및 가능한 구현예들을 도시한다. 이와 관련하여, 각 블록은 모듈, 세그먼트, 또는 논리적인 기능들 또는 단계들을 구현하기 위해 프로세서에 의해 실행될 수 있는 하나 이상의 명령어들을 포함하는 프로그램 코드의 일부를 나타낸다. 상기 프로그램 코드는, 예를 들면, 예컨데, 디스크 또는 하드 드라이브를 포함하는 저장 디바이스와 같은, 컴퓨터-판독가능한 매체의 임의의 타입 상에 저장될 수 있다.
컴퓨터-판독가능한 매체는, 예를 들면, 예컨데, 레지스터 메모리, 프로세서 캐시 및 랜덤 액세스 메모리(RAM)와 같은 짧은 시간 동안 데이터를 저장하는 컴퓨터-판독가능한 미디어와 같은, 비-일시적인 컴퓨터 판독가능한 매체를 포함할 수 있다. 또한, 컴퓨터-판독가능한 매체는 비-일시적인 미디어, 예를 들면, 예컨데, 읽기 전용 메모리(ROM), 광학 또는 자기 디스크들, CD-ROM과 같은, 보조 또는 영구적 장기 저장 미디어를 포함할 수 있다. 또한, 컴퓨터-판독가능한 미디어는 임의의 다른 휘발성 또는 비-휘발성 저장 시스템들일 수 있다. 컴퓨터-판독가능한 미디어는, 예들 들면, 컴퓨터-판독가능 저장 매체, 유형의 저장 디바이스, 또는 다른 제조물품(article of manufacture)로 고려될 수 있다.
추가적으로, 방법(400) 및 본 명세서에 개시된 다른 프로세스들 및 다른 구현예들에 대해, 도 4의 각 블록은 하드웨어, 칩셋들, 및/또는 프로세스 내 특정한 논리적인 기능들을 수행하도록 설계되거나 연결된(wired) 회로에 대응할 수 있다.
방법(400)의 구현예들은 컴퓨팅 디바이스 (또는 하나 이상의 프로세서들과 같은, 컴퓨팅 디바이스의 컴포넌트들)에 의해 수행될 수 있거나, 다수의 컴퓨팅 디바이스들 및/또는 서버에 걸쳐 분산될 수 있다. 일부 예시들에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스의 센서들로부터 데이터 또는 정보를 수신할 수 있다. 더욱이, 일부 경우들에서, 컴퓨팅 디바이스는 서버일 수 있어, 정보를 수집하는 다른 디바이스로부터 정보가 수신될 수 있다.
도 4의 블록(402)에서, 방법(400)은, 컴퓨팅 디바이스 상에서, 제1 시구간의 적어도 일부 동안 제1 위치 제공자(LP) 프로세스 및 제2 LP 프로세스를 실행하는 것을 포함할 수 있고, 상기 제1 LP 프로세스를 실행하는 것은 제1 프로세서를 사용하는 것을 포함하고, 상기 제2 LP 프로세스를 실행하는 것은 제2 프로세서를 사용하는 것을 포함한다. 상기 제1 및 제2 LP 프로세스들은, 예를 들면, 도1 내지 3과 관련하여 상기 기술된 임의의 LP 프로세스들을 포함할 수 있다. 예를 들면, 제1 LP 프로세스는 프로세서(214)를 사용하는 것을 실행할 수 있고, 제2 LP 프로세스는 제2 프로세서(222)를 사용하는 것을 실행할 수 있다. 더욱이, 프로세서(214)는 제2 프로세서(222)보다 더 많은 전력을 소비한다. 더욱이, 제1 LP 프로세스를 실행하는 것은 소프트웨어 프로세스를 실행하는 것을 포함할 수 있고, 제2 LP 프로세스를 실행하는 것은 하드웨어 프로세스를 실행하는 것을 포함할 수 있다. 추가적으로, 제1 LP 프로세스는 도 2와 관련하여 상기 기술된 융합된 위치 제공자들(FLP)을 포함할 수 있다.
일부 구현예들에서, 제1 LP 프로세스는 Wi-Fi 신호들을 모델링하는 것, Wi-Fi 데이터베이스들에 액세스하는 것, 및/또는 컴퓨팅 디바이스의 무선 범위 내의 하나 이상의 알려진 무선 액세스 포인트들에 기초하여 추정된 위치들을 결정하는 것을 수반할 수 있다. 더욱이, 제2 LP 프로세스는 하드웨어 내 이용가능한 낮은-레벨 데이터(예를 들어, GPS 의사거리들)에 액세스하는 것에 기초하여 컴퓨팅 디바이스의 추정된 위치를 결정하는 것을 수반할 수 있다. 더욱이, 제1 및/또는 제2 LP 프로세스들은, 다른 가능한 것들 중에서도 특히, GPS 의사거리들과 Wi-Fi 신호 모델링을 융합시키는 것을 포함할 수 있다.
일부 구현예들에서, 제1 및 제2 LP 프로세스들은 컴퓨팅 디바이스의 센서들로부터 출력들을 수신하는 것을 수반하고, 가능하게는 가능성 또는 컴퓨팅 디바이스의 추정된 위치를 결정하기 위해 출력들을 융합시킨다. 센서들로부터의 하나 이상의 출력(예를 들어, WiFi 스캔 데이터, 온도 눈금들, 자력계 눈금들, 등)을 사용하여, 다양한 비교들 및 매핑(mapping)은 컴퓨팅 디바이스의 추정된 위치들을 결정할 수 있다. 예를 들면, 컴퓨팅 디바이스가 2개의 특정 빌딩들 사이의 외부에 위치한 경우 Wifi 스캔, 온도 눈금, 및 자력계 눈금에 기초하여, 컴퓨팅 디바이스는 데이터의 특정 세트를 결정할 수 있다. 이와 같이, 컴퓨팅 디바이스가 데이터의 상기 특정 세트를 결정할 때, 컴퓨팅 디바이스는 2개의 빌딩들 사이의 외부로의 상기 컴퓨팅 디바이스의 인접 위치를 결정할 수 있다.
블록(404)에서, 방법(400)은 제1 LP 프로세스로부터 컴퓨팅 디바이스의 제1 추정된 위치를 획득하는 것을 포함할 수 있다. 블록(406)에서, 방법(400)은 제2 LP 프로세스로부터 컴퓨팅 디바이스의 제2 추정된 위치를 획득하는 것을 포함할 수 있다.
추정된 위치들은, 예를 들면, 도 1 내지 3과 관련하여 상기 기술된 임의의 방식으로 결정될 수 있다. 예를 들면, 컴퓨팅 디바이스의 제1 추정된 위치는 어플리케이션 프로세서 상에서 제1 LP 프로세스를 실행하는 것으로부터 결정될 수 있다. 더욱이, 프로세서(214)는 컴퓨팅 디바이스의 제1 추정된 위치를 결정하기 위해 제1 LP 프로세스를 실행하는 어플리케이션 프로세서일 수 있다. 더욱이, 컴퓨팅 디바이스의 제2 추정된 위치는 제2 프로세서 상에서 제2 LP 프로세스를 실행하는 것으로부터 결정될 수 있다. 추가적으로, 프로세서(222)는 컴퓨팅 디바이스의 제2 추정된 위치를 결정하기 위해 제2 LP 프로세스를 실행하는 어플리케이션 프로세서일 수 있고, 상기 제2 프로세서는 상기 어플리케이션 프로세서 보다 전력을 덜 소모할 수 있다.
블록(408)에서, 방법(400)은 제1 LP 프로세스로부터 컴퓨팅 디바이스의 제1 전력 소비를 결정하는 것을 포함할 수 있다. 블록(410)에서, 방법(400)은 제2 LP 프로세스로부터 제2 전력 소비를 결정하는 것을 포함할 수 있다. 일부 경우들에서, 제1 전력 소비는 제1 추정된 위치를 결정하기 위해 제1 프로세서를 사용하는 것에 기초할 수 있다. 더욱이, 제2 전력 소비는 제2 추정된 위치를 결정하기 위해 제2 프로세서를 사용하는 것에 기초할 수 있다.
일부 경우들에서, 방법(400)은 임계치 레벨(threshold level) 이하로 떨어진 컴퓨팅 디바이스의 배터리 전력 레벨의 표시를 수신하는 것을 포함할 수 있다. 더욱이, 임계치 레벨 이하로 떨어진 배터리 전력 레벨에 기초하여, 방법(400)은 제1 LP 프로세스 및 제2 LP 프로세스 중 하나를 디스에이블링 하는 것을 포함할 수 있다.
블록(412)에서, 방법은, 제1 전력 소비 및 제2 전력 소비에 적어도 기초하여, 제2 시구간의 적어도 일부 동안 실행하기 위해, 제1 LP 프로세스와 제2 LP 프로세스 중 하나를 선택하는 것을 포함할 수 있다. 예를 들면, 어플리케이션 프로세스에 기초한 제1 전력 소비는 제2 프로세서에 기초한 제2 전력 소비보다 클 수 있다. 더욱이, 다른 시구간 동안 실행하기 위해, 가능하게는 컴퓨팅 디바이스의 배터리 내 전력을 절약하기 위해, 제2 LP 프로세스가 결정될 수 있다. 더욱이, 제2 LP 프로세스는 컴퓨팅 디바이스의 배터리 전력 레벨을 유지하기 위해, 실행될지 결정될 수 있다.
일부 실시예들에서, 임계치 레벨 이하로 떨어진 컴퓨팅 디바이스의 배터리 전력 레벨의 표시가 수신될 수 있다. 더욱이, 임계치 레벨 이하로 떨어진 배터리 전력 레벨에 기초하여, 제1 LP 프로세스 및 제2 LP 프로세스 중 하나가 디스에이블 될 수 있다. 예를 들면, 임계치 레벨 이하로 떨어진 배터리 전력 레벨에 기초하여, 제1 LP 프로세스가 디스에이블 되고, 제2 LP 프로세스가 컴퓨팅 디바이스 상에서 계속 실행될 수 있다.
일부 실시예들에서, 방법(400)은 LP 프로세스들 중 하나를 디스에이블 하는 것을 포함할 수 있다. 일부 경우들에서, 제1 LP 프로세스 및 제2 LP 프로세스 중 하나를 디스에이블 하는 것은 컴퓨팅 디바이스의 특정 컴포넌트들의 전력을 비활성화하는 것을 수반할 수 있다. 예를 들면, 도 2를 다시 참조하면, 하드웨어 프로세스를 디스에이블 하는 것은 센서(들)(210) 및/또는 GPS(208)로의 전력을 비활성화 하는 것을 수반할 수 있다. 일부 경우들에서, LP 프로세스를 디스에이블 하는 것은 또한 무선 통신 컴포넌트(204) 및 셀룰러 무선 통신 컴포넌트(206)로의 전력을 비활성화 하는 것을 수반할 수 있다. 더욱이, LP 프로세스를 디스에이블 하는 것은 어플리케이션 프로세서에 의해 실행되는 하나 이상의 프로세스들 또는 알고리즘들을 끝내거나 종료하는 것을 수반할 수 있다. 언급된 바와 같이, 예를 들면, LP 프로세스들은 FLP들로 구현될 수 있다. 이러한 프로세스들을 디스에이블 하기 위해, 각각의 배치된 위치를 호출하는데 사용되는 콜백 메커니즘이 종료될 수 있다.
일반적으로, 제1 LP 프로세스 및 제2 LP 프로세스 중 하나를 디스에이블 하는 것은 컴퓨팅 디바이스에 의해 소비되는 전력을 줄일 수 있다. 더욱이, 일부 시 구간들 동안 컴퓨팅 디바이스에 의해 소비되는 전력을 더 줄이기 위해, 제1 및 제2 LP 프로세스들 모두가 디스에이블 될 수 있다. 일부 구현예들에서, 가능하게는 LP 프로세스들 사이에서 스위칭(swirching)하는 것을 줄이거나 피하기 위해, 제1 프로세스 및 제2 프로세스 중 하나를 디스에이블 하는 경우 디스에이블 된 LP 프로세스는 시구간(예를 들어, 하루에서 이틀) 동안 디스에이블 될 수 있다. 일부 경우들에서, 제1 LP 프로세스와 제2 LP 프로세스 사이에서 스위칭 하는 것은 컴퓨팅 디바이스의 산발적인 위치들을 출력할 수 있고, 가능하게는 상기 시나리오들에서 기술된 파란색 점의 "점프"를 초래한다.
도 5는 예시적인 구현예에 따른 모션 모델을 도시한다. 모션 모델은 데이터(500) 및 다수의 레코드들 또는 추가적인 데이터의 세트들을 포함할 수 있다. 더욱이, 데이터(500)는, 예를 들면, 도 1 내지 3과 관련하여 상기 기술된 임의의 컴퓨팅 디바이스에 저장될 수 있다. 예를 들면, 데이터(500)는 클라이언트 디바이스(200)의 데이터 저장소(212)에 저장된 모션 모델의 일부일 수 있다. 더욱이, 데이터(500)는 다른 가능한 것들 중에서도 특히, 서버(300)의 데이터 저장소(308)에 저장된 모션 모델의 일부 일 수 있다.
일부 실시예들에서, 모션 모델은 데이터의 다양한 형태들을 포함할 수 있다. 더욱이, 모션 모델은 LP 프로세스들의 실행으로부터 획득된 데이터를 포함할 수 있다. 특히, 모션 모델은 가속도계들, 자이로스코프들, 자력계, 계보기, 광 센서들, 마이크로폰, 카메라, 또는 다른 위치 및/또는 상황-인식 센서들을 사용하는 LP 프로세스들의 실행으로부터 획득된 데이터를 포함할 수 있다. 더욱이, 모션 모델은 하나 이상의 프로세서들 상에서 LP 프로세서들을 실행하는 것으로부터의 데이터를 포함할 수 있다. 예를 들면, 모션 모델은 프로세서(214) 상에서 제1 LP 프로세스를 실행하는 것으로부터의 데이터를 포함할 수 있다.
도 5에 도시된 바와 같이, 데이터(500)는, 데이터의 다른 가능한 타입들 중에서도 특히, 액티비티 데이터(activity data)(502), 센서 데이터(504), 센서 데이터(506), 데드 레코닝 데이터(dead reckoning data)(508), 및 위치 데이터(510)를 포함하는 데이터의 다양한 타입들을 포함할 수 있다. 액티비티 데이터(502)는 컴퓨팅 디바이스를 들고 있는 사용자의 추정된 액티비티를 표시할 수 있다. 일부 경우들에서, 모션 모델은 컴퓨팅 디바이스의 사용자의 추정된 액티비티에 기초할 수 있다. 더욱이, 일부 경우들에서, 사용자의 추정된 액티비티는 컴퓨팅 디바이스와 관련된 위치 데이터(510)에 기초할 수 있다.
센서 데이터(504 및 506)는 하나 이상의 센서들로부터의 데이터를 포함할 수 있다. 예를 들면, 센서 데이터(504 및 506)는, 예컨데, 도 2와 관련하여 상기 기술된 클라이언트 디바이스(200)의 하나 이상의 센서들(210)에 의한 출력일 수 있다. 데드 레코닝 데이터(508)는, 예를 들면, 도 2와 관련하여 상기 기술된 클라이언트 디바이스(200)의 하나 이상의 센서들(210)에 의한 출력일 수 있다. 위치 데이터(510)는 컴퓨팅 디바이스의 하나 이상의 예상된 위치들을 표시할 수 있다. 특히, 컴퓨팅 디바이스의 하나 이상의 예상된 위치들을 표시하는 위치 데이터(510)는 액티비티 데이터(502), 센서 데이터(504 및 506), 및 데드 레코닝 데이터(508)에 기초할 수 있다.
일부 실시예들에서, 액티비티 데이터(502)는 컴퓨팅 디바이스의 액티비티 인식 데이터(activity recognition data)를 포함할 수 있고, 상기 액티비티 인식 데이터는 컴퓨팅 디바이스의 모션의 액티비티 및 방향을 표시한다. 이와 같이, 일부 경우들에서, 컴퓨팅 디바이스의 모션 모델은 컴퓨팅 디바이스의 모션의 액티비티 및 방향에 기초할 수 있다.
예를 들면, 데이터 엔트리(data entry)(512)는 액티비티 데이터(518), 모션 데이터(520), 및 위치 데이터(526)을 포함할 수 있다. 본 예에서, 액티비티 데이터(518)가 컴퓨팅 디바이스를 들고 가능하게는 사용자의 집에서 사용자의 직장까지 차량을 운전하는 사용자에 대응하는 시나리오를 고려해보자. 이와 같이, 모션 데이터(520)는 사용자의 집에서 사용자의 직장까지 차량을 운전하는 것을 표시하는 컴퓨팅 디바이스의 속도, 가속도 및/또는 움직임에 대응할 수 있다. 추가적으로, 위치 데이터(526)는 집과 직장 사이의 컴퓨팅 디바이스의 다양한 위치들에 대응할 수 있다.
더욱이, 데이터 엔트리(514)는 액티비티 데이터(528), 온도 데이터(532), 및 위치 데이터(536)를 포함할 수 있다. 본 예에서, 액티비티 데이터(528)가 컴퓨팅 디바이스를 들고 점심 식사를 위해 직장을 떠나는 (가능하게는 직장 건물 밖으로 나가기 위해 직장 건물을 나오는) 사용자에 대응하는 시나리오를 고려해보자. 이와 같이, 온도 데이터(532)는 컴퓨팅 디바이스 주위 공기의 온도에 대응할 수 있다. 예를 들면, 도 2를 다시 참조하면, 클라이언트 디바이스(200)의 센서들(210)은 외부 온도 또는 가능하게는 내부 온도로부터 외부 온도로의 변화를 검출할 수 있다. 추가적으로, 위치 데이터(536)는 직장 건물 외부의 컴퓨팅 디바이스의 하나 이상의 인접 위치들에 대응할 수 있다.
더욱이, 데이터 엔트리(516)는 액티비티 데이터(538), 모션 데이터(540), 방향 데이터(544), 및 위치 데이터(546)를 포함할 수 있다. 본 예에서, 액티비티 데이터(528)가 점심 식사를 위해 카페테리아로 가는 길에 컴퓨팅 디바이스를 들고 있는 사용자에 대응하는 시나리오를 고려해보자. 예를 들면, 상기 카페테리아가 직장 건물에서 도보 거리에 있도록 상기 시나리오를 고려해보자. 이와 같이, 모션 데이터(540) 및 방향 데이터(544)는 사용자가 카페테리아로 걷고 있는 방향 및 경로를 결정하기 위해 사용될 수 있다. 이와 같이, 위치 데이터(546)는 직장 건물에서 카페테리아까지의 경로에 따른 컴퓨팅 디바이스의 하나 이상의 인접 위치들에 대응할 수 있다.
도 4에서 언급한 바와 같이, 방법(400)은 LP 프로세스들 중 하나를 디스에이블 하는 것을 포함할 수 있다. 예를 들면, 액티비티 데이터(538)가 카페테리아로 컴퓨팅 디바이스를 들고 가는 사용자에 대응하는 시나리오를 고려해보자. 이와 같은 경우들에서, 제1 및 제2 LP 프로세스들에 의해 각각 표시된 제1 및 제2 추정된 위치들은 예상된 위치들(546)에 가까운 추정된 위치들을 결정할 수 있다. 이와 같이, 제2 LP 프로세스는 컴퓨팅 디바이스의 추정된 위치들을 정확하게 출력하기 위해, 결정될 수 있다. 이와 같이, 가능하게는 컴퓨팅 디바이스에 의해 소비되는 전력을 줄이기 위해, 제1 LP 프로세스는 디스에이블 될 수 있다.
데이터 레코드들(522, 524, 530, 534 및 542)이 비어있을 수 도 있다는 것이 주목되어야 한다. 그러나, 상기 레코드들은 데이터를 포함할 수 있고, 가능하게는 모션 모델의 하나 이상의 머신-러닝 프로세스들에 관련된다. 더욱이, 데이터는 시간이 지남에 따라 모션 모델에 추가 및/또는 모션 모델로부터 제거될 수 있고, 가능하게는 사용자의 일상 활동들에 적응한다. 특히, 다수의 다른 데이터 엔트리들은, 모션 모델의 일부로서, 데이터 엔트리들(512, 514, 및 516)에 추가될 수 있다. 추가적으로, 다수의 다른 데이터 타입들은, 컴퓨팅 디바이스 모션 모델의 일부로서, 액티비티 데이터(502), 센서 데이터(504 및 506), 데드 레코닝 데이터 (508), 및 위치 데이터(510)에 추가될 수 있다. 예를 들면, 모션 모델은 또한 자력계 데이터, 기압계 데이터, 또는 기압계 눈금의 변화들을 포함할 수 있다. 추가적으로, 모션 모델은 컴퓨팅 디바이스의 회전 및/또는 원형 움직임들을 포함하는 자이로스코프 데이터를 포함할 수 있다. 더욱이, 모션 모델은 컴퓨팅 디바이스의 포지션 및/또는 오리엔테이션(orientation)을 나타내는 데이터를 포함할 수 있다. 더욱이, 데이터는 사용자와 관련된 컴퓨팅 디바이스의 하나 이상의 포지션들이 변화함을 표시할 수 있다. 특히, 데드 레코닝 측정치들의 부정확성을 나타내는 데이터에 기초하여, 데이터는 하나 이상의 포지션들이 변화함을 표시할 수 있다.
일부 실시예들에서, 모션 모델 내 데이터를 분석할 수 있다. 예를 들면, 모션 모델의 데이터(500)는 반복적인 방식으로 분석될 수 있다. 예를 들어, 특정 신뢰도 레벨과 관련된 데이터가 분석될 수 있다. 더욱이, 데이터(500)의 전부 또는 대부분이 고려될 때까지, 낮은 신뢰도와 관련된 데이터가 분석될 수 있다. 이와 같이, 데이터(500)를 분석하는 우선순위가 몇 가지 방식으로 수행될 수 있다. 다른 예시에서, GPS 데이터가 데드 레코닝 데이터(508)에 의해 또한 표시된 하나 이상의 추정된 위치들을 표시함을 결정함으로써, 데이터(500)가 우선순위화 될 수 있다. 특히, GPS 데이터는 특정 위치를 나타낼 수 있고, 데드 레코닝 데이터 또한 특정 위치를 나타낸다. 이와 같이, 데드 레코닝 데이터는 모션 모델에 추가될 수 있다.
클라이언트 디바이스(200)와 서버(300) 사이에 방법(400)의 단계들을 분산시키는 것이 가능할 수 있다. 예를 들면, 클라이언트 디바이스(200)의 제1 추정된 위치들을 결정하기 위해, 클라이언트 디바이스(200)는 제1 LP 프로세스 및 제2 LP 프로세스를 실행할 수 있다. 더욱이, 서버(300)는 클라이언트 디바이스(200)의 예상된 위치들을 제공하는 컴퓨팅 디바이스의 모션 모델을 결정할 수 있다.
도 6은 예시적인 구현예에 따른 프로세스 차트를 도시한다. 도시된 바와 같이, 도 6은 시간들(602, 604, 606 및 608)을 도시한다. 더욱이 시구간(603)은 시간(602)과 시간(604) 사이의 시간을 도시한다. 더욱이, 시구간(605)은 시간(604)과 시간(606) 사이의 시간을 도시한다. 추가적으로, 시구간(607)은 시간(606)과 시간(608) 사이의 시간을 도시한다. 이와 같이, LP 프로세스는 시구간들(603, 605 및 607) 중 하나 이상의 적어도 부분 동안 실행될 수 있다.
일부 실시예들에서, LP 프로세스들(612, 624, 630 및 636)은, 예를 들면, 도 1 내지 5와 관련하여 상기 기술된 LP 프로세스들일 수 있다. 일부 경우들에서, LP 프로세스들(612, 624, 630 및 636) 중 하나 이상은 컴퓨팅 디바이스의 추정된 위치들을 결정하는 것을 수반할 수 있다. 예를 들면, 하드웨어 내 이용가능한 낮은-레벨 데이터(예를 들어, GPS 의사거리들)에 액세스하는 것에 기초하여, LP 프로세스들(612, 624, 630 및 636) 중 하나 이상은 추정된 위치들을 결정할 수 있다. 더욱이, 큰 Wi-Fi 데이터베이스들에 액세스하는 것과 컴퓨팅 디바이스의 무선 범위 내의 하나 이상의 알려진 무선 액세스 포인트들의 인접 위치들을 식별하는 것에 기초하여, LP 프로세스들(612, 624, 630 및 636) 중 하나 이상은 추정된 위치들을 결정할 수 있다.
일부 실시예들에서, LP 프로세스들(612, 624, 630 및 636) 중 하나 이상은, 가능하게는 컴퓨팅 디바이스의 추정된 위치를 결정하기 위해, 컴퓨팅 디바이스의 제1 프로세서 상에서 실행된다. 더욱이, LP 프로세스들(612, 624, 630 및 636) 중 하나 이상은, 가능하게는 컴퓨팅 디바이스의 추정된 위치를 결정하기 위해, 컴퓨팅 디바이스의 제2 프로세서 상에서 실행된다.
도 6의 단계(610)에 도시된 바와 같이, 컴퓨팅 디바이스의 추정된 위치(614)를 결정하기 위해, 시구간의 적어도 일부 동안 LP 프로세스(612)가 컴퓨팅 디바이스 상에서 실행된다. 특히, LP 프로세스(612)는 시간(602)과 시간(604) 사이에 도시된 시구간(603)의 적어도 일부 동안 실행될 수 있다. 단계(616)에 도시된 바와 같이, 모션 모델(618)은 컴퓨팅 디바이스의 예상된 위치들(620)을 포함하는 데이터(620D)를 제공할 수 있다. 일부 경우들에서, 데이터(620D)는, 예를 들면, 도 5와 관련하여 상기 기술된 데이터(500)의 형태를 취할 수 있다. 예를 들면, 데이터(620D)는, 예컨데, 위치 데이터(526, 536, 및/또는 546)의 형태를 취할 수 있다. 이와 같이, 모션 모델(618)은 컴퓨팅 디바이스의 예상된 위치들(620)을 제공할 수 있다.
더욱이, 도 6의 단계(622)에 도시된 바와 같이, 컴퓨팅 디바이스의 추정된 위치(626)를 결정하기 위해, LP 프로세스(624)는 시구간(605)의 적어도 일부 동안 컴퓨팅 디바이스 상에서 실행될 수 있다. 특히, LP 프로세스(624)는 시간(604)와 시간(606) 사이에 도시된 시구간(605)의 적어도 일부 동안 실행될 수 있다. 일부 경우들에서, LP 프로세스들(612 및 624)의 정확성을 결정하기 위해, 위치들(614 및 626)이 각각 비교될 수 있다.
더욱이, 도 6의 단계(628)에 도시된 바와 같이, 컴퓨팅 디바이스의 추정된 위치(632)를 결정하기 위해, LP 프로세스(630)는 시구간(605)의 적어도 일부 동안 컴퓨팅 디바이스 상에서 실행될 수 있다. 특히, LP 프로세스(630)는 시간(604)와 시간(606) 사이에 도시된 시구간(605)의 적어도 일부 동안 실행될 수 있다. 일부 경우들에서, 특정 시구간(605)의 적어도 일부 동안 제1 LP 프로세스(624) 및 제2 LP 프로세스(630) 모두를 실행하는 것은 도 4의 블록(402)와 관련될 수 있다. 이와 같이, 일부 경우들에서, LP 프로세스(624)는 컴퓨팅 디바이스의 제1 프로세서를 사용하여 실행될 수 있다. 더욱이, LP 프로세스(630)는 컴퓨팅 디바이스의 제2 프로세서를 사용하여 실행될 수 있다. 이와 같이, 추정된 위치들(626 및 632)는 LP 프로세스들(624 및 630)에 의해 각각 결정될 수 있다.
도 4를 다시 참조하면, 방법(400)은 컴퓨팅 디바이스의 예상된 위치들(620)을 제공하는 컴퓨팅 디바이스의 모션 모델(618)을 포함할 수 있다. 더욱이, 방법(400)은 제1 추정된 위치(626) 및 제2 추정된 위치(632)를 예상된 위치(620)와 비교하는 것을 포함할 수 있다. 더욱이, 방법(400)은, 예상된 위치(620) 주위의 임계치 거리(threshold distance) 내의 제2 추정된 위치(632)에 기초하여, 제1 LP 프로세스(624)를 디스에이블 하는 것을 포함할 수 있다. 특히, 만일 위치(632)가 예상된 위치들(620)에 가깝다면, 그 후 LP 프로세스(624)는 제1 프로세서 상에서 실행되는 것과 컴퓨팅 디바이스의 전력 소비를 줄이는 것으로부터 디스에이블 될 수 있다. 이와 같이, 단계(634)에 도시된 바와 같이, 컴퓨팅 디바이스의 추정된 위치(638)를 결정하기 위해, LP 프로세스(636)는 시구간(607) 동안 제2 프로세서를 사용하여 실행될 수 있다. 특히, LP 프로세스(636)는 시간(606)과 시간(608) 사이에 도시된 시구간(607) 동안 실행될 수 있다.
더욱이, 위치(626)는 예상된 위치(620)와 가까울 수 있다. 예를 들면, LP 프로세스(630)가 GPS 신호를 수신하는 것을 수반하고, 물체(object)(예를 들어, 빌딩 또는 빌딩의 공사)가 컴퓨팅 디바이스로의 GPS 신호를 방해하는 것을 고려해보자. 이와 같이, 위치(626)가 예상된 위치(620)로부터 떨어져 있는 것보다 위치(632)가 예상된 위치(620)로부터 더 멀리 떨어져 있을 수 있다. 그러므로, LP 프로세스(630)는 상기 비교에 기초하여, 디스에이블 될 수 있다. 이러한 경우들에서, LP 프로세스(624)는 제1 프로세서 상에서 실행될 수 있고, 가능하게는 제2 프로세서 보다 더 많은 전력을 소비한다. 그러나, 추정된 위치(626)는 추정된 위치(632)보다 더 정확할 수 있다. 이와 같이, 시구간(605) 이후 LP 프로세스(624)는 계속 실행된다.
추가적으로, 방법(400)은 컴퓨팅 디바이스의 가속도계로부터의 출력들을 수신하는 것을 포함할 수 있다. 이와 같이, 방법(400)은 또한 가속도계로부터의 출력들을 사용하여, 컴퓨팅 디바이스의 인접 위치들 내 변화들을 결정하는 하는 것을 포함할 수 있다. 더욱이, 방법은 컴퓨팅 디바이스의 위치 내 변화들에 기초하여, 컴퓨팅 디바이스의 사용자의 추정된 액티비티를 결정하는 것을 포함할 수 있다. 더욱이, 방법은 사용자의 추정된 액티비티에 기초하여, 모션 모델(618)의 예상된 위치들(620)을 결정하는 것을 포함할 수 있다. 더욱이, 방법(400)은 또한 모션 모델(618)의 예상된 위치(620)와 추정된 위치(638)를 제2 비교 하는 것을 포함할 수 있다. 추가적으로, 방법(400)은 다른 가능한 것들 중에서도 특히, 상기 제2 비교에 기초하여, 다른 시구간 동안 LP 프로세스(636)를 인에이블 및/또는 디스에이블 하는 것을 포함할 수 있다.
도 7은 예시적인 구현예에 따른 다른 흐름도를 도시한다. 블록(702)에서, 방법(700)은, 컴퓨팅 디바이스 상에서, 컴퓨팅 디바이스의 제1 추정된 위치들을 획득하기 위해, 제1 위치 제공자(LP) 프로세스 및 제2 LP 프로세스 중 하나를 실행하는 것을 포함하고, 상기 제1 LP 프로세스를 실행하는 것은 제1 프로세서를 사용하는 것을 포함하고, 상기 제2 LP 프로세스를 실행하는 것은 제2 프로세서를 사용하는 것을 포함한다. 제1 LP 프로세스 및 제2 LP 프로세스는 도 1 내지 6과 관련하여 상기 기술된 임의의 LP 프로세스들일 수 있다.
더욱이, 블록(702)는 도 6의 단계(610)에 의해 도시될 수 있다. 예를 들면, 컴퓨팅 디바이스는 제1 LP 프로세스(612) 및 제2 LP 프로세스(630) 중 하나를 실행시킬 수 있다. 제1 LP 프로세스(612)는 컴퓨팅 디바이스의 제1 추정된 위치(614)를 제공할 수 있다. 더욱이, 제2 LP 프로세스(630)는 컴퓨팅 디바이스의 추정된 위치(632)를 제공할 수 있다. 더욱이, 제1 LP 프로세스(612)는 컴퓨팅 디바이스의 어플리케이션 프로세서 상에서 실행될 수 있고, 제2 LP 프로세스(630)는 컴퓨팅 디바이스의 제2 프로세서 상에서 실행될 수 있다. 일부 경우들에서, 가능하게는 어플리케이션 프로세서에 의해 소비되는 전력을 줄이기 위해, 제2 LP 프로세스(630)는 제1 LP 프로세스(624)보다 더 많은 시구간 동안 실행될 수 있다.
일부 경우들에서, 컴퓨팅 디바이스의 하나 이상의 추정된 위치들은 부정확할 수 있다. 예를 들면, LP 프로세스들(630 및 636)을 사용하기 위한 보다 덜 이상적인 조건들에서, 컴퓨팅 디바이스의 추정된 위치들(632 및/또는 638)의 정확성은 각각 감소될 수 있다. 컴퓨팅 디바이스가 지도를 디스플레이 하고, 컴퓨팅 디바이스의 추정된 위치를 표시하는 파란색 점이 지도 상에서 점프하는 상기 시나리오들 중 하나 이상을 고려해보자. 이러한 경우들에서, LP 프로세스(624)는 다른 추정된 위치들 보다 더 정확할 수 있는 추정된 위치(626)를 제공하기 위해, 실행될 수 있고, 컴퓨팅 디바이스의 어플리케이션 프로세서는 제2 프로세서 보다 더 많은 전력을 소비할 수 있다.
블록(704)에서, 방법(700)은 컴퓨팅 디바이스의 예상된 위치들을 제공하는 컴퓨팅 디바이스의 모션 모델을 결정하는 것을 포함할 수 있다. 모션 모델은, 예를 들면, 도 5와 관련하여 상기 기술된 임의의 방식으로 결정될 수 있다. 특히, 도 5를 다시 참조하면, 액티비티 데이터(502), 센서 데이터(504 및 506), 데드 레코닝 데이터(508), 및 위치 데이터(510)를 포함하는 모션 모델의 데이터(500)에 기초하여, 모션 모델이 결정될 수 있고, 상기 위치 데이터(510)는 컴퓨팅 디바이스의 예상된 위치들을 제공할 수 있다.
일부 실시예들에서, 컴퓨팅 디바이스는 상기 컴퓨팅 디바이스의 가속도계로부터의 출력들에 기초하여, 모션 모델을 결정할 수 있다. 예를 들면, 컴퓨팅 디바이스를 들고 있는 동안 사용자가 가능하게는 사용자의 집에서 사용자의 직장까지 차량을 운전하는 하나 이상의 상기 시나리오들을 고려해보자. 더욱이, 컴퓨팅 디바이스는, 예를 들면, 도 2로부터의 클라이언트 디바이스(200)의 형태를 취한다. 이와 같이, 컴퓨팅 디바이스는 센서들(202)의 일부로서 가속도계를 포함할 수 있다. 그러므로, 모션 데이터(520)는 속도, 가속도, 및/또는 사용자의 집에서 사용자의 직장까지 움직이는 컴퓨팅 디바이스를 표시하는 움직임에 대응할 수 있다.
일부 구현예들에서, 컴퓨팅 디바이스는 위치 내 변경들에 기초하여, 모션 모델을 결정할 수 있다. 예를 들면, 컴퓨팅 디바이스는 가속도계로부터의 출력들을 사용하여, 위치 내 변화들을 결정할 수 있다. 예를 들면, 위치 데이터(526)는 가속도계로부터의 출력들을 사용하여 결정될 수 있다. 더욱이, 위치 데이터(526)는 다양한 위치들 또는 사용자가 집에서 직장까지 운전하는 것과 같은 컴퓨팅 디바이스의 위치 내 변화들에 대응할 수 있다.
일부 경우들에서, 컴퓨팅 디바이스는 다른 방식들로 모션 모델을 결정할 수 있다. 예를 들면, 컴퓨팅 디바이스는 컴퓨팅 디바이스의 위치 내 변화들에 기초하여 사용자의 추정된 액티비티를 결정할 수 있다. 더욱이, 상기 하나 이상의 시나리오들을 고려하면, 액티비티 데이터(518)는 컴퓨팅 디바이스를 가지고 사용자의 집에서부터 사용자의 직장까지 차량을 운전하는 사용자의 추정된 액티비티에 대응할 수 있다. 특히, 추정된 액티비티는 가능하게는 차량의 속도로 인해 빠르게 변화하는 컴퓨팅 디바이스의 위치 내 변화들에 기초할 수 있다. 이와 같이, 모션 모델은 차량을 운전하는 사용자의 추정된 액티비티에 기초하여 결정될 수 있다.
더욱이, 컴퓨터 디바이스는 데드 레코닝 추정들에 기초하여 모션 모델을 결정할 수 있다. 예를 들면, 도 5를 다시 참조하여, 액티비티 데이터(538)가 컴퓨팅 디바이스를 들고 카페테리아로 가는 사용자에 대응하는 시나리오를 고려해보자. 컴퓨팅 디바이스의 센서들(예컨데, 클라이언트 디바이스(200) 내 센서들(210))은, 데드 레코닝 데이터(508)의 모션 데이터(540)와 방향 데이터(544)를 출력할 수 있다. 일부 경우들에서, 상기 데이터는 사용자가 카페테리아로 걷고 있는 방향 및 경로를 결정하기 위해 사용될 수 있다. 이와 같이, 모션 모델의 데이터(500)는 컴퓨팅 디바이스의 모션의 방향에 기초하여 결정될 수 있다.
더욱이, 도 7의 블록(704)은 도 6의 단계(616)에 의해 도시될 수 있다. 예를 들면, 컴퓨팅 디바이스의 모션 모델(618)은 시구간(603) 동안 예상된 위치들을 제공할 수 있다. 그러나, 예상된 위치들(620)은 또한 다른 가능한 시구간들(605 및 607) 동안 제공될 수 있다. 더욱이, 모션 모델(618)은 시간(602) 이전 및/또는 시간(608) 이후에 컴퓨팅 디바이스의 예상된 위치들을 제공할 수 있다.
블록(706)에서, 방법(700)은 모션 모델로부터의 예상된 위치들과 제1 추정된 위치들을 비교하는 것을 포함할 수 있다. 예를 들면, 도 5를 다시 참조하면, 제1 추정된 위치들은 도 5의 모션 모델의 예상된 위치들(526, 536, 및 546) 중 하나 이상과 비교될 수 있다.
더욱이, 블록(706)은 도 6의 단계들(610 및 616)에 의해 도시될 수 있다. 예를 들면, 제1 추정된 위치들(614)의 비교는 모션 모델(618)로부터의 예상된 위치(620)로 만들어질 수 있다.
블록(708)에서, 상기 비교에 적어도 기초하여, 방법(700)은 제1 LP 프로세스(624)와 제2 LP 프로세스(630) 중 어느 것이 예상된 위치들(620)과 가까운 제2 추정된 위치들(626 및 632)을 각각 표시하는지 재평가하기 위해, 시구간(605)의 적어도 일부 동안 제1 LP 프로세스(624) 및 제2 LP 프로세스(630) 모두가 컴퓨팅 디바이스 상에서 동시에 실행되도록 하는 것을 포함한다. 예를 들면, 제2 LP 프로세스(630)가 제1 LP 프로세스(624)의 추정된 위치보다 예상된 위치(620)에 가까운 추정된 위치들(632)을 제공하는 시나리오를 고려해보자. 이와 같은 경우들에서, LP 프로세스(636)는 시구간(607) 동안 추정된 위치(638)를 제공하기 위해 실행될 수 있고, 상기 시구간(607) 동안 LP 프로세스(636)는 제2 프로세서를 사용하여 실행될 수 있다. 일부 구현예들에서, LP 프로세스들(630 및 636)은 가능하게는 컴퓨팅 디바이스에 의해 소비되는 전력을 줄이기 위해 제2 프로세서 상에서 실행될 수 있다.
일부 경우들에서, 제2 LP 프로세스(630)는 제1 LP 프로세스(624)와 비교하여 더 정확한 컴퓨팅 디바이스의 인접 위치를 나타내는 추정된 위치(632)를 제공할 수 있다. 이와 같이, 제1 LP 프로세스(624)는, 가능하게는 제1 LP 프로세스(624)를 실행하기 위해 사용되는 어플리케이션 프로세서에 의해 소비된 전력을 최소화하거나 제거하기 위해, 디스에이블 될 수 있다. 일부 경우들에서, 제1 LP 프로세스(624)는 제2 LP 프로세스(630)와 비교하여 더 정확한 컴퓨팅 디바이스의 인접 위치를 나타내는 추정된 위치들(626)을 제공할 수 있다. 이와 같이, 제2 LP 프로세스(630)는, 가능하게는 제2 LP 프로세스(630)를 실행하기 위해 사용되는 제2 프로세서에 의해 소비된 전력을 최소화하거나 제거하기 위해, 디스에이블 될 수 있다.
도 8A는 예시적인 구현예에 따른 데이터를 도시한다. 예를 들면, 데이터(800)는, 예를 들어, 도 1 내지 7과 관련하여 상기 기술된 임의의 컴퓨팅 디바이스에 저장될 수 있다. 일부 경우들에서, 데이터(800)는 클라이언트 디바이스(200)의 데이터 저장소(212)에 저장된 모션 모델의 일부일 수 있다. 더욱이, 데이터(800)는, 다른 가능한 것들 중에서도 특히, 서버(300)의 데이터 저장소(308) 내 저장된 모션 모델의 일부일 수 있다.
일부 경우들에서, 데이터(800)는 LP 데이터(802), 모션 모델 데이터(806), 및 임계치 데이터(808)를 포함할 수 있다. 임계치 데이터(808)는, 예를 들면, 도 1 내지 7과 관련하여 상기 기술된 임의의 방식으로 결정될 수 있다. 더욱이, LP 데이터(802)는, 예를 들면, LP 프로세스들(612 및 624)에 대응할 수 있다. 더욱이, LP 데이터(804)는 LP 프로세스들(630 및 636)에 대응할 수 있다. 더욱이, 모션 모델 데이터(806)는 모션 모델(618)에 의해 제공된 데이터(620D)에 대응할 수 있다. 특히, 데이터 엔트리들(810, 812 및 814)은 모션 모델(618)에 의해 제공되는 컴퓨팅 디바이스의 예상된 위치(620)에 대응하는 추정된 위치들(820, 828 및 834)을 나타내는 데이터를 각각 포함할 수 있다.
추가적으로, 데이터 엔트리들(810 내지 814)은, 예를 들면, 도 6과 관련하여 상기 기술된 컴퓨팅 디바이스의 추정된 위치들을 포함하는 데이터를 포함할 수 있다. 특히, 데이터 엔트리(810)는 추정된 위치(614)에 대응하는 추정된 위치(816)를 나타내는 데이터를 포함할 수 있다. 더욱이, 데이터 엔트리(812)는 추정된 위치들(626 및 632)과 각각 대응하는 추정된 위치들(824 및 826)을 나타내는 데이터를 포함할 수 있다. 더욱이, 데이터 엔트리(814)는 위치(638)와 대응하는 추정된 위치(832)를 나타내는 데이터를 포함할 수 있다. 추가적으로, 데이터 엔트리들(810 및 814)은 컴퓨팅 디바이스의 추정된 위치들을 나타내는 데이터로 채워질 수 있는 빈 데이터 레코드들(818 및 830)을 포함할 수 있다.
더욱이, 데이터 엔트리들(810 내지 814)은, 예를 들면, 도 6과 관련하여 상기 기술된 컴퓨팅 디바이스의 예상된 위치들을 포함하는 데이터를 포함할 수 있다. 예를 들면, 데이터 엔트리(810)는 가능하게는 시간(602) 이전에 모션 모델(618)에 의해 제공되는 예상된 위치에 대응하는 예상된 위치(820)를 나타내는 데이터를 포함할 수 있다. 더욱이, 데이터 엔트리(812)는 예상된 위치(620)에 대응하는 예상된 위치(828)를 나타내는 데이터를 포함할 수 있다. 더욱이, 데이터 엔트리(814)는 가능하게는 시간(606) 이후에 모션 모델(618)에 의해 제공되는 예상된 위치에 대응하는 예상된 위치(834)를 나타내는 데이터를 포함할 수 있다.
추가적으로, 데이터 엔트리들(810, 812 및 814)은 임계치 데이터(808)를 포함할 수 있다. 예를 들면, 데이터 엔트리(810)는 임계치 거리(822)를 나타내는 데이터를 포함할 수 있고, 데이터 엔트리(812)는 임계치 거리(830)를 나타내는 데이터를 포함할 수 있고, 데이터 엔트리(814)는 임계치 거리(836)를 나타내는 데이터를 포함할 수 있다.
일부 구현예들에서, 추정된 위치들(824 및 826)의 비교는 모션 모델 데이터(806)의 예상된 위치(828)로 만들어질 수 있다. 적어도 상기 비교에 기초하여, 시구간 동안 컴퓨팅 디바이스 상에서 동시에 실행되기 위해 제1 LP 프로세스 및 제2 LP 프로세스가 인에이블 될 수 있다. 특히, 제1 LP 프로세스와 제2 LP 프로세스 중 어느 것이 예상된 위치(834)에 가까운 추정된 위치들을 표시하는지 재평가하기 위해, 제1 LP 프로세스 및 제2 LP 프로세스가 실행될 수 있다.
도 8B는 예시적인 구현예에 따른 임계치 거리를 도시한다. 도 8B에 도시된 바와 같이, 임계치 거리(842)는 도 8A의 하나 이상의 임계치 거리들(822, 830 및 836)에 대응할 수 있다. 더욱이, 도 8B에 도시된 바와 같이, 예상된 위치(828)는 도 8A의 예상된 위치들(820, 828 및 834)에 대응할 수 있다. 예시적인 목적들을 위하여, 예상된 위치들(820, 828 및 834)은 하나의 원으로서 도시될 수 있다. 그러므로, 예상된 위치(828)는 컴퓨팅 디바이스의 다수의 예상된 위치들을 나타낼 수 있음이 주목되어야 한다.
도 8B에 도시된 바와 같이, 예상된 위치들(828) 주변의 임계치 거리(842)는 범위(region)(846)를 설정(establish)할 수 있다. 그러므로, 범위(846) 내의 임의의 위치는 모션 모델(806)에 의해 표시되는 예상된 위치들(828) 주변의 임계치 거리(842) 내 일 수 있다. 더욱이, 예상된 위치(828) 주변의 거리(842)는 임계치 거리(842)의 외부의 범위(848)를 설정할 수 있다.
상기 하나 이상의 시나리오들에서 언급된 바와 같이, 제1 LP 프로세스 및 제2 LP 프로세스는 컴퓨팅 디바이스의 제1 추정된 위치 및 제2 추정된 위치를 각각 제공하기 위해 실행될 수 있다. 일부 경우들에서, 제1 LP 프로세스는 예상된 위치(828) 주변의 임계치 거리(842) 내에 있는 제2 추정된 위치에 근거하여, 디스에이블 될 수 있다. 더욱이, 제1 LP 프로세스는 예상된 위치들(828)로부터의 임계치 거리들(822, 830 및 836) 중 하나 이상을 넘는 위치들을 표시하는 추정된 위치들(816 및 824)에 기초하여, 디스에이블 될 수 있다. 그러나, 일부 경우들에서, 제1 LP 프로세스는 컴퓨팅 디바이스의 남아있는 전력에 기초하여 디스에이블 될 수 있다. 이와 같은 경우들에서, 제1 추정된 위치는 제2 추정된 위치 보다 예상된 위치(828)에 가까울 수 있다.
일부 경우들에서, 제2 LP 프로세스는 예상된 위치(828) 주변의 임계치 거리(842) 내에 있는 제1 추정된 위치에 기초하여, 디스에이블 될 수 있다. 더욱이, 제2 LP 프로세스는 예상된 위치들(828)로부터의 임계치 거리들(822, 830 및 836) 중 하나 이상을 넘는 위치들을 표시하는 추정된 위치(826 및 832)에 기초하여, 디스에이블 될 수 있다.
도 7을 다시 참조하면, 방법(700)은 또한 컴퓨팅 디바이스의 배터리 전력 레벨(battery power level)을 표시하는 정보를 수신할 수 있다. 임계치 양 이하의 배터리 전력 레벨에 기초하여, 방법(700)은 제1 LP 프로세스 및/또는 제2 LP 프로세스를 디스에이블 하는 것을 포함할 수 있다. 이와 같이, 컴퓨팅 디바이스의 전력 레벨은 보존되거나 보호될 수 있다.
일부 실시예들에서, 방법(700)은 컴퓨팅 디바이스 상에서 실행되는 어플리케이션으로부터 위치 정보에 대한 요청을 수신하는 것을 포함할 수 있다. 어플리케이션에 의해 요구되는 데이터의 품질에 기초하여, 제1 LP 프로세스 및/또는 제2 LP 프로세스가 컴퓨팅 디바이스 상에서 실행되도록 선택될 수 있다. 예를 들면, 레스토랑 어플리케이션은 컴퓨팅 디바이스의 근방의 특정 레스토랑들을 검색 및 식별할 수 있다. 특히, 레스토랑 어플리케이션은 정확한 위치 정보를 요구할 수 있다. 이와 같이, 어플리케이션이 적절히 실행되기 위해 요구되는 정확도를 충족시키기 위해, 제1 LP 프로세스 및/또는 제2 LP 프로세스는 컴퓨팅 디바이스 상에서 실행되도록 선택될 수 있다.
더욱이, 방법(700)은 또한 컴퓨팅 디바이스의 추정된 위치들(816 및 824)이 예상된 위치들(828) 주변의 하나 이상의 임계치 거리들(822, 830 및 836)의 외부에 있음을 결정하는 것을 포함할 수 있다. 예를 들면, 추정된 위치(816)는 모션 모델(806)에 의해 표시된 예상된 위치들(828) 주변의 임계치 거리(842)의 외부일 수 있다. 이와 같은 결정들에 응답하여, 제1 LP 프로세스와 제2 LP 프로세스 중 어느 것이 모션 모델 데이터(806)에 의해 표시된 예상된 위치들(828)에 가까운 컴퓨팅 디바이스의 추정된 위치들을 제공하는지 재평가하기 위해, 제1 LP 프로세스 및 제2 LP 프로세스 모두가 컴퓨팅 디바이스 상에서 동시에 실행되고자 인에이블 될 수 있다.
더욱이, 방법(700)은 또한 컴퓨팅 디바이스 상에서 실행되는 제1 LP 프로세스와 제2 LP 프로세스 중 하나가 특정 시구간 동안 위치들을 보고(report)하는 것을 중지함을 결정하는 것을 포함할 수 있다. 이와 같이, 방법(700)은 제1 LP 프로세스와 제2 LP 프로세스 중 어느 것이 모션 모델 데이터(806)에 의해 표시된 예상된 위치들(828)에 가까운 컴퓨팅 디바이스의 추정된 위치들을 제공하는지 재평가하기 위해, 제1 LP 프로세스 및 제2 LP 프로세스 모두로 하여금 컴퓨팅 디바이스 상에서 동시에 실행되도록 하는 것을 포함할 수 있다.
일부 경우들에서, 방법(700)은 특정 시구간의 만료 이후, 컴퓨팅 디바이스의 추가적인 추정된 위치들을 제공하기 위해, 다른 시구간의 적어도 일부 동안 컴퓨팅 디바이스 상에서 제1 LP 프로세스 및 제2 LP 프로세스 모두를 동시에 실행하는 것을 더 포함할 수 있다. 더욱이, 추가적인 추정된 위치들의 제2 비교는 모션 모델의 예상된 위치들로 만들어질 수 있다. 더욱이, 상기 제2 비교에 기초하여 제1 LP 프로세스와 제2 LP 프로세스 중 하나가 디스에이블 될 수 있다.
도 9는 예시적인 구현예에 따른 다른 프로세스 차트를 도시한다. 단계(902)에서, 프로세스는 초기화 될 수 있다. 단계들(904 및 920)에서, 특정 시구간의 적어도 일부 동안 제1 및 제2 LP 프로세스 모두 컴퓨팅 디바이스 상에서 실행될 수 있다. 더욱이, 컴퓨팅 디바이스의 제1 및 제2 추정된 위치들을 결정하기 위해, 제1 및 제2 LP 프로세스 모두가 각각 실행될 수 있다. 이와 같이, 도 9의 프로세스는, 예를 들면, 도 1 내지 8과 관련된 임의의 방식으로 구현될 수 있다. 특히, 단계들(904 및 920)은, 예를 들면, 다른 가능한 것들 중에서도 특히, 도 4의 블록(402)과 도 7의 블록(702)에 대응할 수 있다.
가능하게는 제1 및 제2 추정된 위치들을 모션 모델에 의해 표시된 예상된 위치들과 비교한 이후, 제2 추정된 위치 대신 제1 추정된 위치가 사용될 수 있다. 더욱이, 단계(906)에서, 제1 LP 프로세스는, 예를 들면, 대략 1분 동안 더 잘 실행될 수 있다. 특히, 제2 추정된 위치와 비교하여, 제1 추정된 위치가 컴퓨팅 디바이스의 예상된 위치들에 더 가까울 수 있다. 그러므로, 제2 LP 프로세스가 디스에이블 될 수 있다.
단계(908)에서, 컴퓨팅 디바이스의 제1 추정된 위치들을 결정하거나 리프레시(refresh)하기 위해, 제1 LP 프로세스가 컴퓨팅 디바이스 상에서 실행될 수 있다. 더욱이, 단계(910)에서, 제1 LP 프로세스는, 예를 들면, 대략 24시간 또는 하루 동안 실행될 수 있다. 이와 같이, 단계(904)로 돌아가서, 제1 LP 프로세스 및 제2 LP 프로세스 모두가 컴퓨팅 디바이스 상에서 실행될 수 있다. 단계(912)에서, 제2 LP 프로세스는, 예를 들면, 대략 1분 동안 더 잘 실행될 수 있다. 특히, 제1 추정된 위치보다 제2 추정된 위치들이 컴퓨팅 디바이스의 예상된 위치들에 더 가까울 수 있다. 그러므로, 제1 LP 프로세스가 디스에이블 될 수 있다.
단계(914)에서, 컴퓨팅 디바이스의 제2 추정된 위치들을 결정하거나 리프레시 하기 위해, 제2 LP 프로세스가 컴퓨팅 디바이스 상에서 실행될 수 있다. 그러나, 단계(916)에서, 컴퓨팅 디바이스의 제2 추정된 위치들이 제공되지 않을 수 있다. 컴퓨팅 디바이스 상에서 실행되는 제2 LP 프로세스는 특정 시구간 동안 제2 추정된 위치들을 제공하는 것을 중지할 수 있다. 이와 같이, 단계(904)로 돌아가서, 제1 LP 프로세스 및 제2 LP 프로세스는 컴퓨팅 디바이스 상에서 실행될 수 있다. 단계(918)에서, 컴퓨팅 디바이스의 제1 추정된 위치들이 제공되지 않을 수 있다. 컴퓨팅 디바이스 상에서 실행되는 제1 LP 프로세스는 특정 시구간 동안 제1 추정된 위치들을 제공하는 것을 중지할 수 있다.
단계(920)에 대해 언급된 바와 같이, 제1 및 제2 추정된 위치들 각각을 결정하기 위해, 제1 및 제2 LP 프로세스 모두를 컴퓨팅 디바이스 상에서 동시에 실행될 수 있다. 가능하게는 제1 및 제2 추정된 위치들을 모션 모델에 의해 표시된 예상된 위치들과 비교한 이후, 제1 추정된 위치 대신 제2 추정된 위치가 사용될 수 있다. 더욱이, 단계(926)에서, 제2 LP 프로세스는, 예를 들면, 대략 1분 동안 더 잘 실행될 수 있다. 특히, 제1 추정된 위치보다 제2 추정된 위치가 컴퓨팅 디바이스의 예상된 위치들에 더 가까울 수 있다. 그러므로, 제1 LP 프로세스가 디스에이블 될 수 있다.
단계(914)에 대해 언급된 바와 같이, 컴퓨팅 디바이스의 제2 추정된 위치를 결정하기 위해, 제2 LP 프로세스가 컴퓨팅 디바이스 상에서 실행될 수 있다. 더욱이, 단계(928)에서, 제2 LP 프로세스는, 예를 들면, 대략 24시간 또는 하루 동안 실행될 수 있다. 이와 같이, 단계(920)로 돌아가서, 제1 LP 프로세스 및 제2 LP 프로세스 모두가 컴퓨팅 디바이스 상에서 실행될 수 있다. 더욱이, 단계(924)에서, 제1 LP 프로세스는, 예를 들면, 대략 1분 동안 더 잘 실행될 수 있다. 특히, 제2 추정된 위치들보다 제1 추정된 위치들이 컴퓨팅 디바이스의 예상된 위치들에 더 가까울 수 있다. 그러므로, 제2 LP 프로세스가 디스에이블 될 수 있다. 더욱이, 단계(910)로 돌아가서, 제1 LP 프로세스는, 예를 들면, 대략 24시간 또는 하루 동안 실행될 수 있다. 이와 같이, 단계(904)로 돌아가서, 제1 LP 프로세스 및 제2 LP 프로세스 모두가 컴퓨팅 디바이스 상에서 실행될 수 있다. 이와 같이, 상기 기술된 바와 같이, 프로세스들이 단계(904)에서 계속될 수 있다.
상기 프로세스(900)는 예시적인 목적들을 위해 제공된 것이며, 다양한 다른 목적들 또한 가능함이 주목되어야 한다. 특히, 다른 프로세스들을 결정하기 위해 논리들이 프로세스(900)에 추가될 수 있다. 예를 들면, 단계(904)에서, 제1 LP 프로세스 또는 제2 LP 프로세스가 특정 시구간 동안 더 잘 실행되는지 여부에 따라, 단계들(906 또는 912)이 각각 실행될 수 있다. 더욱이, 단계(904)에서, 만일 제1 LP 프로세스(624)가 특정 시구간 동안 제1 추정된 위치들을 제공하는 것을 중단하였다면, 다른 가능한 것들 중에서도 특히, 단계들(918 및 920)이 만들어질 수 있다.
Ⅳ. 추가적인 예시적 시스템들, 방법들, 및/또는 컴퓨팅 디바이스들
도 10은 예시적인 구현예에 따른 다른 시스템(100)을 도시한다. 시스템(1000) 내의 임의의 블록들은 모듈들, 프로세서들, 또는 다른 디바이스들일 수 있거나, 관련된 기능들을 수행하기 위해 프로세서들에 의해 실행가능한 명령어들의 형태를 취할 수 있다. 시스템(1000)에서, 데이터(1002)의 로그들(logs)은 예컨데, 도 1 내지 9와 관련하여 상기 기술된 컴퓨팅 디바이스들과 같은, 컴퓨팅 디바이스로부터 수신될 수 있다. 데이터의 로그들은 컴퓨팅 디바이스 상에서 실행되는 LP 프로세서들로부터 생성된, 예를 들면, GPS 데이터, 가속도계 데이터, 및 자이로스코프 데이터를 수반하는 데이터를 포함할 수 있다. 더욱이, 데이터의 로그들은 컴퓨팅 디바이스 상에서 실행되는 추가적인 LP 프로세스들로부터 생성된, 예컨데, 가능하게는 각각의 무선 액세스 포인트로부터의 거리를 결정하기 위해 사용되는 각각의 고유한 무선 액세스 포인트로부터의 수신 신호 강도 지수(RSSI) 데이터와 같은 데이터를 포함할 수 있다. 더욱이, 이러한 데이터의 로그들은 각각의 컴퓨팅 디바이스들에 의해 수집된 것으로서 타임스탬프들과 관련될 수 있다.
데드 레코닝 데이터 및 GPS 데이터가 유사한 위치들을 표시하는 데이터의 로그들은, 예를 들면, 비-선형 최소 자승 최적화기(non-linear least squares optimizer)(1004)에 제공될 수 있다. 데드 레코닝 데이터 및 GPS 데이터가 유사한 위치들을 표시하지 않는 데이터의 로그들은 잘못된 데이터 또는 너무 많은 노이즈(noise)를 가진 데이터로서 거절될 수 있다. 비-선형 최소 자승 최적화기(1004)는 블록(1006)에 도시된 바와 같이 GPS 및 데드 레코닝을 사용하여 그리고 상기 기술된 바와 같이 예시적인 시리즈 최적화기(series optimizer)를 사용하여 경로들을 최적화 할 수 있고, 이후 블록(1008)에 도시된 바와 같이 경로들을 일정하게 유지하며 최적의 Wi-Fi 지도들을 구축할 수 있다. 비-선형 최소 자승 최적화기(1004)는, 블록(1010)에 도시된 바와 같이, 동시 지역화(simultaneous localization) 및 맵핑(SLAM) 최적화를 사용하여 경로들 및 Wi-Fi 지도들을 공동으로 최적화 할 수 있고, Wi-Fi 지도를 출력할 수 있다.
블록(1016)에서 도시된 바와 같이, 트레이스들 내 관련된 Wi-Fi 스캔들을 고려하여 가장 가능성 있는 경로들에 대한 전체 검색(global search)을 수행하기 위해, 신뢰할 수 없는 GPS 데이터를 가진 데이터의 트레이스들(traces)(블록(1012))은 계층적 비터비 프로세서(hierarchical Viterbi processor)(1014)에서 수신될 수 있다. 일 예시로서, 데드 레코닝으로부터의 모션 확률들(motion probabilities), 평면도로부터의 전이 확률들(transition probabilities), 또는 Wi-Fi 모델로부터의 출력 확률들(emission probabilities) 중 하나 이상에 기초하여, 비터비 알고리즘(예를 들어, 그래프를 통한 가장 가능성 있는 경로)을 사용하여 사용자 트레이스의 경로가 결정될 수 있다. 비-선형 최소 자승 최적화기(1004)는 블록(1018)에 도시된 바와 같이 전체 검색의 출력을 수신하고 비터비 경로에 맞춰 데드 레코닝을 조정할 수 있으며, 블록(1020)에 도시된 바와 같이 SLAM 최적화를 사용하여 모든 경로들 및 Wi-Fi 지도들을 공동으로 최적화할 수 있다.
SLAM 최적화는 수집된 모든 데이터에 기초하여 데이터가 수집되는 때 사용자의 위치를 결정하기 위해, 상태들(states)의 증가하는 서브세트들 및 제약들(constraints) 상에서 반복적으로 수행될 수 있다. 제1 반복은 서브세트들을 사용하여 최소화 된 함수가 볼록(convex)하게 한다. 이러한 서브세트들 상에서 SLAM을 실행하는 것은 상태 서브세트의 추정을 제공한다. 상기 추정은 포함할 다음 서브세트들 결정하기 및 다음 반복을 위해 사용할 초기화에 사용된다. 그러므로, 최적의 예측으로서 시간 스타팅 포인트로서의 이전의 결정을 사용하여 더 많은 제약들이 추가된다. 시스템(600)은 상태들을 선택하고, 비-선형 최소 자승 해결기(non-linear least squares solver)를 사용하여 상태들을 최적화하고, 다음 최적화 반복을 위해 상태를 초기화 하는 방법을 결정하기 위해 SLAM 알고리즘들을 실행하는 프로세스를 정의한다.
비록 예시들은 Wi-Fi 신호 강도 지도를 결정하는 것으로서 기술되었지만, 지도들의 다른 타입들(예컨데, 자력계 지도들)의 생성을 위해 수동적으로 수집된 트레이스들의 지역화를 결정하기 위하여, 유사하거나 동일한 기능들이 수행될 수 있다.
본 명세서에 기술된 어레인지먼트들(arrangements)은 단지 예시의 목적들임이 이해되어야 한다. 이와 같이, 당해 기술분야의 통상의 지식을 가진 자들은 다른 어레인지먼트들 및 다른 엘리먼트들(예를 들어, 머신들, 인터페이스들, 기능들, 주문들, 및 기능들의 그루핑들, 등)이 대신에 사용될 수 있고, 일부 엘리먼트들은 원하는 결과들에 따라 완전히 생략될 수 있음이 인식될 것이다. 더욱이, 기술된 많은 엘리먼트들은 임의의 적절한 결합 및 위치 또는 결합될 수 있는 독립적인 구조들로서 기술된 다른 구조적인 엘리먼트들에서, 분리되거나 분산된 컴포넌트들로서 구현될 수 있거나 다른 컴포넌트들과 함께 구현될 수 있다.
다양한 양태들 및 실시예들이 본 명세서에 개시되었지만, 다른 양태들 및 실시예들이 당해 기술 분야의 통상의 지식을 가진 자에게 명백할 것이다. 본 명세서에 개시된 다양한 양태들 및 실시예들은 예시의 목적이고, 제한하려는 의도가 아니며, 청구범위들이 가질 수 있는 균등물들의 전체 범위와 함께, 다음의 청구범위들에 의해 표시되는 진정한 범위를 갖는다. 또한, 본 명세서에서 사용된 용어들은 단지 특정 실시예들을 기술하기 위한 목적이며, 제한하려는 의도가 아님이 이해될 것이다.

Claims (20)

  1. 방법에 있어서,
    컴퓨팅 디바이스 상에서, 제1 시구간(time period)의 적어도 일부 동안 제1 위치 제공자(LP) 프로세스 및 제2 LP 프로세스를 실행하는 단계와, 상기 제1 LP 프로세스를 실행하는 것은 제1 프로세서를 사용하는 것을 포함하고, 상기 제2 LP 프로세스를 실행하는 것은 제2 프로세서를 실행하는 것을 포함하며;
    상기 제1 LP 프로세스로부터 상기 컴퓨팅 디바이스의 제1 추정된 위치(first estimated location)를 획득하는 단계와;
    상기 제2 LP 프로세스로부터 상기 컴퓨팅 디바이스의 제2 추정된 위치를 획득하는 단계와;
    상기 제1 LP 프로세스로부터 제1 전력 소비를 결정하는 단계와;
    상기 제2 LP 프로세스로부터 제2 전력 소비를 결정하는 단계와; 그리고
    상기 제1 전력 소비와 상기 제2 전력 소비에 적어도 기초하여, 제2 시구간의 적어도 일부 동안 실행하기 위해 상기 제1 LP 프로세스와 상기 제2 LP 프로세스 중 하나를 선택하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 청구항 1에 있어서,
    상기 제1 전력 소비는 상기 제1 추정된 위치를 결정하기 위해 상기 제1 프로세서를 사용하는 것에 기초하며, 상기 제2 전력 소비는 상기 제2 추정된 위치를 결정하기 위해 상기 제2 프로세서를 사용하는 것에 기초하는 것을 특징으로 하는 방법.
  3. 청구항 1에 있어서,
    상기 제1 LP 프로세스는 융합된 위치 제공자(fused location provider)(FLP)를 포함하는 것을 특징으로 하는 방법.
  4. 청구항 1에 있어서,
    상기 제1 LP 프로세스를 실행하는 것은 소프트웨어 프로세스를 실행하는 것을 포함하고, 상기 제2 LP 프로세스를 실행하는 것은 하드웨어 프로세스를 실행하는 것을 포함하는 것을 특징으로 하는 방법.
  5. 청구항 1에 있어서,
    상기 제1 LP 프로세스로부터 제1 전력 소비를 결정하는 단계와 상기 제2 LP 프로세스로부터 제2 전력 소비를 결정하는 단계는:
    임계치 레벨(threshold level) 이하로 떨어진 상기 컴퓨팅 디바이스의 배터리 전력 레벨의 표시를 수신하는 것과; 그리고
    상기 임계치 레벨 이하로 떨어진 상기 배터리 전력 레벨에 기초하여, 상기 제1 LP 프로세스와 상기 제2 LP 프로세스 중 하나를 디스에이블(disable)하는 것을 포함하는 것을 특징으로 하는 방법.
  6. 청구항 1에 있어서,
    상기 컴퓨팅 디바이스의 예상된 위치들(expected locations)을 제공하는 상기 컴퓨팅 디바이스의 모션 모델(motion model)을 결정하는 단계를 더 포함하고,
    상기 제2 시구간의 적어도 일부 동안 실행하기 위해 상기 제1 LP 프로세스와 상기 제2 LP 프로세스 중 하나를 선택하는 단계는:
    상기 제1 추정된 위치 및 상기 제2 추정된 위치를 상기 모션 모델에 의해 표시된 상기 예상된 위치들과 비교하는 것을 포함하는 것을 특징으로 하는 방법.
  7. 청구항 6에 있어서,
    상기 모션 모델에 의해 제공된 상기 예상된 위치들 주변의 임계치 거리(threshold distance) 내에 있는 상기 제2 추정된 위치에 기초하여, 상기 제1 LP 프로세스를 디스에이블 하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 청구항 6에 있어서,
    상기 모션 모델을 결정하는 단계는 상기 컴퓨팅 디바이스의 하나 이상의 센서들로부터 수신된 데이터에 기초하여, 상기 제1 시구간의 일부 동안 상기 컴퓨팅 디바이스의 추정된 경로를 결정하기 위해 데드 레코닝(dead reckoning)을 사용하는 것을 포함하는 것을 특징으로 하는 방법.
  9. 청구항 6에 있어서,
    상기 모션 모델을 결정하는 단계는:
    상기 컴퓨팅 디바이스의 가속도계(accelerometer)로부터의 출력들을 수신하는 것과;
    상기 가속도계로부터의 상기 출력들을 사용하여 상기 컴퓨팅 디바이스의 위치 내 변화들을 결정하는 것과;
    상기 컴퓨팅 디바이스의 위치 내 상기 변화들에 기초하여, 상기 컴퓨팅 디바이스의 사용자의 추정된 액티비티(estimated activity)를 결정하는 것과; 그리고
    상기 사용자의 상기 추정된 액티비티에 기초하여, 상기 모션 모델의 상기 예상된 위치들을 결정하는 것을 포함하는 것을 특징으로 하는 방법.
  10. 시스템에 있어서,
    하나 이상의 프로세서들과, 상기 하나 이상의 프로세서들은 제1 프로세서 및 제2 프로세서를 포함하며;
    동작들을 수행하기 위해 상기 하나 이상의 프로세서들에 의해 실행가능한 명령어들을 포함하는 데이터 저장소를 포함하며, 상기 동작들은:
    제1 시구간의 적어도 일부 동안 제1 위치 제공자(LP) 프로세스 및 제2 LP 프로세스를 실행하는 동작과, 상기 제1 LP 프로세스를 실행하는 것은 상기 제1 프로세서를 사용하는 것을 포함하고, 상기 제2 LP 프로세스를 실행하는 것은 상기 제2 프로세서를 사용하는 것을 포함하며;
    상기 제1 LP 프로세스로부터 상기 시스템의 제1 추정된 위치를 획득하는 동작과;
    상기 제2 LP 프로세스로부터 상기 시스템의 제2 추정된 위치를 획득하는 동작과;
    상기 제1 LP 프로세스로부터 제1 전력 소비를 결정하는 동작과;
    상기 제2 LP 프로세스로부터 제2 전력 소비를 결정하는 동작과; 그리고
    상기 제1 전력 소비와 상기 제2 전력 소비에 적어도 기초하여, 제2 시구간의 적어도 일부 동안 실행하기 위해 상기 제1 LP 프로세스와 상기 제2 LP 프로세스 중 하나를 선택하는 동작을 포함하는 것을 특징으로 하는 시스템.
  11. 청구항 10에 있어서,
    상기 제1 전력 소비는 상기 제1 추정된 위치를 결정하기 위해 상기 제1 프로세서를 사용하는 것에 기초하며, 상기 제2 전력 소비는 상기 제2 추정된 위치를 결정하기 위해 상기 제2 프로세서를 사용하는 것에 기초하는 것을 특징으로 하는 시스템.
  12. 청구항 10에 있어서,
    상기 제1 LP 프로세스는 융합된 위치 제공자(FLP)를 포함하는 것을 특징으로 하는 시스템.
  13. 청구항 10에 있어서,
    상기 시스템의 예상된 위치들을 제공하는 상기 시스템의 모션 모델을 결정하는 동작을 더 포함하는 것을 특징으로 하는 시스템.
  14. 청구항 13에 있어서,
    상기 모션 모델에 의해 제공된 상기 예상된 위치들 주변의 임계치 거리의 외부에 있는 상기 제1 추정된 위치와 상기 제2 추정된 위치 중 하나에 기초하여, 상기 제1 LP 프로세스와 상기 제2 LP 프로세스 중 하나를 디스에이블 하는 동작을 더 포함하는 것을 특징으로 하는 시스템.
  15. 방법에 있어서,
    컴퓨팅 디바이스 상에서, 상기 컴퓨팅 디바이스의 제1 추정된 위치들을 획득하기 위해, 제1 위치 제공자(LP) 프로세스와 제2 LP 프로세스 중 하나를 실행하는 단계와, 상기 제1 LP 프로세스를 실행하는 것은 제1 프로세서를 사용하는 것을 포함하고, 상기 제2 프로세스를 실행하는 것은 제2 프로세서를 사용하는 것을 포함하며;
    상기 컴퓨팅 디바이스의 예상된 위치들을 제공하는 상기 컴퓨팅 디바이스의 모션 모델을 결정하는 단계와;
    상기 모션 모델로부터의 상기 예상된 위치들과 상기 제1 추정된 위치들을 비교하는 단계와; 그리고
    상기 비교에 적어도 기초하여, 상기 제1 LP 프로세스와 상기 제2 LP 프로세스 중 어느 것이 상기 예상된 위치들에 가까운 제2 추정된 위치들을 표시하는지 재평가(reevaluate)하기 위해, 시구간의 적어도 일부 동안 상기 제1 LP 프로세스 및 상기 제2 LP 프로세스 모두로 하여금 상기 컴퓨팅 디바이스 상에서 동시에 실행되도록 하는 단계를 포함하는 것을 특징으로 하는 방법.
  16. 청구항 15에 있어서,
    상기 제1 LP 프로세스로부터 제1 전력 소비를 결정하는 단계와, 상기 제1 전력 소비는 상기 제1 프로세서를 사용하는 것에 기초하며;
    상기 제2 LP 프로세스로부터 제2 전력 소비를 결정하는 단계와, 상기 제2 전력 소비는 상기 제2 프로세서를 사용하는 것에 기초하며; 그리고
    상기 제2 전력 소비를 초과하는 상기 제1 전력 소비에 적어도 기초하여, 상기 제1 LP 프로세스를 디스에이블 하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  17. 청구항 15에 있어서,
    상기 제1 LP 프로세스는 융합된 위치 제공자(FLP)를 포함하는 것을 특징으로 하는 방법.
  18. 청구항 15에 있어서,
    상기 제1 LP 프로세스와 상기 제2 LP 프로세스 중 하나가 상기 시구간 동안 상기 제2 추정된 위치들을 제공하는 것을 중단함을 결정하는 단계와; 그리고
    상기 제2 추정된 위치들을 제공하는 것을 중단하는 상기 제1 LP 프로세스와 상기 제2 LP 프로세스 중 하나를 제2 시구간 동안 디스에이블 하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  19. 청구항 15에 있어서,
    상기 시구간의 만료 이후, 상기 컴퓨팅 디바이스의 추가적인 추정된 위치들을 제공하기 위해, 제2 시구간의 적어도 일부 동안 상기 제1 LP 프로세스 및 상기 제2 LP 프로세스 모두를 상기 컴퓨팅 디바이스 상에서 동시에 실행하는 단계와;
    상기 모션 모델로부터의 상기 예상된 위치들과 상기 추가적인 추정된 위치들을 제2 비교하는 단계와; 그리고
    상기 제2 비교에 기초하여, 상기 제1 LP 프로세스와 상기 제2 LP 프로세스 중 하나를 디스에이블 하는 단계를 포함하는 것을 특징으로 하는 방법.
  20. 청구항 15에 있어서,
    상기 컴퓨팅 디바이스의 상기 제1 추정된 위치들이 상기 모션 모델에 의해 표시된 상기 예상된 위치들 주변의 임계치 거리의 외부에 있음을 결정하는 단계와;
    상기 결정에 응답하여, 상기 제1 LP 프로세스와 상기 제2 LP 프로세스 중 어느 것이 상기 예상된 위치들에 가까운 상기 컴퓨팅 디바이스의 상기 제2 추정된 위치들을 표시하는지 재평가하기 위해, 상기 시구간의 적어도 일부 동안 상기 제1 LP 프로세스 및 상기 제2 LP 프로세스 모두로 하여금 상기 컴퓨팅 디바이스 상에서 동시에 실행되도록 하는 단계를 포함하는 것을 특징으로 하는 방법.
KR1020167031998A 2014-05-16 2015-04-20 위치 제공자 프로세스들을 실행 KR101837709B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461994546P 2014-05-16 2014-05-16
US61/994,546 2014-05-16
US14/530,997 US9439043B2 (en) 2014-05-16 2014-11-03 Running location provider processes
US14/530,997 2014-11-03
PCT/US2015/026730 WO2015175165A1 (en) 2014-05-16 2015-04-20 Running location provider processes

Publications (2)

Publication Number Publication Date
KR20160145159A true KR20160145159A (ko) 2016-12-19
KR101837709B1 KR101837709B1 (ko) 2018-03-13

Family

ID=54480418

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167031998A KR101837709B1 (ko) 2014-05-16 2015-04-20 위치 제공자 프로세스들을 실행

Country Status (5)

Country Link
US (2) US9439043B2 (ko)
EP (1) EP3143814B1 (ko)
KR (1) KR101837709B1 (ko)
CN (1) CN106416396B (ko)
WO (1) WO2015175165A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10096216B1 (en) 2014-12-16 2018-10-09 Amazon Technologies, Inc. Activation of security mechanisms through accelerometer-based dead reckoning
US9432944B1 (en) * 2015-06-13 2016-08-30 KeepTrax, Inc. Determining whether a mobile device user is substantially stationary within a geo-fence
CN106102005A (zh) * 2016-06-16 2016-11-09 惠州Tcl移动通信有限公司 一种降低定位移动设备功耗的方法及系统
US10650621B1 (en) 2016-09-13 2020-05-12 Iocurrents, Inc. Interfacing with a vehicular controller area network
KR102304260B1 (ko) 2017-03-24 2021-09-23 삼성전자주식회사 위치 결정 방법, 전자 장치 및 저장 매체
CN108055644B (zh) * 2017-12-13 2021-01-15 Oppo广东移动通信有限公司 定位控制方法、装置、存储介质及终端设备

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001086492A1 (en) * 2000-05-05 2001-11-15 Abm Industries Pty. Ltd. End user to mobile service provider message exchange system based on proximity
JP2002320254A (ja) * 2001-04-20 2002-10-31 Pioneer Electronic Corp 移動体通信装置及びその位置検出方法
CN1640171B (zh) * 2002-06-14 2010-05-26 Nxp股份有限公司 一种在移动设备中管理位置数据的方法和一种具有改进的位置数据管理能力的移动设备
US6975959B2 (en) * 2002-12-03 2005-12-13 Robert Bosch Gmbh Orientation and navigation for a mobile device using inertial sensors
JP2007172322A (ja) 2005-12-22 2007-07-05 Canon Inc 分散処理型マルチプロセッサシステム、制御方法、マルチプロセッサ割り込み制御装置及びプログラム
US7970575B2 (en) 2007-04-20 2011-06-28 Industrial Technology Research Institute Method and apparatus for determining accuracy of the estimated location for a target in a wireless system
US20090030885A1 (en) * 2007-07-26 2009-01-29 Ridecharge Method and system for on-demand and scheduled services relating to travel and transportation
WO2009089182A1 (en) * 2008-01-03 2009-07-16 Lubeck Olaf M Method for requesting transportation services
US8214139B2 (en) * 2008-01-25 2012-07-03 Garmin Switzerland Gmbh Position source selection
US8089398B2 (en) * 2008-06-06 2012-01-03 Skyhook Wireless, Inc. Methods and systems for stationary user detection in a hybrid positioning system
US20100058086A1 (en) 2008-08-28 2010-03-04 Industry Academic Cooperation Foundation, Hallym University Energy-efficient multi-core processor
US20100255856A1 (en) * 2009-04-03 2010-10-07 Microsoft Corporation Location Sensing Selection for Mobile Devices
JP2011209846A (ja) 2010-03-29 2011-10-20 Panasonic Corp マルチプロセッサシステムとそのタスク割り当て方法
US8495395B2 (en) 2010-09-14 2013-07-23 Advanced Micro Devices Mechanism for controlling power consumption in a processing node
US8810454B2 (en) * 2011-10-13 2014-08-19 Microsoft Corporation Power-aware tiered geofencing and beacon watchlists
US9578115B2 (en) * 2012-06-15 2017-02-21 Qualcomm Incorporated Indoor location server provision and discovery
KR101947652B1 (ko) * 2012-09-28 2019-04-25 삼성전자 주식회사 휴대 단말기의 저전력 근거리 통신 기능 운용 방법 및 장치
KR20140057083A (ko) 2012-11-02 2014-05-12 삼성전자주식회사 위치 기반 서비스를 제공하는 방법 및 그에 따른 무선 단말
CN105230113B (zh) * 2013-06-26 2019-06-14 英特尔Ip公司 优化无线设备中的分布式位置管理实体
US9942718B2 (en) * 2013-07-03 2018-04-10 Qualcomm Incorporated Methods and apparatuses for use in providing location parameters to mobile applications
US9794984B2 (en) * 2013-09-17 2017-10-17 Qualcomm Incorporated Techniques for utilizing access point vicinity information

Also Published As

Publication number Publication date
EP3143814A4 (en) 2018-01-24
KR101837709B1 (ko) 2018-03-13
WO2015175165A1 (en) 2015-11-19
US20160345136A1 (en) 2016-11-24
US9794754B2 (en) 2017-10-17
EP3143814A1 (en) 2017-03-22
US9439043B2 (en) 2016-09-06
CN106416396A (zh) 2017-02-15
CN106416396B (zh) 2019-11-12
EP3143814B1 (en) 2023-11-01
US20150334532A1 (en) 2015-11-19

Similar Documents

Publication Publication Date Title
US10750470B2 (en) Systems and methods for determining if a receiver is inside or outside a building or area
KR101837709B1 (ko) 위치 제공자 프로세스들을 실행
US10274346B2 (en) Determining quality of a location-determination algorithm associated with a mobile device by processing a log of sensor data
US9544871B2 (en) Determining and aligning a position of a device and a position of a wireless access point (AP)
US9113291B2 (en) Location detection within identifiable pre-defined geographic areas
US9432964B2 (en) Method and apparatus for determining locations of access points
US9247518B2 (en) Mobile device positioning responsive to externally generated regional candidate position fix mode selection
US9179251B2 (en) Systems and techniques for colocation and context determination
US9377519B2 (en) Server-based mobile device regional candidate position fix mode selection
US9357520B2 (en) Methods and systems for signal diffusion modeling for a discretized map of signal strength
US20130016012A1 (en) Method and/or apparatus for backtracking position estimation
CA2946667A1 (en) Adaptive position determination
US10240995B2 (en) Construction of a surface of best GPS visibility from passive traces using SLAM for horizontal localization and GPS readings and barometer readings for elevation estimation
CN105052215A (zh) 移动装置功率管理同时提供位置服务
US10527430B2 (en) Method and apparatus for beacon data collection
US20180084387A1 (en) Determining Location Based on Measurements of Device Orientation
US20140235264A1 (en) Modifying navigation assistance parameters of a mobile-based positioning capability based on observations gathered by a network-based positioning capability
Shoushtari et al. Many Ways Lead to the Goal—Possibilities of Autonomous and Infrastructure-Based Indoor Positioning. Electronics 2021, 10, 397

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