KR20210130159A - 연속적인 제어기 보정 - Google Patents

연속적인 제어기 보정 Download PDF

Info

Publication number
KR20210130159A
KR20210130159A KR1020217027461A KR20217027461A KR20210130159A KR 20210130159 A KR20210130159 A KR 20210130159A KR 1020217027461 A KR1020217027461 A KR 1020217027461A KR 20217027461 A KR20217027461 A KR 20217027461A KR 20210130159 A KR20210130159 A KR 20210130159A
Authority
KR
South Korea
Prior art keywords
proximity
value
capacitance value
controller
maximum
Prior art date
Application number
KR1020217027461A
Other languages
English (en)
Inventor
스콧 더글라스 니엣펠드
제프리 조지 라인바우흐
Original Assignee
밸브 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 밸브 코포레이션 filed Critical 밸브 코포레이션
Publication of KR20210130159A publication Critical patent/KR20210130159A/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/214Input arrangements for video game devices characterised by their sensors, purposes or types for locating contacts on a surface, e.g. floor mats or touch pads
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/218Input arrangements for video game devices characterised by their sensors, purposes or types using pressure sensors, e.g. generating a signal proportional to the pressure applied by the player
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/22Setup operations, e.g. calibration, key configuration or button assignment
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/24Constructional details thereof, e.g. game controllers with detachable joystick handles
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/44Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment involving timing of operations, e.g. performing an action within a time slot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/014Hand-worn input/output arrangements, e.g. data gloves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/10Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals
    • A63F2300/1043Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals being characterized by constructional details

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Electronic Switches (AREA)
  • Position Input By Displaying (AREA)

Abstract

근접 센서에 대한 값들의 범위를 결정하는 것, 근접 센서로부터 근접성 데이터를 수신하는 것, 최대 값과 연관된 한계를 감쇠시키는 것, 최소 값과 연관된 한계를 감쇠시키는 것, 근접 센서에 의해 검출된 값들의 범위를 결정하는 것, 및 근접 센서에 대한 업데이트된 스케일 팩터를 결정하는 것을 포함하는 방법.

Description

연속적인 제어기 보정
관련 출원에 대한 상호 참조
본 특허 출원은 2019년 2월 28일자로 출원된 미국 실용 특허 출원 제16/289,259호에 대한 우선권을 주장하며, 이는 본 명세서에 참조로서 전체적으로 포함된다.
핸드헬드 제어기들은, 예를 들어, 컴퓨팅 디바이스에 입력을 제공하기 위한 아키텍처들의 어레이에 사용된다. 예를 들어, 핸드헬드 제어기들은 게임 산업에서 사용되어 플레이어들이 게임 애플리케이션을 실행하는 개인용 컴퓨팅 디바이스, 게임 콘솔, 게임 서버 등과 상호작용하도록 한다. 일부 경우들에서, 핸드헬드 제어기들은 가상 현실(VR) 환경에서의 사용을 발견할 수 있고, 잡기, 던지기, 쥐기 등과 같은 자연스러운 상호작용들을 모방할 수 있다. 현재의 핸드헬드 제어기들은 다양한 기능을 제공하지만, 추가적인 기술적 개선은 사용자 경험을 향상시킬 수 있다.
도 1은 본 개시내용의 예시적인 실시예에 따른, 핸드 리테이너가 개방 위치에 있는 제어기를 도시한다.
도 2는 본 개시내용의 예시적인 실시예에 따른 손을 펼쳐 손바닥 쪽이 위로 향한 사용자의 손 안의 도 1의 제어기를 도시한다.
도 3은 본 개시내용의 예시적인 실시예에 따른 사용자의 움켜쥔 손 안의 도 1의 제어기를 도시한다.
도 4는 본 개시내용의 예시적인 실시예에 따른 손을 움켜쥐고 손바닥쪽이 아래로 향한 사용자의 손 안의 도 1의 제어기를 도시한다.
도 5는 본 개시내용의 예시적인 실시예에 따른 핸드 리테이너들이 개방 위치에 있는, 한 쌍의 제어기들을 도시한다.
도 6은 본 개시내용의 예시적인 실시예에 따른 도 1의 제어기의 근접 센서를 도시한다.
도 7은 본 개시내용의 예시적인 실시예에 따른 도 1의 제어기의 근접 센서를 구성하기 위한 예시적인 프로세스를 도시한다.
도 8은 본 개시내용의 예시적인 실시예에 따른 도 1의 제어기의 근접 센서를 구성하기 위한 예시적인 프로세스를 도시한다.
도 9는 본 개시내용의 예시적인 실시예에 따른 도 1의 제어기의 근접 센서를 구성하기 위한 예시적인 프로세스를 도시한다.
도 10은 본 개시내용의 예시적인 실시예에 따른 도 1의 제어기의 근접 센서를 구성하기 위한 예시적인 프로세스를 도시한다.
도 11은 본 개시내용의 예시적인 실시예에 따른 도 1의 제어기의 근접 센서를 구성하는 것을 예시하는 예시적인 차트를 도시한다.
도 12는 본 개시내용의 예시적인 실시예에 따른 도 1의 제어기의 예시적인 구성요소들을 도시한다.
특히, 터치-감응형 제어부들을 갖는 핸드헬드 제어기들 및/또는 터치-감응형 제어부들을 연속적으로 보정하기 위한 방법들이 본 명세서에 기술된다. 일부 경우들에서, 본 명세서에 기술된 핸드헬드 제어기들은 디바이스(예컨대, 텔레비전, 오디오 시스템, 개인용 컴퓨팅 디바이스, 게임 콘솔 등)를 제어하여 비디오 게임 플레이 등에 참여할 수 있다. 핸드헬드 제어기들은 조이스틱들, 트랙패드들, 트랙볼들, 버튼들과 같은 하나 이상의 제어부들, 또는 핸드헬드 제어기의 사용자에 의해 동작가능한 다른 제어부들을 포함할 수 있다. 또한, 핸드헬드 제어기들은 사용자의 존재, 근접성, 위치 및/또는 제스처를 검출하도록 구성된 센서들을 포함할 수 있다. 예를 들어, 핸드헬드 제어기들은 핸드헬드 제어기에 대한 사용자의 손가락 또는 손가락의 부분들과 같은 하나 이상의 객체들의 근접성을 검출하도록 구성된 근접 센서를 포함할 수 있다. 그러나, 핸드헬드 제어기는 적외선 센서, 음향 음파를 이용하는 센서, 및/또는 핸드헬드 제어기에서의 터치 입력 및/또는 핸드헬드 제어기에 대한 하나 이상의 객체들의 근접성을 검출하도록 구성된 임의의 다른 유형의 센서를 포함할 수 있다.
일부 경우들에서, 근접 센서는 행들, 열들, 그리드, 및/또는 그룹(들)으로 배열된 근접 센서들 또는 용량성 패드들의 어레이를 포함할 수 있다. 용량성 패드들은 핸드헬드 제어기에 대한 손가락(들)의 근접성에 대응하는 근접성 데이터(예컨대, 커패시턴스 값)를 생성할 수 있다. 핸드헬드 제어기는 핸드헬드 제어기 위의 손가락의 터치 또는 상대적인 호버(hover)와 커패시턴스 값들을 연관시키기 위해 개별 용량성 패드들에 의해 검출된 커패시턴스 값들을 연속적으로 모니터링할 수 있다. 예컨대, 근접성 데이터는 하나 이상의 손가락들이 핸드헬드 제어기와 접촉(예컨대, 물리적으로 터치)하는 것을 나타낼 수 있고/있거나 하나 이상의 손가락들이 핸드헬드 제어기 위에서 호버링하는 것을 나타낼 수 있다. 근접성 데이터는 또한 손가락이 핸드헬드 제어기 위에서 또는 그에 대해 호버링하는 거리를 결정하는 데 사용될 수 있다. 다시 말해서, 손가락(들)이 핸드헬드 제어기 위에서 호버링하는 경우, 근접성 데이터는 손가락들이 핸드헬드 제어기 위에서(또는 그로부터) 얼마나 멀리 또는 가까이 배치되는지를 나타낼 수 있다. 커패시턴스 값들의 범위를 사용하여, 손가락의 상대적 위치(즉, 완전히 펼치는 것과 핸드헬드 제어기를 터치하는 것 사이)가 결정될 수 있다.
일부 경우들에서, 용량성 패드들은 사용자의 특정 손가락들(예컨대, 중지, 약지, 소지 등) 또는 손가락의 소정 부분들(예컨대, 손가락 끝)과 연관될 수 있다. 용량성 패드들을 그룹들로 배열하거나, 또는 소정 용량성 패드들을 손가락들과 연관시킴으로써, 핸드헬드 제어기는 커패시턴스 값들을 사용자의 소정 손가락들(또는 손가락의 부분)에 맵핑할 수 있다.
핸드헬드 제어기는 근접성 데이터를 수신 및/또는 분석하기 위해 근접 센서에 통신가능하게 결합되는 하나 이상의 프로세서들을 포함할 수 있다. 근접 센서가 용량성 패드들을 포함하는 경우들에서, 하나 이상의 프로세서들은 개별 용량성 패드들로부터 근접성 데이터(예컨대, 커패시턴스 값)를 수신할 수 있다. 하나 이상의 프로세서들, 또는 다른 로직(예컨대, 소프트웨어, 하드웨어, 펌웨어 등)은 근접성 데이터를 분석하여, 검출된 커패시턴스 값을 결정하고 이 커패시턴스 값을 핸드헬드 제어기에 대한 손가락의 상대적 근접성과 연관시킬 수 있다. 다시 말해서, 핸드헬드 제어기는 근접성 데이터를 이용하여, 손가락의 존재 및/또는 손가락(들)의 위치(또는 "포지션")를 결정할 수 있다. 또한, 핸드헬드 제어기는 개별 용량성 패드들로부터 근접성 데이터를 수신할 수 있고, 근접성 데이터를 사용자의 특정 손가락들과 연관시키거나 그룹화할 수 있다. 근접성 데이터를 소정 손가락들과 연관시키는 것은 게임 콘솔, 원격 시스템, 헤드-마운트 디스플레이, 가상 현실 환경, 또는 다른 컴퓨팅 디바이스들 및/또는 핸드헬드 제어기(들)로 하여금 사용자의 손 제스처를 묘사하는 이미지 데이터를 생성할 수 있게 한다.
예로서, 근접성 데이터는 사용자가 그의 또는 그녀의 소지가 아닌 그들의 중지 및 약지로 핸드헬드 제어기를 파지하는 것을 나타낼 수 있다. 근접성 데이터는 또한 핸드헬드 제어기에 대한 소지의 상대적 근접성(즉, 소지가 핸드헬드 제어기로부터 얼마나 멀리 배치되어 있는지)을 나타낼 수 있다. 근접성 데이터를 이용하고, 근접성 데이터를 사용자의 소정 손가락들과 연관시켜서, 핸드헬드 제어기(또는 다른 통신가능하게 결합된 디바이스)는 손가락 위치들을 나타내는 표시(또는 다른 정보)를 생성할 수 있다. 예를 들어, 게임 콘솔은 표시를 이용하여, 소지가 아닌 그들의 중지 및 약지로 객체를 잡고 있는 사용자를 보여주는 손 제스처에 대응하는 이미지 데이터를 생성할 수 있다.
핸드헬드 제어기(또는 다른 통신가능하게 결합된 디바이스)는 다양한 파지들(예컨대, 상이한 손 크기, 상이한 손가락 크기 등) 및/또는 다양한 환경 조건들(예컨대, 습도, 온도 등)을 수용하기 위해 근접 센서를 연속적으로 보정할 수 있다. 예를 들어, 핸드헬드 제어기는 커패시턴스 값들을 사용자의 손가락 위치들과 연관시키기 위해 근접성 데이터를 연속적으로 모니터링할 수 있다. 예로서, 검출된 근접성 데이터(예컨대, 커패시턴스 값들)는 사용자의 파지, 예컨대 사용자가 어떻게 핸드헬드 제어기를 잡고 있는지, 사용자가 어떤 게임을 플레이하는지, 및/또는 사용자의 손의 물리적 특징부들(예컨대, 손가락의 길이, 손가락의 폭 등)에 따라 달라질 수 있다. 일부 경우들에서, 근접 센서를 연속적으로 보정하는 것은 개별 용량성 패드들에 의해 검출된 커패시턴스 값들의 범위를 결정하는 것을 포함할 수 있다.
커패시턴스 값들의 범위는 핸드헬드 제어기를 터치하는 손가락과 연관된 커패시턴스 값 및 핸드헬드 제어기로부터 완전히 펼쳐지는 손가락과 연관된 커패시턴스 값을 포함할 수 있다. 일부 경우들에서, 이러한 커패시턴스 값들은 각각 최대 커패시턴스 값 및 최소 커패시턴스 값에 대응할 수 있다. 개별 용량성 패드들에 대한 커패시턴스 값들의 범위를 알면 후속 커패시턴스 값들이 정규화될 수 있고, 이는 결국 손가락 위치를 결정하는 데 사용될 수 있다. 근접 센서의 개별 용량성 패드들은 최대 커패시턴스 값 및 최소 커패시턴스 값을 포함할 수 있어서, 개별 용량성 패드들로부터 수신된 후속 커패시턴스 값들이 정규화될 수 있게 한다. 즉, 커패시턴스 값들의 범위를 이용하여, 핸드헬드 제어기, 또는 다른 통신가능하게 결합된 디바이스는 용량성 패드와 연관된 스케일 팩터 및/또는 바이어스를 연속적으로 결정할 수 있다. 스케일 팩터 및/또는 바이어스는 개별 용량성 패드들에서 수신된 커패시턴스 값을 정규화(또는 보정)하고/하거나 근접 센서의 용량성 패드들을 가로질러 수신된 커패시턴스 값들을 정규화하는 데 사용될 수 있다. 일부 경우들에서, 개별 용량성 패드들에 대한 바이어스, 스케일 팩터, 및/또는 커패시턴스 값들의 범위는, 용량성 패드들이 상이하게 응답하고/하거나 상이한 커패시턴스 값들을 생성할 수 있기 때문에 달라질 수 있다.
예로서, 용량성 패드들에서 검출된 커패시턴스 값들은 용량성 패드의 크기 및/또는 제조 조건들에 의존할 수 있다. 스케일 팩터를 계산하고/하거나 개별 용량성 패드들에 대한 바이어스를 아는 것은, 커패시턴스 값들이 근접 센서의 다른 용량성 패드들로부터 수신된 커패시턴스 값들로 정규화될 수 있게 한다. 서로에 대한 용량성 패드들의 정규화 및/또는 보정은 사용자에 의해 수행되는 손 제스처들을 정확하게 결정할 수 있다.
근접 센서의 용량성 패드들에 의해 검출된 커패시턴스 값들은, 예컨대 사용자의 손이 촉촉해지는(예컨대, 땀이 나는) 경우, 게임플레이 경험 전반에 걸쳐 변할 수 있다. 예를 들어, 용량성 패드들에 의해 측정되거나 검출된 근접성 데이터는, 예를 들어, 사용자의 손이 축축해짐에 따라, 습도가 환경 내에서 증가함에 따라, 그리고/또는 사용자가 그의 또는 그녀의 파지를 조정함에 따라, 변할 수 있다. 결과적으로, 주어진 용량성 패드에 의해 검출된 커패시턴스 값들의 범위는 변할 수 있다. 바이어스 및 스케일 팩터는 그에 대응하여 변할 수 있다. 사용자의 손 제스처들을 정확하게 묘사하기 위하여, 핸드헬드 제어기는 최대 커패시턴스 값과 연관된 한계 및/또는 최소 커패시턴스 값과 연관된 한계를 감쇠시킬 수 있다. 일부 경우들에서, 커패시턴스 값들을 수신하는 것에 적어도 부분적으로 기초하여, 핸드헬드 제어기는 검출된 커패시턴스 값들을 향해 최대 커패시턴스 값 및/또는 최소 커패시턴스 값을 연속적으로 감쇠시킬 수 있다. 그렇게 함으로써, 커패시턴스 값들의 범위는 커패시턴스 값들의 범위가 근접 센서에서 검출된 커패시턴스 값들에 대응하도록 연속적으로 변할 수 있다. 일부 경우들에서, 핸드헬드 제어기가 임계 시간량, 프레임들의 수, 또는 카운트들의 수 동안 최대 커패시턴스 값의 미리결정된 범위 내의 커패시턴스 값을 검출하지 않는 경우, 최대 커패시턴스 값은 감쇠할 수 있다. 예를 들어, 최대 커패시턴스 값의 미리결정된 범위는 핸드헬드 제어기에 의해 검출된 커패시턴스 값들의 범위(즉, 최대 커패시턴스 값과 최소 커패시턴스 값 사이)의 1/4일 수 있고, 핸드헬드 제어기가 최대 커패시턴스 값의 미리결정된 범위 내의 커패시턴스 값을 검출하지 않는 경우, 최대 커패시턴스 값은 검출된 커패시턴스 값들을 향해 감쇠할 수 있다. 다시 말해서, 커패시턴스 값(들)이 최대 커패시턴스 값의 미리결정된 범위 내에 있지 않은 경우, 최대 커패시턴스 값은 최소 커패시턴스 값을 향해 감쇠할 수 있다. 다른 경우들에서, 미리결정된 시간량, 프레임들의 수, 또는 카운트들의 수에 걸쳐 결정된 평균 커패시턴스 값이 최대 커패시턴스 값의 미리결정된 범위 내에 있지 않은 경우, 최대 커패시턴스 값은 감쇠할 수 있다. 예로서, 손가락이 축축해지면, 핸드헬드 제어기는 검출된 커패시턴스 값들의 감소를 관찰할 수 있다. 최대 커패시턴스 값은 새로운 최대 커패시턴스 값을 업데이트 또는 결정하기 위해 최소 커패시턴스 값을 향해 감쇠할 수 있다. 최대 커패시턴스 값이 핸드헬드 제어기를 터치하는 객체(예컨대, 손가락)와 연관됨에 따라, 최대 커패시턴스 값을 감쇠시킴으로써, 핸드헬드 제어기는 손가락 위치들을 정확하게 결정할 수 있다. 최대 커패시턴스 값을 감쇠시키는 것은 또한 근접 센서의 개별 용량성 패드들에 대한 커패시턴스 값들의 업데이트된 범위, 업데이트된 바이어스, 및/또는 업데이트된 스케일 팩터를 결정하기 위해 사용될 수 있다.
최소 커패시턴스 값은 유사하게 감쇠할 수 있다. 즉, 커패시턴스 값들을 수신하는 것에 적어도 부분적으로 기초하여, 핸드헬드 제어기는 검출된 커패시턴스 값들을 향해 최소 커패시턴스 값을 연속적으로 감쇠시켜, 커패시턴스 값들의 범위가 근접 센서에서 검출된 커패시턴스 값들에 대응하도록 변하게 할 수 있다. 예를 들어, 핸드헬드 제어기가 임계 시간량, 프레임들의 수, 또는 카운트들의 수 동안 최소 커패시턴스 값의 미리결정된 범위 내의 커패시턴스 값을 검출하지 않는 경우, 최소 커패시턴스 값은 감쇠할 수 있다. 일부 경우들에서, 최소 커패시턴스 값의 미리결정된 범위는 핸드헬드 제어기에 의해 검출된 커패시턴스 값들의 범위의 1/4일 수 있고, 핸드헬드 제어기가 최소 커패시턴스 값의 미리결정된 범위 내의 커패시턴스 값을 검출하지 않는 경우, 최소 커패시턴스 값은 감쇠할 수 있다. 다른 경우들에서, 이전(previous) 시간량, 프레임들의 수, 또는 카운트들의 수에 걸쳐 검출된 커패시턴스 값들의 평균이 최소 커패시턴스 값의 미리결정된 범위 내에 있지 않은 경우, 최소 커패시턴스 값은 감쇠할 수 있다. 최소 커패시턴스 값이 핸드헬드 제어기로부터 완전히 펼쳐지는 객체(예컨대, 손가락)와 연관됨에 따라, 최소 커패시턴스 값을 감쇠시킴으로써, 핸드헬드 제어기(또는 다른 통신가능하게 결합된 디바이스)는 손가락 위치들을 정확하게 결정할 수 있다. 최소 커패시턴스 값을 감쇠시키는 것은 또한 근접 센서의 개별 용량성 패드들에 대한 커패시턴스 값들의 업데이트된 범위, 업데이트된 바이어스, 및/또는 업데이트된 스케일 팩터를 결정하기 위해 사용될 수 있다.
일부 경우들에서, 최대 커패시턴스 값이 감쇠하는 양 및/또는 최소 커패시턴스 값이 감쇠하는 양은 하나 이상의 가변 감쇠율들, 미리결정된 과거 프레임들의 수에 걸쳐 검출된 커패시턴스 값들의 범위, 및/또는 최대 커패시턴스 값과 최소 커패시턴스 값 사이의 커패시턴스 값들의 범위에 기초할 수 있다. 예를 들어, 감쇠량은 검출된 커패시턴스 값과 미리결정된 과거 프레임들의 수에 걸쳐 검출된 커패시턴스 값들의 범위 사이의 차이의 백분율, 또는 검출된 커패시턴스 값과 최대 커패시턴스 값과 최소 커패시턴스 값 사이의 커패시턴스 값들의 범위 사이의 차이의 백분율에 기초할 수 있다. 다른 경우들에서, 감쇠량은 검출된 커패시턴스 값과 최대 커패시턴스 값 또는 최소 커패시턴스 값 각각 사이의 차이의 백분율에 기초할 수 있다. 다른 경우들에서, 감쇠 또는 가변 감쇠율은 손가락의 근접성을 최대 커패시턴스 값 및 최소 커패시턴스 값과 각각 정확하게 연관시키도록 최적화될 수 있다. 일부 경우들에서, 최대 커패시턴스 값 및 최소 커패시턴스 값을 감쇠시키는 것은, 최소 커패시턴스 값 및 최대 커패시턴스 값이 임계량만큼 분리되도록, 제한될 수 있다.
최대 커패시턴스 값 또는 최소 커패시턴스 값이 감쇠하는 레이트는 측정된 커패시턴스 값들의 변동성(volatility) 및/또는 가변성(variability)에 의존할 수 있다. 예를 들어, 미리결정된 과거 프레임들의 수에 걸쳐 검출된 커패시턴스 값들 사이에 큰 가변성이 존재하는 경우, 최대 커패시턴스 값 또는 최소 커패시턴스 값은, 미리결정된 과거 프레임들의 수에 걸쳐 검출된 커패시턴스 값들 사이에 작은 가변성이 존재하는 경우에 비해, 더 빠른 레이트로 감쇠할 수 있다. 예를 들어, 제1 사용자가 그의 또는 그녀의 파지와 연관된 최대 커패시턴스 값 및 최소 커패시턴스 값을 갖고, 제2 사용자가 핸드헬드 제어기를 동작시키는 경우, 제1 사용자와 제2 사용자의 최대 커패시턴스 값 및/또는 최소 커패시턴스 값 사이에 큰 가변성이 존재할 수 있다. 여기서, 이러한 불일치(또는 큰 가변성) 때문에, 또는 불일치가 임계치보다 큰 경우, 감쇠율은 이를 고려하여 최대 커패시턴스 값 및/또는 최소 커패시턴스 값을 더 빠른 레이트로 감쇠시킬 수 있다. 추가적으로, 또는 대안적으로, 최대 커패시턴스 값 또는 최소 커패시턴스 값이 감쇠하는 레이트는 핸드헬드 제어기에 의해 수신된 커패시턴스 값들의 수에 의존할 수 있다. 예를 들어, 사용자가 핸드 헬드 제어기에서 손가락을 빠르게 탭핑하는 경우, 핸드 헬드 제어기는 최대 커패시턴스 값(또는 한계) 및/또는 최소 커패시턴스 값(또는 한계)을 검출된 커패시턴스 값들로 더 빠른 레이트로 감쇠시키거나 수렴시킬 수 있고, 그리고 사용자가 핸드헬드 제어기를 빠르게 탭핑하지 않는 경우.
따라서, 게임플레이 경험 전반에 걸쳐, 근접 센서의 용량성 패드들을 감쇠시키고 연속적으로 보정하는 것은 사용자의 파지에 적응하고 환경적 인자들을 수용하여 손가락 위치를 정확하게 결정할 수 있다. 다시 말해서, 최대 커패시턴스 값, 또는 최대 커패시턴스 값과 연관된 한계를 감쇠시키지 않으면, 수신된 커패시턴스 값을 핸드헬드 제어기를 터치하는 손가락과 정확하게 연관시키지 않을 수 있다. 즉, 핸드헬드 제어기는 커패시턴스 값을, 핸드헬드 제어기를 터치하는 손가락과 연관된 업데이트된 최대 커패시턴스 값과 비교하지 않을 수 있다. 유사하게, 최소 커패시턴스 값, 또는 최소 커패시턴스 값과 연관된 한계를 감쇠시키지 않으면, 수신된 커패시턴스 값을 핸드헬드 제어기로부터 완전히 펼쳐지는 손가락과 정확하게 연관시키지 않을 수 있다. 즉, 핸드헬드 제어기는 커패시턴스 값을, 핸드헬드 제어기로부터 완전히 펼쳐지는 손가락과 연관된 업데이트된 최소 커패시턴스 값과 비교하지 않을 수 있다. 더욱이, 상기 논의는 특정 용량성 패드에 관한 것이지만, 핸드헬드 제어기는 VR 환경에서 디스플레이되는 각각의 프레임 동안 근접 센서의 각각의 용량성 패드에 대한 커패시턴스 값들의 범위, 바이어스, 스케일 팩터, 감쇠, 및/또는 감쇠율을 동시에 결정할 수 있다.
최대 커패시턴스 값 및/또는 최소 커패시턴스 값을 감쇠시키는 결과로서, 일부 경우들에서, 핸드헬드 제어기는 각각 최대 커패시턴스 값 및/또는 최소 커패시턴스 값보다 크거나 작은 커패시턴스 값들을 검출할 수 있다. 다시 말해서, 최대 커패시턴스 값 및/또는 최소 커패시턴스 값을 연속적으로 업데이트함으로써, 핸드헬드 제어기는 결정된 최대 커패시턴스 값보다 큰 커패시턴스 값들을 수신할 수 있고/있거나 결정된 최소 커패시턴스 값보다 낮은 커패시턴스 값들을 수신할 수 있다. 예로서, 사용자의 손가락들이 덜 축축해짐에 따라, 또는 상이한 사용자가 핸드헬드 제어기를 동작시키는 경우, 핸드헬드 제어기는 증가된 커패시턴스 값들을 검출할 수 있고, 커패시턴스 값들은 최대 커패시턴스 값 및/또는 최소 커패시턴스 값을 "오버슈트"하거나 초과할 수 있다. 이러한 경우들에서, 최대 커패시턴스 값 및/또는 최소 커패시턴스 값은 과거 프레임들의 수에 걸쳐 검출된 커패시턴스 값들의 평균에 적어도 부분적으로 기초하여 이 차이를 연장하고 보충할 수 있다. 또한, 최대 커패시턴스 값 및/또는 최소 커패시턴스 값이 업데이트되는 레이트는 성장 상수뿐만 아니라 과거 프레임들의 수에 걸쳐 검출된 평균 커패시턴스 값들에 기초할 수 있다. 그렇게 함으로써, 핸드헬드 제어기(또는 다른 통신가능하게 결합된 디바이스)는 업데이트된 최대 커패시턴스 값 및/또는 최소 커패시턴스, 업데이트된 바이어스, 업데이트된 스케일 팩터 등을 결정할 수 있다.
추가적으로, 일부 경우들에서, 핸드헬드 제어기는 또한, 압력 센서를 통해, 핸드헬드 제어기에서 터치 입력과 연관된 힘의 양을 감지, 검출, 또는 측정할 수 있다. 예를 들어, 사용자의 손가락이 핸드헬드 제어기를 누름에 따라, 제어기의 일부분, 예컨대 압력 센서 위에 배치된 커버가, 압력 센서와 접촉하도록 편향될 수 있다. 압력 센서는 하나 이상의 프로세서들에 결합되어 터치 입력이 힘 데이터가 하나 이상의 프로세서들에 제공되게 하도록 할 수 있다. 일부 경우들에서, 압력 센서는 힘-감지 저항(FSR) 센서, 압전 센서, 로드 셀(load cell), 변형 게이지, 용량성 힘 측정치들을 측정하는 용량형 압력 센서, 또는 임의의 다른 유형의 압력 센서를 포함할 수 있다. 추가적으로, 일부 경우들에서, 근접성 데이터 및 힘 데이터는 함께 해석되고 사전정의된 명령 또는 손 제스처(예컨대, 쥐기)와 연관될 수 있다.
상기에 비추어, 핸드헬드 제어기는 예를 들어 사용자(들)의 변화하는 파지들 및/또는 환경 조건들에 적응하도록 근접 센서를 동적으로 보정할 수 있다. 그렇게 함으로써, 핸드헬드 제어기는 핸드헬드 제어기를 터치하는 손가락(예컨대, 최대 커패시턴스 값) 및 핸드헬드 제어기로부터 완전히 펼쳐지는 손가락(예컨대, 최소 커패시턴스 값)과 연관된 커패시턴스 값들을 감쇠시킬 수 있다. 커패시턴스 값들의 범위, 바이어스, 스케일 팩터 등을 결정함으로써, 후속 근접성 데이터를 수신할 때, 핸드헬드 제어기는 핸드헬드 제어기에 대한 손가락의 상대적 위치 및/또는 근접성을 결정할 수 있다. 다시 말해서, 게임플레이(예컨대, VR 환경)에서 사용자의 손 제스처들을 정확하게 묘사하기 위해, 핸드헬드 제어기(또는 통신가능하게 결합된 디바이스)는 근접 센서를 연속적으로 보정할 수 있다.
도 1은 하나 이상의 터치-감응형 제어부들을 포함할 수 있는 예시적인 제어기(100)의 정면도를 예시한다. 일부 경우들에서, 제어기(100)는 VR 비디오 게임 시스템, 로봇, 무기, 또는 의료장치와 같은 전자 시스템에 의해 활용될 수 있다.
예시된 바와 같이, 제어기(100)는 핸들(112)을 갖는 제어기 본체(110), 및 핸드 리테이너(120)를 포함할 수 있다. 제어기 본체(110)는 제어기(100)의 핸들(112)과 원위 단부(111) 사이에 배치된 헤드를 포함할 수 있고, 이는 하나 이상의 엄지-작동식 제어부들(114, 115, 116)을 포함할 수 있다. 예를 들어, 엄지-작동식 제어부는 제어기(100)가 사용자의 손에 쥐어있을 때 정상 동작 동안 사용자의 엄지에 의해 편리하게 조작되는 틸팅 버튼, 및/또는 임의의 기타 버튼, 노브, 휠, 조이스틱, 또는 트랙볼을 포함할 수 있다. 일부 경우들에서, 핸들(112)은 실질적으로 원통형의 관형 하우징을 포함할 수 있다. 그러나, 이와 관련하여, 실질적 원통 형상은 일정한 직경, 또는 원형 단면을 가질 필요는 없다.
핸들(112)은 핸들(112)의 외측 표면 주위에 적어도 부분적으로 또는 완전히 공간적으로 분포된 복수의 근접 센서들 또는 용량성 패드들을 갖는 근접 센서를 포함할 수 있다. 예를 들어, 용량성 패드들은 핸들(112)의 외측 표면 아래에 공간적으로 분포될 수 있고/있거나 핸들(112)의 외측 표면 아래에 매립될 수 있다. 용량성 패드들은 사용자가 핸들(112)을 터치, 파지, 또는 잡는 것에 응답하여 사용자의 하나 이상의 손가락들의 존재, 위치, 근접성, 및/또는 제스처를 식별할 수 있다. 예를 들어, 용량성 패드들은 핸들(112) 위에서 호버링하는 하나 이상의 손가락들에 응답할 수 있고, 핸들(112) 위의 손가락들의 근접성을 나타내는 근접성 데이터(예컨대, 커패시턴스 값들)를 생성할 수 있다. 일부 예들에서, 근접성 데이터는 제어기(100)에 대한 손가락(들)의 존재, 위치, 및/또는 근접성을 나타낼 수 있다. 근접성 데이터는 손 제스처들을 생성하기 위해 제어기(100) 및/또는 다른 통신가능하게 결합된 디바이스(들)에 의해 이용될 수 있다. 손가락들의 근접성을 검출하기 위하여, 핸들(112)의 외측 표면은 전기 절연성 재료를 포함할 수 있다.
핸드 리테이너(120)는 제어기(100)에 결합되어 사용자의 손바닥을 핸들(112)의 외측 표면에 대해 편향시킬 수 있다. 도 1에서, 핸드 리테이너(120)는 개방 위치로 도시되어 있다. 핸드 리테이너(120)는 선택적으로 개방 위치에서 만곡된 탄성 부재(122)에 의해 편향되어 핸드 리테이너(120)와 제어기 본체(110) 사이에서 손의 삽입을 용이하게 할 수 있다. 예를 들어, 만곡된 탄성 부재(122)는 탄성적으로 구부러지는 가요성 금속 스트립 또는 나일론과 같은 플라스틱 재료를 포함할 수 있다.
패브릭 재료(124)(예컨대, 네오프렌 시스)는 만곡된 탄성 부재(122)를 부분적으로 또는 완전히 덮어서 완충하거나 또는 사용자의 편안함을 증가시킬 수 있다. 대안적으로, 쿠션 또는 패브릭 재료(124)는 사용자의 손에 대면하는 만곡된 탄성 부재(122)의 면에만 접착할 수 있다.
핸드 리테이너(120)는, 예를 들어 스프링-편향된(spring-biased) 초크(chock)(128)에 의해 죄이는(cinched) 드로우 코드(draw cord)(126)를 포함함으로써 길이가 조정될 수 있다. 드로우 코드(126)는 선택적으로 끈(lanyard)으로 사용하기 위한 초과 길이를 가질 수 있다. 일부 예들에서, 쿠션 또는 패브릭 재료(124)는 드로우 코드(126)에 부착될 수 있다. 또한, 만곡된 탄성 부재(122)는 조여진 드로우 코드(126)의 장력에 의해 미리 설치될 수 있고, 이러한 실시예들에서, 만곡된 탄성 부재(122)가 핸드 리테이너(120)에 부여하는(그것을 개방 위치로 편향시킴) 장력은 드로우 코드(126)가 풀리면 핸드 리테이너(120)로 하여금 자동으로 개방되게 할 수 있다. 그러나, 클리트(cleat), 탄성 밴드(손이 삽입될 때 일시적으로 신장되어, 손등에 맞닿아 누르도록 탄성 장력을 가함), 길이 조정을 가능하게 하는 후크 & 루프 스트랩 부착물 등과 같은, 핸드 리테이너(120)의 길이를 조정하는 대안적인 종래의 방법이 사용될 수 있다.
핸드 리테이너(120)는 핸들(112)과 추적 부재(130) 사이에 배치될 수 있고, 사용자의 손등과 접촉할 수 있다. 추적 부재(130)는 제어기 본체(110)에 고정될 수 있고, 선택적으로 2개의 노우즈(132, 134)를 포함할 수 있고, 각각의 노우즈는 추적 부재(130)의 2개의 대향하는 원위 단부들 중 대응하는 것으로부터 돌출될 수 있다. 일부 경우들에서, 추적 부재(130)는 실질적으로 아치 형상을 갖는 원호를 포함할 수 있다. 일부 경우들에서, 추적 부재(130)는 그 안에 배치된 추적 트랜스듀서들을 포함할 수 있는데, 예를 들어, 적어도 하나의 추적 트랜스듀서가 각각의 돌출 노우즈(132, 134)에 배치되어 있다. 제어기 본체(110)는 원위 단부(111)에 인접하게 배치된 추적 트랜스듀서와 같은 추가적인 추적 트랜스듀서들을 포함할 수 있다.
제어기(100)는 제어기 본체(110) 내에 배치된 재충전가능 배터리를 포함할 수 있다. 핸드 리테이너(120)는 재충전가능 배터리에 전기적으로 결합된 전기-전도성 충전 와이어를 포함할 수 있다. 제어기(100)는 또한 전자 시스템의 나머지(예컨대, 게임 콘솔)와 통신하기 위한 무선 주파수(RF) 송신기를 포함할 수 있다. 재충전가능 배터리는 RF 송신기에 전력을 공급할 수 있고, 송신된 RF는 엄지-작동식 제어부들(114, 115, 116), 핸들(112) 내의 근접 센서(예컨대, 용량성 패드들), 및/또는 추적 부재(130) 내의 추적 센서들에 응답할 수 있다.
일부 경우들에서, 제어기 본체(110)는 사용자의 손가락으로부터의 힘을 근접 센서에 전달할 만큼 충분히 견고하고 사용자의 손가락과 근접 센서 사이의 용량성 결합을 허용할 만큼 충분히 얇은 단일 피스의 사출성형 플라스틱 또는 임의의 다른 재료를 포함할 수 있다. 대안적으로, 제어기 본체(110) 및 추적 부재(130)는 별도로 제조되고, 이어서 나중에 함께 조립될 수 있다.
도 2는 제어기(100)의 정면도를 예시하며, 동작 중에 사용자의 왼손이 그 안에 삽입되어 있지만 제어기 본체(110)를 잡지 않은 제어기(100)를 나타낸다. 도 2에서, 핸드 리테이너(120)는 사용자의 손 위에 조여져서 사용자의 손바닥을 핸들(112)의 외측 표면에 대해 물리적으로 편향시킨다. 여기서, 핸드 리테이너(120)는, 밀착되어 있으면, 손이 제어기 본체(110)를 잡고 있지 않을 때에도 사용자의 손 안에 제어기(100)를 유지할 수 있다. 도시된 바와 같이, 핸드 리테이너(120)가 사용자의 손 주위에 단단히 밀착되면, 핸드 리테이너(120)는 제어기(100)가 사용자의 손에서 떨어지는 것을 방지할 수 있다. 따라서, 일부 실시예들에서, 핸드 리테이너(120)는 제어기(100)가 실제로 손으로부터 분리되거나, 던져지거나, 및/또는 떨어지는 일 없이 사용자가 제어기(100)를 "놓아줄 수" 있게 할 수 있다. 예를 들어, 사용자가 제어기 본체(110)의 핸들(112)을 잡는 것의 해제 및 복원이 감지되는 경우, 해제 또는 잡기는 게임에 통합되어 (예컨대, VR 환경에서) 객체들을 던지기 또는 잡는 것을 디스플레이할 수 있다. 핸드 리테이너(120)는 이러한 기능이 반복적이고 안전하게 달성될 수 있게 할 수 있다. 추가로, 핸드 리테이너(120)는 또한 사용자의 손가락들이 근접 센서에 대하여 과도하게 이동하는 것을 방지하여 핸들(112) 상의 손가락 모션, 근접성, 및/또는 배치를 더 신뢰성있게 감지할 수 있다.
도 3 및 도 4는 핸드 리테이너(120)가 조여있을 때 사용자의 손이 제어기 본체(110)를 잡아서 제어기(100)를 사용자의 손 안에 유지하는 동안 동작 중인 제어기(100)를 예시한다. 도 3 및 도 4에 도시된 바와 같이, 사용자의 엄지는 엄지-작동식 제어부들(114, 115, 116) 중 하나 이상을 작동시킬 수 있다.
도 5는, 소정 실시예들에서, 제어기(100)가 유사한 우측 제어기(500)를 포함하는 한 쌍의 제어기에서의 좌측 제어기일 수 있다는 것을 예시한다. 특정 실시예들에서, 제어기들(100 및 500)은, 예를 들어, VR 경험을 향상시키기 위해 동시에 사용자의 두 손의 모션 및 파지를 (함께) 추적할 수 있다.
도 6은 제어기(100)에 대한 하나 이상의 객체들(예컨대, 손가락)의 근접성을 검출하도록 구성된 복수의 용량성 패드들(602)을 갖는 근접 센서(600)를 예시한다. 그러나, 일부 경우들에서, 근접 센서(600)는 추가적으로 또는 대안적으로 제어기(100)에 대한 하나 이상의 객체들의 근접성을 검출하기 위해 용량성 패드들(602) 이외의 상이한 유형들의 센서들, 예컨대 적외선 또는 음향 센서를 포함할 수 있다.
용량성 패드들(602)은 가요성 인쇄 회로 조립체(FPCA)(604)에 장착, 부착 또는 다른 방식으로 결합될 수 있다. FPCA(604)는 하나 이상의 프로세서들을 포함하는 제어기(100)의 인쇄 회로 기판(PCB)에 연결하기 위한 커넥터(606)를 포함할 수 있다. 용량성 패드들(602)은 근접성 데이터(예컨대, 커패시턴스 값들)를 하나 이상의 프로세서들에 제공하기 위해 FPCA(604) 상에 배치된 트레이스들(608)을 통해 커넥터(606)에 통신가능하게 연결될 수 있다. 근접성 데이터는 핸들(112)과 같은 제어기(100)에 대한 손가락의 근접성을 나타낼 수 있다. 따라서, 근접 센서(600)는 개별 용량성 패드들(602)의 커패시턴스를 측정하거나 수신할 수 있으며, 여기서 커패시턴스 값은 제어기(100)에 대한 손가락의 근접성과 연관될 수 있다.
일부 경우들에서, 근접 센서(600)는 제어기 본체(110)의 핸들(112) 내에 장착된 구조, 또는 제어기 본체(110)의 핸들(112) 아래에 장착된 구조와 같은 제어기 본체(110) 내의 내부 표면에 결합될 수 있다. 그렇게 함으로써, 근접 센서(600)는 핸들(112)의 외측 표면 아래에 배치되어 핸들(112)에 대한 손가락들의 근접성을 검출할 수 있다. 제어기(100)에 결합될 때, 근접 센서(600)는 핸들(112)의 원주 또는 일부 둘레에 일정 각도로 펼쳐질 수 있다. 예를 들어, FPCA(604)는 제어기 본체(110)의 내측 표면에 결합(예컨대, 접착)될 수 있다. 일부 실시예들에서, 근접 센서(600)는 핸들(112)의 원주의 둘레에 적어도 100도로 연장될 수 있지만, 170도를 넘지 않는다. 추가적으로, 또는 대안적으로, 근접 센서(600)는 핸들(112)의 외측 표면과 같은 제어기(110)의 외측 표면에 결합될 수 있다.
용량성 패드들(602)은 상이한 손가락들, 또는 손가락(들)의 상이한 부분들(예컨대, 손가락 끝)의 근접성을 검출하기 위하여 서로로부터 이격될 수 있다. 용량성 패드들(602)은 행들, 열들, 그리드, 세트들, 서브세트들, 또는 그룹들(610)로 배열될 수 있다. 예를 들어, 도 6에 도시된 바와 같이, 근접 센서(600)는 용량성 패드들(602)의 6개의 그룹들(610)을 포함할 수 있고, 여기서 그룹들(610)은 FPCA(604)를 가로질러 수평으로 연장될 수 있다. 그러나, 일부 실시예들에서, 근접 센서(600)는 6개 초과의 또는 6개 미만의 그룹들(610)을 포함할 수 있다. 추가적으로, 도 6에 도시된 바와 같이, 용량성 패드들(602)은 반드시 동일한 크기일 필요는 없고, 그 사이에 실질적으로 동일한 간격을 가질 필요도 없을 수 있다. 그러나, 일부 실시예들에서, 용량성 패드들(602)은 유사하게 형상화될 수 있고/있거나 그 사이에 실질적으로 동일한 간격을 갖는 그리드를 포함할 수 있다.
용량성 패드들(602)의 개별 그룹들(610)은 사용자의 특정 손가락(예컨대, 검지, 중지, 약지, 소지)에 대응할 수 있다. 추가적으로, 또는 대안적으로, 용량성 패드들(602)의 다수의 그룹들(610) 또는 다수의 그룹들(610)로부터의 용량성 패드들(602)이 사용자의 단일 손가락에 대응할 수 있다. 예를 들어, 둘 이상의 그룹들(610)이 사용자의 손가락(예컨대, 중지)에 대응할 수 있다. 용량성 패드들(602)을 그룹들(610)로 배열하거나, 또는 소정 용량성 패드들(602)을 소정 그룹들(610)에 할당함으로써, 제어기(100)(또는 다른 통신가능하게 결합된 디바이스)는 근접성 데이터를 이용하여 사용자의 손 제스처들을 생성할 수 있다. 예를 들어, 사용자가 제어기(100)를 소정 손가락들로 파지하고/하거나 소정 손가락들은 제어기(100) 위에서 호버링함에 따라, 전압이 용량성 패드들(602)에 인가되어 정전기장(electrostatic field)이 생성된다. 손가락과 같은 도체가 용량성 패드들(602)을 터치하거나 또는 근접하면, 커패시턴스의 변화가 발생할 수 있다. 커패시턴스는, RC 발진기 회로를 (커넥터(606)를 통해) 근접 센서(600)에 연결하고 시상수(및 그에 따른 발진의 주기 및 주파수)가 커패시턴스에 따라 달라질 것임을 주목함으로써 감지될 수 있다. 이러한 방식으로, 사용자가 제어기(100)로부터 손가락(들)을 떼거나, 제어기(100)를 소정 손가락(들)으로 파지하거나, 또는 제어기(100)에 접근함에 따라, 제어기(100)는 커패시턴스의 변화를 검출할 수 있다. 용량성 패드들(602)의 커패시턴스 값들은 도체의 위치 뿐만 아니라 용량성 패드(602)에 대한 도체의 근접성을 결정하는 데 사용된다. 손가락(들)이 도체로서 작용하기 때문에, 핸들(112) 아래에 놓인 용량성 패드들(602)은 커패시턴스 값을 측정할 수 있다.
일부 경우들에서, 사용자의 파지는 변할 수 있거나 또는 다른 인자들이 근접성 데이터의 값들에 영향을 미칠 수 있다. 예를 들어, 게임플레이 경험 전반에 걸쳐, 사용자의 손은 땀이 나고 축축해질 수 있다. 추가적으로, 또는 대안적으로, 게임이 플레이되고 있는 환경의 습도가 변할 수 있다. 이들 및 다른 인자들은 용량성 패드(들)(602)에 의해 검출된 커패시턴스의 양에 영향을 미칠 수 있다. 손가락 위치를 정확하게 감지하기 위해, 제어기(100)는 검출된 커패시턴스 값들에 기초하여 근접 센서(600)를 연속적으로 보정할 수 있다. 예를 들어, 제1 인스턴스에서, 용량성 패드(602)는 손가락이 제어기(100)로부터 완전히 펼쳐질 때 제1 커패시턴스 값을 측정할 수 있다. 사용자가 게임을 할 때, 제2 인스턴스에서, 용량성 패드(602)는 사용자의 손가락이 제어기(100)로부터 완전히 펼쳐질 때 제2 커패시턴스 값을 측정할 수 있다. 그러나, 제어기(100)(예컨대, 핸들(112))에 대한 손가락의 근접성을 정확하게 검출하기 위해, 제어기(100)(또는 다른 통신가능하게 결합된 디바이스)는 용량성 패드(602)를 보정할 수 있다. 이러한 경우들에서, 용량성 패드(들)(602)(또는 근접 센서(600))를 보정하는 것은 개별 용량성 패드(들)(602)에서 검출된 커패시턴스 값들의 업데이트된 범위를 결정하는 것, 또는 제어기(100)에서의 터치 및/또는 제어기(100)로부터 완전히 펼쳐지는 손가락과 연관된 커패시턴스 값들을 감쇠시키는 것을 포함할 수 있다. 여기서, 업데이트된 범위를 알면, 검출된 커패시턴스 값들은 정규화될 수 있다.
일부 예들에서, 용량성 패드들(602)은 상이한 손가락들에 대응하도록 재맵핑될 수 있다. 예를 들어, 사용자의 파지 또는 사용자의 손 크기에 따라, 근접 센서(600)의 특정 행 또는 행들이 사용자의 특정 손가락(예컨대, 중지)에 대응할 수 있고, 다른 경우들에서, 사용자의 상이한 손가락(예컨대, 약지)에 대응할 수 있다. 근접성 데이터를 수신함으로써, 용량성 패드들(602)은 재맵핑되고 사용자(들)의 상이한 손가락들에 대응할 수 있다. 다시 말해서, 용량성 패드들(602)은 일부 경우들에서 핸들(112)을 구비한 특정 사용자의 파지에 따라 사용자의 상이한 손가락들에 대응하도록 지정될 수 있다. 따라서, 제어기(100)는 상이한 용량성 패드들(602)을 상이한 손가락들과 연관시키기 위한 상이한 제어기 구성들(즉, 제1 제어기 구성, 제2 제어기 구성, 및/또는 제3 제어기 구성)을 포함할 수 있다. 용량성 패드들(602)을 소정 손가락들에 이렇게 동적으로 적응시킴으로써 정확한 제스처들이 VR 환경에서 생성되도록 할 수 있다. 추가적으로, 도 6은 소정 개수의 용량성 패드들(602) 및/또는 소정 개수의 그룹들(610)을 포함하는 근접 센서(600)를 예시하지만, 일부 경우들에서, 근접 센서(600)는 도 6에 예시된 것보다 더 많거나 더 적은 용량성 패드들(602)을 포함할 수 있다.
또한, 일부 경우들에서, 제어기(100)의 하나 이상의 프로세서들은 근접성 데이터를 더 잘 사용하여 사용자의 손의 개방, 손가락 지시, 또는 제어기(100)에 대한 또는 서로에 대한 손가락들의 기타 모션들을 검출하기 위하여, 손가락들의 해부학적으로 가능한 모션들을 구현하는 알고리즘들 및/또는 머신-러닝 기술들을 포함할 수 있다. 이러한 방식으로, 제어기(100) 및/또는 사용자의 손가락의 이동은 VR 게임 시스템, 방어 시스템, 의료 시스템, 산업용 로봇 또는 기계, 또는 다른 디바이스를 제어하는 것을 도울 수 있다. 따라서, (예컨대 게임, 훈련 등을 위한) VR 애플리케이션에서, 근접성 데이터를 이용하여 핸들(112)의 외측 표면으로부터 사용자의 손가락들의 감지된 떨어짐에 기초하여 객체의 떨어짐을 렌더링할 수 있다. 추가적으로, 또는 대안적으로, 제어기(100)가 상호작용하고 있는 통신가능하게 결합된 컴퓨팅 디바이스(예컨대, 호스트 컴퓨팅 디바이스, 게임 콘솔 등)의 하나 이상의 프로세서들은 근접성 데이터를 이용하여 제스처(들)를 검출할 수 있다.
도 7 내지 도 10은 다양한 프로세스들을, 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있는 동작들의 시퀀스를 나타내는 논리적 흐름 그래프의 블록 모음으로서 예시한다. 소프트웨어의 맥락에서, 블록들은, 하나 이상의 프로세서들에 의해 실행될 때, 언급된 동작들을 수행하는 컴퓨터 실행가능 명령어들을 나타낸다. 일반적으로, 컴퓨터 실행가능 명령어들은, 특정 기능들을 수행하거나 특정한 추상적 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 데이터 구조들 등을 포함한다. 동작들이 설명되는 순서는 제한으로서 해석되게 하려는 의도는 아니며, 임의의 수의 설명된 블록들은 프로세스들을 구현하도록 병렬로 그리고/또는 임의의 순서로 조합될 수 있다.
도 7은 근접 센서(600)를 보정하기 위한 프로세스(700)를 예시한다. 일부 경우들에서, 프로세스(700)는 제어기(100)에 의해 수행될 수 있다.
702에서, 제어기(100)의 로직은 근접 센서(600)로부터 근접성 데이터를 수신할 수 있다. 예를 들어, 객체(예컨대, 손가락, 엄지 등)가 제어기(100)와 접촉할 수 있거나 또는 제어기(100)의 근접성 내에 들(예컨대, 제어기(100)의 핸들(112)에 인접하여 호버링할) 수 있다. 근접성 데이터는 근접 센서(600)의 용량성 패드들(602)에 의해 검출 또는 측정되는 커패시턴스를 나타낼 수 있다. 예를 들어, 손가락이 제어기(100)를 터치하고 있는 경우, 커패시턴스 값은 제어기(100) 위에서 호버링하는 손가락에 비교하여 더 클 수 있다. 이러한 의미에서, 검출된 커패시턴스 값은 제어기(100)에 대한 손가락의 근접성을 나타내거나, 표현할 수 있다.
일부 경우들에서, 제어기(100)의 로직은 커패시턴스 값을 디지털화된 값으로 변환할 수 있다. 또한, 702에서 수신된 근접성 데이터는 근접 센서(600)의 용량성 패드들(602)을 가로질러 수신된 근접성 데이터로 보정 및/또는 정규화되지 않은 미가공 데이터를 나타낼 수 있다. 즉, 702에서 수신된 근접성 데이터는, 특정 용량성 패드(602)에 대해, 용량성 패드(602)가 커패시턴스 값들의 범위에 걸쳐 커패시턴스 값을 검출할 수 있다는 점에서 미가공 데이터를 표현할 수 있다.
704에서, 제어기(100)의 로직은 근접성 데이터를 정규화할 수 있다. 예를 들어, 개별 용량성 패드들(602)은 용량성 패드(602)의 제조 조건들, 용량성 패드(602)의 크기 등에 따라 고유한 커패시턴스 값들을 생성할 수 있다. 근접성 데이터를 정규화하는 것은 용량성 패드들(602)에서 수신된 근접성 데이터를 표준화하는 것을 도울 수 있다. 일부 경우들에서, 근접성 데이터를 정규화하는 것은 용량성 패드들(602)에서 측정된 최대 및 최소 커패시턴스 값들을 결정하기 위해 트레이닝된 모델들을 이용하는 것을 포함할 수 있다. 예를 들어, 용량성 패드(602)에서 검출된 커패시턴스 값들의 범위는 상이한 용량성 패드(602)에서 검출된 커패시턴스 값들의 범위와 비교할 때 임의적일 수 있다. 트레이닝된 모델들은 근접 센서(600)의 용량성 패드들(602)을 가로질러 과거에 검출된 커패시턴스 값들의 대표적인 샘플, 또는 커패시턴스 값들의 범위를 포함할 수 있다. 예로서, 상이한 제어기들(예컨대, 제어기(100))의 유사한 용량성 패드들(602)로부터 수신된 커패시턴스 값들은 커패시턴스 값들을 정규화하기 위해 사용될 수 있다.
706에서, 제어기(100)의 로직은 근접 센서(600)를 보정할 수 있다. 일부 예들에서, 근접 센서(600)를 보정하는 것은 바이어스, 커패시턴스 값들의 범위, 및/또는 용량성 패드들(602)에서 검출된 커패시턴스 값들에 대한 스케일 팩터를 계산하는 것을 포함할 수 있다. 다시 말해서, 근접 센서(600)를 보정하는 것은, 개별 용량성 패드들(602)에 대해, 검출된 커패시턴스 값들의 범위, 바이어스, 및/또는 스케일 팩터를 결정하는 것을 포함할 수 있다. 따라서, 근접 센서를 보정하는 것은 수신된 후속 커패시턴스 값들이 정규화되도록 할 수 있다. 도 7의 서브-블록들에 의해 도시된 바와 같이, 프로세스(700)는 근접 센서(600)를 보정하기 위한 더 상세한 동작들을 포함할 수 있다. 예를 들어, 근접성 센서(600)를 보정하는 것은 서브-블록들(708, 710)을 포함할 수 있다.
서브-블록(708)에 의해 도시된 바와 같이, 근접 센서(600)를 보정하는 것은 사용자에 의해 수행된 개별 제스처를 나타낼(또는 이에 대응할) 수 있는 개별 제스처 인식을 포함할 수 있다. 예를 들어, 용량성 패드들(602)의 모든, 일부, 또는 임계 퍼센트가 커패시턴스 값들의 급격한 강하를 감지하는 경우, 제어기(100)는 이러한 강하를 사용자가 제어기(100)로부터 그들의 손을 떼거나 제어기(100)로부터 특정 손가락을 떼는 것과 연관시킬 수 있다. 즉, 소정 용량성 패드들(602)이 사용자의 소정 손가락들과 연관될 수 있기 때문에, 제어기(100)는 커패시턴스의 감소를 검출하고 커패시턴스 값들의 이러한 감소를 사용자가 제어기(100)로부터 그들의 손을 떼는 것과 연관시킬 수 있다.
사용자가 제어기(100)로부터 그들의 손가락을 갑자기 뗄 때 수신된 커패시턴스 값들은 특정 용량성 패드(602)에 대하여 검출된 커패시턴스 값들의 범위 내의 최소 커패시턴스 값에 대응할 수 있다(예컨대, 커패시턴스 값은 손가락이 제어기(100)로부터 완전히 펼쳐지는 때를 나타냄). 따라서, 이러한 최소 커패시턴스 값은, 미래의 경우들에서, 손가락이 제어기(100)로부터 완전히 펼쳐지는 때를 결정하기 위해 사용될 수 있다. 일부 경우들에서, 커패시턴스 값들의 이러한 갑작스런 강하 이전에 수신된 커패시턴스 값은 특정 용량성 패드(602)에 대하여 검출된 커패시턴스 값들의 범위의 최대 커패시턴스 값에 대응할 수 있다(예컨대, 커패시턴스 값은 손가락이 제어기(100)를 터치할 때를 나타냄). 따라서, 이러한 최대 커패시턴스 값은, 미래의 경우들에서, 손가락이 제어기(100)를 터치하고 있을 때를 결정하기 위해 사용될 수 있다.
최소 커패시턴스 값 및 최대 커패시턴스 값을 이용하여, 제어기(100)의 로직은 용량성 패드(602)에서 검출된 커패시턴스 값들의 범위를 결정할 수 있다. 이 프로세스는 근접 센서(600)의 각각의 용량성 패드(602)에 대해 발생할 수 있다. 따라서, 제어기(100)가 후속 근접성 데이터를 수신함에 따라, 제어기(100)는 검출된 커패시턴스 값을 특정 용량성 패드(602)에 대한 커패시턴스 값들의 범위와 비교함으로써 사용자의 손가락의 상대적 위치를 결정할 수 있다.
서브-블록(710)에 의해 도시된 바와 같이, 근접 센서(600)를 보정하는 것은 또한 연속적인 최소 커패시턴스 값 및/또는 최대 커패시턴스 값 검출을 포함할 수 있다. 예를 들어, 제어기(100)가 근접 센서(600)로부터 근접성 데이터를 연속적으로 수신할 수 있기 때문에, 제어기(100)는 근접성 데이터(예컨대, 커패시턴스 값)를 모니터링하여 최소 커패시턴스 값 및/또는 최대 커패시턴스 값을 재보정할(예컨대, 감쇠시킬) 수 있다. 여기서 논의되는 바와 같이, (예컨대, 사용자가 제어기(100)와 상호작용함에 따라) 근접 센서(600)로부터 근접성 데이터를 반복적으로 수신함으로써, 근접성 데이터는 용량성 패드들(602)에 의해 측정된 커패시턴스 값들을 나타낼 수 있다. 시간이 지남에 따라, 커패시턴스 값들은 개별 용량성 패드들(602)에 의해 검출된 커패시턴스 값들의 범위를 업데이트 및/또는 수정하기 위해 이용될 수 있다. 예로서, 용량성 패드들(602)에 의해 검출된 커패시턴스 값들은 사용자의 피부 속성들 및/또는 제어기(100)가 상주하는 환경 조건들에 기초하여 변할 수 있다. 따라서, 710에서, 근접 센서(600)의 각각의 용량성 패드들(602)에 대해, 제어기(100)는 근접성 데이터를 분석하여, 용량성 패드들(602)에 대한 최소 커패시턴스 값, 최대 커패시턴스 값 및/또는 커패시턴스 값의 범위를 잠재적으로 업데이트할 수 있다.
예를 들어, 제어기(100)는, 용량성 패드들(602)로부터 커패시턴스 값들을 수신할 때, 커패시턴스 값이 최대 커패시턴스 값 및/또는 최소 커패시턴스 값보다 각각 크거나 작은지 결정하기 위해 커패시턴스 값들을 최대 커패시턴스 값 및/또는 최소 커패시턴스 값과 비교할 수 있다. 만약 그렇다면, 제어기(100)는 최대 커패시턴스 값 및/또는 최소 커패시턴스 값을 각각 업데이트할 수 있다. 또한, 제어기(100)는 커패시턴스 값들을 이용하여, 수신된 커패시턴스 값들을 향해 최대 커패시턴스 값 및/또는 최소 커패시턴스 값을 감쇠시킬 수 있다.
706으로부터, 프로세스(700)는 프로세스(700)가 근접 센서(600)로부터 추가적인 근접성 데이터를 수신할 수 있는 702로 되돌아갈 수 있다. 근접성 데이터를 반복적으로 수신하는 것을 통해, 프로세스(700)는 용량성 패드들(602)에 의해 검출된 커패시턴스 값들의 범위를 연속적으로 결정 및/또는 업데이트할 수 있다. 근접성 데이터를 이용하여 근접 센서(600)를 연속적으로 보정하는 것에 대한 추가적인 세부사항은 도 8과 관련하여 본 명세서에서 논의된다.
712에서, 제어기(100)의 로직은 근접 센서(600) 및/또는 개별 용량성 패드들(602)을 보정하는 것에 적어도 부분적으로 기초하여 보정된 근접성 데이터를 생성할 수 있다. 예를 들어, 용량성 패드들(602)에서 검출된 커패시턴스 값들의 범위, 바이어스, 및/또는 스케일 팩터를 이용하여, 제어기(100)는 보정된(또는 정규화된) 커패시턴스 값을 계산할 수 있다. 보정된 근접성 데이터는 특정 용량성 패드(602)에서 및/또는 근접 센서(600)의 용량성 패드들(602)을 가로질러 수신된 근접성 데이터를 정규화할 수 있다.
714에서, 제어기(100)의 로직은 용량성 패드들(602)의 그룹에 대한 근접성 데이터를 합산할 수 있다. 전술한 바와 같이, 용량성 패드들(602)은 사용자의 각각의 손가락들과 연관되는 그룹들(610)로 배열될 수 있다. 일부 경우들에서, 그룹들(610)은 하나 초과의 용량성 패드(602)를 포함할 수 있기 때문에, 용량성 패드들(602)의 그룹의 용량성 패드들(602)에 대한 커패시턴스 값들은 사용자의 손가락 위치를 나타내기 위해 합산될 수 있으며, 여기서 합산된 커패시턴스 값은 제어기(100)에 대한 손가락의 근접성을 나타낼 수 있다. 일부 경우들에서, 특정 그룹(610)에 대한 합산된 커패시턴스 값은 [0,1]의 스케일 상의 손가락 값을 포함할 수 있으며, 여기서 손가락 값은 제어기(100)에 대한 손가락의 근접성을 나타낼 수 있다. 이러한 의미에서, 개별 용량성 패드들(602)로부터 검출된 커패시턴스 값들을 이용하여, 프로세스(700)는 제어기(100)에 대한 사용자의 손가락 위치들을 결정할 수 있다.
또한, 커패시턴스 값들은 용량성 패드들(602)의 그룹 내의 개별 용량성 패드들(602)에 적용된 가중치들의 세트를 사용하여 합산될 수 있다. 예를 들어, 4개의 용량성 패드들(602)이 사용자의 중지와 연관되는 경우, 동일한 가중치가 4개의 용량성 패드들(602)에 할당될 수 있다. 이들 용량성 패드(602)로부터 수신된 커패시턴스 값들은 손가락 위치를 결정할 때 사용되는 1/4의 가중치를 가질 수 있다. 그러나, 일부 경우들에서, 용량성 패드(602)에 대한 커패시턴스 값이 신뢰할 수 없다면(예컨대, 다량의 노이즈를 포함함), 용량성 패드들(602)로부터의 소정 커패시턴스 값들은 가중된 합에서 무시될 수 있다. 용량성 패드(602)의 가중치는 무시되어, 나머지 용량성 패드들이 1/3의 가중치를 갖도록 할 수 있다. 여기서, 커패시턴스 값들을 합산하고, 사용 중인 용량성 패드들(602)의 가중치들의 합으로 나눈다.
716에서, 제어기(100)의 로직은 근접성 데이터 및/또는 손가락 값을 송신할 수 있다. 예를 들어, 특정 손가락 또는 용량성 패드들(602)의 그룹에 대한 보정된 근접성 데이터를 결정한 후, 제어기(100)는 근접성 데이터 및/또는 손가락 값(위치)의 표시를 하나 이상의 컴퓨팅 디바이스들로 송신할 수 있다. 일부 경우들에서, 하나 이상의 컴퓨팅 디바이스들은 근접성 데이터 및/또는 손가락 값들을 이용하여 제어기(100) 상의 사용자의 손의 제스처에 대응하는 이미지 데이터를 생성할 수 있다.
일부 경우들에서, 프로세스(700)는 각각의 용량성 패드(602)에 대해 수행될 수 있고 매번(예컨대, 매 카운트, 매 프레임) 근접 센서(600)는 근접성 데이터를 생성한다. 예를 들어, 제어기(100)가 VR 환경을 제어 또는 동작시킬 수 있기 때문에, 근접 센서(600)는 VR 환경에서 디스플레이되는 각각의 프레임에 대한 근접성 데이터를 생성할 수 있다. 근접성 데이터는 용량성 패드들(602)에서 검출된 각각의 커패시턴스 값들을 나타낼 수 있고, 프로세스(700)는 개별 용량성 패드들(602)에서 측정된 커패시턴스 값들에 대해 수행될 수 있다. 예를 들어, 프로세스(700)는 제1 용량성 패드(602)에서 검출된 제1 커패시턴스 값 및 제2 용량성 패드(602)에서 검출된 제2 커패시턴스 값에 대해 수행될 수 있다. 일부 경우들에서, 제1 용량성 패드(602) 및 제2 용량성 패드(602)에 대한 프로세스(700)는 병렬로, 그리고 임의의 수의 용량성 패드들(602)에 대해 수행될 수 있다. 추가적으로, 프로세스(700)의 일부 또는 전부는 제어기(100)에 의해 수행되는 것으로 설명되지만, 일부 경우들에서, 하나 이상의 통신가능하게 결합된 디바이스들은 프로세스(700)의 블록들의 전부 또는 일부를 수행할 수 있다. 예를 들어, 컴퓨팅 디바이스(들)는 근접 센서(600)를 보정하기 위한 증가된 프로세싱 전력을 포함할 수 있다. 이러한 경우들에서, 컴퓨팅 디바이스(들)는 근접 센서(600)를 보정하기 위한 명령어를 송신할 수 있다.
도 8은 근접 센서(600)를 보정하기 위해 근접 센서(600)로부터 수신된 근접성 데이터를 분석하기 위한 예시적인 프로세스(800)를 예시한다. 일부 경우들에서, 프로세스(800)는 제어기(100)에 의해 수행될 수 있지만, 하나 이상의 통신가능하게 결합된 디바이스들은 프로세스(800)의 전부 또는 일부를 수행할 수 있다.
802에서, 제어기(100)의 로직은 근접 센서(600)로부터 커패시턴스 값(예컨대, 근접성 데이터)를 수신할 수 있다. 일부 경우들에서, 제어기(100)는, 근접 센서(600)의 개별 용량성 패드들(602)로부터, 그리고 VR 환경에서 디스플레이되는 각각의 프레임에서, 커패시턴스 값을 수신할 수 있다. 예를 들어, 제어기(100)에 근접한 객체(예컨대, 손가락)를 검출하는 것에 적어도 부분적으로 기초하여, 근접 센서(600)의 용량성 패드(602)는 커패시턴스 값을 생성할 수 있다. 전술한 바와 같이, 객체와 용량성 패드(602) 사이의 거리가 감소함에 따라, 측정된 커패시턴스 값은 증가할 수 있다.
804에서, 제어기(100)의 로직은 용량성 패드(602)에 대한 커패시턴스 값들의 범위, 용량성 패드(602)와 연관된 스케일 팩터, 및 용량성 패드(602)와 연관된 바이어스를 사용하여 커패시턴스 값을 정규화할 수 있다.
806에서, 제어기(100)는 최대 커패시턴스 값을 점진적으로 할당 또는 조정하기 위해 최대 커패시턴스 값과 연관된 한계 또는 레벨을 감쇠시킬 수 있다. 최대 커패시턴스 값을 감쇠시키는 것은 사용자의 손가락(들)의 다양한 환경 조건들 및/또는 특성들에 적응할 수 있다. 예컨대, 게임플레이 경험 동안, 사용자의 손은 축축해질(예컨대, 땀이 날) 수 있고/있거나, 사용자는 제어기(100)에 대한 그의 또는 그녀의 파지를 조정할 수 있고/있거나, 환경의 조건들은 변할 수 있다(예컨대, 습도, 온도 등). 일부 경우들에서, 이러한 인자들은 근접 센서(600)에 의해 검출된 커패시턴스 값들에 영향을 미칠 수 있고 커패시턴스 값들의 범위는 업데이트될 수 있고/있거나 제어기(100)를 터치하는 손가락과 연관된 커패시턴스 값은 업데이트될 수 있다. 다시 말해서, 제어기(100)에 의해 검출된 커패시턴스 값들의 범위가 변할 수 있으므로, 제어기(100)를 터치하는 손가락과 연관된 커패시턴스 값은 변할 수 있다. 이와 같이, 사용자의 손가락 위치(또는 손 제스처)를 정확하게 묘사하기 위해(즉, 손가락이 제어기(100)를 터치하고 있을 때), 최대 커패시턴스 값은 감쇠될 수 있다. 예시하기 위해, 시간의 제1 인스턴스에서, 제1 커패시턴스 값은 손가락이 제어기(100)를 터치하는 것을 나타내거나 이에 대응할 수 있고, 시간의 제2 인스턴스에서, 제2 커패시턴스 값은 손가락이 제어기(100)를 터치하는 것을 나타내거나 이에 대응할 수 있다. 일부 경우들에서, 제2 커패시턴스 값은 제1 커패시턴스 값보다 작을 수 있다. 그러나, 제2 인스턴스에서 사용자의 손 제스처를 정확하게 묘사하기 위해, 손가락이 제어기(100)를 터치하는 것과 연관된 커패시턴스 값은 업데이트될 수 있다. 즉, 제2 커패시턴스 값은 사용자가 제어기(100)를 터치하는 것을 나타내지만, 최대 커패시턴스 값이 감쇠하지 않는다면, 제2 커패시턴스 값은 손가락이 제어기(100)를 터치하고 있을 때를 나타내는 최대 커패시턴스 값과 연관되지 않을 것이다. 그렇게 함으로써, 이미지 데이터는 객체를 잡고 있는 사용자를 묘사하지 않을 것이다. 최대 커패시턴스 값을 감쇠시킴으로써, 제어기(100)는 제어기(100)를 파지하는 손가락과 연관된 커패시턴스 값을 동적으로 조정할 수 있다.
일부 경우들에서, 최대 커패시턴스 값을 감쇠시키는 것은 최대 커패시턴스 값의 미리결정된 범위 내에 있지 않은 임계 수의 커패시턴스 값들을 수신하는 것에 적어도 부분적으로 기초할 수 있다. 추가적으로, 또는 대안적으로, 최대 커패시턴스 값을 감쇠시키는 것은, 최대 커패시턴스 값의 미리결정된 범위 내의 커패시턴스 값들 및/또는 임계량만큼 변하는 커패시턴스 값들(예컨대, 가변성)을 수신하지 않고 임계 시간량, 프레임들의 수, 또는 카운트들의 수가 경과하는 경우에 발생할 수 있다. 다른 경우들에서, 이전 시간량, 프레임의 수, 또는 카운트들의 수에 걸쳐 검출된 커패시턴스 값들의 평균이 최대 커패시턴스 값의 미리결정된 범위 내에 있지 않은 경우, 최대 커패시턴스 값은 감쇠할 수 있다. 추가적으로, 최대 커패시턴스 값을 감쇠시키는 것이 최대 커패시턴스 값의 미리결정된 범위 내에 있지 않은 커패시턴스 값과 관련하여 설명되었지만, 일부 경우들에서, 미리결정된 범위는 최소 커패시턴스 값에 대한 것일 수 있다.
따라서, 최대 커패시턴스 값은 커패시턴스 값들의 범위가 연속적으로 업데이트되도록 연속적으로 감쇠할 수 있다. 감쇠의 양, 또는 최대 커패시턴스 값이 감쇠하는 양은, 이전 프레임들의 수(예컨대, 20 프레임, 50 프레임, 100 프레임 등)에 걸쳐 검출된 커패시턴스 값들의 범위, 최대 커패시턴스 값과 최소 커패시턴스 값 사이의 커패시턴스 값들의 범위, 이전 카운트들 또는 프레임들의 수(예컨대, 20 프레임, 50 프레임, 100 프레임 등)에 걸쳐 검출된 평균 커패시턴스 값과 최대 커패시턴스 값 사이의 차이, 및/또는 최대 커패시턴스 값과 평균 커패시턴스 값 사이의 차이의 백분율에 기초할 수 있다. 일부 경우들에서, 감쇠는 (1) 이전 프레임들의 수에 걸쳐 검출된 커패시턴스 값들의 범위, (2) 최대 커패시턴스 값 최소 커패시턴스 값 사이의 커패시턴스 값들의 범위, 및 (3) 감쇠 변수를 계산함으로써 결정될 수 있다.
최대 커패시턴스 값에 대한 감쇠 변수는 이전 프레임들의 수에 걸쳐 검출된 바와 같은, 최대 커패시턴스 값 최소 커패시턴스 값 사이의 커패시턴스 값들의 가변성의 백분율일 수 있다. 예로서, 최대 커패시턴스 값에 대한 감쇠 변수는 각각의 프레임에 대한 최대 커패시턴스 값 최소 커패시턴스 값 사이의 커패시턴스 값들의 범위의 10 퍼센트일 수 있다. 다시 말해서, 모든 프레임에 대해, 감쇠 변수는 최대 커패시턴스 값 최소 커패시턴스 값 사이의 커패시턴스 값들의 범위에 10 퍼센트를 곱함으로써 계산될 수 있다. 이어서, 이 감쇠 변수는 업데이트된 최대 커패시턴스 값을 결정하기 위해 사용될 수 있다. 일부 경우들에서, 최대 커패시턴스 값은 최대 커패시턴스 값과 최소 커패시턴스 값 사이의 범위의 대략, 또는 실질적으로, 약 13 퍼센트로 감쇠할 수 있다.
일부 경우들에서, 최대 커패시턴스 값이 감쇠하는 양은 최대 커패시턴스 값이 최대 커패시턴스 값 최소 커패시턴스 값 사이의 커패시턴스 값들의 범위의 50 퍼센트 초과로 감쇠하지 않도록 제한될 수 있다. 이러한 의미에서, 최대 커패시턴스 값은 최대 커패시턴스 값 최소 커패시턴스 값 사이의 커패시턴스 값들의 범위의 절반 초과로 감쇠하는 것으로 제한될 수 있다.
일부 경우들에서, 최대 커패시턴스 값이 감쇠하는 양은 최대 커패시턴스 값 최소 커패시턴스 값 사이의 커패시턴스 값들의 범위에 비례할 수 있다. 또한, 최대 커패시턴스 값은 최소 커패시턴스 값의 소정 임계치 내로 감쇠하는 것으로 제한될 수 있다. 예를 들어, 커패시턴스 값들 내의 노이즈의 영향을 감소시키기 위해, 최대 커패시턴스 값은 최소 커패시턴스 값의 임계량 내로 감쇠하지 않을 수 있다. 다시 말해서, 최대 커패시턴스 값과 최소 커패시턴스 값은 노이즈의 영향을 감소시키기 위해 임계 범위만큼 분리될 수 있다.
일부 경우들에서, 최대 커패시턴스 값이 감쇠하는 레이트는 측정된 커패시턴스 값들의 가변성에 의존할 수 있다. 예를 들어, 과거 프레임들의 수에 걸쳐 검출된 커패시턴스 값들 사이에 큰 가변성이 존재하는 경우, 최대 커패시턴스 값은, 과거 프레임들의 수에 걸쳐 검출된 커패시턴스 값들 사이에 작은 가변성이 존재하는 경우에 비해, 더 빠른 레이트로 감쇠할 수 있다. 추가적으로, 또는 대안적으로, 최대 커패시턴스 값이 감쇠하는 레이트는 수신된 커패시턴스 값들의 수에 의존할 수 있다. 예를 들어, 사용자가 제어기(100) 상에서 그의 또는 그녀의 손가락들을 빠르게 탭핑하고 있고 제어기(100)가 많은 수의 커패시턴스 값들을 수신하는 경우, 제어기(100)는 최대 커패시턴스 값을 더 빠른 레이트로 감쇠시킬 수 있다.
최대 커패시턴스 값을 감쇠시키는 것은 용량성 패드들(602)에 대한 업데이트된 최대 커패시턴스 값을 결정하기 위해 사용될 수 있다. 추가적으로, 업데이트된 최대 커패시턴스 값은 또한 근접 센서(600)의 개별 용량성 패드들(602)에 대한 커패시턴스 값들의 업데이트된 범위, 업데이트된 바이어스, 및/또는 업데이트된 스케일 팩터를 결정하기 위해 사용될 수 있다.
808에서, 제어기(100)의 로직은 최소 커패시턴스 값을 점진적으로 할당 또는 조정하기 위해 최소 커패시턴스 값과 연관된 한계 또는 레벨을 감쇠시킬 수 있다. 일부 경우들에서, 최소 커패시턴스 값은 커패시턴스 값들의 범위가 연속적으로 업데이트되도록 연속적으로 감쇠할 수 있다. 즉, 최대 커패시턴스 값을 감쇠시키는 것과 관련하여 위에서 논의된 바와 같이, 게임플레이 경험 동안, 소정 조건들이 근접 센서(600)에서 검출된 커패시턴스 값들에 영향을 미칠 수 있다. 예를 들어, 손가락이 제어기(100)로부터 완전히 펼쳐지는 것과 연관된 커패시턴스 값은 변할 수 있다. 예로서, 시간의 제1 인스턴스에서, 제1 커패시턴스 값은 손가락이 제어기(100)로부터 완전히 펼쳐지는 것을 나타내거나 이에 대응할 수 있고, 시간의 제2 인스턴스에서, 제2 커패시턴스 값은 손가락이 제어기(100)로부터 완전히 펼쳐지는 것을 나타내거나 이에 대응할 수 있다. 일부 경우들에서, 제2 커패시턴스 값은 제1 커패시턴스 값보다 작을 수 있다. 그러나, 제2 인스턴스에서 사용자의 손 제스처를 정확하게 묘사하기 위해, 손가락이 제어기(100)로부터 완전히 펼쳐지는 것과 연관된 커패시턴스 값은 업데이트될 수 있다. 즉, 제2 커패시턴스 값은 사용자가 제어기(100)로부터 그들의 손가락을 완전히 펼치는 것을 나타낼 수 있지만, 제2 커패시턴스 값은 손가락이 완전히 펼쳐지는 것을 나타내는 최소 커패시턴스 값과 연관되지 않을 수 있다. 최소 커패시턴스 값을 감쇠시킴으로써, 제어기(100)는 손가락이 완전히 펼쳐지는 것과 연관된 커패시턴스 값을 동적으로 조정할 수 있다.
최소 커패시턴스 값을 감쇠시키는 것은 최소 커패시턴스 값의 미리결정된 범위 내에 있지 않은 임계량의 커패시턴스 값들을 수신하는 것에 적어도 부분적으로 기초할 수 있다. 추가적으로, 또는 대안적으로, 최소 커패시턴스 값을 감쇠시키는 것은, 최소 커패시턴스 값의 미리결정된 범위 내의 커패시턴스 값들, 및/또는 임계량만큼 변하는 미리결정된 수의 과거 커패시턴스 값들에 걸친 커패시턴스 값들을 수신한 이래로 경과하는 임계 시간량, 프레임들의 수, 또는 카운트들의 수에 적어도 기본적으로 기초할 수 있다.
감쇠의 양, 또는 최소 커패시턴스 값이 감쇠하는 양은, 이전 프레임들의 수(예컨대, 20 프레임, 50 프레임, 100 프레임 등)에 걸쳐 검출된 커패시턴스 값들의 범위, 최소 커패시턴스 값과 최대 커패시턴스 값 사이의 커패시턴스 값들의 범위, 미리결정된 수의 과거 프레임들에 걸쳐 검출된 평균 커패시턴스 값과 최소 커패시턴스 값 사이의 차이, 및/또는 최소 커패시턴스 값과 평균 커패시턴스 값 사이의 차이의 백분율에 기초할 수 있다. 다른 경우들에서, 이전 프레임들의 수에 걸쳐 검출된 커패시턴스 값들의 평균이 최소 커패시턴스 값의 미리결정된 범위 내에 있지 않은 경우, 최소 커패시턴스 값은 감쇠할 수 있다. 일부 경우들에서, 감쇠는 (1) 이전 카운트들 또는 프레임들 수에 걸쳐 검출된 커패시턴스 값들의 범위, (2) 최소 커패시턴스 값 최대 커패시턴스 값 사이의 커패시턴스 값들의 범위, 및 (3) 감쇠 변수를 계산함으로써 결정될 수 있다.
일부 경우들에서, 최소 커패시턴스 값에 대한 감쇠 변수는 이전 프레임들의 수에 걸쳐 검출된 바와 같은 최소 커패시턴스 값 최대 커패시턴스 값 사이의 커패시턴스 값들의 가변성의 백분율일 수 있다. 예를 들어, 최소 커패시턴스 값에 대한 감쇠 변수는 각각의 프레임에 대한 최소 커패시턴스 값과 최대 커패시턴스 값 사이의 커패시턴스 값들의 범위의 20 퍼센트일 수 있다. 다시 말해서, 모든 프레임에 대해, 감쇠 변수는 최소 커패시턴스 값 최대 커패시턴스 값 사이의 커패시턴스 값들의 범위에 20 퍼센트를 곱함으로써 계산될 수 있다.
일부 경우들에서, 최소 커패시턴스 값은 최대 커패시턴스 값보다 2배 빠르게 감쇠하도록 허용될 수 있다. 즉, 최소 커패시턴스 값, 또는 커패시턴스 값들의 하위-범위 내의 커패시턴스 값들이 노이즈에 영향을 받기 쉽기 때문에, 최소 커패시턴스 값은 최대 커패시턴스 값보다 2배 빠르게 감쇠할 수 있다. 그러나, 일부 경우들에서, 최소 커패시턴스 값이 감쇠하는 양은 최소 커패시턴스 값이 최대 커패시턴스 값 최소 커패시턴스 값 사이의 커패시턴스 값들의 범위의 50 퍼센트 초과로 감쇠하지 않도록 제한될 수 있다. 이러한 의미에서, 최소 커패시턴스 값은 최대 커패시턴스 값 최소 커패시턴스 값 사이의 커패시턴스 값들의 범위의 절반 초과로 감쇠하는 것으로 제한될 수 있다. 따라서, 최소 커패시턴스 값이 감쇠하는 양은 최대 커패시턴스 값 최소 커패시턴스 값 사이의 커패시턴스 값들의 범위에 비례할 수 있다. 또한, 최소 커패시턴스 값은 노이즈를 줄이기 위해 최대 커패시턴스 값의 소정 임계치 내로 감쇠하는 것으로 제한될 수 있다.
최소 커패시턴스 값을 감쇠시키는 것은 용량성 패드들(602)에 대한 업데이트된 최소 커패시턴스 값을 결정하기 위해 사용될 수 있다. 추가적으로, 최대 커패시턴스 값을 감쇠시키는 것과 조합하여, 업데이트된 최소 커패시턴스 값은 또한 근접 센서(600)의 개별 용량성 패드들(602)에 대한 커패시턴스 값들의 업데이트된 범위, 업데이트된 바이어스, 및/또는 업데이트된 스케일 팩터를 결정하기 위해 사용될 수 있다.
일부 경우들에서, 최소 커패시턴스 값이 감쇠하는 레이트는 측정된 커패시턴스 값들의 가변성에 의존할 수 있다. 예를 들어, 과거 프레임들의 수에 걸쳐 검출된 커패시턴스 값들 사이에 큰 가변성이 존재하는 경우, 최소 커패시턴스 값은, 과거 프레임들의 수에 걸쳐 검출된 커패시턴스 값들 사이에 작은 가변성이 존재하는 경우에 비해, 더 빠른 레이트로 감쇠할 수 있다.
810에서, 제어기(100)는 이전 카운트들 또는 프레임들의 수에 걸쳐 용량성 패드들(602)에 의해 검출된 평균 커패시턴스 값을 결정할 수 있다. 예를 들어, 제어기(100)는 이전 20개의 샘플들에 걸쳐 개별 용량성 패드들(602)에 의해 검출된 평균 커패시턴스 값을 결정할 수 있다. 그러나, 전술한 바와 같이, 최대 커패시턴스 값 및/또는 최소 커패시턴스 값을 감쇠시키는 것은 이전 프레임들의 수로 결정된 평균 커패시턴스 값에 기초할 수 있다. 이에 따라, 평균 커패시턴스 값은 알려질 수 있다.
812에서, 제어기(100)의 로직은 810에서 결정된 평균 커패시턴스 값이 806에서 결정된 업데이트된 최대 커패시턴스 값보다 큰지 여부를 결정할 수 있다. 즉, 평균 커패시턴스 값을 결정하는 것에 적어도 부분적으로 기초하여, 제어기(100)는 평균 커패시턴스 값과 최대 커패시턴스 값을 비교하여, 평균 커패시턴스 값이 용량성 패드(602)에서 검출된 최대 커패시턴스 값보다 큰지 여부를 결정할 수 있다. 다시 말해서, 각각의 용량성 패드(602)는 최대 커패시턴스 값과 연관될 수 있고, 제어기(100)는 평균 커패시턴스 값이 최대 커패시턴스 값보다 큰지 여부를 결정할 수 있다. 평균 커패시턴스 값이 최대 커패시턴스 값을 초과한다고 결정하면, 프로세스(800)는, 제어기(100)의 로직이 새로운 최대 커패시턴스 값을 결정할 수 있는 814로의 "예" 경로를 따를 수 있다. 다시 말해서, 812에서의 "예"의 결과로서, 제어기(100)의 로직은 최대 커패시턴스 값은 너무 낮고 평균 커패시턴스 값은 최대 커패시턴스 값을 초과했다고 결정할 수 있다.
814에서, 제어기(100)의 로직은 미리결정된 수의 프레임들에 걸쳐 수신된 평균 커패시턴스 값들의 백분율 또는 가중치에 적어도 부분적으로 기초하여 용량성 패드(602)에 대한 새로운 최대 커패시턴스 값을 결정할 수 있다. 예를 들어, 새로운 최대 커패시턴스 값은, 감쇠하는 대신에, 이전의 과거 샘플들의 수로부터 결정된 평균 커패시턴스 값을 향해 연장될 수 있다. 일부 경우들에서, 최대 커패시턴스 값이 "성장하는(grow)" 양은 이전 프레임들의 수로부터의 평균 커패시턴스 값들에 0.2와 같은 변수를 곱함으로써 결정될 수 있다. 그러나, 변수는, 사용자의 손 제스처를 정확하게 결정하기 위해 이전 프레임들의 수에 걸쳐 결정된 평균 커패시턴스 값을 향해 최대 커패시턴스 값이 "성장하도록", 최적화될 수 있다. 일부 경우들에서, 최대 커패시턴스 값의 성장의 양은 또한 평균 커패시턴스 값이 최대 커패시턴스 값을 초과하는 양에 적어도 부분적으로 기초할 수 있다.
대안적으로, 평균 커패시턴스 값이 용량성 패드(602)에서 검출된 최대 커패시턴스 값보다 크지 않은 경우, 프로세스(800)는 816으로 "아니오" 경로를 따를 수 있고, 816에서 제어기(100)의 로직은 평균 커패시턴스 값이 808에서 결정된 최소 커패시턴스 값보다 낮은지 여부를 결정할 수 있다. 즉, 평균 커패시턴스 값을 결정하는 것에 적어도 부분적으로 기초하여, 제어기(100)는 평균 커패시턴스 값과 최소 커패시턴스 값을 비교하여, 평균 커패시턴스 값이 용량성 패드(602)에서 검출된 최소 커패시턴스 값보다 작은지 여부를 결정할 수 있다. 다시 말해서, 각각의 용량성 패드(602)는 최소 커패시턴스 값과 연관될 수 있고, 제어기(100)의 로직은 평균 커패시턴스 값이 최소 커패시턴스 값보다 작은지 여부를 결정할 수 있다. 평균 커패시턴스 값이 최소 커패시턴스 값보다 작다고 결정하면, 프로세스(800)는, 제어기(100)의 로직이 새로운 최소 커패시턴스 값을 결정할 수 있는 818로의 "예" 경로를 따를 수 있다. 다시 말해서, 816에서의 "예"의 결과로서, 제어기(100)의 로직은 최소 커패시턴스 값은 너무 높고 평균 커패시턴스 값은 최소 커패시턴스 값을 초과했다고 결정할 수 있다.
818에서, 제어기(100)는 이전 프레임들의 수에 걸친 평균 커패시턴스 값들의 백분율 또는 가중치에 적어도 부분적으로 기초하여 용량성 패드(602)에 대한 새로운 최소 커패시턴스 값을 결정할 수 있다. 예를 들어, 새로운 최소 커패시턴스 값은, 감쇠하는 대신에, 이전 프레임들의 수의 평균 커패시턴스 값을 향해 연장될 수 있다. 일부 경우들에서, 최소 커패시턴스 값이 "성장하는" 양은 이전의 미리결정된 수의 커패시턴스 값들의 평균 커패시턴스 값에 0.4와 같은 변수를 곱함으로써 결정될 수 있다. 그러나, 변수는, 사용자의 손 제스처를 정확하게 결정하기 위해 이전 프레임들의 수에 걸쳐 결정된 평균 커패시턴스 값을 향해 최소 커패시턴스 값이 "성장하도록", 최적화될 수 있다. 일부 경우들에서, 최소 커패시턴스 값의 성장의 양은 또한 평균 커패시턴스 값이 최소 커패시턴스 값을 초과하는 양에 적어도 부분적으로 기초할 수 있다.
816에서, 평균 커패시턴스 값이 최소 커패시턴스 값보다 작지 않은 경우, 프로세스(800)는 제어기(100)가 근접 센서(600)를 보정할 수 있는 820으로의 "아니오" 경로를 따를 수 있다.
근접 센서(600)(또는 용량성 패드들(602))를 보정하는 것은 또한 새로운 최대 커패시턴스 값을 결정하는 것(예컨대, 814) 및/또는 새로운 최소 커패시턴스 값을 결정하는 것(예컨대, 818)으로부터 뒤따를 수 있다. 전술한 바와 같이, 근접 센서(600)를 보정하는 것은 용량성 패드들(602)에 대한 바이어스 및 스케일 팩터를 계산하는 것을 포함할 수 있다. 다시 말해서, 근접 센서(600)를 보정하는 것은, 각각의 용량성 패드(602)에 대해, 검출된 커패시턴스 값들의 범위, 바이어스, 및/또는 스케일 팩터를 결정하는 것을 포함할 수 있다. 따라서, 근접 센서(600)를 보정하기 위해, 제어기(100)는 새로운 최대 커패시턴스 값 및/또는 최소 커패시턴스 값을 이용할 수 있다.
820으로부터, 프로세스(800)는 제어기(100)가 후속 커패시턴스 값들을 수신할 수 있는 802로 되돌아갈 수 있다. 즉, 커패시턴스 값들을 반복적으로 수신함으로써, 프로세스(800)는 최대 커패시턴스 값, 최소 커패시턴스 값을 연속적으로 감쇠시키고, 용량성 패드들(602)에 의해 검출된 커패시턴스 값들의 범위를 결정 및/또는 업데이트하고, 그리고/또는 커패시턴스 값들을 정규화할 수 있다.
도 9는 제어기(100)에서 손 제스처와 연관된 커패시턴스 값들을 수신하고, 근접 센서(600)를 보정하고, 커패시턴스 값들 및/또는 제어기(100)에 대한 손가락의 근접성의 표시를 송신하기 위한 프로세스(900)를 예시한다.
902에서, 프로세스(900)는 제1 커패시턴스 값들을 수신할 수 있다. 예를 들어, 제어기(100)의 하나 이상의 프로세서들은 근접 센서(600)로부터 제1 커패시턴스 값들을 수신할 수 있다. 제1 커패시턴스 값들은 근접 센서(600)의 개별 용량성 패드들(602)에 의해 검출된 커패시턴스 값들을 나타낼 수 있으며, 여기서 제1 커패시턴스 값들은 제어기(100)에 대한 사용자의 개별 손가락들의 근접성을 표현한다. 예를 들어, 제1 커패시턴스 값들은 제1 손 제스처(904)에 대응할 수 있고, 제1 커패시턴스 값들은 용량성 패드들(602)에 대한 사용자의 손가락(들)의 근접성을 나타낼 수 있다.
906에서, 프로세스(900)는 제1 커패시턴스 값들을 정규화할 수 있다. 예를 들어, 제어기(100)의 하나 이상의 프로세서들은 위에서 논의되고 설명된 프로세스(들)(700 및/또는 800)의 동작들을 이용하여 개별 용량성 패드들(602)로부터 수신된 제1 커패시턴스 값들을 정규화할 수 있다.
908에서, 프로세스(900)는 제1 커패시턴스 값들에 적어도 부분적으로 기초하여 근접 센서(600)를 보정할 수 있다. 예를 들어, 제어기(100)의 하나 이상의 프로세서들은 위에서 논의되고 설명된 프로세스(들)(700 및/또는 800)와 관련하여 위에서 논의된 바와 같이, 용량성 패드들(602)에서 검출된 커패시턴스 값들의 범위, 용량성 패드들(602)과 연관된 바이어스, 및/또는 용량성 패드들(602)과 연관된 스케일 팩터를 결정함으로써 근접 센서(600)를 보정할 수 있다.
910에서, 프로세스(900)는 제1 커패시턴스 값들 및/또는 손가락 위치(들)의 표시를 송신할 수 있다. 예를 들어, 제어기(100)의 하나 이상의 프로세서들은 제1 커패시턴스 값들 및/또는 손가락 위치(들)의 표시를 컴퓨팅 디바이스로 송신하기 위해 제어기(100)의 하나 이상의 인터페이스들을 이용할 수 있다. 일부 경우들에서, 컴퓨팅 디바이스는 제1 커패시턴스 값들 및/또는 손가락 위치(들)의 표시를 이용하여 제1 손 제스처(904)를 묘사하는 이미지 데이터를 생성할 수 있다. 손가락 위치(들)의 표시는 제어기(100)에 대한 손가락(들)의 상대적 위치에 대응하는 [0,1]의 스케일 상의 수치를 나타낼 수 있다. [0,1] 스케일 상의 1의 값은 손가락이 제어기(100)를 터치한다는 것을 나타낼 수 있는 반면, [0,1] 스케일 상의 0의 값은 손가락이 제어기(100)로부터 완전히 펼쳐지는 것을 나타낼 수 있다. 제1 손 제스처(904)로 돌아가서, 제1 커패시턴스 값들을 수신하고/하거나, 제1 커패시턴스 값들을 정규화하고/하거나, 근접 센서(600)를 보정한 후, 제어기(100)는 제어기(100)에 대한 손가락의 위치에 대응하는 [0,1]의 스케일 상의 손가락 값을 포함하는 표시를 송신할 수 있다. 여기서, 손가락 값들은 제1 손 제스처(904)에 대응하는 이미지 데이터를 생성하기 위해 사용될 수 있다.
912에서, 프로세스(900)는 제2 커패시턴스 값들을 수신할 수 있다. 예를 들어, 제어기(100)의 하나 이상의 프로세서들은 근접 센서(600)로부터 제2 커패시턴스 값들을 수신할 수 있다. 제2 커패시턴스 값들은 근접 센서(600)의 개별 용량성 패드들(602)에 의해 검출된 커패시턴스 값들을 나타낼 수 있으며, 여기서 제2 커패시턴스 값들은 제어기(100)에 대한 사용자의 개별 손가락들의 근접성을 표현한다. 예를 들어, 제2 커패시턴스 값들은 제2 손 제스처(914)에 대응할 수 있고, 제2 커패시턴스 값들은 용량성 패드들(602)에 대한 손가락(들)의 근접성을 나타낼 수 있다.
916에서, 프로세스(900)는 제2 커패시턴스 값들을 정규화할 수 있고, 918에서 프로세스(900)는 근접 센서(600)를 보정할 수 있다(예컨대, 용량성 패드들(602)과 연관된 범위, 바이어스, 및/또는 스케일 팩터를 결정함).
920에서, 프로세스(900)는 제2 커패시턴스 값들 및/또는 손가락 위치(들)의 표시를 송신할 수 있다. 예를 들어, 제어기(100)의 하나 이상의 프로세서들은 제2 커패시턴스 값들 및/또는 손가락 위치(들)의 표시를 컴퓨팅 디바이스로 송신하기 위해 제어기(100)의 하나 이상의 인터페이스들을 이용할 수 있다. 일부 경우들에서, 컴퓨팅 디바이스는 제2 커패시턴스 값들 및/또는 손가락 위치(들)의 표시를 이용하여 제2 손 제스처(914)를 묘사하는 이미지 데이터를 생성할 수 있다. 예를 들어, 손가락 위치(들)의 표시는 [0,1]의 스케일 상의 수치 제어기(100)에 대한 손가락(들)의 상대적 위치를 나타낼 수 있다.
도 10은 제어기(100)의 근접 센서(600)를 보정하고, 근접성 데이터 내의 노이즈를 감소시키고, 근접성 데이터를 이용하여 사용자에 의해 수행된 손 제스처들을 나타내는 이미지 데이터를 생성하기 위한 프로세스(1000)를 예시한다.
1002에서, 프로세스(1000)는 근접 센서(600)로부터 근접성 데이터를 수신할 수 있으며, 여기서 근접성 데이터는 근접 센서(600)의 용량성 패드들(602)에 의해 검출된 미가공 커패시턴스 값들을 표현하거나 나타낸다. 도 10에 예시된 바와 같이, 일부 경우들에서, 프로세스(1000)는 a1, ai, 및 aN에 의해 예시된 바와 같이, 개별 용량성 패드들(602)로부터 커패시턴스 값들을 수신할 수 있다. 일부 경우들에서, 프로세스(1000)는 VR 환경에서 디스플레이되는 각각의 프레임에 대하여 근접 센서(600)로부터 미가공 커패시턴스 값들을 수신할 수 있다.
1004에서, 프로세스(1000)는 미가공 커패시턴스 값들을 정규화하기 위하여 공장 정규화를 수행할 수 있다. 예를 들어, 용량성 패드들(602)은 생산 환경, 용량성 패드(602)의 크기 등에 따라 상이한 바이어스, 스케일 팩터, 및 오프셋을 가질 수 있다. 일부 경우들에서, 공장 정규화는 커패시턴스 값 내의 바이어스를 제거하고 커패시턴스 값을 정규화하기 위한 1차 보정을 포함할 수 있다.
1006에서, 프로세스(1000)는 파지 보정을 수행할 수 있다. 도시된 바와 같이, 파지 보정은 서브-블록들(1008, 1010, 1012)을 포함할 수 있고, 이는 이어서 상세하게 논의된다.
서브-블록(1008)에서, 프로세스(1000)는 각각의 용량성 패드들(602)에 대한 일정 범위의 커패시턴스 값들을 관찰하는 통계적 분석, 수신된 최대 커패시턴스 값, 수신된 최소 커패시턴스 값, 평균 커패시턴스 값, 및/또는 중간 커패시턴스 값을 수행할 수 있다.
1010에서, 프로세스(1000)는 개별 제스처 검출을 수행할 수 있다. 여기서, 프로세스(1000)는 제어기(100)에서 개별 제스처를 검출하기 위하여, 공장 정규화에 따라 정규화된 후에 근접성 데이터(즉, 커패시턴스 값들)를 분석할 수 있다. 예를 들어, 근접성 데이터가 용량성 패드들(602)의 커패시턴스 값들, 또는 그것들의 일부분이 갑자기 강하한다고 나타내는 경우, 프로세스(1000)는 커패시턴스 값들의 이러한 강하를 사용자가 제어기(100)로부터 그의 또는 그녀의 손을 떼거나 또는 제어기(100)로부터 특정 손가락을 떼는 것과 연관시킬 수 있다. 사용자가 제어기(100)로부터 그의 또는 그녀의 손가락을 갑자기 뗄 때 수신된 커패시턴스 값들은 특정 용량성 패드(602)에 의해 검출된 커패시턴스 값들의 범위에 대한 최소 커패시턴스 값에 대응할 수 있다(예컨대, 손가락이 제어기(100)를 터치하고 있지 않을 때). 갑작스런 강하 이전에 수신된 커패시턴스 값은 특정 용량성 패드(602)에 의해 검출된 커패시턴스 값들의 범위의 최대 커패시턴스 값에 대응할 수 있다(예컨대, 커패시턴스 값은 손가락이 제어기(100)를 터치하고 있을 때를 나타냄). 커패시턴스 값들의 범위에서, 프로세스(1000)는 근접 센서(600)의 각각의 용량성 패드들(602)에서 수신된 커패시턴스 값들을 정규화하기 위하여 용량성 패드들(602)의 커패시턴스 값들에 대한 바이어스 및 스케일 팩터를 결정할 수 있다.
1012에서, 프로세스(1000)는 연속적인 보정 업데이트 및 감쇠를 수행할 수 있다. 프로세스(1000)가 근접 센서(600)로부터 근접성 데이터를 연속적으로 수신할 수 있기 때문에, 프로세스(1000)는 주어진 용량성 패드(602)에 대한 커패시턴스 값들의 범위에 대한 최소 커패시턴스 값 및/또는 최대 커패시턴스 값을 재보정 또는 리셋하기 위하여 근접성 데이터를 연속적으로 모니터링할 수 있다. 다시 말해서, 개별 용량성 패드들(602)로부터 근접성 데이터를 연속적으로 수신함으로써, 프로세스(1000)는 커패시턴스 값들이 이전에 결정된 그 범위의 최소 커패시턴스 값 및/또는 그 범위의 최대 커패시턴스 값보다, 각각 낮은지 또는 높은지 결정할 수 있다.
예를 들어, 커패시턴스가 게임플레이 경험 동안 변화할 수 있음에 따라(예컨대, 손에 땀이 나거나 또는 건조해지거나, 습도, 온도 등), 프로세스(1000)는 새로운 최소 커패시턴스 값 또는 새로운 최대 커패시턴스 값을 결정, 또는 설정할 수 있고, 그럼으로써 용량성 패드(602)에 의해 검출된 커패시턴스 값들의 범위를 조정할 수 있다. 추가적으로, 일부 경우들에서, 연속적인 보정은 1010에서 개별 제스처 검출을 결정하는 프로세스(1000)에 대한 의존성을 낮출 수 있다.
일부 경우들에서, 프로세스(1000)는 새롭게 검출된 최소 커패시턴스 값 또는 새롭게 검출된 최대 커패시턴스 값에 가중치 또는 백분율을 할당하여 최소 커패시턴스 값 또는 최대 커패시턴스 값을 각각 업데이트할 수 있다. 예를 들어, 프로세스(1000)가 소정의 시간량, 또는 소정 수의 프레임들 동안 이전에 검출된 최소 커패시턴스 값 미만의 커패시턴스 값을 검출하는 경우, 프로세스(1000)는 커패시턴스 값에 가중하여 최소 커패시턴스 값을 업데이트할 수 있다. 추가적으로, 최소 커패시턴스 값 및/또는 최대 커패시턴스 값은 사용자가 어떻게 제어기(100)를 파지하고 있는지, 환경 조건(예컨대, 습도), 또는 기타 속성들(예컨대, 피부 습윤)에 따라 시간이 지남에 따라 감쇠할 수 있다. 최소 커패시턴스 값 및 최대 커패시턴스 값이 감쇠할 수 있는 양은, 최소 커패시턴스 값 및 최대 커패시턴스 값이 임계량만큼 분리되어 센서 노이즈를 감소시키도록, 제한될 수 있다. 일부 경우들에서, 감쇠는 시간 및/또는 근접 센서(600)에 의해 검출된 커패시턴스 값들의 변화율에 따라 달라질 수 있다. 예를 들어, 사용자가 제어기(100) 상에 그들의 손가락들을 탭핑하여 제어기(100)가 소정 시간 기간 내에 임계량의 커패시턴스 값들을 검출하거나, 또는 제어기(100)가 사용자들을 스위칭하고, 그럼으로써 잠재적으로 수신된 커패시턴스 값들의 큰 변화(또는 가변성)를 야기하는 경우, 감쇠율은 최소 커패시턴스 값 및/또는 최대 커패시턴스 값을 업데이트하는 데 필요한 시간의 양을 줄이기 위해 증가할 수 있다.
1006에서의 파지 보정, 및 서브-블록들(1008 내지 1012)의 결과로서, 각각의 용량성 패드(602)로부터 감지된 커패시턴스 값들은 [0,1]의 스케일 상에 정규화될 수 있다. [0,1]의 스케일은, 사용자의 특정 파지에 대하여 그리고 개별 용량성 패드들(602)에 대하여, 근접 센서(600)로부터 감지된 커패시턴스 값들에 대한 하이 및 로우 레벨들을 표현할 수 있다.
1014에서, 프로세스(1000)는 커패시턴스 값들의 가중합을 수행할 수 있다. 커패시턴스 값들이 [0,1]의 스케일 상에 정규화됨에 따라, 프로세스(1010)는 제어기 구성에 따라 용량성 패드들(602)로부터의 커패시턴스 값들에 가중치를 할당할 수 있다. 즉, 커패시턴스 값들은 [0,1] 사이에서 정규화되고 가중치들은 개별 용량성 패드들(602)로부터 수신된 개별적인 커패시턴스 값들에 할당된다. 예를 들어, 소정 제어기 구성이 특정 손가락에 할당된 5개의 용량성 패드들(602)을 포함하는 경우, 커패시턴스 값들은 동일한 가중치(예컨대, 1/5)를 포함할 수 있다. 다시 말해서, 용량성 패드들(602)이 최대 커패시턴스 값을 검출하면, 가중합의 출력은 1과 같을 수 있다.
도시된 바와 같이, 가중합을 결정하는 단계는 서브-블록들(1016, 1018, 1020, 1022)을 포함할 수 있다. 서브-블록(1016)은 제어기(100)에 대한 제어기 구성 모델들을 포함할 수 있다. 위에 언급된, 제어기 구성들은 소정 용량성 패드들(602)을 사용자의 소정 손가락들과 연관시키기 위하여 근접 센서(600)의 용량성 패드들(602)의 맵핑을 지정한다.
서브-블록(1018)에서, 프로세스(1000)는 동적 제어기 구성 선택을 수행할 수 있고, 프로세스(1000)는 사용자의 파지에 따라 최고의 매칭, 또는 최고점 매칭된, 제어기 구성을 결정하기 위하여 제어기 구성 모델(들)에 커패시턴스 값들을 입력한다. 제어기 구성을 선택하는 단계는 (1) 특정 손가락에 할당된 용량성 패드들(602)의 그룹에 대한 커패시턴스 값들의 분산과 (2) 용량성 패드들(602)의 그룹들 사이의 커패시턴스 값들의 분산의 비율을 결정하는 단계를 포함할 수 있다. 사용자의 파지에 대하여 가장 가능성높은 매칭을 결정하기 위하여 각각의 제어기 구성에 대하여 비율이 계산된다.
서브-블록(1020)에서, 프로세스(1000)는 커패시턴스 값들 내에 포함된 노이즈를 필터링할 수 있다. 예를 들어, 손가락이 완전히 펼쳐진 때와 같이, 손가락이 제어기(100)를 터치하고 있지 않으면, 제어기(100)를 터치하지 않는 손가락(예컨대, 손가락이 완전히 펼쳐짐)과 연관된 용량성 패드들(602)은 노이즈에 민감할 수 있다. 여기서, 소량의 커패시턴스를 검출하는 것은 수신된 커패시턴스 값 내에서 다량의 노이즈를 야기할 수 있다. 개별 용량성 패드들(602)에 대한 근접 센서(600)로부터의 커패시턴스 값들이 소정 임계치를 하회하는 경우들에서, 또는 커패시턴스 값들이 용량성 패드들(602)에 대한 로우-레벨 커패시턴스 값의 소정 한계 내에 있는 경우, 프로세스(1000)는 검출된 커패시턴스를 억누를 수 있다. 다른 경우들에서, 이러한 시나리오들에서, 프로세스(1000)는 커패시턴스 값들에 낮은 가중치를 할당할 수 있다.
서브-블록(1022)에서, 프로세스(1000)는 근접 센서(600)의 용량성 패드들(602) 및/또는 각각의 용량성 패드들(602)과 연관된 손가락들로부터의 소정 커패시턴스 값들을 거부할 수 있다. 예를 들어, 1020에서 프로세스(1000)는 최소 커패시턴스 값 또는 최대 커패시턴스 값 사이의 좁은 범위를 갖는 용량성 패드들(602)을 식별할 수 있다. 이 시나리오들에서, 용량성 패드들(602)에 의해 수신된 커패시턴스 값들은 노이즈를 유발할 수 있고, 소정 용량성 패드들(602), 또는 용량성 패드들(602)의 그룹들을 무시하는 것은 근접성 데이터가 사용자의 손 제스처에 대응하는 신뢰성을 증가시킬 수 있다. 즉, 용량성 패드(602)에 의해 검출된 커패시턴스 값들의 범위가 좁은 경우, 용량성 패드(602)는 다량의 노이즈에 민감할 수 있다.
서브-블록(816)에서의 용량성 패드 및 손가락 거부는 최소 커패시턴스 값 또는 최대 커패시턴스 값이 서로의 임계 범위 내에 있는 용량성 패드들(602)을 식별하는 것을 포함할 수 있다. 예를 들어, 최소 커패시턴스 값 및 최대 커패시턴스 값이 좁은 범위만큼 분리되는 경우, 용량성 패드(602)는 정확하게 사용자의 손가락 위치들을 충분히 상세하게 감지 및 검출할 수 없을 수 있다. 여기서, 용량성 패드(602)는 임계 범위 내의 커패시턴스 값들을 검출할 수 있기 때문에, 측정된 커패시턴스 값들은 손가락 위치에 정확하게 대응하지 않을 수 있다. 추가적으로, 또는 대안적으로, 소정 손가락들은 검출된 커패시턴스 값들의 신뢰성을 감소시키는 다수의 용량성 패드들(602)과 연관될 수 있다. 이 시나리오들에서, 용량성 패드들(602)에 의해 수신된 커패시턴스 값들은 노이즈를 유발할 수 있고, 소정 용량성 패드들(602), 또는 용량성 패드들(602)의 그룹들을 무시하는 것은 커패시턴스 값들이 사용자의 손 제스처에 대응하는 신뢰성을 증가시킬 수 있다. 추가적으로, 또는 대안적으로, 소정 손가락들은 낮은 신뢰도를 갖는 다수의 용량성 패드들(602)과 연관될 수 있다. 소정 손가락들, 또는 용량성 패드들(602)의 그룹을 거부하는 것은 작은 손에 대한 제어기 구성들에 대한 우발 동작을 유발한다. 이 시나리오들에서, 각각의 손가락은 인접한 손가락들과 연관될 수 있다(예컨대, 소지는 약지와 연관됨).
1024에서, 프로세스(1000)는 최종 정규화를 수행할 수 있다. 예를 들어, 일부 경우들에서, 특정 손가락에 할당된 용량성 패드(602)는 커패시턴스 값을 검출하지 않을 수 있거나 또는 커패시턴스 값들이 신뢰할 수 없을 수 있다. 여기서, 손의 크기 때문이거나 또는 사용자가 그의 또는 그녀의 파지를 재조정한 경우에, 사용자는 근접 센서(600)의 소정 용량성 패드들(602)을 터치하지 않을 수 있다. 추가적으로, 최소 커패시턴스 값 및 최대 커패시턴스 값이 좁거나, 또는 좁은 범위만큼 분리된 일부 경우들에서, 커패시턴스 값들은 신뢰할 수 없을 수 있고 노이즈가 손가락 모션에 심각하게 영향을 미칠 수 있다. 이 용량성 패드(들)(602)로부터의 노이즈를 제거 또는 감소시키기 위하여, 최종 정규화(1024)는 커패시턴스 값들의 신뢰도를 결정할 수 있고, 신뢰도가 낮은 경우, 용량성 패드(602)로부터의 커패시턴스 값의 가중치는 가중합으로부터 제거된다. 여기서, 커패시턴스 값들을 합산하고, 사용 중인 용량성 패드들(602)의 가중치들의 합으로 나눈다.
1026에서, 프로세스(1000)는 근접성 데이터를 필터링하고 곡선 만들기하여 사용자의 손 제스처를 표현할 수 있다. 필터링 및 곡선 만들기는 [0,1] 스케일의 근접성 데이터의 최종 정규화를 선형화하여 근접성 데이터와 손가락의 위치(예컨대, 구부림, 펼침, 반만 펼침 등) 사이의 선형 관계를 획득하는 것을 포함할 수 있다. 예를 들어, 1024에서 결정된 최종 정규화 값들은 지수 곡선을 따를 수 있어서, 사용자의 손이 제어기(100)에 접근함에 따라, 또는 제어기(100)를 파지함에 따라, 최종 정규화된 값들은 지수적으로 증가한다. 다시 말해서, 합산된 커패시턴스 값은 제어기(100) 상에/주위에 배치된 손가락과의 근접성에 지수적으로 관련될 수 있다. [0,1] 스케일의 값들을 선형화하여 커패시턴스 값들이 손가락 위치와 상관되도록 함으로써 손가락이 제어기(100)로부터 펼쳐질 때, 뿐만 아니라 손가락이 제어기(100)를 터치하거나 또는 그것에 가까이 근접할 때 노이즈가 가질 수 있는 민감도 및 영향을 줄일 수 있다.
도시된 바와 같이, 필터링 및 곡선 만들기는 손 제스처들을 생성하는 데 활용되는 최종 값들을 달성하기 위한 다양한 서브-블록들을 포함할 수 있다. 필터링 및 곡선 만들기 스테이지(1026)에서, 프로세스(1000)는 곡선 만들기 전에 또는 후에 필터링을 적용할 수 있다. 예를 들어, 서브-블록들은 용량성 패드들(602)이 노이즈에 민감할 때 커패시턴스 값들의 로우-레벨 범위 내의 커패시턴스 값들을 필터링하는 단계를 포함할 수 있다. 다시 말해서, 하이-레벨 커패시턴스 범위 내에서, 예컨대 손가락들이 제어기(100)를 파지하거나 또는 제어기(100)에 가까이 근접한 경우, 용량성 패드들(602)은 노이즈에 덜 민감하다.
프로세스(1000)는 1028에서 적응형 필터링을 적용하여 커패시턴스 값들에 대하여 수행되는 필터링의 양을 조정할 수 있다. 적응형 필터링은 커패시턴스 값들의 높은 범위 내에 있는 커패시턴스 값들과 비교하여, 커패시턴스 값들의 낮은 범위 내의 커패시턴스 값들을 더 적극적으로 필터링하도록 적응적으로 필터링할 수 있다. 도시된 바와 같이, 적응형 필터링은 서브-블록들(1030, 1032, 1034)을 포함할 수 있다. 일반적으로, 1026에서의 적응형 필터링은 서브-블록들(1030, 1032, 1034)의 결과들을 이용하여 얼마나 많은 노이즈가 정규화된 값에 존재하는지 결정하여 정규화된 커패시턴스 값들에 적용될 필터링의 양을 결정할 수 있다. 커패시턴스 값들에 존재하는 노이즈의 양을 결정하는 단계는 커패시턴스 값들을 생성하기 위하여 어느 용량성 패드들(602)이 사용되고 있는지 뿐만 아니라 각각의 용량성 패드들(602)에 대한 최소 커패시턴스 값 및 최대 커패시턴스 값을 결정하는 단계를 포함할 수 있다. 예를 들어, 용량성 패드들(602)은 기준선 노이즈를 가질 수 있고, 용량성 패드(602)에 대한 최소 커패시턴스 값 및 최대 커패시턴스 값 사이의 범위가 낮은 경우, 용량성 패드(602)의 기준선 노이즈는 많은 양의 손가락 움직임과 동일할 수 있다(즉, 기준선 노이즈는 용량성 패드(602)가 감지할 수 있는 커패시턴스 값들의 범위의 큰 부분임). 여기서, 신호 대 노이즈 비는 높을 수 있다. 비교적으로, 용량성 패드(602)에 대한 최소 커패시턴스 값과 최대 커패시턴스 값 사이의 범위가 큰 경우, 용량성 패드(602)의 기준선 노이즈는 다량의 손가락 움직임을 유발하지 않을 수 있다. 이 시나리오들에서, 커패시턴스 값들 내의 노이즈를 줄이기 위하여, 커패시턴스 값들의 범위가 작으면, 프로세스(1000)는 커패시턴스 값들의 범위가 클 때보다 커패시턴스 값들을 더 비중있게 필터링할 수 있다. 필터링 및 곡선 만들기(1026)는 각각의 용량성 패드(602)에 대하여 반복될 수 있는데, 그 이유는 각각의 용량성 패드(602)가 각각의 하이 및 로우 레벨 커패시턴스 값들을 포함할 수 있기 때문이다. 추가적으로, 1026에서 적용되는 필터링의 양은 어느 용량성 패드들(602)인지 및/또는 어느 용량성 패드들(602)이 거부되었는지(예컨대, 패드 및 손가락 거부(1022))에 따라 달라질 수 있다.
1030에서의 총 노이즈 예측은 어느 용량성 패드들(602)이 사용되고 있는지, 용량성 패드들(602)에 할당된 가중치들, 뿐만 아니라 용량성 패드들(602)에 대한 각각의 기준선 노이즈에 기초하여 커패시턴스 값들을 필터링할 수 있다. 예를 들어, 프로세스(1000)는 1028에서 디폴트 용량성 패드 노이즈를 포함할 수 있고, 이는 개별 용량성 패드들(602)에 대한 추정 기준선 노이즈를 나타낼 수 있다. 따라서 1030에서의 총 노이즈 예측 단계는, 사용되고 있는 용량성 패드들(602)에 대하여, 그것들의 각각의 기준선 노이즈 값들을 결정할 수 있다. 총 노이즈 예측 단계는 또한 용량성 패드들(602)에 대한 예상 또는 예측 노이즈를 결정할 수 있다. 예를 들어, 사용되고 있는 용량성 패드들(602)이 (즉, 최소 커패시턴스 값과 최대 커패시턴스 값 사이의) 넓은 범위에 걸쳐 커패시턴스 값들을 감지하는 경우, 커패시턴스 값들은 적은 양의 노이즈를 포함할 수 있고, 더 적은 필터링이 적용될 수 있다. 그러나, 용량성 패드(602)에 대한 커패시턴스 값들의 범위(즉, 최소 커패시턴스 값과 최대 커패시턴스 값 사이)가 좁은 경우, 커패시턴스 값들은 다량의 노이즈를 포함할 수 있고 프로세스(1000)는 더 많은 양의 필터링을 적용할 수 있다.
1032에서의 dNorm/dt는 시간이 지남에 따른 커패시턴스 값의 변화를 고려할 수 있다. 예를 들어, 용량성 패드(602)로부터 수신된 커패시턴스 값들이 짧은 기간(예컨대, 1 프레임) 동안 현저하게 변하는 경우, 커패시턴스 값들 내에 유발된 잠재적 노이즈는 무시되거나 또는 그에 따라 가중될 수 있다. 즉, 커패시턴스 값들을 필터링하고 레이턴시를 유발하는 대신에, 커패시턴스 값들이 임계 시간량 동안 임계량을 넘어 변하는 경우, 더 적은 필터링이 커패시턴스 값들에 적용될 수 있다. 이러한 의미에서, 더 많은 손가락 움직임이 검출되면 더 적은 필터링이 적용될 수 있고, 더 적은 손가락 움직임이 검출되면 더 많은 필터링이 적용될 수 있다.
1034에서의 dCurl/dNorm은 검출된 커패시턴스의 양에 기초하여 정규화된 커패시턴스 값을 필터링할 수 있다. 예를 들어, 커패시턴스 값들의 높은 범위에서, 손가락이 제어기를 파지하는 경우, 더 적은 필터링이 적용될 수 있는데, 그 이유는 노이즈가 손가락 위치에 영향을 덜 미칠 수 있기 때문이다. 그러나, 커패시턴스 값들의 낮은 범위에서, 손가락이 제어기로부터 변위되거나, 또는 가까이 근접하는 경우, 더 많은 필터링이 적용될 수 있는데, 그 이유는 커패시턴스 값들의 작은 변화는 손가락의 위치에 상당한 영향을 미칠 수 있기 때문이다. 여기서, 커패시턴스 값들의 작은 변화는 손가락 제스처의 큰 변화를 야기할 수 있다.
서브-블록(1038)에서, 저역 통과 필터는 검출된 커패시턴스 값들에 대한 필터링의 양을 조정하는 튜닝가능 저역 통과 평균 필터를 나타낼 수 있다. 일부 경우들에서, 필터링의 양은 [0,1]의 스케일 상에 있을 수 있고, 적응형 필터(1028)에서 결정된 필터링의 양의 결과에 기초할 수 있다. 즉, 저역 통과 필터는 적응형 필터링으로부터 결정된 바와 같이 커패시턴스 값들을 필터링할 수 있다.
서브-블록(1040)에서, 프로세스(1000)는 [0,1] 스케일의 커패시턴스 값들을 곡선 만들기하여 커패시턴스 값들을 손가락의 위치, 또는 손 애니메이션과 연관시킬 수 있다. 각각의 손가락에 대하여, 곡선 만들기의 출력은 각각의 손가락의 번호를 포함할 수 있고, 번호는 손의 각각의 손가락의 손가락 위치를 나타낸다.
서브-블록(1042)에서, 프로세스(1000)는 곡선 후에 백래시 필터(백래시 필터)를 적용하여 임계치 밑으로 떨어지는 커패시턴스 값들의 변화를 필터링할 수 있다. 예를 들어, 커패시턴스 값들이 [0,1] 스케일의 임계량만큼 변하지 않는 경우, 커패시턴스 값들은 필터링될 수 있다. 이러한 필터링은 사용자에 의한 인지된 손가락 경련 및 모션을 줄일 수 있다.
서브-블록(1044)에서, 관절 모델은 손 애니메이션(예컨대, 손 골격)에 대응할 수 있다. 예를 들어, 관절 모델은 1040의 곡선 만들기로부터 손의 개별적인 손가락들에 할당된 번호에 대응하는 손 애니메이션을 생성할 수 있다.
도 11은 근접 센서(600)와 연관된 최소 커패시턴스 값을 업데이트하기 위한 예시적인 차트(1100)를 예시한다. 예시적인 차트(1100)는 근접 센서(600)의 용량성 패드(602)로부터 수신된 커패시턴스 값들(1102)을 예시하는 것으로 도시된다. 일부 경우들에서, 제어기(100)는 VR 환경에서 디스플레이되는 모든 프레임에서 커패시턴스 값들(1102)을 수신할 수 있다. 용량성 패드(602)는 용량성 패드(602)에 근접한 객체(예컨대, 손가락)와 연관된 커패시턴스 값들(1102)을 측정할 수 있다. 일부 경우들에서, 객체와 용량성 패드(602) 사이의 거리가 감소함에 따라, 용량성 패드(602)에 의해 검출된 커패시턴스 값은 증가할 수 있다. 커패시터 값들(1102)을 반복적으로 수신함으로써, 제어기(100)는 최대 커패시턴스 값(1104), 최소 커패시턴스 값(1106), 및/또는 최대 커패시턴스 값(1104)과 최소 커패시턴스 값(1106) 사이의 범위(1108)를 결정할 수 있다.
일부 경우들에서, 최대 커패시턴스 값(1104)은 객체(예컨대, 손가락)가 제어기(100)를 터치하고 있을 때 수신된 커패시턴스 값에 대응할 수 있다. 예를 들어, 제어기(100)는 이 커패시턴스 값을 최대 커패시턴스 값(1104) 및 제어기(100)에서의 터치와 연관시킬 수 있다. 이러한 연관은 하나 이상의 컴퓨팅 디바이스들에 의해, 객체(예컨대, 무기, 공 등)를 잡고 있는 사용자의 이미지 데이터를 생성하는 데 이용될 수 있다. 최소 커패시턴스 값(1106)은 객체(예컨대, 손가락)가 제어기(100)를 터치하고 있지 않고 제어기(100)로부터 완전히 펼쳐질 때 수신된 커패시턴스 값에 대응할 수 있다. 예를 들어, 커패시턴스 값(1102)을 수신할 시, 제어기(100)는 이 커패시턴스 값을 최소 커패시턴스 값(1106), 및 사용자가 제어기(100)로부터 그의 또는 그녀의 손가락을 완전히 펼치는 것과 연관시킬 수 있다. 이러한 연관은 하나 이상의 컴퓨팅 디바이스들에 의해, 그의 또는 그녀의 손가락을 완전히 펼치는(예컨대, 공을 떨어뜨리는) 사용자의 이미지 데이터를 생성하는 데 이용될 수 있다.
추가적으로, 커패시턴스 값들(1102)을 수신할 시, 제어기(100)는 평균 커패시턴스 값(1110)을 결정할 수 있다. 일부 경우들에서, 평균 커패시턴스 값(1110)은 미리결정된 수의 과거 샘플들로부터의 커패시턴스 값들로부터 결정될 수 있다. 예를 들어, 평균 커패시턴스 값(1110)은 수신된 과거 20개의 커패시턴스 값들을 사용하여 결정될 수 있다.
범위(1108)를 이용하여, 제어기(100)는 완전히 펼쳐지는 것과 제어기(100)를 터치하는 것 사이의 사용자의 상대적인 손가락 위치를 결정하기 위해 용량성 패드(602)에 대한 바이어스 및/또는 스케일 팩터를 결정할 수 있다. 그러나, 게임플레이 경험 전반에 걸쳐, 하나 이상의 인자들이 검출된 커패시턴스 값들(1102)에 영향을 미칠 수 있다. 예를 들어, 제어기(100)가 상주하는 환경의 온도는 감소할 수 있고/있거나 사용자의 손/손가락의 습윤이 증가할 수 있다. 일부 경우들에서, 이러한 인자들은 더 낮은 커패시턴스 값들(1102)을 야기할 수 있다. 제어기(100)에 대한 객체의 근접성을 정확하게 검출하기 위하여, 최대 커패시턴스 값(1104)(또는 그와 연관된 레벨/한계)은 감쇠할 수 있다. 다시 말해서, 최대 커패시턴스 값(1104)은 정확하게 커패시턴스 값들(1102(A))을 검출하고/하거나 이를 사용자의 손가락 위치와 연관시키기 위해(예컨대, 바이어스, 스케일 팩터 등을 사용하여) 새로운 커패시턴스 값으로 감쇠할 수 있다.
예를 들어, 도 11은 최대 커패시턴스 값(1104)이 감쇠할 수 있음을 예시한다. 일부 경우들에서, 감쇠는 제어기(100)가 최대 커패시턴스 값(1104)의 소정 임계치 내의 커패시턴스 값들(1102)을 수신하지 않은 결과로서 발생할 수 있다. 일부 경우들에서, 커패시턴스 값들(1102)이 미리결정된 수의 프레임들 동안 최대 커패시턴스 값(1104)의 소정 임계치 내에 있지 않는 경우, 최대 커패시턴스 값(1104)은 감쇠할 수 있다. 또한, 최대 커패시턴스 값(1104)은, 과거 N개의 샘플들(1112)에 걸친 평균 커패시턴스 값(1110)이 최대 커패시턴스 값(1104)의 소정 임계치 내에 있지 않는 경우, 감쇠할 수 있다. 또 다른 경우들에서, 최대 커패시턴스(1106) 값은 커패시턴스 값들(1102) 및/또는 평균 커패시턴스 값(1110)을 향해 수렴하도록 연속적으로 감쇠할 수 있다.
일부 경우들에서, 감쇠의 양은 가변 감쇠율, 범위(1108), 및/또는 과거 N개의 샘플들(1112)에 걸쳐 결정된 범위(1114)에 적어도 부분적으로 기초할 수 있다. 일부 경우들에서, 가변 감쇠율은 실질적으로 범위(1108)의 10 퍼센트일 수 있다. 결과적으로, 최대 커패시턴스 값(1104)은 검출된 커패시턴스 값들(1102) 및/또는 평균 커패시턴스 값(1110)을 향해 수렴하도록 일정 시간 기간 동안 점진적으로 감쇠할 수 있다. 또한, 최대 커패시턴스 값(1104)이 감쇠하는 양은, 최대 커패시턴스 값(1104) 및 최소 커패시턴스 값(1106)이 임계량만큼 분리되도록 제한될 수 있다.
또한, 최대 커패시턴스 값(1104)이 감쇠하는 레이트는 프레임들의 수에 적어도 부분적으로 기초할 수 있고, 제어기(100)는 최대 커패시턴스 값(1104)의 임계치 내에서 커패시턴스 값들(1102)을 수신하지 않았다. 최대 커패시턴스 값(1104)이 감쇠하는 레이트는 또한 과거 N개의 샘플들(1112)에 걸쳐 측정된 커패시턴스 값들(1102)의 가변성에 의존할 수 있다. 예를 들어, 과거 N개의 샘플들(1112)에 걸쳐 검출된 커패시턴스 값들(1102) 사이에 큰 가변성이 존재하는 경우, 최대 커패시턴스 값(1104)은, 과거 N개의 샘플들(1112)에 걸쳐 검출된 커패시턴스 값들(1102) 사이에 작은 가변성이 존재하는 경우에 비해, 더 빠른 레이트로 감쇠할 수 있다.
따라서, 최대 커패시턴스 값(1104)은 새로운 값으로 감쇠할 수 있고, 새로운 바이어스, 스케일 팩터, 및/또는 범위(1116)가 결정될 수 있다.
최대 커패시턴스 값(1104)을 감쇠시킨 결과로서, 일부 경우들에서, 제어기(100)는 최대 커패시턴스 값보다 큰 커패시턴스 값들(1102)을 검출할 수 있다. 즉, 최대 커패시턴스 값(1104)을 연속적으로 업데이트함으로써, 제어기(100)는 결정된 최대 커패시턴스 값보다 큰 커패시턴스 값들(1102)을 수신할 수 있다. 이들 커패시턴스 값들(1102)은 최대 커패시턴스 값(1104)을 "오버슈트"할 수 있다. 이러한 경우들에서, 커패시턴스 값들(1102)이 최대 커패시턴스 값(1104)을 오버슈트하는 경우, 또는 평균 커패시턴스 값(1110)이 최대 커패시턴스 값(1104)을 오버슈트하는 경우, 최대 커패시턴스 값(1104)은 커패시턴스 값들(1102) 또는 평균 커패시턴스 값(1110)을 향해 "성장"하거나 연장될 수 있다. 이러한 경우들에서, 최대 커패시턴스 값(1104)은 이러한 차이를 보충할 수 있다. 최대 커패시턴스 값(1104)이 업데이트되는 양 및/또는 레이트는 성장 변수(예컨대, 0.2) 뿐만 아니라 과거 프레임들의 수에 걸쳐 검출된 평균 커패시턴스 값(1110)에 기초할 수 있다. 그렇게 함으로써, 핸드헬드 제어기는 최대 커패시턴스 값(1104)을 업데이트하고 업데이트된 바이어스, 업데이트된 스케일 팩터 등을 결정할 수 있다. 최대 커패시턴스 값(1104)은 최대 커패시턴스 값(1104)이 커패시턴스 값들(1102) 및/또는 평균 커패시턴스 값(1110)을 따라잡을 때까지 계속해서 연장될 수 있다.
도시되지 않았지만, 최소 커패시턴스 값(1106)은 커패시턴스 값들(1102) 및/또는 평균 커패시턴스 값(1110)에 기초하여 유사하게 감쇠할 수 있다. 예를 들어, 최소 커패시턴스 값(1106)은, 제어기(100)가 임계 수의 프레임들 동안 최소 커패시턴스 값(1106)의 임계치를 갖는 커패시턴스 값들(1102)을 수신하지 않은 결과로서 감쇠할 수 있다. 그렇게 함으로써, 최소 커패시턴스 값(1106)은 정확하게 커패시턴스 값들(1102)을 검출하고/하거나 이를 사용자의 손가락 위치와 연관시키기 위해(예컨대, 바이어스, 스케일 팩터 등을 사용하여) 새로운 커패시턴스 값으로 감쇠할 수 있다. 최소 커패시턴스 값(1106)이 감쇠하는 양 또는 레이트는 제어기(100)가 최소 커패시턴스 값(1106)의 임계치 내에서 커패시턴스 값들(1102)을 수신하지 않은 시간 기간에 적어도 부분적으로 기초할 수 있다. 최소 커패시턴스 값(1106)이 감쇠하는 양은, 최소 커패시턴스 값(1106) 및 최대 커패시턴스 값(1104)이 임계량 또는 범위만큼 분리되도록 제한될 수 있다. 일부 경우들에서, 다량의 노이즈가 범위(1108)의 하위-범위 내의 커패시턴스 값들(1102) 내에 존재할 수 있기 때문에(즉, 손가락이 제어기(100)로부터 펼쳐질 때), 일부 경우들에서, 최소 커패시턴스 값(1106)은 최대 커패시턴스 값(1104)의 2배의 레이트로 감쇠할 수 있다.
또한, 최대 커패시턴스 값(1104) 및 최소 커패시턴스 값(1106)이 개별적으로 논의되지만, 최대 커패시턴스 값(1104) 및 최소 커패시턴스 값(1106)은 제어기(100)가 커패시턴스 값들(1102)을 수신하는 것에 기초하여 동시에 감쇠할 수 있다. 결국, 용량성 패드(602)를 보정하고/하거나 용량성 패드(602)로부터 수신된 커패시턴스 값들(1102)을 정규화하는 데 사용하기 위해 업데이트된 범위, 업데이트된 바이어스, 및/또는 업데이트된 스케일 팩터가 결정될 수 있다.
도 12는 제어기(100)와 같은 제어기(1200)의 예시적인 구성요소들을 예시한다. 예시된 바와 같이, 제어기(100)는 하나 이상의 입력/출력(I/O) 디바이스들(1202), 예컨대 전술된 제어부들(예를 들어, 조이스틱, 트랙패드, 트리거 등), 근접 센서(600), 및/또는 잠재적으로 임의의 다른 유형의 입력 또는 출력 디바이스들을 포함할 수 있다. 예를 들어, I/O 디바이스들(1202)은 사용자 음성 입력과 같은 오디오 입력을 수신하기 위한 하나 이상의 마이크로폰을 포함할 수 있다. 일부 구현예에서, 하나 이상의 카메라 또는 다른 유형의 센서(예를 들어, 관성 측정 유닛(inertial measurement unit, IMU))는 제어기(100)의 모션과 같은 제스처 입력을 수신하는 입력 디바이스로서 기능할 수 있다. 일부 실시예에서, 추가 입력 디바이스는 키보드, 키패드, 마우스, 터치 스크린, 조이스틱, 제어 버튼 등의 형태로 제공될 수 있다. 입력 디바이스(들)는 볼륨 증가/감소를 위한 기본 볼륨 제어 버튼(들)뿐만 아니라 전원 및 리셋 버튼과 같은 제어 메커니즘들을 추가로 포함할 수 있다. 한편, 출력 디바이스들은 디스플레이, 조명 요소(예를 들어, LED), 햅틱 감각을 생성하는 진동기, 스피커(들)(예를 들어, 헤드폰) 등을 포함할 수 있다. 제어기(100)의 상태(예컨대, 전원이 켜져 있음)를 나타내는 간단한 조명 요소(예를 들어, LED)가 또한 있을 수 있다.
일부 경우들에서, I/O 디바이스들에 의한 출력은 입력 디바이스들 중 하나 이상에 의해 수신된 입력에 기초할 수 있다. 예를 들어, 제어기(100)의 근접 센서(600)를 통해 감지된 터치는 근접 센서(600)에 인접하게(예컨대, 아래에) 위치된 진동기에 의한 햅틱 응답의 출력을 야기할 수 있다. 일부 경우들에서, 출력은 제어기(100)의 핸들(112) 상에/안에 배치된 용량성 패드들(602)과 같은, 근접 센서(600)에 대한 하나 이상의 객체들의 근접성의 특성에 적어도 부분적으로 기초하여 달라질 수 있다. 예를 들어, 핸들(112) 상의 제1 위치에서의 터치 입력(또는 객체의 근접성)은 제1 햅틱 출력을 야기할 수 있는 반면, 핸들(112) 상의 제2 위치에서의 터치 입력(또는 객체의 근접성)은 제2 햅틱 출력을 야기할 수 있다. 또한, 핸들(112) 상의 특정 제스처는 특정 햅틱 출력(또는 다른 유형의 출력)을 야기할 수 있다. 예를 들어, 핸들(112) 상의 탭 및 홀드 제스처(근접 센서(600)에 의해 검출됨)는 제1 유형의 햅틱 출력을 야기할 수 있는 반면, 핸들(112) 상의 탭 및 릴리스 제스처는 제2 유형의 햅틱 출력을 야기할 수 있고, 핸들(112)의 강한 탭은 제3 유형의 햅틱 출력을 야기할 수 있다. 그러나, 몇몇 예들이 제공되지만, 제어기(100)는 추가적으로 또는 대안적으로 다른 유형의 I/O 디바이스들일 수 있다.
또한, 제어기(100)는 네트워크 및/또는 하나 이상의 원격 시스템(예를 들어, 애플리케이션을 실행하는 호스트 컴퓨팅 디바이스, 게임 콘솔, 기타 제어기들 등)에 대한 무선 연결을 용이하게 하기 위한 하나 이상의 통신 인터페이스(1204)를 포함할 수 있다. 통신 인터페이스들(1204)은 Wi-Fi, 블루투스, 무선 주파수(RF) 등과 같은 다양한 무선 기술 중 하나 이상을 구현할 수 있다. 추가적으로, 또는 대안적으로, 제어기(100)는 네트워크, 연결된 주변 디바이스, 또는 다른 무선 네트워크와 통신하는 플러그인 네트워크 디바이스로의 유선 연결을 용이하게 하는 물리적 포트들을 포함할 수 있다.
예시된 구현예에서, 제어기(100)는 하나 이상의 프로세서(1206) 및 컴퓨터 판독가능 매체(1208)를 추가로 포함한다. 일부 구현예에서, 프로세서(들)(1206)는 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), CPU 및 GPU 둘 모두, 마이크로프로세서, 디지털 신호 프로세서 또는 공지된 다른 처리 장치 또는 구성요소를 포함할 수 있다. 추가적으로, 또는 대안적으로, 본 명세서에 설명된 기능은, 적어도 부분적으로, 하나 이상의 하드웨어 로직 구성요소들에 의해 수행될 수 있다. 예를 들어, 그리고 제한없이, 사용될 수 있는 하드웨어 로직 구성요소의 예시적인 유형은 FPGA(field-programmable gate array), ASIC(application-specific integrated circuit), ASSP(application-specific standard product), SOC(system-on-a-chip system), CPLD(complex programmable logic device) 등을 포함한다. 또한, 프로세서(들)(1206) 각각은 자체 로컬 메모리를 소유할 수 있으며, 이는 또한 프로그램 모듈, 프로그램 데이터, 및/또는 하나 이상의 운영 체제를 저장할 수 있다.
컴퓨터 판독가능 매체(1208)는 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들, 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성 메모리, 제거가능 및 제거불가능 매체를 포함할 수 있다. 이러한 메모리는, RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다목적 디스크(DVD) 또는 다른 광학 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 다른 자기 저장 디바이스, RAID 저장 시스템, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨팅 디바이스에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되지 않는다. 컴퓨터 판독가능 매체(1208)는 컴퓨터 판독가능 저장 매체("CRSM")로서 구현될 수 있으며, 이는 컴퓨터 판독가능 매체(1208) 상에 저장된 명령어들을 실행하기 위해 프로세서(들)(1206)에 의해 액세스가능한 임의의 이용가능한 물리적 매체일 수 있다. 하나의 구현예에서, CRSM은 랜덤 액세스 메모리("RAM") 및 플래시 메모리를 포함할 수 있다. 다른 구현예에서, CRSM은 판독 전용 메모리("ROM"), 전기적으로 소거가능한 프로그래밍가능 판독 전용 메모리("EEPROM"), 또는 원하는 정보를 저장하는 데 사용될 수 있고 프로세서(들)(1206)에 의해 액세스될 수 있는 임의의 다른 유형의(tangible) 매체를 포함할 수 있지만, 이에 한정되지 않는다.
명령어, 데이터저장소 등과 같은 여러 모듈이 컴퓨터 판독가능 매체(1208) 내에 저장되고 프로세서(들)(1206) 상에서 실행되도록 구성될 수 있다. 몇 가지 예시적인 기능 모듈이 컴퓨터 판독가능 매체(1208)에 저장되고 프로세서(들)(1206) 상에서 실행되는 것으로 도시되지만, 동일한 기능은 대안적으로 하드웨어, 펌웨어에서, 또는 시스템 온 칩(SOC)으로서 구현될 수 있다. 운영 체제 모듈(1210)은 다른 모듈의 이익을 위해 제어기(100) 내에 있고 그에 결합된 하드웨어를 관리하도록 구성될 수 있다. 또한, 컴퓨터-판독가능 매체(1208)는, 제어기(100)가 하나 이상의 통신 인터페이스들(1204)을 통해, 애플리케이션(예컨대, 게임 애플리케이션)을 실행하는 개인용 컴퓨팅 디바이스, 게임 콘솔, 원격 서버, 기타 제어기(들), 컴퓨팅 디바이스들 등과 같은 하나 이상의 다른 디바이스들과 통신할 수 있도록 하는, 네트워크-통신 모듈(1212)을 저장할 수 있다. 컴퓨터 판독가능 매체(1208)는 제어기(100) 상에서 또는 제어기(100)에 결합된 컴퓨팅 디바이스 상에서 실행되는 게임(또는 다른 애플리케이션)과 연관된 데이터를 저장하기 위한 게임-세션 데이터베이스(1214)를 추가로 포함할 수 있다.
컴퓨터 판독가능 매체(1208)는 또한 개인용 컴퓨팅 디바이스, 게임 콘솔, 원격 서버 등과 같은, 제어기(100)에 결합된 디바이스들과 연관된 데이터를 저장하는 디바이스-레코드 데이터베이스(1216)를 포함할 수 있다.
컴퓨터 판독가능 매체(1208)는 제어기(100)가 게임 제어기로서 기능하도록 구성하는 게임-제어 명령어들(1218), 및 제어기(100)가 다른 비-게임 디바이스의 제어기로서 기능하도록 구성하는 범용-제어 명령어들(1220)을 추가로 저장할 수 있다.
컴퓨터-판독가능 매체(1208)는 추가적으로 제어기 구성(들)(1222)을 저장할 수 있다. 제어기 구성(들)(1222)은 제어기(100)를 조작하는 사용자의 각각의 손가락들과 소정 용량성 패드들(602)을 연관시키기 위하여 근접 센서(600)의 용량성 패드들(602)의 할당과 연관된 데이터를 나타내거나 또는 포함할 수 있다.
컴퓨터 판독가능 매체(1208)는 추가적으로 커패시턴스 값들의 범위(1224)와 연관된 데이터를 저장할 수 있다. 커패시턴스 값들의 범위(1224)는 근접 센서(600)의 개별 용량성 패드들(602)에서 검출되거나 검출될 수 있는 커패시턴스 값들의 범위를 나타낼 수 있다. 예를 들어, 전술한 바와 같이, 근접 센서(600)로부터 근접성 데이터를 연속적으로 수신함으로써, 제어기(100)는 용량성 패드들(602)에서 수신된 커패시턴스 값들의 범위를 계산 및/또는 결정할 수 있다. 커패시턴스 값들의 범위에서, 컴퓨터 판독가능 매체(1208)는 또한 최소 커패시턴스 값(1226) 및/또는 최대 커패시턴스 값(1228)을 저장할 수 있다.
컴퓨터 판독가능 매체(1208)는 또한 스케일 팩터 및 바이어스(1230)를 저장할 수 있다. 스케일 팩터 및 바이어스(1230)는 개별 용량성 패드들(602)과 연관될 수 있고 커패시턴스 값들의 범위(1224)를 이용하여 결정될 수 있다. 따라서, 커패시턴스 값들의 범위(1226) 및/또는 스케일 팩터 및 바이어스(1230)를 이용하여, 제어기(1200)는 근접 센서(600)로부터 수신된 근접성 데이터를 정규화 및/또는 보정할 수 있다.
결론
전술한 발명이 특정 예들과 관련하여 설명되지만, 본 발명의 범위는 이들 특정 예들에 제한되지 않음을 이해해야 한다. 특정 동작 요건들 및 환경들에 맞게 변화된 다른 수정들 및 변경들이 당업자에게 명백할 것이기 때문에, 본 발명은 개시 목적을 위해 선택된 예로 한정되는 것으로 간주되지 않으며, 본 발명의 진정한 기술적 사상 및 범주로부터의 이탈을 구성하지 않는 모든 변경들 및 수정들을 포함한다.
본 출원은 특정 구조적 특징들 및/또는 방법론적 동작들을 갖는 실시예들을 설명하지만, 청구항이 반드시 설명된 특정 특징들 또는 동작들로 제한되지는 않는다는 것을 이해해야 한다. 오히려, 특정 특징들 및 동작들은 단지 본 출원의 청구범위의 범주 내에 속하는 일부 실시예들을 예시하는 것이다.
조항들
본 개시내용의 실시예들은 다음 조항들의 관점에서 기재될 수 있다.
1. 핸드헬드 제어기로서,
근접 센서에 근접한 객체에 기초하여 커패시턴스 값들을 검출하도록 구성된 근접 센서;
하나 이상의 프로세서들; 및
하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장하는 하나 이상의 비일시적 컴퓨터-판독가능 매체를 포함하며, 동작들은:
근접 센서에 의해 검출된 제1 커패시턴스 값들을 수신하는 것;
제1 커패시턴스 값들에 적어도 부분적으로 기초하여:
최대 커패시턴스 값,
최소 커패시턴스 값, 및
커패시턴스 값들의 범위를 결정하는 것;
근접 센서의 바이어스를 결정하는 것;
근접 센서에 의해 검출된 커패시턴스 값들에 대한 스케일 팩터를 결정하는 것;
바이어스 및 스케일 팩터에 적어도 부분적으로 기초하여 근접 센서를 보정하는 것;
근접 센서에 의해 검출된 제2 커패시턴스 값을 수신하는 것;
제2 커패시턴스 값에 적어도 부분적으로 기초하여:
업데이트된 최대 커패시턴스 값,
업데이트된 최소 커패시턴스 값, 또는
커패시턴스 값들의 업데이트된 범위 중 적어도 하나를 결정하는 것;
근접 센서의 업데이트된 바이어스 또는 근접 센서에 의해 검출된 커패시턴스 값들에 대한 업데이트된 스케일 팩터 중 적어도 하나를 결정하는 것; 및
업데이트된 바이어스 또는 업데이트된 스케일 팩터 중 적어도 하나에 적어도 부분적으로 기초하여 용량성 센서를 보정하는 것을 포함하는, 핸드헬드 제어기.
2. 조항 1에 있어서, 하나 이상의 비일시적 컴퓨터-판독가능 매체는 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장하고, 동작들은 추가로:
제2 커패시턴스 값에 적어도 부분적으로 기초하여, 핸드헬드 제어기에 대한 객체의 근접성을 결정하는 것;
객체의 근접성의 표시를 생성하는 것; 및
표시를 컴퓨팅 디바이스로 송신하는 것을 포함하는, 핸드헬드 제어기.
3. 조항 1에 있어서,
근접 센서는 용량성 패드들을 포함하고;
용량성 패드들의 개별 용량성 패드들은 핸드헬드 제어기에 대한 객체의 근접성과 연관된 커패시턴스 값을 생성하도록 구성되는, 핸드헬드 제어기.
4. 조항 1에 있어서, 하나 이상의 비일시적 컴퓨터-판독가능 매체는 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장하고, 동작들은 추가로, 제2 커패시턴스 값에 적어도 부분적으로 기초하여:
최대 커패시턴스 값을 업데이트된 최대 커패시턴스 값으로 감쇠시키는 것; 또는
최소 커패시턴스 값을 업데이트된 최소 커패시턴스 값으로 감쇠시키는 것
중 적어도 하나를 포함하는, 핸드헬드 제어기.
5. 방법으로서,
근접 센서에 의해 검출된 근접성 값들의 범위를 결정하는 단계 - 범위 근접성의 값들은 최대 값 및 최소 값을 포함함 -;
근접 센서로부터 근접성 값들을 수신하는 단계;
최대 값과 연관된 한계를 감쇠시키는 단계;
최소 값과 연관된 한계를 감쇠시키는 단계;
최대 값과 연관된 한계 및 최소 값과 연관된 한계에 적어도 부분적으로 기초하여 근접 센서에 의해 검출된 근접성 값들의 업데이트된 범위를 결정하는 단계;
근접성 값들의 업데이트된 범위에 적어도 부분적으로 기초하여, 근접 센서에 의해 검출된 근접성 값들에 대한 스케일 팩터를 결정하는 단계를 포함하는, 방법.
6. 조항 5에 있어서, 최대 값과 연관된 한계를 감쇠시키는 단계 및 최소 값과 연관된 한계를 감쇠시키는 단계는 근접 센서에 의해 검출된 근접성 값들의 범위에 적어도 부분적으로 기초하는, 방법.
7. 조항 6에 있어서, 근접성 값들은 이전 프레임들의 수 동안 수신되며, 본 방법은 이전 프레임들의 수 동안 수신된 근접성 값들에 기초하여 평균 값을 결정하는 단계를 추가로 포함하고, 최대 값과 연관된 한계를 감쇠시키는 단계 및 최소 값과 연관된 한계를 감쇠시키는 단계는 또한 평균 값에 적어도 부분적으로 기초하는, 방법.
8. 조항 5의 방법에 있어서, 본 방법은,
최대 값과 연관된 한계를 감쇠시킬 제1 레이트를 결정하는 단계 - 제1 레이트는 미리결정된 수의 이전 프레임들 동안 수신된 근접성 값들의 가변성에 적어도 부분적으로 기초함 -; 및
최소 값과 연관된 한계를 감쇠시킬 제2 레이트를 결정하는 단계 - 제2 레이트는 미리결정된 수의 이전 프레임들 동안 수신된 근접성 값들의 가변성에 적어도 부분적으로 기초함 - 를 추가로 포함하며,
최대 값과 연관된 한계를 감쇠시키는 단계는 제1 레이트에 적어도 부분적으로 기초하고;
최소 값과 연관된 한계를 감쇠시키는 단계는 제2 레이트에 적어도 부분적으로 기초하는, 방법.
9. 조항 5에 있어서, 근접 센서에 의해 검출된 근접성 값들은 객체가 제어기에 근접해 있는 것에 대응하며, 본 방법은,
제어기에 대한 객체의 근접성에 대응하는 표시를 생성하는 단계; 및
표시를 하나 이상의 컴퓨팅 디바이스들로 송신하는 단계를 추가로 포함하는, 방법.
10. 조항 5에 있어서, 근접성 값들은 제1 근접성 값들을 포함하며, 본 방법은,
제2 근접성 값들을 수신하는 단계;
제2 근접성 값들에 적어도 부분적으로 기초하여 최대 값과 연관된 한계 및 최소 값과 연관된 한계를 감쇠시키는 단계;
근접 센서에 의해 검출된 평균 값을 결정하는 단계; 및
평균 값이 최대 커패시턴스 값과 연관된 한계보다 크다는 것; 또는
평균 값이 최소 커패시턴스 값과 연관된 한계보다 작다는 것
중 적어도 하나를 결정하는 단계를 추가로 포함하는, 방법.
11. 조항 10에 있어서,
평균 값이 최대 커패시턴스 값과 연관된 한계보다 크다는 것에 적어도 부분적으로 기초하여 최대 값과 연관된 업데이트된 한계를 결정하는 단계; 또는
평균 값이 최소 커패시턴스 값과 연관된 한계보다 작다는 것에 적어도 부분적으로 기초하여 최소 값과 연관된 업데이트된 한계를 결정하는 단계
중 적어도 하나를 추가로 포함하는, 방법.
12. 조항 11에 있어서,
평균 값은 미리결정된 수의 이전 프레임들에 걸쳐 결정되고;
최대 값과 연관된 업데이트된 한계는 미리결정된 수의 이전 프레임들에 걸쳐 결정된 평균 값에 적어도 부분적으로 기초하고;
최소 값과 연관된 업데이트된 한계는 미리결정된 수의 이전 프레임들에 걸쳐 결정된 평균 값에 적어도 부분적으로 기초하는, 방법.
13. 조항 5에 있어서,
근접 센서는 용량성 패드들을 포함하고;
개별 용량성 패드들은 근접성 값들을 생성하도록 구성되며, 근접성 값들은 객체가 제어기에 근접해 있는 것과 연관되는, 방법.
14. 제어기로서,
센서;
하나 이상의 프로세서들; 및
하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장하는 하나 이상의 비일시적 컴퓨터-판독가능 매체를 포함하며, 동작들은:
센서로부터 제1 데이터를 수신하는 것;
제1 데이터에 적어도 부분적으로 기초하여, 근접성 값들의 범위를 결정하는 것 - 근접성 값들의 범위는 제1 최대 근접성 값 및 제1 최소 근접성 값을 포함함 -;
제1 스케일 팩터를 결정하는 것;
센서로부터 제2 데이터를 수신하는 것;
제1 최대 근접성 값 또는 제1 최소 근접성 값 중 적어도 하나를 감쇠시키는 것;
근접성 값들의 업데이트된 범위를 결정하는 것 - 근접성 값들의 업데이트된 범위는 제2 최대 근접성 값 또는 제2 최소 근접성 값 중 적어도 하나를 포함함 -;
제2 스케일 팩터를 결정하는 것; 및
제2 스케일 팩터에 적어도 부분적으로 기초하여 근접성을 결정하는 것을 포함하는, 제어기.
15. 조항 14에 있어서,
제1 최대 근접성 값은 센서에 대한 객체의 제1 근접성과 연관되고 제1 최소 근접성 값은 센서에 대한 객체의 제2 근접성과 연관되며;
제2 최대 근접성 값은 센서에 대한 객체의 제1 근접성과 연관되고 제2 최소 근접성 값은 센서에 대한 객체의 제2 근접성과 연관되는, 제어기.
16. 조항 14에 있어서, 하나 이상의 비일시적 컴퓨터-판독가능 매체는 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금 근접성의 표시를 컴퓨팅 디바이스로 송신하는 것을 추가로 포함하는 동작을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장하는, 제어기.
17. 조항 14에 있어서, 하나 이상의 비일시적 컴퓨터-판독가능 매체는 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장하고, 동작들은 추가로
평균 근접성 값을 결정하는 것;
평균 근접성 값은 제2 최대 근접성 값보다 크다는 것; 또는
평균 근접성 값은 제2 최소 근접성 값보다 작다는 것 중 적어도 하나를 결정하는 것; 및
제3 최대 근접성 값 또는 제3 최소 근접성 값 중 적어도 하나를 결정하는 것을 포함하는, 제어기.
18. 조항 17에 있어서, 제3 최대 근접성 값 또는 제3 최소 근접성 값은 평균 근접성 값의 백분율에 적어도 부분적으로 기초하는, 제어기.
19. 조항 14에 있어서, 제2 데이터는 근접성 값들을 포함하고,
제1 최대 근접성 값을 감쇠시키는 것은, 근접성 값들 중 하나 이상이 임계 시간 기간 동안 제1 최대 근접성 값의 제1 임계 범위 밖에 있다고 결정하는 것에 적어도 부분적으로 기초하고;
제1 최소 근접성 값을 감쇠시키는 것은, 근접성 값들 중 하나 이상이 임계 시간 기간 동안 제1 최소 근접성 값의 제2 임계 범위 밖에 있다고 결정하는 것에 적어도 부분적으로 기초하는, 제어기.
20. 조항 14에 있어서,
제1 최대 근접성 값을 감쇠시키는 것은 근접성 값들의 범위 및 근접성 값들의 서브세트로부터의 근접성 값들의 범위에 적어도 부분적으로 기초하고;
제1 최소 근접성 값을 감쇠시키는 것은 근접성 값들의 범위 및 근접성 값들의 서브세트로부터의 근접성 값들의 범위에 적어도 부분적으로 기초하는, 제어기.

Claims (15)

  1. 방법으로서,
    근접 센서에 의해 검출된 근접성 값들의 범위를 결정하는 단계 - 상기 범위 근접성의 값들은 최대 값 및 최소 값을 포함함 -;
    상기 근접 센서로부터 근접성 값들을 수신하는 단계;
    상기 최대 값과 연관된 한계를 감쇠시키는 단계;
    상기 최소 값과 연관된 한계를 감쇠시키는 단계;
    상기 최대 값과 연관된 상기 한계 및 상기 최소 값과 연관된 상기 한계에 적어도 부분적으로 기초하여 상기 근접 센서에 의해 검출된 근접성 값들의 업데이트된 범위를 결정하는 단계;
    상기 근접성 값들의 업데이트된 범위에 적어도 부분적으로 기초하여, 상기 근접 센서에 의해 검출된 상기 근접성 값들에 대한 스케일 팩터를 결정하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 최대 값과 연관된 상기 한계를 감쇠시키는 단계 및 상기 최소 값과 연관된 상기 한계를 감쇠시키는 단계는 상기 근접 센서에 의해 검출된 상기 근접성 값들의 범위에 적어도 부분적으로 기초하는, 방법.
  3. 제1항 또는 제2항에 있어서, 상기 근접성 값들은 이전(previous) 프레임들의 수 동안 수신되며, 상기 방법은 상기 이전 프레임들의 수 동안 수신된 상기 근접성 값들에 기초하여 평균 값을 결정하는 단계를 추가로 포함하고, 상기 최대 값과 연관된 상기 한계를 감쇠시키는 단계 및 상기 최소 값과 연관된 상기 한계를 감쇠시키는 단계는 또한 상기 평균 값에 적어도 부분적으로 기초하는, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 방법은,
    상기 최대 값과 연관된 상기 한계를 감쇠시킬 제1 레이트를 결정하는 단계 - 상기 제1 레이트는 미리결정된 수의 이전 프레임들 동안 수신된 상기 근접성 값들의 가변성(variability)에 적어도 부분적으로 기초함 -; 및
    상기 최소 값과 연관된 상기 한계를 감쇠시킬 제2 레이트를 결정하는 단계 - 상기 제2 레이트는 상기 미리결정된 수의 이전 프레임들 동안 수신된 상기 근접성 값들의 상기 가변성에 적어도 부분적으로 기초함 - 를 추가로 포함하며,
    상기 최대 값과 연관된 상기 한계를 감쇠시키는 단계는 상기 제1 레이트에 적어도 부분적으로 기초하고;
    상기 최소 값과 연관된 상기 한계를 감쇠시키는 단계는 상기 제2 레이트에 적어도 부분적으로 기초하는, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 근접 센서에 의해 검출된 상기 근접성 값들은 객체가 제어기에 근접해 있는 것에 대응하며, 상기 방법은,
    상기 제어기에 대한 상기 객체의 근접성에 대응하는 표시를 생성하는 단계; 및
    상기 표시를 하나 이상의 컴퓨팅 디바이스들로 송신하는 단계를 추가로 포함하는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 근접성 값들은 제1 근접성 값들을 포함하며, 상기 방법은,
    제2 근접성 값들을 수신하는 단계;
    상기 제2 근접성 값들에 적어도 부분적으로 기초하여 상기 최대 값과 연관된 상기 한계 및 상기 최소 값과 연관된 상기 한계를 감쇠시키는 단계;
    상기 근접 센서에 의해 검출된 평균 값을 결정하는 단계; 및
    상기 평균 값이 상기 최대 커패시턴스 값과 연관된 상기 한계보다 크다는 것; 또는
    상기 평균 값이 상기 최소 커패시턴스 값과 연관된 상기 한계보다 작다는 것 중 적어도 하나를 결정하는 단계를 추가로 포함하는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 평균 값이 상기 최대 커패시턴스 값과 연관된 상기 한계보다 크다는 것에 적어도 부분적으로 기초하여 상기 최대 값과 연관된 업데이트된 한계를 결정하는 단계; 또는
    상기 평균 값이 상기 최소 커패시턴스 값과 연관된 상기 한계보다 작다는 것에 적어도 부분적으로 기초하여 상기 최소 값과 연관된 업데이트된 한계를 결정하는 단계 중 적어도 하나를 추가로 포함하는, 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 평균 값은 미리결정된 수의 이전 프레임들에 걸쳐 결정되고;
    상기 최대 값과 연관된 상기 업데이트된 한계는 상기 미리결정된 수의 이전 프레임들에 걸쳐 결정된 상기 평균 값에 적어도 부분적으로 기초하고;
    상기 최소 값과 연관된 상기 업데이트된 한계는 상기 미리결정된 수의 이전 프레임들에 걸쳐 결정된 상기 평균 값에 적어도 부분적으로 기초하는, 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 근접 센서는 용량성 패드들을 포함하고;
    개별 용량성 패드들은 상기 근접성 값들을 생성하도록 구성되며, 근접성 상기 값들은 객체가 제어기에 근접해 있는 것과 연관되는, 방법.
  10. 제어기로서,
    센서;
    하나 이상의 프로세서들; 및
    상기 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장하는 하나 이상의 비일시적 컴퓨터-판독가능 매체를 포함하며, 상기 동작들은:
    상기 센서로부터 제1 데이터를 수신하는 것;
    상기 제1 데이터에 적어도 부분적으로 기초하여, 근접성 값들의 범위를 결정하는 것 - 상기 근접성 값들의 범위는 제1 최대 근접성 값 및 제1 최소 근접성 값을 포함함 -;
    제1 스케일 팩터를 결정하는 것;
    상기 센서로부터 제2 데이터를 수신하는 것;
    상기 제1 최대 근접성 값 또는 상기 제1 최소 근접성 값 중 적어도 하나를 감쇠시키는 것;
    근접성 값들의 업데이트된 범위를 결정하는 것 - 상기 근접성 값들의 업데이트된 범위는 제2 최대 근접성 값 또는 제2 최소 근접성 값 중 적어도 하나를 포함함 -;
    제2 스케일 팩터를 결정하는 것; 및
    상기 제2 스케일 팩터에 적어도 부분적으로 기초하여 근접성을 결정하는 것을 포함하는, 제어기.
  11. 제10항에 있어서,
    상기 제1 최대 근접성 값은 상기 센서에 대한 객체의 제1 근접성과 연관되고 상기 제1 최소 근접성 값은 상기 센서에 대한 상기 객체의 제2 근접성과 연관되며;
    상기 제2 최대 근접성 값은 상기 센서에 대한 상기 객체의 상기 제1 근접성과 연관되고 상기 제2 최소 근접성 값은 상기 센서에 대한 상기 객체의 상기 제2 근접성과 연관되는, 제어기.
  12. 제1항 또는 제11항에 있어서, 상기 하나 이상의 비일시적 컴퓨터-판독가능 매체는 상기 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 상기 근접성의 표시를 컴퓨팅 디바이스로 송신하는 것을 추가로 포함하는 동작을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장하는, 제어기.
  13. 제10항 내지 제12항 중 어느 한 항에 있어서, 상기 하나 이상의 비일시적 컴퓨터-판독가능 매체는 상기 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 컴퓨터-실행가능 명령어들을 저장하고, 상기 동작들은 추가로
    평균 근접성 값을 결정하는 것;
    상기 평균 근접성 값은 상기 제2 최대 근접성 값보다 크다는 것; 또는
    상기 평균 근접성 값은 상기 제2 최소 근접성 값보다 작다는 것
    중 적어도 하나를 결정하는 것; 및
    제3 최대 근접성 값 또는 제3 최소 근접성 값 중 적어도 하나를 결정하는 것을 포함하는, 제어기.
  14. 제10항 내지 제13항 중 어느 한 항에 있어서, 상기 제3 최대 근접성 값 또는 상기 제3 최소 근접성 값은 상기 평균 근접성 값의 백분율에 적어도 부분적으로 기초하는, 제어기.
  15. 제10항 내지 제14항 중 어느 한 항에 있어서, 상기 제2 데이터는 근접성 값들을 포함하고,
    상기 제1 최대 근접성 값을 감쇠시키는 것은, 상기 근접성 값들 중 하나 이상이 임계 시간 기간 동안 상기 제1 최대 근접성 값의 제1 임계 범위 밖에 있다고 결정하는 것에 적어도 부분적으로 기초하고;
    상기 제1 최소 근접성 값을 감쇠시키는 것은, 상기 근접성 값들 중 하나 이상이 상기 임계 시간 기간 동안 상기 제1 최소 근접성 값의 제2 임계 범위 밖에 있다고 결정하는 것에 적어도 부분적으로 기초하는, 제어기.
KR1020217027461A 2019-02-28 2020-01-28 연속적인 제어기 보정 KR20210130159A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/289,259 US10905946B2 (en) 2019-02-28 2019-02-28 Continuous controller calibration
US16/289,259 2019-02-28
PCT/US2020/015435 WO2020176185A1 (en) 2019-02-28 2020-01-28 Continuous controller calibration

Publications (1)

Publication Number Publication Date
KR20210130159A true KR20210130159A (ko) 2021-10-29

Family

ID=72236994

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217027461A KR20210130159A (ko) 2019-02-28 2020-01-28 연속적인 제어기 보정

Country Status (6)

Country Link
US (2) US10905946B2 (ko)
EP (1) EP3914365A4 (ko)
JP (1) JP2022522147A (ko)
KR (1) KR20210130159A (ko)
CN (1) CN113490532A (ko)
WO (1) WO2020176185A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10635202B1 (en) * 2018-12-18 2020-04-28 Valve Corporation Dynamic sensor assignment
US10905946B2 (en) 2019-02-28 2021-02-02 Valve Corporation Continuous controller calibration
JP6947776B2 (ja) * 2019-04-26 2021-10-13 株式会社ソニー・インタラクティブエンタテインメント コントローラ装置、その制御方法、及びプログラム
US10948980B2 (en) * 2019-05-10 2021-03-16 Apple Inc. Electronic device system with controllers
US11786315B2 (en) * 2020-09-18 2023-10-17 Verb Surgical Inc. Surgical robotic system having grip-dependent control
US11797130B2 (en) * 2021-03-16 2023-10-24 Htc Corporation Finger touch detecting method based on finger distribution area detected on touch detection area and handheld device

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6610917B2 (en) 1998-05-15 2003-08-26 Lester F. Ludwig Activity indication, external source, and processing loop provisions for driven vibrating-element environments
US6429846B2 (en) 1998-06-23 2002-08-06 Immersion Corporation Haptic feedback for touchpads and other touch controls
US6492979B1 (en) * 1999-09-07 2002-12-10 Elo Touchsystems, Inc. Dual sensor touchscreen utilizing projective-capacitive and force touch sensors
US20040180719A1 (en) 2002-12-04 2004-09-16 Philip Feldman Game controller support structure and isometric exercise system and method of facilitating user exercise during game interaction
US20060111180A1 (en) 2004-11-25 2006-05-25 Zeroplus Technology Co., Ltd. Touch-control game controller
US8050876B2 (en) * 2005-07-18 2011-11-01 Analog Devices, Inc. Automatic environmental compensation of capacitance based proximity sensors
US8932135B2 (en) 2007-04-19 2015-01-13 Adam W. Coe Game controller
US20090205878A1 (en) 2008-01-08 2009-08-20 David Taylor Touchpad for providing touch stick functionality in a game controller for providing relative and absolute position input
US8368658B2 (en) 2008-12-02 2013-02-05 At&T Mobility Ii Llc Automatic soft key adaptation with left-right hand edge sensing
TWI385567B (zh) 2008-12-30 2013-02-11 Univ Nat Chiao Tung 電容式觸控面板
CN102308270B (zh) 2009-02-06 2015-05-27 压力分布系统公司 电容式接近触觉传感器
JP2010191834A (ja) * 2009-02-20 2010-09-02 Renesas Electronics Corp データ処理システム及びマイクロコンピュータ
US20110009195A1 (en) 2009-07-08 2011-01-13 Gunjan Porwal Configurable representation of a virtual button on a game controller touch screen
US9511289B2 (en) 2009-07-10 2016-12-06 Valve Corporation Player biofeedback for dynamically controlling a video game state
US20110084932A1 (en) * 2009-10-13 2011-04-14 Research In Motion Limited Portable electronic device including touch-sensitive display and method of controlling same
US8535133B2 (en) 2009-11-16 2013-09-17 Broadcom Corporation Video game with controller sensing player inappropriate activity
US8754746B2 (en) 2009-11-16 2014-06-17 Broadcom Corporation Hand-held gaming device that identifies user based upon input from touch sensitive panel
US20110248948A1 (en) * 2010-04-08 2011-10-13 Research In Motion Limited Touch-sensitive device and method of control
US9950256B2 (en) 2010-08-05 2018-04-24 Nri R&D Patent Licensing, Llc High-dimensional touchpad game controller with multiple usage and networking modalities
US8432301B2 (en) 2010-08-10 2013-04-30 Mckesson Financial Holdings Gesture-enabled keyboard and associated apparatus and computer-readable storage medium
DE102011054415A1 (de) * 2011-10-12 2013-04-18 Ident Technology Ag Verfahren zum Anpassen der Sensitivität eines Sensorsystems
US8730166B2 (en) * 2011-10-20 2014-05-20 Sony Computer Entertainment, Inc. Multi-sensored control stick for enhanced input sensitivity and funtionality
US9831870B2 (en) 2012-04-11 2017-11-28 Ford Global Technologies, Llc Proximity switch assembly and method of tuning same
US10536361B2 (en) 2012-06-27 2020-01-14 Ubiquiti Inc. Method and apparatus for monitoring and processing sensor data from an electrical outlet
KR102172367B1 (ko) 2014-01-20 2020-10-30 삼성전자주식회사 사용자 맞춤형 정보를 제공하는 방법 및 장치
US10238979B2 (en) 2014-09-26 2019-03-26 Universal City Sudios LLC Video game ride
US10441881B2 (en) 2015-01-09 2019-10-15 Ironburg Inventions Limited Controller for a games console
US9652038B2 (en) 2015-02-20 2017-05-16 Sony Interactive Entertainment Inc. Magnetic tracking of glove fingertips
US9785305B2 (en) * 2015-03-19 2017-10-10 Apple Inc. Touch input cursor manipulation
US20170045981A1 (en) * 2015-08-10 2017-02-16 Apple Inc. Devices and Methods for Processing Touch Inputs Based on Their Intensities
WO2016179432A2 (en) 2015-05-05 2016-11-10 Dart Neuroscience, Llc Systems and methods for cognitive testing
US10427035B2 (en) 2015-06-09 2019-10-01 Microsoft Technology Licensing, Llc Game controller with removable trigger accessory
US11154772B2 (en) 2015-12-31 2021-10-26 The Bearded Bear, LLC Handheld controller grip attachment
KR101790947B1 (ko) 2016-04-27 2017-10-30 (주)이미지스테크놀로지 핸드 헬드 입력장치와 이를 이용한 입력방법
US9914624B2 (en) 2016-06-22 2018-03-13 The Boeing Company Systems and methods for object guidance and collision avoidance
US11625898B2 (en) 2016-10-11 2023-04-11 Valve Corporation Holding and releasing virtual objects
US11185763B2 (en) 2016-10-11 2021-11-30 Valve Corporation Holding and releasing virtual objects
US10691233B2 (en) 2016-10-11 2020-06-23 Valve Corporation Sensor fusion algorithms for a handheld controller that includes a force sensing resistor (FSR)
US10888773B2 (en) * 2016-10-11 2021-01-12 Valve Corporation Force sensing resistor (FSR) with polyimide substrate, systems, and methods thereof
US20180262991A1 (en) 2017-03-10 2018-09-13 Futurewei Technologies, Inc. Optimization of energy management of mobile devices based on specific user and device metrics uploaded to cloud
US10459544B2 (en) * 2017-05-19 2019-10-29 Htc Corporation Electronic system and proximity sensing method
US10921802B2 (en) 2017-11-07 2021-02-16 Garmin Switzerland Gmbh Handheld device for navigating a marine vessel
US20190042965A1 (en) 2018-03-30 2019-02-07 James Clarke Apparatus and method for a field programmable quantum array
US10635202B1 (en) * 2018-12-18 2020-04-28 Valve Corporation Dynamic sensor assignment
US10905946B2 (en) 2019-02-28 2021-02-02 Valve Corporation Continuous controller calibration
US11300397B2 (en) 2019-03-20 2022-04-12 Massachusetts Institute Of Technology Compliant force sensing system
US11042247B2 (en) 2019-06-14 2021-06-22 Valve Corporation Cluster-based sensor assignment

Also Published As

Publication number Publication date
WO2020176185A1 (en) 2020-09-03
US20200276497A1 (en) 2020-09-03
EP3914365A4 (en) 2022-11-23
EP3914365A1 (en) 2021-12-01
US10905946B2 (en) 2021-02-02
US11806609B2 (en) 2023-11-07
CN113490532A (zh) 2021-10-08
JP2022522147A (ja) 2022-04-14
US20210178251A1 (en) 2021-06-17

Similar Documents

Publication Publication Date Title
KR20210130159A (ko) 연속적인 제어기 보정
US10996775B2 (en) Dynamic sensor assignment
US11893190B2 (en) Cluster-based sensor assignment
US9417693B2 (en) Wearable wireless HMI device
US10639543B2 (en) Handheld controllers with touch-sensitive controls
US10459544B2 (en) Electronic system and proximity sensing method
JP6273590B2 (ja) 筋電位計測装置及び筋電位計測方法
KR20200008946A (ko) 동적 시스템 식별에 기반한 적응적 햅틱 효과 렌더링
KR20210021533A (ko) 가상 현실 핸드 제스처 생성
JP2024079737A (ja) 動的センサ割当
KR20210129075A (ko) 힘 감지 저항기(fsr)를 포함하는 핸드헬드 제어기를 위한 센서 융합 알고리즘