KR102306624B1 - 지속적 컴패니언 디바이스 구성 및 전개 플랫폼 - Google Patents

지속적 컴패니언 디바이스 구성 및 전개 플랫폼 Download PDF

Info

Publication number
KR102306624B1
KR102306624B1 KR1020187031496A KR20187031496A KR102306624B1 KR 102306624 B1 KR102306624 B1 KR 102306624B1 KR 1020187031496 A KR1020187031496 A KR 1020187031496A KR 20187031496 A KR20187031496 A KR 20187031496A KR 102306624 B1 KR102306624 B1 KR 102306624B1
Authority
KR
South Korea
Prior art keywords
pcd
user
behavior
skill
animation
Prior art date
Application number
KR1020187031496A
Other languages
English (en)
Other versions
KR20180129886A (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 KR20180129886A publication Critical patent/KR20180129886A/ko
Application granted granted Critical
Publication of KR102306624B1 publication Critical patent/KR102306624B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J11/00Manipulators not otherwise provided for
    • B25J11/0005Manipulators having means for high-level communication with users, e.g. speech generator, face recognition means
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/0003Home robots, i.e. small robots for domestic use
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/18Packaging or power distribution
    • G06F1/181Enclosures
    • G06F1/182Enclosures with special features, e.g. for use in industrial environments; grounding or shielding against radio frequency interference [RFI] or electromagnetical interference [EMI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/20Cooling means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/002Specific input/output arrangements not covered by G06F3/01 - G06F3/16
    • 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
    • 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
    • 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/16Sound input; Sound output
    • G06F3/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • G06K9/00671
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/20Scenes; Scene-specific elements in augmented reality scenes
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/18Speech classification or search using natural language modelling
    • G10L15/1822Parsing for meaning understanding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • G10L2015/225Feedback of the input speech

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Acoustics & Sound (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Electromagnetism (AREA)
  • Computer Hardware Design (AREA)
  • Power Engineering (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)
  • Toys (AREA)
  • Manipulator (AREA)
  • Stored Programmes (AREA)

Abstract

지속적 컴패니언 디바이스(PCD: persistent companion device)에 대한 스킬(skill)을 개발하기 위한 개발 플랫폼은 애플리케이션 프로그래밍 인터페이스(API: application programming interface)를 가지며, 개발자가 스킬을 생성하는데 활용 가능한 하나 또는 그 초과의 콘텐츠 어셋들을 찾는 것, 생성하는 것, 편집하는 것 그리고 이들에 액세스하는 것 중 적어도 하나를 수행하는 것을 가능하게 하도록 구성된 어셋 개발 라이브러리, 하나 또는 그 초과의 API들을 가진 표현 툴 모음 ― 개발자에 의해 특정되는, 스킬과 연관된 하나 또는 그 초과의 표현들은 표현 툴 모음을 통해 수신되며, 스킬은 적어도 하나의 정의된 입력에 대한 응답으로 PCD에 의해 실행 가능함 ―, 스킬에 대한 PCD의 하나 또는 그 초과의 거동 시퀀스들을 특정하기 위한 거동 편집기(behavior editor), 및 PCD의 실행 엔진에 스킬을 전개하기 위하여 API를 가진 스킬 전개 설비를 포함한다.

Description

지속적 컴패니언 디바이스 구성 및 전개 플랫폼
[0001] 본 출원은 2016년 3월 31일에 출원된 미국 가특허 출원 번호 제 62/316,247호 [JIBO-0004-P01]를 우선권으로 주장한다. 위의 출원들 모두는 그 전체가 인용에 의해 본원에 통합된다.
[0002] 발명 분야
[0003] 본 출원은 일반적으로 지속적 컴패니언 디바이스(persistent companion device)에 관한 것이다. 특히, 본 출원은, 사람의 환경에 지속적으로 상주하고 그리고 컴패니언 디바이스의 사용자와 상호작용하여 감정적 관여를 그 디바이스에게 제공하도록 적응되고 그리고/또는 컴패니언 디바이스의 사용자와 그 컴패니언 디바이스의 상호작용들에 관한 애플리케이션들, 콘텐츠, 서비스들 또는 종단 데이터(ongitudinal data) 수집과 연관되는 컴패니언 디바이스를 제공하기 위한 장치 및 방법들에 관한 것이다.
[0004] 관련 기술의 설명
[0005] 스마트폰들 및 태블릿 컴퓨터들과 같은 디바이스들이 증가적인 성능들, 이를테면 네트워킹 특징들, 고화질 비디오, 터치 인터페이스들, 및 애플리케이션들을 갖는 반면에, 그 디바이스들은 이를테면 디바이스와의 상호작용으로부터 컴패니언십 또는 향상된 감정적 경험의 이익들을 제공하기 위해 인간 사용자들을 관여시키기 위한 그것들의 능력에 있어 제한된다. 컴패니언십을 제공하기 위한 개선된 디바이스들과 관련된 방법들 및 시스템들의 요구가 존재한다.
[0006] 본 개시내용은 사람의 환경에 지속적으로 상주하고 그리고 컴패니언 디바이스의 사용자와 상호작용하여 감정적 관여를 그 디바이스에게 제공하도록 적응되고 그리고/또는 컴패니언 디바이스의 사용자와 그 컴패니언 디바이스의 상호작용들에 관한 애플리케이션들, 콘텐츠, 서비스들 또는 종단 데이터 수집과 연관되는 컴패니언 디바이스를 제공하기 위한 방법들 및 시스템들에 관한 것이다. 디바이스는, 추가로 본원에서 설명되는 바와 같이, 광범위한 애플리케이션들에 대한 풍부한 상호작용을 제공하기 위해서 관련된 하드웨어, 소프트웨어 및 다른 컴포넌트들과 상호작용하는 시스템의 일부일 수 있다.
[0007] 예시적이며 비제한적인 실시예에 따라, PCD(persistent companion device)를 위한 스킬(skill)을 개발하기 위한 개발 플랫폼은 개발자가 PCD에 의해 실행가능한 스킬을 생성하기 위해 활용가능한 하나 또는 그 초과의 콘텐츠 어셋들을 찾는 것, 생성하는 것, 편집하는 것 및 액세스하는 것 중 적어도 하나를 할 수 있게 하도록 구성된 API(application programming interface)를 갖는 어셋 개발 라이브러리, 개발자에 의해 특정된 스킬과 연관된 하나 또는 그 초과의 표현들을 수신하게 하는 하나 또는 그 초과의 API들을 갖는 표현 툴 모음(expression tool suite)― 스킬은 적어도 하나의 정의된 입력에 대한 응답으로 PCD에 의해서 실행가능함―, 스킬을 위한 PCD의 하나 또는 그 초과의 거동 시퀀스들을 특정하기 위한 거동 편집기, 및 스킬을 실행하기 위한 실행 엔진에 스킬을 전개하기 위한 API를 갖는 스킬 전개 설비를 포함한다.
[0008] 예시적이며 비제한적인 실시예에 따라, SDK(software development kit)를 사용하여 스킬의 개발을 인에이블링하기 위한 플랫폼은 수신된 입력들을 코딩된 응답들에 맵핑하도록 구성된 로직 레벨 모듈, 및 인지 레벨 모듈을 포함하고, 그 인지 레벨 모듈은 하나 또는 그 초과의 비전 기능 이벤트들을 검출하고 그리고 하나 또는 그 초과의 검출된 비전 기능 이벤트들을 로직 레벨 모듈에 알리도록 구성된 비전 기능 모듈, 정의된 사운드들을 검출하고 그리고 검출된 스피치/사운드를 로직 레벨 모듈에 알리도록 구성된 스피치/사운드 인식기, 및 정의된 감정적/페르소나 상태들을 표현하는 하나 또는 그 초과의 애니메이션들을 생성하고 그리고 하나 또는 그 초과의 애니메이션들을 로직 레벨 모듈에 송신하도록 구성된 표현 엔진을 포함한다.
[0009] 스킬 개발 플랫폼 방법들 및 시스템들은 PCD(persistent companion device)에 대한 스킬을 개발하기 위한 시스템을 포함한다. 시스템은 개발자가 PCD에 의해서 실행가능한 스킬을 생성하기 위해 활용가능한 하나 또는 그 초과의 콘텐츠 어셋들을 찾는 것, 생성하는 것, 편집하는 것 및 액세스하는 것 중 적어도 하나를 할 수 있게 하도록 구성된, 프로세서 상에서 실행하는 API(application programming interface)를 통해 액세스가능한 어셋 개발 라이브러리를 포함할 수 있다. 시스템은 또한, 프로세서 상에서 실행하고, 그리고 전자 디스플레이, 복수의 움직일 수 있는 바디 세그먼트들, 스피치 출력 시스템 및 멀티-컬러 광원 중 적어도 2개를 포함하는 스킬을 위한 PCD의 하나 또는 그 초과의 물리적 엘리먼트들의 동작이 개발자에 의해 특정되게 하는 하나 또는 그 초과의 API들을 갖는 애니메이션 툴 모음을 포함할 수 있고, 스킬은 개발자에 의해 정의된 적어도 하나의 입력에 대한 응답으로 PCD에 의해서 실행가능하다. 시스템은 또한 스킬을 위한 PCD의 하나 또는 그 초과의 거동 시퀀스들을 특정하기 위한, 프로세서 상에서 실행하는 거동 편집기를 포함할 수 있다. 부가적으로, 시스템은, 프로세서 상에서 실행하고, 그리고 스킬을 실행하기 위한 실행 엔진에 스킬을 전개하도록 적응된 스킬 전개 설비를 포함할 수 있다. 이 시스템에서, 스킬 전개 설비는 API를 통해 스킬을 전개할 수 있다. 부가적으로, 거동 편집기는 PCD의 표현 출력 시스템 및 센서리 입력 시스템의 동작을 가능하게 할 수 있다.
[0010] 스킬 개발 SDK 방법들 및 시스템들은 PCD(persistent companion device)에 대한 수신된 입력들을 코딩된 응답들에 맵핑하도록 구성된, 프로세서 상에서 동작하는 로직 레벨 맵핑 시스템을 포함할 수 있는 SDK(software development kit)를 사용하여 PCD 스킬의 개발을 인에이블링하기 위한 시스템을 포함할 수 있다. 시스템은 또한, PCD의 인지 엔진을 구성하도록 적응된, 프로세서 상에서 동작하는 PCD 거동 툴 모음(behavior tool suite)을 포함할 수 있고, 그 툴 모음은 하나 또는 그 초과의 비전 기능 이벤트들을 검출하고 그리고 하나 또는 그 초과의 검출된 비전 기능 이벤트를 로직 레벨 맵핑 시스템에 알리도록 거동 툴 모음을 통해 구성된 비전 기능 시스템, 및 정의된 사운드를 검출하고 그리고 검출된 스피치/사운드들을 로직 레벨 맵핑 시스템에 알리도록 거동 툴 모음에 의해서 구성가능한 스피치/사운드 인식 및 이해 시스템을 포함한다. 시스템은 또한, 적어도 하나의 입력에 대한 응답으로 적어도 하나의 정의된 상태를 표현하는 하나 또는 그 초과의 애니메이션들을 생성하고 그리고 하나 또는 그 초과의 애니메이션들을 입력들에 맵핑하기 위해 애니메이션들을 로직 레벨 맵핑 시스템에 송신하게 표현 엔진을 구성하도록 적응된, 프로세서 상에서 동작하는 PCD 애니메이션 툴 모음을 포함할 수 있다. 이 시스템에서, 정의된 상태는 감정 상태, 페르소나 상태, 인식 상태, 및 정의된 에너지 레벨을 표현하는 상태 중 적어도 하나일 수 있다.
[0011] PCD 소프트웨어 개발 키트는 스킬을 수행하도록 PCD(persistent companion device)를 구성하기 위한 시스템을 포함할 수 있는 사용자 인터페이스 방법들 및 시스템들을 포함할 수 있다. 시스템은 네트워킹 서버 상에서 실행하는 소프트웨어 개발 키트를 포함할 수 있다. SDK는 복수의 애니메이션 사용자 인터페이스 스크린들을 포함할 수 있고, 그 복수의 애니메이션 사용자 인터페이스 스크린들을 통해서 사용자는 스킬과 연관된 애니메이션을 구성하고, 그 복수의 사용자 인터페이스 스크린들은 전자 디스플레이, 복수의 움직일 수 있는 바디 세그먼트들, 스피치 출력 시스템, 및 멀티-컬러 광원 중 적어도 2개를 포함하는 PCD의 물리적 엘리먼트들의 동작의 사양을 가능하게 한다. SDK는 또한 복수의 거동 사용자 인터페이스 스크린들을 포함할 수 있고, 그 복수의 거동 사용자 인터페이스 스크린들을 통해서 사용자는 스킬과 연관된 로봇 액션들 및 판정들을 조정하기 위한 PCD의 거동을 구성하며, 그 복수의 거동 사용자 인터페이스 스크린들은 PCD의 센서리 입력 시스템에 대한 응답으로 PCD의 표현 출력 시스템의 동작을 가능하게 한다. 또한, 애니메이션 사용자 인터페이스 스크린들 및 거동 사용자 인터페이스 스크린들 중 적어도 하나에서 PCD의 그래픽 표현이 사용자에 의한 구성에 기반한 입력들에 대한 응답으로 PCD의 움직임을 나타낸다. 부가적으로, SDK는 응시 배향 사용자 인터페이스 스크린을 포함할 수 있고, 그 응시 배향 사용자 인터페이스 스크린을 통해서 사용자는 PCD에 대한 3차원 공간에서의 포인트로서 PCD에 근접하게 로케이팅된 타겟을 향해 PCD의 디스플레이 스크린을 표현방식으로 배향시키도록 PCD를 구성하고, PCD는 싱글-샷 모드 및 연속하는 타겟-추적하는 모드 중 적어도 하나에서 타겟에 응답한다.
[0012] 방법들 및 시스템들은 소프트웨어 개발 키트를 통해 PCD(persistent companion device)의 PCD 애니메이션 구성 및 제어 기능들에 대한 액세스를 제공하는, 네트워크 서버 상에서 실행하는 애니메이션 편집기를 포함할 수 있는 PCD를 애니메이팅하기 위한 시스템을 포함할 수 있다. 시스템은 또한 PCD에 대한 전자 인터페이스를 포함할 수 있고, 그 PCD는 복수의 상호연결된 움직일 수 있는 바디 세그먼트들, 그것의 회전을 위한 모터들, 적어도 하나의 라이트 링, 전자 디스플레이 스크린, 및 오디오 시스템로 구성된다. 부가적으로, 시스템은 PCD 애니메이션 애플리케이션 프로그래밍 인터페이스를 포함할 수 있고, 그 PCD 애니메이션 애플리케이션 프로그래밍 인터페이스를 통해 애니메이션 편집기는 PCD의 특징들 중 적어도 일부를 제어한다. 또한, 시스템은 애니메이션 편집기의 사용자에 의해 구성가능한 복수의 애니메이션 빌더들을 포함할 수 있고, 애니메이션 빌더들은 액티브 애니메이션 세션들을 표시하는 애니메이션 인스턴스들을 유발한다. 시스템은 신호에 대한 응답으로 제1 애니메이션 인스턴스로부터 제2 애니메이션 인스턴스로 PCD의 트랜지션(transition)을 특정하기 위한 거동 트랜지션 시스템을 추가로 포함할 수 있다.
[0013] 본원에서 설명된 방법들 및 시스템들은 PCD(persistent companion device)의 거동들을 제어하기 위한 시스템을 포함할 수 있다. 시스템은 소프트웨어 개발 키트를 통해 PCD의 PCD 거동 구성 및 제어 기능들에 대한 액세스를 제공하는, 네트워킹 서버 상에서 실행하는 거동 편집기를 포함할 수 있다. 시스템은 또한 자율적인 로봇 동작 기능들의 거동 및 제어 흐름을 제어하는 것을 가능하게 하는 거동 편집기에 의해서 액세스가능한 복수의 거동 트리 데이터 구조들을 포함할 수 있고, 그 동작 기능들은 복수의 센서 입력 기능들 및 복수의 표현 출력 기능들을 포함하고, 복수의 거동 트리 데이터 구조들은 로봇 동작 기능들의 제어를 계층적으로 체계화하고, 적어도 하나의 거동 트리 데이터 구조는 PCD에 의해서 수행되는 적어도 하나의 스킬과 연관된다. 시스템은 각각의 거동 트리의 복수의 거동 노드들을 추가로 포함하고, 복수의 거동 노드들 각각은 무효 상태, 진행 중인 상태, 성공적인 상태 및 실패된 상태로 구성되는 4개의 거동 상태들 중 하나와 연관된다. 시스템은 또한 각각의 거동 트리의 적어도 하나의 페어런츠 거동 노드를 포함하고, 적어도 하나의 페어런츠 노드는 적어도 하나의 차일드 거동 노드를 참조하고 그리고 순차적 차일드 거동 노드 동작, 병렬 차일드 거동 노드 동작, 차일드 거동 노드들 간의 스위칭, 및 참조된 차일드 거동 노드의 랜덤한 활성화 중 적어도 하나를 개시하도록 적응된다. 이 시스템에서, 거동 노드들 중 적어도 일부는 각각 거동 노드가 시작하는 것을 방지하는 것, 실행하는 거동 노드가 성공하도록 강제하는 것, 실행하는 거동 노드가 실패하도록 강제하는 것, 거동 노드를 재실행하는 것 중 적어도 하나를 수행함으로써 자신의 거동 노드의 상태를 수정하도록 기능하는 거동 노드 데코레이터로 구성된다.
[0014] 본원에서 설명된 방법들 및 시스템들은 PCD(persistent companion device)에 의해 스피치를 인식하기 위한 시스템을 포함할 수 있다. 시스템은 PCD가 이해하는 자연 언어를 가능하게 하는 PCD 스피치 인식 구성 시스템을 포함할 수 있고, 이 시스템은 사용자가 임베딩된 규칙(embedded rule) 및 커스텀 규칙(custom rule) 중 적어도 하나를 포함하는 스피치 이해 규칙들을 구성하기 위하여 네트워킹된 컴퓨터상에서 실행하는 스피치 규칙 편집기를 동작하게 하는 복수의 사용자 인터페이스 스크린들을 포함한다. 시스템은 네트워킹된 서버를 통해 사용자에 의해 액세스되는 임베딩된 스피치 이해 규칙들의 라이브러리(library)를 포함하는 개발 키트를 더 포함할 수 있다. 부가적으로, 시스템은, 청취 성공 데코레이터에 의해 테스트된 조건의 성공적인 결과에 기반하여 사용자가 PCD로 하여금 동작을 수행하게 하도록 구성하는 청취 성공 데코레이터 및 청취-타입 PCD 거동 중 적어도 하나와 스피치 이해 규칙들을 사용자가 연관시키게 하는 소프트웨어 개발의 로봇 거동 연관성 기능을 더 포함할 수 있다.
[0015] 본원에서 설명된 방법들 및 시스템들은 PCD(persistent companion device) 제어 구성 시스템을 포함할 수 있다. 시스템은, 스크립팅된(scripted) 애니메이션들의 플레이백(playback)을 통한 PCD의 표현 출력, 사용자에 의해 구성 가능한 이벤트 청취자들에 의해 검출된 이벤트들에 대한 PCD의 응답 동작 및 애니메이션 커맨드들을 특정하는 것을 가능하게 하는 복수의 애니메이션 계층들을 제어하는 것을 가능하게 하는 PCD 애니메이션 구성 시스템을 포함할 수 있다. 시스템은 PCD의 기계적 및 전자적 동작을 제어하는 것을 가능하게 하는 PCD 거동 구성 시스템을 더 포함할 수 있다. 시스템은 또한, 싱글-샷 및 타겟 추적 중 적어도 하나의 것의 응시 PCD 기능 모드 및 타겟을 특정함으로써 PCD의 응시의 지향성 활동을 결정하는 것을 가능하게 하는 PCD 응시 배향 구성 시스템을 포함할 수 있다. 부가적으로, 시스템은, 인간 스피치를 인식하기 위한 복수의 임베딩된 규칙들, 및 인간 스피치를 인식하기 위한 규칙들을 커스터마이징(customizing)하기 위한 사용자 인터페이스를 포함하는 PCD 스피치 인식 구성 시스템을 포함할 수 있고, 인간 스피치는 PCD의 오디오 센서 입력 시스템에 의해 캡처된다. 이러한 시스템에서, 로봇 거동을 통해 PCD의 기계적 및 전자적 동작을 제어하는 것은 애니메이팅된 거동들 간의 트랜지션들을 제어하는 것, 병렬 제어 및 순차적인 제어 중 적어도 하나의 제어로 복수의 애니메이팅된(animated) 거동들을 제어하는 것, 및 페어런츠 및 차일드 거동들의 거동 트리에 기반하여 복수의 차일드 거동들을 제어하는 것을 포함하며, 차일드 거동은 차일드 거동들 중에서 선택하고 차일드 거동들 중에서 랜덤하게 선택하기 위한 스위치 조건 중 하나에 기반하여 활성화된다.
[0016] 반드시 축적대로 그려진 것은 아닌 도면들에서, 유사한 도면부호들은 몇몇의 뷰들 전반에 걸쳐 실질적으로 유사한 컴포넌트들을 설명할 수 있다. 상이한 문자 접미사들을 갖는 유사한 도면부호들은 실질적으로 유사한 컴포넌트들의 상이한 인스턴스들을 나타낼 수 있다. 도면들은 일반적으로, 본 문헌에서 논의되는 특정 실시예들의 상세한 설명을 제한이 아닌 예로서 예시한다.
[0017] 도 1은 PCD의 많은 뷰들을 예시한다.
[0018] 도 2는 PCD의 소프트웨어 아키텍처를 예시한다.
[0019] 도 3은 PSIM(psycho-social interaction module)의 아키텍처를 예시한다.
[0020] 도 4는 PCD에 의한 그리팅(greeting) 상호작용의 단순화된 버전을 도시하는 태스크 네트워크를 예시한다.
[0021] 도 5는 PCD의 하드웨어 아키텍처를 예시한다.
[0022] 도 6은 PCD의 기계적 아키텍처를 예시한다.
[0023] 도 7은 콜 답신 및 메시징 서비스를 제공하기 위한 방법에 대한 흐름도를 예시한다.
[0024] 도 8은 PCD에 의해 스토리를 중계하기 위한 방법에 대한 흐름도를 예시한다.
[0025] 도 9는 PCD의 사용에 의해 사용자의 감정 상태를 표시하고 그리고/또는 영향을 미치기 위한 방법에 대한 흐름도를 예시한다.
[0026] 도 10은 PCD에 의해 스토리 액팅 또는 애니메이션 특징을 인에이블링하기 위한 방법에 대한 흐름도를 예시한다.
[0027] 도 11은 백 스토리들을 생성 및 인코딩하기 위한 방법에 대한 흐름도를 예시한다.
[0028] 도 12는 상호작용 데이터에 액세스하여 이를 사용하여 사용자의 요구들을 해결(address)하기 위한 방법에 대한 흐름도를 예시한다.
[0029] 도 13은 사용자 입력들에 기반하여 PCD의 거동을 조정하기 위한 방법에 대한 흐름도를 예시한다.
[0030] 도 14는 반복적이거나, 지속적이거나, 또는 반-지속적인 시각적 엘리먼트를 디스플레이하는 예를 예시한다.
[0031] 도 15는 반복적이거나, 지속적이거나, 또는 반-지속적인 시각적 엘리먼트를 디스플레이하는 예를 예시한다.
[0032] 도 16은 반복적이거나, 지속적이거나, 또는 반-지속적인 시각적 엘리먼트를 디스플레이하는 예를 예시한다.
[0033] 도 17은 PCD에 대한 런타임 스킬의 예시적이며 비제한적인 실시예를 예시한다.
[0034] 도 18은 SDK를 사용하여 스킬의 개발을 인에이블링하는 플랫폼에 대한 흐름 및 다양한 아키텍처 컴포넌트들의 예시적이며 비제한적인 실시예의 예시이다.
[0035] 도 19는 어셋들의 생성을 위해 제공될 수 있는 사용자 인터페이스의 예시적이며 비제한적인 실시예의 예시이다.
[0036] 도 20은 개발자가 PCD의 로컬 인지 공간을 볼 수 있게 할 수 있는 LPS(local perception space) 가시화 툴의 예시적이며 비제한적인 스크린 샷들의 예시이다.
[0037] 도 21은 예시적이며 비제한적인 실시예에 따른 거동 편집기의 스크린샷의 예시이다.
[0038] 도 22는 예시적이며 비제한적인 실시예에 따라 분기 로직을 생성하는 공식적 방식의 예시이다.
[0039] 도 23은 선택 로직이 거동에 대한 인수로서 부가될 수 있게 하는, 예시적이며 비제한적인 실시예의 예시이다.
[0040] 도 24는 시뮬레이션 윈도우의 예시적이며 비제한적인 실시예의 예시이다.
[0041] 도 25는 소셜 로봇 표현 툴 모음의 소셜 로봇 애니메이션 편집기의 예시적이며 비제한적인 실시예의 예시이다.
[0042] 도 26은 PCD 애니메이션 움직임 툴의 예시적이며 비제한적인 실시예의 예시이다.
[0043] 도 27은 소셜 로봇-특정 소프트웨어 개발 키트의 아키텍처의 블록 다이어그램을 도시한다.
[0044] 도 28은, 2개의 거동들이 동시에 실행되고, 그런 다음 제2 거동, 그런 다음 제3 거동이 실행되는, 거동 트리 스피펫(behavior tree snippet)을 도시한다.
[0045] 도 29는 리프 거동(leaf behavior)을 도시한다.
[0046] 도 30은 순차적인 그리고 병렬 페어런츠 거동들의 사용자 인터페이스 디스플레이를 도시한다.
[0047] 도 31은 거동 데코레이터의 사용자 인터페이스 디스플레이를 도시한다.
[0048] 도 32는 스킬의 메인 거동 트리를 도시한다.
[0049] 도 33은 거동 트리 리프를 편집하기 위한 거동 편집기의 사용자 인터페이스를 도시한다.
[0050] 도 34는 측정가능한 조건에 기반하여 거동의 상태를 변경하도록 구성된 데코레이터를 도시한다.
[0051] 도 35는 거동의 인수들을 특정하기 위한 사용자 인터페이스를 도시한다.
[0052] 도 36은 구성, 활성화, 및 런/제어에 걸친, 빌더들 및 인스턴스들의 생활주기의 예시를 도시한다.
[0053] 도 37은 로봇의 개개의 DOF들, DOF 값 타입들, 및 공통 DOF 그룹핑들의 맵을 제공하는 다이어그램을 도시한다.
[0054] 도 38은 가장 최근에 트리거된 애니메이트(animate) 인스턴스에 의한 배타적 DOF 소유권의 정책을 따르는 애니메니트 모듈을 도시한다.
[0055] 도 39는 도 38의 실시예에 대한 교번적인 실시예를 도시한다.
[0056] 도 40은 애니메이션으로 트랜잭션을 구성하는 것을 도시한다.
[0057] 도 41은 예시적인 코어 애니메이션 이벤트들의 타이밍을 도시한다.
[0058] 도 42는 2개의 오버랩핑하는 애니메이션 인스턴스들에 의해 산출되는 이벤트들의 타임라인을 도시한다.
[0059] 도 43은 룩-앳(look-at) 배향 구성 인터페이스의 예를 도시한다.
[0060] 도 44는 2개의 상이한 룩-앳 타겟들 간에서 토글링하기 위한 거동 트리 노드에 커스텀 코드를 포함시키는 것을 도시한다.
[0061] 도 45는 소프트웨어 개발 키트에 의해 참조되는 소셜 로봇의 3개의 좌표계를 도시한다.
[0062] 도 46은 애니메이션들을 편집하기 위한 소프트웨어 개발 키트의 사용자 인터페이스를 도시한다.
[0063] 도 47은 소셜 로봇의 세그먼트들을 제어하기 위한 바디 계층을 구성하기 위한 사용자 인터페이스를 도시한다.
[0064] 도 48은 소셜 로봇의 대표적 아이 이미지(eye image)를 제어하기 위한 아이 계층을 구성하기 위한 사용자 인터페이스를 도시한다.
[0065] 도 49는 소셜 로봇의 대표적 아이 이미지의 텍스처 양상을 제어하기 위한 아이 텍스처 계층을 구성하기 위한 사용자 인터페이스를 도시한다.
[0066] 도 50은 소셜 로봇의 대표적 아이 이미지를 제어하기 위한 아이 오버레이 계층을 구성하기 위한 사용자 인터페이스를 도시한다.
[0067] 도 51은 소셜 로봇의 대표적 아이 이미지를 제어하기 위한 아이 오버레이 텍스처 계층을 구성하기 위한 사용자 인터페이스를 도시한다.
[0068] 도 52는 소셜 로봇의 대표적 아이 이미지의 백그라운드를 제어하기 위한 백그라운드 계층을 구성하기 위한 사용자 인터페이스를 도시한다.
[0069] 도 53은 소셜 로봇의 바디 세그먼트 주위에 배치된 LED를 구성하기 위한 사용자 인터페이스를 도시한다.
[0070] 도 54는 이벤트를 구성하기 위한 사용자 인터페이스를 도시한다.
[0071] 도 55는 오디오 이벤트 계층을 구성하기 위한 사용자 인터페이스를 도시한다.
[0072] 도 56은 스피치 규칙 편집기의 사용자 인터페이스를 도시한다.
[0073] 도 57은 교번적인 스피치 규칙 편집기 사용자 인터페이스 스크린을 도시한다.
[0074] 도 58은 청취 거동 편집기 사용자 인터페이스 스크린을 도시한다.
[0075] 도 59는 교번적인 청취 거동 편집기 사용자 인터페이스를 도시한다.
[0076] 도 60은 다른 교번적인 청취 거동 편집기 사용자 인터페이스 스크린을 도시한다.
[0077] 도 61은 MIM 구성 사용자 인터페이스를 도시한다.
[0078] 도 62는 MIM 규칙 편집기 사용자 인터페이스를 도시한다.
[0079] 도 63은 PCD SDK의 흐름 편집기를 도시한다.
[0080] 예시적이며 비제한적인 실시예들에 따라, 사람/사용자의 환경에서 지속적으로 상주하며 그리고 컴패니언 디바이스의 사용자와 상호작용하는 PCD(Persistent Companion Device)가 제공되고 설명된다. 본원에서 사용되는 바와 같이, "PCD" 및 "소셜 로봇"은, 문맥이 달리 표시하는 경우를 제외하고, 상호교환가능하게 사용될 수 있다. 아래에 보다 충분히 설명되는 바와 같이, PCD는 움직임, 그래픽들, 사운드들, 라이트들(lights), 향(scent)을 통해 표현되는 별개의 페르소나를 갖는 지속적, 사회적 존재감(social presence)를 제공한다. PCD의 각각의 실시예에 수반되는 "디지털 소울(digital soul)"의 개념이 아래에 추가로 도입된다. 본원에서 사용되는 바와 같이, "디지털 소울"은 PCD에 의해 액션들을 결정하고 실행하기 위한 입력들로서의 역할을 하는, 디지털 포맷으로 저장될 수 있는 복수의 속성들을 지칭한다. 본원에서 사용되는 바와 같이, "환경"은 PCD의 센서들에 의한 사용자의 관찰을 허용하기에 충분한, 사용자에 대한 근접도 내에서의 사용자의 물리적 환경을 지칭한다.
[0081] 이 디저털 소울은 PCD의 상호작용/인터페이스에 수반된 사회적-감정적/대인관계 느낌(interpersonal feel)을 통해 사회적 상호작용 및 라포-형성 활동들(rapport-building activities)에 사용자들이 관여(engage)하도록 동작한다. 아래에서 보다 충분히 설명되는 바와 같이, PCD(100)는 PCD(100)의 사용자에 대한 매우 다양한 기능들을 수행할 수 있다. 아래에 상세히 설명되는 예시적이며 비제한적인 실시예들에 따라, PCD는 (1) 사람들/사용자들 간의 보다 의미있고, 참여적이며, 물리적으로 구체화되고, 사회적으로 자리잡은 상호작용들을 가능하게 하고 지원할 수 있고, 그리고 (2) 실용적 태스크(utilitarian task)들의 수행에 관여할 수 있고 ―여기서, PCD는 보조자(assistant)로서 동작하거나 또는 이로 제한되는 것은 아니지만, 사용자에게 유용한 정보를 제공하는 것, 스케줄링을 보조하는 것, 리마인딩하는 것(reminding), 포토그래퍼로서 동작하는 것과 같은 특정 서비스들을 제공하는 것을 비롯한 개인 서비스를 제공하는 어떤 것으로서 동작하여, 가족 스토리들 및 정보(knowledge)(예컨대, 특정 레시피들) 등을 가족이 생성/보존/공유하게 돕는다― 그리고 (3) 사용자들에게 재미를 주고(예컨대, 스토리들, 게임들, 뮤직 및 다른 미디어 또는 콘텐츠) 그리고 회합(company) 및 컴패니언쉽(companionship)를 제공할 수 있다.
[0082] 예시적이며 비제한적인 실시예들에 따라, PCD의 다양한 기능들은, 이로 제한되는 것은 아니라, 하기의 것들을 포함하는 복수의 동작 모드들을 통해 달성될 수 있다:
ⅰ. 개선된 컴패니언쉽을 제공하도록 시간이 지날수록 적응될 수 있는 특성(trait)들을 포함하여, 다양한 상이한 성격 특성들을 선택적으로 표현하는 개인화된 인터페이스를 통해.
ⅱ. 정보뿐만 아니라 정서(affect)를 전달할 수 있는 표현적이고, 따뜻한 인간중심적인 인터페이스를 통해. 아래에서 설명되는 바와 같이, 그런 인터페이스는 얼굴 표정(애니메이션 또는 움직임에 의해), 바디 움직임, 그래픽들, 사운드, 스피치, 컬러, 라이트, 향 등을 포함하는 다수의 큐(cue)들을 통해 감정, 정서 및 성격을 표현할 수 있다.
ⅲ. PCD가 점차적으로 PCD의 사용자(들)에게 맞춤화되고, 적응되고, 튜닝되도록 다수의 소스들(센서들, 데이터, 다른 디바이스들로부터의 정보, 인터넷, GPS, 등)에 걸쳐 상황별 경도 정보(longitudinal information)를 획득하는 것을 통해.
ⅳ. 사용자의 요구들/원하는 것을 보다 잘 매칭시키기 위한 적응적 자체-구성/자체-힐링을 통해.
ⅴ. 특정 시츄에이션 및 그의 사용자의 사회적 및 감정적 특정상황들을 고려하는 것을 통해.
[0083] 도 1을 참조로, 예시적이며 비제한적인 실시예들에 따른 PCD(100)의 다수의 도면들이 도시된다. 예시된 바와 같이, PCD(100)는 예컨대 용량성 센서들(102, 102)을 포함하는 복수의 예시적인 입력/센서 디바이스들을 포함한다. 하나 또는 그 초과의 용량성 센서들(102)은, 이로 제한되는 것은 아니지만, 잠재적으로 사용자 인터페이스로서의 역할을 하는 것뿐만 아니라, 스트록킹(stroking), 허깅(hugging), 터칭(touching) 등을 포함하는 물리적 사회적 상호작용을 감지하도록 동작할 수 있다. PCD(100)는 사용자로부터 입력을 수신할 뿐만 아니라 사용자에게 PCD(100)에 의해 데이터의 출력을 위한 그래픽 디스플레이로서 기능하도록 구성된 디바이스로서의 터치 스크린(104)을 더 포함할 수 있다. PCD(100)는, 이로 제한되는 것은 아니지만, 스틸 이미지들 및 비디오를 포함하는 시각적 성질(visual nature)의 입력을 수신하기 위한 하나 또는 그 초과의 카메라들(106)을 더 포함할 수 있다. PCD(100)는 사용자로부터 입력을 수신하기 위하여 하나 또는 그 초과의 조이스틱들(108)을 더 포함할 수 있다. PCD(100)는 오디오 데이터를 방출하거나 아니면 출력하기 위한 하나 또는 그 초과의 스피커들(110)을 더 포함할 수 있다. PCD(100)는 하나 또는 그 초과의 마이크로폰들(112)을 더 포함할 수 있다.
[0084] PCD 소프트웨어 아키텍처
[0085] 도 2를 참조로, 예시적이며 비제한적인 실시예들에 따른 소프트웨어 아키텍처(200)를 도시하는 블록도가 예시된다. 소프트웨어 아키텍처(200)는, PCD(100)가, 로봇 실시예를 통해서뿐만 아니라 광범위한 애플리케이션들에 걸쳐 연결된 디바이스들을 통해 사람들이 관여할 수 있는 감정적으로 공명하는 페르소나와 같은 경험을 삶에 제공하게 할 수 있는 인공 지능, 머신 학습, 및 연관된 소프트웨어 및 하드웨어 시스템들과 같은 기술들에 적응될 수 있다.
[0086] 예시적이며 비제한적인 실시예들에 따라, PCD(100)와 연관된 지능은 휴먼 소셜 코드(human social code)를 머신들에 인코딩할 수 있는 하나 또는 그 초과의 카테고리들로 분할될 수 있다. 일부 실시예들에서, 이들 하나 또는 그 초과의 카테고리들은 PCD의 인식-정서(cognitive-emotive) 아키텍처의 토대일 수 있다. 하나 또는 그 초과의 카테고리들은, 이로 제한되는 것은 아니지만, 심리사회적 인지, 심리사회적 학습, 심리사회적 상호작용, 심리사회적 표현 등)을 포함할 수 있다. 지능의 심리사회적 인지 카테고리는 PCD(100)의 자연적 사회적 인터페이스 및 파-필드(far-field) 상호작용을 지원하기 위하여 인간 소셜 큐들(예컨대, 시력, 청력, 터치)의 통합된 머신 인지를 포함할 수 있다. 심리사회적 학습 카테고리는, PCD(100)가 직접적인 상호작용을 통해 그리고 PCD(100) 및 디바이스 에코시스템에 의해 캡쳐된 멀티-모달 데이터로부터의 데이터 분석들을 통해 사람들의 아이덴티티, 활동 패턴들, 선호도들, 및 관심들에 관해 학습할 수 있는 알고리즘들을 포함할 수 있다. PCD는 자신의 니어 또는 파 필드 통신 범위에 진입하는 사람들의 보이스 샘플들을 레코딩할 수 있고, 검출된 사람들의 아이덴티티 및 개인 데이터를 획득하기 위하여 보이스 식별 시스템들을 이용할 수 있다. 추가로, PCD는 BLE 인에이블드 디바이스들의 발견 채널(Discovery Channel)에서 브로드케스팅된 UUID를 검출할 수 있고 디바이스 사용자와 연관된 개인 데이터를 디코딩할 수 있다. PCD는 페이스북, 트위터, 링크드인(LinkedIn) 등 같은 사회적 네트워킹 사이트들로부터 부가적인 개인 정보를 수집하기 위하여, 획득된 아이덴티티 및 개인 데이터를 사용할 수 있다. PCD는 사람들의 구성된 개인 프로파일의 디스플레이와 함께 자신의 니어 또는 파 필드 통신 범위에서 검출된 사람들의 존재 및 아이덴티티를 알릴 수 있다.
[0087] 심리사회적 상호작용 카테고리는, PCD(100)가 태스크들 및 활동들뿐만 아니라, (모든 언어 및 멀티-모달 거동을 통해) 사람들과 신뢰 및 감정적 유대(emotional bond)를 구축하는 라포 형성 스킬들을 지원하기 위하여 예방적 판정 수행 프로세스들을 수행하게 할 수 있다. 지능의 심리사회적 표현 카테고리는, PCD(100)가 스피치, 움직임, 그래픽들, 사운드들 및 조명의 오케스트라를 통해 감정적으로 조화된 페르소나로서 "활기를 띠고", 콘텐츠에 생기를 주고, 그리고 사람들이 관여하도록 자신의 멀티-모달 출력들을 조정하게 할 수 있다. 아키텍처(200)는 멀티-모달 머신 인지 기술들, 스피치 인식, 표현 스피치 합성에 대응하는 모듈들뿐만 아니라, 비용 효율성을 레버리징하는 하드웨어 모듈들(즉, 모바일 디바이스들에 공통인 컴포넌트들)을 포함할 수 있다. 도 1에 예시된 바와 같이, PCD(100) 내에 하나 또는 그 초과의 소프트웨어 서브시스템들이 제공되고 이들 하나 또는 그 초과의 서브시스템들은 아래에서 보다 상세히 설명될 것이다.
[0088] 심리사회적 인지
[0089] PCD(100)의 심리사회적 인지는 사용자들의 위치를 평가하고, 사용자들의 감정을 캡쳐하고, 사용자들의 아이덴티티와 제스처들을 인식하고, 그리고 사용자들과 상호작용을 유지하기 위하여 사용될 수 있는 보이스 입력, 및 시각적-공간적 인지를 다루기 위하여 사용될 수 있는 청각 인지를 포함할 수 있다. PCD(100)의 청각 인지는 마이크로폰들(202)의 어레이, 하나 또는 그 초과의 신호 프로세싱 기술들(이를테면, 204) 및 자동 스피치 인식 모듈(206)을 사용하여 실현될 수 있다. 추가로, 청각 인지는 상호작용식 소셜 로봇의 고유한 센서리 및 프로세싱 요건들로 모바일 컴퓨팅 에코시스템에 대해 생성된 컴포넌트들 및 기술들을 레버리징함으로써 실현될 수 있다. PCD(100)는 마이크로폰 어레이(202)를 사용하는 스피치를 통한 멀티-모달 파-필드 상호작용 및 신호 프로세싱 모듈(204a)을 사용하는 노이즈 제거 기술뿐만 아니라 자동 스피치 인식 모듈(206) 및 청각 장면 분석을 보조하기 위한 제3자 솔루션들을 지원하기 위한 하드웨어 및 소프트웨어를 포함할 수 있다.
[0090] PCD(100)는, 사람들이 노이지 환경에서 말하는 바를 듣고 이해하도록 적응되도록 구성될 수 있다. 이것을 수행하기 위하여, 사운드 신호는, 이 사운드 신호가 자동 스피치 인식기(ASR:automatic speech recognizer) 모듈(206)에 전달되기 전에, 신호 프로세싱 모듈(204a)을 통해 전달될 수 있다. 사운드 신호는 ASR의 성공 레이트를 개선시키기 위해, 정적 및 동적 백그라운드 노이즈들, 에코들, 모터들, 및 심지어 다른 사람들이 이야기하는 것으로부터 스피치를 분리하도록 프로세싱된다.
[0091] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 공간 구성에 적어도 4개의 MEMS 마이크로폰들의 어레이를 사용하도록 구성될 수 있다. 추가로, 사운드 도달 시간 기반 알고리즘(본원에서 빔-형성 알고리즘으로 지칭됨)이 특정 방향으로 사운드를 분리하기 위하여 사용될 수 있다. 다수의(예컨대, 모두 6개의) 마이크로폰 신호들, 방향 벡터, 및 마이크로폰들의 배치를 사용하여, 빔-형성 알고리즘은 특정 공간 소스로부터 발생하는 사운드를 분리할 수 있다. 빔-형성 알고리즘은 다수의 빔들을 동시적으로 허용함으로써 사운드의 다수의 소스들에 관한 정보를 제공할 수 있다. 게다가, 스피치-논 스피치(speech-non speech) 검출 알고리즘은 스피치 소스를 식별할 수 있고, 스피커의 공간 로컬화를 제공할 수 있다. 일부 실시예들에서, 빔-형성 정보는, 튜닝 및 배향할 모터 성능뿐만 아니라, 방향을 선정하기 위해 PCD(100)의 비전 및 인식 시스템들과 통합될 수 있다. 예컨대, 3D 센서는 3D 공간에서 사람의 머리의 위치를 검출하는 데 사용될 수 있고, 이에 따라서, 방향은 감지된 위치로부터 발생하는 사운드들을 ASR 모듈(206)에 전달되기 전에 분리할 수 있는 빔-형성 알고리즘에 통신될 수 있다.
[0092] 동작 동안, PCD(100)는 노이즈들을 만들거나 또는 말함으로써 사운드를 생성할 수 있다. 신호 프로세싱 모듈(204a)은 이들 사운드들이 마이크로폰 어레이(202)를 통해 ASR 모듈(206)로 피드백되는 것을 방지하도록 구성될 수 있다. 스피커 노이즈를 제거하기 위해, 신호 프로세싱 모듈(204a)은 마이크로폰에 의해 수신되고 있는 신호로부터 스피커로 피딩되고 있는 신호를 차감하는 알고리즘들을 사용할 수 있다. 고조파-풍부 모터 노이즈를 감소시키기 위해, PCD(100)는 신호 프로세싱 기술들 및 기계적 접근법을 구현하도록 구성될 수 있다.
[0093] 일부 실시예들에서, PCD(100)는 모터의 상이한 부분들로부터 생성되는 노이즈를 처리하기 위해 모터의 이러한 포트들을 모니터할 수 있다. 일 예에서, PCD(100)는 휠링(whirring) 사운드의 형태인 아마추어(armature) 베어링에 의해 산출될 수 있는 고주파수들을 흡수할 수 있는 탄성 중합체(elastomeric) 재료에 모터를 장착하도록 구성될 수 있다. 모터는, 모터가 고속으로 회전할 때에만 현저한 히싱(hissing) 사운드를 산출할 수 있는 브러쉬들을 포함할 수 있다. 이에 따라서, PCD(100)는 히싱 사운드를 방지하기 위해 비교적 저속으로 애니메이션 및 움직임을 나타낸다. 부가적으로, PCD(100)는 낮은 기어비(gear ratio)를 구현하도록 구성될 수 있고, 추가로 히싱 사운드를 방지하기 위해 모터의 스피드를 감소시킬 수 있다. 통상적으로, 호비스트 서보들(hobbyist servos)에서 발견되는 것들과 같은 저품질의 PWM 드라이브들은 고주파음(high-pitched whine)을 산출할 수 있다. PCD(100)는 모터 노이즈의 이러한 부분을 제거하기 위해, 양호한 품질의 PWM 드라이브들로 구성될 수 있다. 일반적으로, 모터의 기어들은 낮게 피칭된 그라인딩(grinding) 사운드―이는 모터 노이즈의 대부분을 차지함―를 유발할 수 있다. 최종 기어 드라이브는 드라이브 트레인(drive train)에서 가장 많은 토크를 지닐 수 있으며, 결국 대부분 노이즈의 소스이다. PCD(100)는 노이즈의 이러한 소스를 최소화하기 위해 최종 기어 드라이브를 마찰 구동(friction drive)으로 교체하도록 구성될 수 있다. 또한, PCD(100)는 모터에 의해 생성된 노이즈를 감소시키기 위해 신호 프로세싱 기법들을 사용하도록 구성될 수 있다. 일 실시예에서, 마이크로폰은, 메인 마이크로폰 어레이(202)에서 신호들로부터 노이즈 신호가 차감될 수 있도록 각각의 모터 옆에 배치될 수 있다.
[0094] PCD(100)의 오디오 파이프라인의 출력은 클린-업된(cleaned-up) 오디오 소스를 ASR 모듈(206)로 피딩할 수 있고, 이는 예컨대, ASR의 n개의 최상(n-best) 아웃풋 또는 단어-격자들(word-lattices)을 사용하여, 스피치를 텍스트로 그리고 가능하게는 의미있는 신뢰성 레벨들로 강화된 대안적인 경쟁 단어 가설들(competing word hypotheses)로 변환시킬 수 있다. 그런 다음, 스피치(단어들)의 텍스추얼 표현은 사용자의 의도 및 사용자가 제공한 정보를 "이해"하기 위해 파싱될 수 있고, 결국 기호적인 표현(의미)으로 변환된다. ASR 모듈(206)은 정상 볼륨으로 그리고 통상적인 대인관계 통신 거리에 대응하는 거리에서 사용자들로부터의 스피치를 인식할 수 있다. 일 예에서, 거리는 주위의 노이즈 및 스피치 품질을 포함하는 다수의 환경 속성들에 의존하여 거의 5-6 피트(feet) 또는 그 이상일 수 있다. 일 예에서, 스피치 인식 범위는 통상적인 12 피트 ×15 피트 룸(room)의 면적을 커버할 것이다. ASR 모듈(206)로 피딩되는 신호는 마이크로폰 어레이 빔-형성 알고리즘의 결과일 것이고, 스피커 주위의 약 +/- 30도의 음향 각도에서 발생할 수 있다. 비교적 좁은 음향 각도는, 열악한 스피치 인식 정확도의 주요 원인인 백그라운드 주변 노이즈 및 반향의 일부가 활발히 감소하게 허용할 수 있다. 예컨대, 스피커가 마이크로폰들로부터 너무 멀거나, 스피커가 너무 조용히 말하는 것으로 인해, 스피치 신호가 너무 낮은 시나리오에서, PCD(100)는 예방적으로 (예컨대, 3D 센서에 의해 결정된 스피커의 거리가 이용가능한 경우) 스피커가 더 근접하도록 요청하거나, 더 크게 말하도록 요청하거나 또는 이 둘 모두를 요청한다. 일부 실시예들에서, PCD(100)는 문법들 및 통계적 언어 모델(SLM:statistical language model)들로 많은 어휘 인식을 지원할 수 있는 실시간 임베딩된 ASR 솔루션을 사용하도록 구성될 수 있다. 추가로, 음향 ASR 모델들은 스피치 인식 레이트들을 개선시키기 위해 음향 리그(rig)로부터의 데이터를 사용하여 트레이닝 및/또는 튜닝될 수 있다.
[0095] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 PCD(100)의 상호작용 시스템과 ASR 모듈(206) 간에 삽입될 수 있는 자연 언어 프로세싱 계층을 포함하도록 구성될 수 있다. 자연 언어 프로세싱 계층은 ASR에 의해 생성된 텍스트를 취해서 그 텍스트에 의미를 할당할 수 있는 자연 언어 이해(NLU:natural language understanding) 모듈을 포함할 수 있다. 일부 실시예들에서, NLU 모듈은 포맷들, 이를테면 위에서 언급된 임베딩된 스피치 인식기들에 의해 지원될 수 있는 증강된 BNF(backus-naur form) 표시, JSGF(java speech grammar format) 또는 SRGF(speech recognition grammar format)에 적응되도록 구성될 수 있다. 점점 더 많은 사용자 발화들이 수집됨에 따라, PCD(100)는 전통적인 문법들을, 더 높은 스피치 인식 및 이해 성능을 제공할 수 있는 통계적 문법들로 점진적으로 변환할 수 있고, 자동 데이터-주도(data-driven) 적응을 허용할 수 있다.
[0096] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는, 각각의 상호작용 태스크에 대한 멀티모달 다이얼로그 시스템 사용자 인터페이스 설계 원리들을 사용하여 (PCD(100)의 브레인에 대해 채택된 태스크 네트워크 표현에 기반하여) 구조화된 상호작용 흐름을 설계하도록 구성될 수 있다. 상호작용 흐름은 멀티모달 입력들(예컨대, 보이스 및 터치)을 순차적으로(예컨대, 한 번에 하나의 입력) 또는 동시에(예컨대, 입력들이 이들이 수신된 순서로 독립적으로 프로세싱될 수 있음) 수신되도록 그리고 멀티모달 출력들(예컨대, 보이스 프롬프트들, PCD의 움직임들, 디스플레이 아이콘들 및 텍스트)을 생성하도록 설계될 수 있다. 제한이 아닌 예로서, PCD(100)는 예/아니오 질문을 요청할 수 있으며, PCD(100)의 아이(eye)는 하나 또는 그 초과의 터치 센서들에 의해 선택될 수 있는 예/아니오 아이콘들을 가진 물음표 형상으로 모핑될 수 있다. 일 실시예에서, PCD(100)는 의도(예컨대, Hey! Let's take a picture!)를 표현할 수 있는 자연 언어 상호작용들을 프로세싱하도록 적응될 수 있다. 일 실시예에서, 상호작용들은 "지시 다이얼로그(directed dialog)" 방식으로 후속될 수 있다. 예컨대, 사진을 찍을 의도가 식별된 후에, PCD(100)는 방금 무엇을 들었는지 또는 추가의 정보를 위해 무엇을 요청하는지를 확인하기 위해, 지시된 질문들을 요청할 수 있다(예컨대, Do you want me to take a picture of you?).
[0097] 시각적-공간적 인지(Visual-Spatial Perception)
[0098] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 2D 비전, 3D 비전 또는 감지 모션 또는 컬러를 수신하기 위해, 하나 또는 그 초과의 시각적-공간적 인지 센서들, 이를테면, RGB 카메라(212), 깊이 카메라(214) 및 다른 센서들을 사용하도록 구성될 수 있다. PCD(100)는 주위 환경에 있는 사용자의 감정 인지를 획득하도록 구성될 수 있다. 예컨대, PCD(100)는 각각의 사람의 표현된 감정 상태를 검출할 수 있다. PCD(100)는 사용자들 및 환경의 순간 순간의 물리적 상태를 추적하기 위해 시각적-공간적 인지 서브시스템을 포함할 수 있다. 이러한 서브시스템은 LPS(Local Perceptual Space)(208)로 불리는, 동적으로 업데이트되고 공유된 데이터 구조로서 다른 내부 소프트웨어 모듈에 사용자들의 현재 상태 추정을 제공할 수 있다. LPS는 PCD(100)의 현재 위치 상에 중심을 둔 단일의 3D 좌표계에서 다수의 센서리 입력 스트림들을 결합함으로써 구축될 수 있는 한편, 센서들은 자신의 움직임들을 설명할 수 있는 운동학적 변환들을 사용하여 3D에 등록될 수 있다. 일 실시예에서, LPS(208)는, 각각이 세부의 더 고레벨들로 진행하는 다수의 정보 '레벨들'을 유지하도록 설계될 수 있고, 프로세싱 및 핵심 센서 입력들을 요구할 수 있다. LPS(208) 레벨들은 하기의 것들을 포함할 수 있다:
[0099] 사람 검출: 이 레벨은 인근 주변에 있는 사람들을 검출할 수 있다. 예컨대, PCD(100)는 센서들을 사용하여 인근의 사람들의 수를 계산할 수 있다. 일 실시예에서, 시스템에서 시각적 모션 큐가 PCD(100)를 배향하는 데 사용될 수 있다. 추가로, 시스템이 저전력 '슬립(sleep)' 상태에 있을 수 있지만 룸에 들어오는 누군가에게 대해 또한 응답할 수 있도록, 마이크로컨트롤러에 대한 웨이크 업을 구현하기 위해 PIR(pyroelectric infra red) 감지 및 간단한 마이크로폰 출력이 통합될 수 있다. 이는 사람들의 존재를 검출하기 위해 시각적 모션 큐들 및 컬러 세그멘테이션 모델들과 결합될 수 있다. 검출은 LPS(208)와 통합될 수 있다.
[00100] 사람 추적: PCD(100)는 사람을 3D로 로케이팅하고, 이에 따라서, 비전, 깊이, 모션, 사운드, 컬러, 특징들 및 액티브한 움직임과 같이, 센서들을 사용하여 사람의 궤적(trajectory)을 결정하도록 구성될 수 있다. 예컨대, 시각적 모션 검출 및 3D 사람 검출의 결합은 사용자(특히 사용자의 머리/얼굴)를 로케이팅하는 데 사용될 수 있다. 추가로, LPS(208)는 폐색(occlusion)들 및 동시에 더 많은 사람들을 다루기 위해 시간적 모델들 및 다른 입력들을 포함하도록 적응될 수 있다. 모션 및 3D 큐들 외에도, 시스템은 백그라운드로부터 사용자들의 얼굴 및 손들을 적응적으로 분리하기 위해 이미지들로부터 컬러 세그멘테이션 모델(Naive Bayes) 온라인을 (움직이는 영역들 및 3D로부터) 학습할 수 있으며, 다수의 입력들의 결과들을 LPS(208)의 공간적 및 시간적 필터링과 결합하여 시스템에 대한 견고한 사람 위치 검출을 제공할 수 있다.
[00101] 사람 식별: PCD(100)는 비전 센서들, 청각 센서들 또는 사람 ID를 위한 터치 입력들을 사용하여 알려진 그리고 알려지지 않은 사람을 식별할 수 있다. 일 예에서, 하나 또는 그 초과의 오픈 소스 OpenCV 라이브러리들이 얼굴 식별 모듈에 사용될 수 있다. 게다가, 사람 추적 정보 및 모션 검출이 결합되어 얼굴 검출을 위한 후보들인 이미지 영역들의 제한된 세트를 식별할 수 있다.
[00102] 포즈/제스처 추적: PCD(100)는 시각적 분류(예컨대, 얼굴, 바디 포즈, 스켈레톤(skeleton) 추적 등) 또는 터치 맵핑(touch mapping)을 사용하여 각각의 사람의 포즈 또는 자세(posture)를 식별할 수 있다. 일 실시예에서, 3D 데이터 세트들을 사용하여, 이러한 특징를 PCD(100)의 센서 양식들(modalities)과 결합시킬(incorporate) 수 있다. 일 예에서, 오픈 소스 제스처 인식 툴키트(open source gesture recognition toolkit)가, 시각적 및 3D 시각적 특징 추적에 기반하여 커스텀(custom) 제스처 인식을 가속화하기 위해 채택될 수 있다.
[00103] 관심 집중: PCD(100)는 집중 영역(focus area)을 결정하도록 구성될 수 있으며, 그에 따라, PCD(100)는 결정된 집중 영역을 지시하거나(pointing) 룩 앳할 수 있다. 관심 집중을 위해, 다양한 센서들이 위치들/방향들의 세트들에 결합될 수 있다. 예컨대, 사람의 추정된 위치는 LPS(208)에 관심 집중 위치들의 세트를 생성할 수 있다. 이들은, 주어진 위치에 대한 관심 추진의 신뢰성과 함께, 사람의 추정들을 위한 최대 가능성 위치들일 수 있다. 집중 포인트들 및 방향들의 세트는 신뢰성에 의해 레이팅되고(rated), 다른 모듈들에 의해 사용하기 위한 LPS(208) 데이터의 전체적인 서머리가 생성된다. PCD(100)는 이러한 집중 포인트들 및 방향들을 사용하여 응시 타겟들(gaze targets)을 선택하여, 사용자들을 직접적으로 어드레싱하고 그리고 다수의 사용자들 사이에서 끊김없이(seamlessly) "자신의 응시를 플립핑(flip its gaze)"할 수 있다. 부가적으로, 이는 PCD(100) 로봇으로 하여금 근처의 사용자들의 존재를 확인하도록 더 낮은-신뢰성 위치들을 룩 앳하도록 허용한다.
[00104] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 시스템에 활성 추정을 포함하도록 구성될 수 있거나, 또는 보이스 프로소디(voice prosody)로부터의 감정 상태의 추정뿐만 아니라 음성 입력에 의한 추적 및 식별을 위한 더 많은 센서 양식들을 포함할 수 있다. LPS(208)는, 프로세싱되는 입력 특징들에 대해 그리드-기반 입자 필터 모델들을 사용하여 다수의 입력들로부터의 데이터를 결합할 수 있다. 입자 필터들은, PCD의 파트 상에서의 추가의 센싱 및 액션들에 의해 해결되어야 하는 상당한 불확실성이 있을 때 다수의 가설 케이스들에 대한 표현 뿐만 아니라, 사용자들의 물리적인 상태의 강력한 온-라인 추정에 대한 지원을 제공할 수 있다. 또한, 입자 필터링 기법들은, 당연히, 결합 분포(joint distribution)의 명시적인 폐쇄 형태 모델(closed form model)을 필요로 하지 않으면서, 센서리 입력들과 관련 속성들의 혼합이, 물리적으로 측정가능한 사용자 상태의 단일의 확률론적 모델(probabilistic model) 내로 결합될 수 있도록 허용한다. 또한, 그리드 기반 입자 필터들은, 단일 좌표(coordinate) 시스템에서 3D (스테레오) 및 2D(영상(vision)) 감지의 입력들을 융합시키고(fuse), 그리고 임의의 주어진 시간에 단지 하나의 오브젝트에 의해서만 공간이 점유될 수 있다는 제약을 실시하는 것을 도울 수 있다.
[00105] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 휴리스틱(heuristic) 제안 분포들 및 휴리스틱 트랜지션 모델들을 포함하도록 구성될 수 있으며, 이들은, PCD(100)가 이들을 직접적으로 보고있지 않을 때에도 시간에 걸쳐서 모델 사용자 상태를 캡쳐하는 것을 도울 수 있다. 이는, PCD(100)에 의한 언어적 및 비언어적 큐들(cues)을 사용하는 다자 대화들을 취하는 내츄럴 턴(natural turn)을 가능하게 하며, 입자 필터링 프레임워크 내에서 용이하게 맞춰질(fit) 수 있다. 결과적으로, 이는 원칙에 입각한(principled) 방식으로, 강건한 통계적 추정과 인간-중심 휴리스틱을 결합하는 것을 허용할 수 있다. 또한, LPS(208)는 반복된 상호작용으로부터 사전 확률 분포들(prior probability distributions)을 학습(learn)할 수 있고, 복도들, 문(door)들 및 카운터들 주위로부터 사람이 나올 수 있는, 공간에서의 '핫 스폿들(hot spots)'에 대해 적응시킬 것이며, 사용자들에 대한 가장 적절한 위치들을 자동적으로 타켓팅(target)하기 위해 이러한 공간적 정보를 이용할 수 있다. 저-레벨 이미지 및 신호 프로세싱 코드는 커스터마이징될 수 있으며, 퀄리티 오픈 소스 툴들, 이를 테면 OpenCV, IVT(integrating vision toolkit), 일반적 수치 프로세싱(general numerical processing)을 위한 아이겐(Eigen) 및 프로세서-특정의 최적화 라이브러리들에 기초할 수 있다.
[00106] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는, 비디오 스트림으로부터, 이를 테면, 기쁨, 화남, 경멸, 혐오, 공포, 슬픔, 혼란, 좌절 및 놀람과 같은 다양한 레벨들의 감정들을 인식하도록 구성될 수 있다. 일 실시예에서, PCD(100)는 머리 포지션(head position), 성별, 나이, 및 어떤 사람(someone)이 안경을 쓰고 있는지의 여부, 얼굴의 털을 가지고 있는지의 여부 등을 결정하도록 구성될 수 있다.
[00107] 예시적이며 비제한적인 실시예들에 따르면, 오디오 입력 시스템은 사용자에 집중된다. 일부 실시예들에서, PCD(100)는, 예컨대, 관심 방향들의 추정되는 3D 포커스(focus), 운동학(kinematics), 및 로봇 이동에 따라 오디오 빔-형성 기능(audio beam-forming function)의 방향을 실시간으로 업데이트하도록 구성될 수 있다. 이는 PCD(100)로 하여금, 적절하고 액티브한 오디오 입력이 존재하는 경우 특정의 '섹터들'을 선택적으로 청취할 수 있게 할 수 있다. 이는, 풀(full) 3D 사람 감지 및 관심 집중과의 통합을 통해 ASR 및 NLU 기능들의 신뢰도를 증가시킬 수 있다.
[00108] 공간적 확률 학습
[00109] 예시적이며 비제한적인 실시예들에 따르면, 공간적 확률 학습 기법들은, 사용자들이 자신의 존재를 입력할 때 PCD(100)가 보다 완만하게 관여하는 것을 돕는 데에 사용될 수 있다. 시간이 지남에 따라, PCD(100)는 도착의 시퀀스들 및 사용자들의 공동 존재를 기억하고, 주어진 룸(room)에 대해 이러한 통계들을 누적할 수 있다. 이는, 룸 엔트리(room entry) 상의 사용자들에 대한 관여 룰들을 예측할 수 있는 능력을 PCD(100)에게 제공할 수 있으며, 그에 의해, PCD(100)로 하여금, 주어진 시간 기간 동안 섹터를 터닝(turn)하고, 심지어 룸 점유자들(occupants)을 추측할 수 있게 할 수 있다. 예컨대, 이러한 특징은, 룸에 들어오는 어떤 사람을 PCD(100)가 완전히 식별하기 전에, "Hey, Billy is that you?"와 같은 상호작용들을 지원하도록 제한된 예측들을 사용할 수 있는 능력을 PCD(100)에게 제공할 수 있다. PCD(100)는 가장 가능성있는 공간적 방향으로 터닝하여(turning), 결과적으로, 동시에 그날 그 시간에 어떤 사람을 보게 된다.
[00110] 심리사회적 상호작용
[00111] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 완전히 자율적이고 인공적 캐릭터일 수 있다. PCD(100)는 감정들을 가질 수 있고, (사용자 입력에 기반하여) 그 자신의 목표들을 선택할 수 있고, 사용자들을 행복하고 건강하게 유지하기 위해 그러한 목표들을 달성하도록 폐쇄 루프 실시간 제어 시스템을 실행시킬 수 있다. 심리사회적 상호작용 모듈(PSIM)은, 센서들의 출력들을 프로세싱할 수 있으며 그리고 출력들 및 표현들에 대한 액션들을 선택할 수 있는, 폐쇄 루프 이산 시간 제어 시스템의 최상위 계층(top layer)이다. 다양한 지원 프로세스들이 CPU 상에서 동시에 진행될 수 있고, 센서리 입력들이 결정-수행 모듈(decision-making module)에 비동기식으로 전달될 수 있다. "틱(tick)"은 결정 사이클이며, 이러한 결정 사이클에서는, 누적된 센서 정보, 현재의 단기간(short-term) 메모리/지식 및 PCD(100)의 태스크-구동된 의도적 상태(task-driven, intentional state)가 결합되어, 새로운 액션들 및 표현들을 선택할 수 있다.
[00112] 도 3a는 예시적이며 비제한적인 실시예들에 따른 PSIM(300)의 아키텍쳐를 도시한다. PSIM(300)의 코어는, 다른 엘리먼트들의 동작을 조정하는(orchestrating) 실행부(302)이다. 실행부(302)는 PCD(100)의 브레인의 주기적인 업데이트를 담당한다. PSIM(300)의 각각의 "틱"은, 다음의 방식으로 심리사회적 표현 모듈에 새로운 커맨드들을 발행하는(issuing) 것을 지향하는(move toward) 프로세싱 단계들의 세트를 포함할 수 있다.
[00113] 내부 업데이트:
a. 감정 업데이트
b. 목표 선택.
[00114] 입력 처리:
a. 심리사회적 인지(304)로부터의 비동기적인 입력들은 샘플링되고, 결정 모듈의 블랙 보드(306) 내로 업데이트된다.
b. 입력은, 사람 위치들, 얼굴 ID 샘플들과 같은 정보를 포함할 수 있고, 분석된(parsed) NLU 발언들은 다양한 사용자들을 형성한다.
c. 블랙 보드(306)로서 업데이트될 필요가 있는 새로운 정보만이 캐시처럼 작동할 수 있다.
d. 또한, 현재의 태스크들과 관련된 정보가 캡쳐될 필요가 있다.
[00115] 질의 처리:
a. 임의의 지식 질의 동작들로부터의 결과들은 심리사회적 지식 베이스(308)로부터 블랙 보드(306) 내로 샘플링된다.
b. 이는 현재의 결정들에서 사용하기 위한 질의 동작들의 연기된(deferred) 프로세싱의 결과들을 수집할 수 있다.
[00116] 작업 네트워크(310): 씽크/업데이트(Think/Update)
a. 실행부(302)는 태스크 네트워크(310)의 "씽크" 동작을 실행할 수 있으며, 임의의 필요한 액션들 및 결정들이 각 레벨에서 행해진다. 태스크 네트워크(310) 내의 액티브 노드들의 세트가 이러한 프로세스 동안 업데이트될 수 있다.
b. 태스크 네트워크(310)는, 로봇들 상호작용을 위한 계층 제어기(hierarchical controller)로서의 역할을 하는 상태 머신 기반 로직(state machine based logic)의 플렉시블 형태(flexible form)이다.
[00117] 출력 처리:
a. 특정 블랙 보드(306) 프레임들 내로 로딩된 출력들은 심리사회적 표현 모듈(312)로 전달된다.
[00118] 예시적이며 비제한적인 실시예들에 따르면, 실행부(302)는 또한 태스크 네트워크(310)에서 태스크들의 비동기적인 디스패치의 중요한 서비스를 제공할 수 있다. 네트워크(310)에서의 임의의 태스크는 임의의 계산 집약적인 작업을 수행하도록 비동기적인 디스패치에 요청함으로써 동시적 백그라운드 쓰레드들에 대한 계산을 미루는 것이 가능할 수 있다. 이 특징은 태스크 네트워크(310)가 헤비급 계산 그리고 느리거나 심지어 네트워크 I/O를 차단하는 것과 같은 것들을, 결정 사이클을 "차단"하거나 PCD(100)의 결정 프로세스의 반응성을 변경하지 않고 동작들로서 조직화하게 할 수 있다. 일부 실시예들에서, 실행부(302)는 태스크 네트워크(310)의 새로운 섹션들을 생성하는 계획 동작들을 디스패치할 수 있고, 이들은 계획 능력들을 통해 동작을 제품 지능 성장으로서 확장하도록 실행 트리에 동적으로 부착될 것이다. 태스크 네트워크(310)는 병행 계층적 유한 상태 머신(CHFSM)의 형태로 구상될 수 있다. 그러나 거동 트리 설계들에 의해 사용되는 접근 방식은 인간 설계자들 및 소프트웨어 엔지니어들이 함께 작업하여 콘텐츠 파이프라인 내에서 상호작용식 경험들을 생성하는 데 있어 엄청난 성공을 했다. 태스크 네트워크 설계는 종래의 프로그래밍 언어에서 태스크들의 깨끗하고 효과적인 구현 및 구성을 가능하게 할 수 있다.
[00119] 도 4는 PCD(100)에 의한 그리팅 상호작용의 단순화된 버전을 보여주는 태스크 네트워크를 나타낸다. 태스크 네트워크(310)의 아키텍처는 다양한 표현들, 이동들, 감지 동작들 및 스피치가 엔진 내에서 통합될 수 있게 하며, 그로써 설계자들에게 PCD(100)의 상호작용 동적 관계에 대한 완벽한 제어를 제공한다. 예시된 바와 같이, 네트워크의 아주 적은 부분은 동작 도중 언제라도 액티브하다. 콘텐츠 생성의 일부로서 기술적 그리고 설계 청중 모두에서 통신하기 위해 시각적 태스크 네트워크 표현이 사용될 수 있다. 이 예에서, PCD(100)의 PIR 센서는 영역에 입장하는 사람을 탐지했다. PCD(100)는 PCD(100)가 누군가를 그리팅할 필요가 있을 수 있다는 사실을 인지하고 "사용자 그리트" 시퀀스를 시작한다. 이 "사용자 그리트" 시퀀스는 모션 큐들에 대한 추적을 초기화한 다음, "Hello"라고 말할 수 있는데, 이와 동시에 사용자들이 접근함에 따라 사용자에 대한 추적을 업데이트한다. PCD(100)는 시각 입력의 업데이트를 계속하여 사용자의 얼굴 ID를 캡쳐할 수 있다. 이 시나리오에서, ID는 이것이 Jane이라고 말하여 PCD(100)가 시퀀스의 다음 파트로 넘어가는데, 여기서 PCD(100)는 Jane이 어떻게 하고 있는지에 관해 체크인할 발언을 형성할 수 있으며, 자신의 ASR/NLU 프로세싱 윈도우를 열어 응답들을 할 준비가 된다. Jane이 무언가를 말한다면, 지식 질의가 사용되어 발언을 "양호" 또는 "불량"으로 분류할 수 있고, PCD(100)는 Jane에 대한 적절한 물리적 그리고 스피치 반응을 형성하여 자신의 그리팅을 완료할 수 있다. 네트워크는 지능이 어떻게 작동하는지의 개념을 전달할 수 있다.
[00120] 심리사회적 표현
[00121] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 PCD(100)의 사회적 성질을 보완할 수 있는 엔진을 포함하도록 구성될 수 있다. 예컨대, 엔진은 스피치 출력을 수정하기 위한 태깅 시스템을 포함할 수 있다. 엔진은 PCD(100)의 음성 품질 제어를 가능하게 할 수 있다. 일례로, PCD(100)의 음성을 제어하도록 음성 아티스트에 의해 기록들이 이루어질 수 있다. 엔진은 간단한 가격결정 모델 및 임베딩된 디바이스들에 대한 고품질 압축 오디오 파일들과 같은 특징들을 포함할 수 있다. 또한, PCD(100)는 물리적 합동 회전들; 그래픽들, 형상, 텍스처 및 컬러; LED 조명 또는 무드 컬러링; 타이밍; 그리고 PCD(100)의 임의의 다른 표현 양상에 애니메이션들을 제공하기 위한 애니메이션 엔진을 포함할 수 있다. 이러한 애니메이션들은 오디오 큐들, 스피치, 향(scent) 등과 같은 다른 표현 출력들에 의해 동반될 수 있다. 이후, 애니메이션 엔진은, 해당 애니메이션의 전부 또는 부분들을 서로 다른 스피드들로, 트랜지션들로 그리고 곡선들 사이에서 플레이하면서, 이를 절차적 애니메이션들과 실시간으로 블렌딩할 수 있다. 이 엔진은 서로 다른 PCD 모델들, 기하학적 구조 및 자유도들을 탄력적으로 수용할 수 있다.
[00122] 동적 타겟팅
[00123] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 PCD(100)를 3D 공간 내의 포인트들로 절차적으로 배향하게 할 수 있는 알고리즘을 사용하도록 구성될 수 있다. PCD(100)의 바디가 개별 애니메이션을 플레이하고 있을 수 있는 동안 PCD(100)의 안구들은 단일 포인트 상에 고정된 것으로 나타날 수 있고, 또는 바디가 특정 방향으로 포인트를 따라갈 수 있는 동안 안구가 리드할 수 있다. 일 실시예에서는, PCD의 룩-앳 타겟을 계산하기 위한 폐쇄형 기하학적 해결사가 사용될 수 있다. 다음에, 가속 제약들, 부가적 블렌딩/레이어링, 및 시뮬레이팅되는 VOR(vestibule-ocular reflex)에 대한 지원을 포함할 수 있는 멀티-타겟 블렌드 시스템으로 이러한 타겟 포즈가 제공된다.
[00124] 시뮬레이션
[00125] 예시적이며 비제한적인 실시예들에 따르면, 애니메이션 엔진은 애니메이션들과 절차적 애니메이션들을 가상으로 플레이하고 블렌딩할 수 있는 시뮬레이터를 포함할 수 있다. 시뮬레이터는 얼굴 탐지와 같은 센서리 입력을 시뮬레이팅할 수 있다. 일부 실시예들에서, 로봇의 질량, 모터들의 전력, 및 로봇의 전류 인출 한계들을 고려하여 애니메이션들을 인증하고 테스트하도록, 가상 모델로의 물리적 시뮬레이션이 확립될 수 있다.
[00126] 안구
[00127] 예시적이며 비제한적인 실시예들에 따르면, 개인들의 그래픽 표현, 예컨대 PCD(100)의 안구는 조인트들을 사용하여 이것이 그 자체를 다른 대상들로 모핑 및 형상화하게 하도록 구성될 수 있다. 안구 그래픽 엔진은 커스텀 애니메이션 파일들을 사용하여 홍채를 다른 형상들로 모핑하고, 깜빡거리고, 그 컬러를 변경하고, 텍스처를 변경하여 전체 범위의 표현을 가능하게 할 수 있다.
[00128] 그래픽들
[00129] PCD API는 2D 장면 그래프 스타일 인터페이스에서의 그래픽들, 포토들, 애니메이션들, 비디오들 및 텍스트의 디스플레이를 지원할 수 있다.
[00130] 플랫폼 및 에코시스템
[00131] PCD(100)는 고도로 집적된 고성능 임베딩된 리눅스 시스템을 기반으로 하며, 모바일 디바이스 "컴패니언" 앱들의 에코시스템, 클라우드-기반 백-엔드, 및 구입가능한 콘텐츠 및 기능을 가진 온라인 상점과 연결된 플랫폼이다.
[00132] PCD SDK
[00133] PCD SDK는 제 3자 개발자들이 낮은 학습 곡선으로 성능들을 추가할 수 있는 개방적이고 플렉시블한 플랫폼을 제공하도록 최신 웹 개발 커뮤니티의 오픈 언어 및 JavaScript를 이용할 수 있다. PCD SDK에 의해 생성된 모든 PCD 앱들, 콘텐츠 및 서비스들은 PCD 앱 스토어로부터의 다운로드에 이용 가능하다. TTS, 센서리 인지, NLU, 애니메이션들 등을 포함하는 PCD의 기능들 전부가 PCD API를 통해 이용 가능할 것이다. 이 API는 NodeJS, V8의 최상위에 구성된 JavaScript 플랫폼, Chrome의 오픈 소스 JavaScript 엔진을 사용한다. NodeJS는 빠르고 효율적이며 로봇 프로그래밍으로 잘 옮겨지는 이벤트 구동 모델을 사용한다. NodeJS는 아웃 오브 더 박스 기능 과잉이 따르며 애드-온들(add-on)로서 쉽게 확장 가능하다. PCD의 API는 NodeJS 애드-온일 것이다. 애드-온들은 또한 쉽게 삭제 또는 수정되기 때문에, 개발자들이 PCD와 상호작용할 수 있는 방법들이 제어될 수 있다. 예컨대, 개발자들은 아웃바운드 소켓을 생성할 수 있지만, 또한 아웃바운드 접속들의 수를 제한할 수 있다.
[00134] 클라우드 아키텍처
[00135] 예시적이며 비제한적인 실시예들에 따르면, PCD의 지능을 지원하고, 프레시 콘텐츠를 리트리브하고, 사람들이 그들의 가족과 계속 연결될 수 있게 하기 위해 정교한 클라우드-기반 백 엔드 플랫폼이 사용될 수 있다. 홈 내 PCD 디바이스는 Wi-Fi를 통해 클라우드 내의 PCD 서버들에 접속할 수 있다. PCD 클라우드 서버들에 대한 액세스는 상당히 안전하고 암호화된 웹 통신 프로토콜들에 의존한다. PCD 사용자들, 부양자(caregiver)들 및 가족 멤버들을 계속해서 지원할 수 있는 다양한 애플리케이션들이 iOS, Android 및 HTML5를 위해 개발될 수 있다. 이러한 모바일 및 웹 앱들로, PCD(100)는 다수의 디바이스들 상에서 항상 당신과 함께 있을 수 있어, 도움을 제공하고 당신의 선호들, 요구들 및 관심들을 어떻게 더 잘 지원할지를 내내 학습할 수 있다. 도 2를 참조하면, PCD(100)는 PCD(100)를 그 가족에게 고유하게 만들 수 있는 데이터 전부를 클라우드에 미러링하도록 구성될 수 있어, 사용자들이 미래의 PCD 로봇 릴리스들로 쉽게 업그레이드하고 이들이 설정한 페르소나 및 관계들을 보존할 수 있다. 예컨대, PCD의 서버들은 클라우드 저장소(214)에 데이터를 수집하고 PCD 로봇 및 다른 접속된 디바이스들로부터의 메트릭들을 계산하여 머신 학습 알고리즘들이 사용자 모델들(216)을 개선하고 PCD 페르소나 모델(218)을 적응시킬 수 있게 하도록 구성될 수 있다. 또한, 클라우드 저장소(214)에 수집된 데이터는 제품 공급을 계속해서 개선하기 위해, 어떤 PCD 특징들이 사용자들에게 가장 잘 반향을 불러일으키고 있는지를 분석하고, PCD 에코시스템에 걸친 사용 패턴을 이해하는데 사용될 수 있다.
[00136] 예시적이며 비제한적인 실시예들에 따르면, 클라우드-기반 백 엔드 플랫폼은 다수의 PCS들 사이에 공유되도록 의도된 데이터의 저장 및 배포를 위해 사용될 데이터베이스 시스템을 포함할 수 있다. 클라우드-기반 백 엔드 플랫폼은 또한 사람들의 식별(예컨대, 음성 ID 애플리케이션) 및 사회적 네트워크들과의 상호 연동을 통한 개인 멀티-모달 데이터의 수집에서 PCD들을 지원하도록 서비스 애플리케이션들을 호스팅할 수 있다.
[00137] 클라우드-기반 서버
[00138] 예시적이며 비제한적인 실시예들에 따르면, 하나 또는 그 초과의 PCD(100)는 압축된 JSON을 사용하는 RESTful-기반 웹 서비스들을 사용하여, 클라우드-기반 서버 백-엔드(cloud-based server back-end)와 통신하도록 구성될 수 있다.
[00139] 보안
[00140] 예시적이며 비제한적인 실시예들에 따르면, 동일성(identity)을 확인하기(validate) 위해, OAUTH 인증 모델과 함께 제로-구성 네트워크 프로토콜이 사용될 수 있다. 또한, 다른 것 중에서도, Apache™에 의해 제시되는 Shiro™ 보안 프레임워크와 같은 역할들 및 허가들에 입각한 부가적인 보안 프로토콜들을 제공하기 위해 보안 프레임워크가 적용될 수 있다. 모든 민감한 데이터는 SSL을 통하여 전송될 것이다. 서버 측 상에서, 콘텐츠 토큰(content token)을 획득하기 위해 OAUTH를 사용하는 엄격한 방화벽 구성을 사용하여 데이터가 보안될 수 있다. 또한, 클라우드-기반 서버들에 대한 모든 콜들(calls)은 유효한 콘텐츠 토큰을 갖도록 요구될 수 있다.
[00141] 콘텐츠 전달
[00142] 예시적이며 비제한적인 실시예들에 따르면, 주어진 PCD 디바이스에 대한 최신의 콘텐츠를 얻기 위해, 웹 서비스 콜을 포함하도록 서버 API가 사용된다. 이러한 웹 서비스는, 모든 펜딩 메시지들(pending messages)의 리스트, 경보들, 업데이트된 리스트들(예를 들면, 쇼핑, 리마인더들, 체크인들 등) 및 간결하고 컴팩트한 작업 매니페스트(job manifest)를 리턴하는(return) 고레벨 콜을 제공할 수 있다. PCD 로봇은 그 후, 그러한 매니페스트에 표현된 펜딩 데이터를 그 현재의 안건(current agenda)에 기반하여 편의적으로(opportunistically) 검색할 수 있다. 일부 실시예들에서, PCD의 실체(truth)는 클라우드 내에 있으며, 이는 리스트들, 리마인더들, 체크인들, 및 다른 애플리케이션 상태의 마스터 레코드(master record)가 PCD 서버들 상에 저장되는 것을 의미한다. 로봇이 가장 최근의 콘텐츠에 접근할 수 있는 것을 보장하기 위해, API는 종종 그리고 수집된 콘텐츠 편의적으로(그러나 시기적절한 방식으로) 콜링될 수 있다.
[00143] 워크플로우 관리
[00144] 예시적이며 비제한적인 실시예들에 따르면, 클라우드에 오프로딩되고(offloaded) 실시간으로 결과들을 리턴하지 않을 기능성(functionality)이 사용될 수 있다. 이는 전술된 안건-기반 메시지 큐잉(agenda-based message queuing)의 개념과 밀접하게 연결될 수 있다. 또한, 이는 서버 아키텍쳐(server architecture)를 수반할(involve) 수 있는데, 서버 아키텍쳐는 RESTful 웹 서비스 API에 대해 이루어질 서비스들에 대한 요구들 및 애플리케이션 서버들에 대한 디스패치 작업들(dispatch jobs)을 허용할 수 있다. SWF(Amazon Simple Workflow) 또는 유사한 워크플로우가 사용되어, 그러한 시스템을 전통적인 메시지 큐잉 시스템들과 함께 실행시킬 수 있다.
[00145] 업데이트들
[00146] 예시적이며 비제한적인 실시예들에 따르면, 업데이트를 필요로 할 수 있는 콘텐츠는, 운영 시스템 커널, 펌웨어, 하드웨어 드라이버들, V8 엔진 또는 PCD(100)의 컴패니언 앱들(companion apps)을 포함할 수 있다. 이러한 콘텐츠에 대한 업데이트들은, 이용가능한 업데이트들의 유형들에 대한 정보를 리턴하고 특정 아이템들의 요구를 허용하는 웹 서비스를 통하여 이용가능할 수 있다. 사용자 활동을 중단시키는 것을 회피하기 위해, PCD가 종종 편의적일 필요가 있을 것이기 때문에, 로봇은, 업데이트들을 적용할 수 있을 때, 업데이트들을 요구할 수 있다. 업데이트들에 대해 정기적으로 폴링하기(poll) 위해 PCD 로봇에 의존하기보다, 특정 유형들의 업데이트들의 이용가능성이 로봇에 푸시될(pushed) 수 있다.
[00147] 로깅/메트릭스
[00148] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 서버들에 로그 정보를 전송할 수 있다. 서버들은 이러한 데이터를 적절한 컨테이너(SQL 또는 NoSQL)에 저장할 수 있다. Hadoop(Amazon MapReduce) 및 Splunk와 같은 툴들이 데이터를 분석하기 위해 사용될 수 있다. 메트릭스는 또한, 질의가능할(queryable) 수 있어서, 사람이 PCD(100)와 상호작용하고 PCD(100)를 사용하는 방법에 대한 보고서(report)가 실행될(run on) 수 있다. 이러한 분석들의 결과들은, PCD가 학습하고, 상호작용하고, 행동하는 방법, 및 또한 어떤 특징들이 미래 업데이트들에서 요구될 수 있을 지에 대한 파라미터들을 조정하기 위해 사용될 수 있다.
[00149] 기계 학습
[00150] 예시적이며 비제한적인 실시예들에 따르면, PCD 로봇 및 클라우드-기반 시스템들이 계속적으로 개선될 수 있게 하기 위해, 다양한 트레이닝 시스템들 및 피드백 루프가 개발될 수 있다. PCD 로봇들은, 기계 학습 알고리즘들을 트레이닝하기 위해 사용될 수 있는 정보를 수집할 수 있다. 약간의 기계 학습량은 로봇 자체에서 일어날 수 있지만, 클라우드에서는 분류기들(classifiers)을 트레이닝하기 위해 많은 소스들로부터 데이터가 어그리게이팅될(aggregated) 수 있다. 클라우드-기반 서버들은 지상 검증 자료(ground truth)가 결정될 수 있게 할 수 있는데, 이는 듣거나, 보거나, 정확히 이해할 가능성이 매우 낮은 콘텐츠를 명확히 하기 위해, 인간 코더들(human coders)에게 약간의 양의 데이터를 전송함으로써 이루어진다. 새로운 분류기들이 생성된다면, 이들은 전술된 업데이트 시스템을 통하여 전송될(send out) 수 있다. 분류기들/예측기들(predictors)의 기계 학습 및 트레이닝은, 감독된, 자율의(unsupervised), 또는 강화-학습 방법들 및 지상 검증 자료의 보다 복잡한 인간 코딩(human coding) 둘 모두에 확대될(span) 수 있다. 트레이닝 신호들은, PCD 로봇이 음성, 터치 프롬프트(touch prompt), 미소 띤 얼굴, 제스처 등과 같이, 사용자에 의해 발생된 분명한 피드백 또는 태스크를 달성했다는 인식(knowledge)을 포함할 수 있다. 얼굴 및 오디오 데이터를 포함할 수 있는, 카메라들로부터의 이미지들을 축적하는 것(accumulating)은, 클라우드에서 그러한 각각의 시스템들의 품질을 개선하는데 사용될 수 있다.
[00151] 텔레프레전스 지원(Telepresence Support)
[00152] 예시적이며 비제한적인 실시예들에 따르면, 비디오 챗 옵션(video chat option)을 포함하는 텔레프레전스 특징이 사용될 수 있다. 또한, 사용자들의 안전을 보장하기 위해 비디오 챗에 보안 모델이 가능해진다(enabled). 또한, 비디오 챗 성능들의 비인가 사용으로부터 최종 사용자들을 보호하기 위한 역할들, 허가들 및 보안 기반구조(security infrastructure)를 활용하는, 웹 앱(web app) 및 또한 모바일 디바이스 앱들이 사용될 수 있다.
[00153] 소프트웨어 기반구조
[00154] PCD의 소프트웨어 시스템의 고레벨 성능들은, 우리의 고레벨 소프트웨어 시스템들에 청결하고 강력하며 신뢰적인 개발 환경을 제공하는, 키 라이브러리들, 보드 지원, 드라이버들 및 다른 종속물들에 대해 커스터마이징된 강력하고 유능한 임베딩된 리눅스 플랫폼(Embedded Linux platform)을 기반으로 하고 있다(built on). 최고-레벨 기능성 모듈들은 우리의 임베딩된 리눅스 시스템의 프로세스들로서 실현된다. PCD의 모듈 기반구조는 특히, 언어 라이브러리들(language libraries)에 기초하는 C++ 및 C의 힘든 작업들을 컴퓨터를 사용하여(computationally) 지원하면서, JavaScript의 콘텐츠, 상호작용들 및 거동의 플렉시블한 스크립팅(scripting)을 지원하는 것을 목표로 한다. 이는, C++ 모듈들 및 라이브러리들로서 패키징된, 지원 및 키 확장들을 갖는 성공적인 Node.js 플랫폼 및 V8 JavaScript 엔진을 기반으로 한다.
[00155] 하드웨어 시스템 아키텍쳐
[00156] 도 5a는, 센서리, 모터, 연결성(connectivity), 전력 및 PCD(100)의 하나 또는 그 초과의 성능들의 컴퓨테이셔널 요구들(computational needs)을 지원하도록 엔지니어링될 수 있는 PCD(100)의 하드웨어 아키텍쳐를 도시한다. 일부 실시예들에서, PCD(100)의 하나 또는 그 초과의 하드웨어 엘리먼트들은, 고급 태블릿들 및 다른 모바일 디바이스들에서 사용될 수 있는 코어 하드웨어의 적응들 및 특수화들이다. 그러나, 형상, 모션 및 센서들의 물리적 실현 및 배열은 PCD(100)에 대해 고유하다. PCD(100)의 전체 물리적 구조는 또한, 본원에서 3-링 제타 타입(Zetatype)으로 지칭될 수 있다. PCD(100)의 그러한 타입의 물리적 구조는 PCD(100)에 청결하고, 제어가능하며 매력적인 작용선(line of action)을 제공할 수 있다. 실시예에서, 이러한 구조는 어텐션(attention) 및 감정을 전달하기 위해 캐릭터 애니메이터들(character animators)에 의해 사용될 수 있는 원리들로부터 ㅇ유도될 수 있다. PCD(100)의 물리적 구조는, 3개의 링 볼륨들, 모션의 범위들 및 필요한 센서 배치에 기반하여, 기계적이며 전기적인 아키텍쳐의 경계들을 정의할 수 있다.
[00157] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는, 이동을 위한 3-축들, 하나 또는 그 초과의 스테레오 비전 카메라(504), 마이크로폰 어레이(506), 터치 감지 성능부들(508) 및 LCD 디스플레이와 같은 디스플레이(510)를 포함하도록 구성될 수 있다. 이동을 위한 3개의 축들은, 자연스러운 방식으로 사용자들을 수행하고(attend) 센서들을 지향시킬 수 있는 능력 및 감정적인 표현을 지원할 수 있다. 스테레오 비전 카메라(504)는, 비디오 입력, 카메라 스냅들(camera snap), 등을 제공하기 위해, 사용자들의 추적 및 3D 위치를 지원하도록 구성될 수 있다. 마이크로폰 어레이(506)는 ASR 성능을 최대화하기 위해 빔-형성 오디오 입력을 지원할 수 있다. 터치 감지 성능부들(508)은, 대안적인 상호작용이 PCD(100)를 친구와 같이, 또는 사용자 인터페이스의 형태로서 만들 수 있게 할 수 있다. LCD 디스플레이(510)는 감정적 표현뿐만 아니라 동적 정보 디스플레이를 지원할 수 있다. 주위 LED 조명이 또한 포함될 수 있다.
[00158] 예시적이며 비제한적인 실시예들에 따르면, 하드웨어 아키텍쳐(500)는, 임베딩된 제어 및 로봇 공간(rototics space)으로부터의 COTS 프로세서에 기초하며 모바일 디바이스들 및 태블릿 공간으로부터의 고급 애플리케이션 프로세서와 결합될 수 있는 전기적 아키텍쳐를 포함하도록 구성될 수 있다. 임베딩된 제어기는 모션 제어 및 저-레벨 센서 집합에 책임이 있지만, 소프트웨어 스택의 대부분(majority)은 애플리케이션 프로세서에서 실행된다(run on). 물건(product) 내의 전기 기판들(electrical boards)은 V1 디자인에 대한 기능에 의해 분리되며, 이는 로봇의 물리적 구조와 매칭하도록 모듈방식(modularity)을 제공하면서, 하나의 보드 상의 디자인 변화들에 대한 필요성을 보다 큰 디자인 업데이트들로의 전파로부터 경감시킬(mitigating) 수 있다. 일부 실시예들에서, 전기적 아키텍쳐는 카메라 인터페이스 보드를 포함할 수 있고, 카메라 인터페이스 보드는 2개의 모바일-산업 기반 저-해상도 MIPI 카메라 모듈들을 통합시킬 수 있으며, 저-해상도 MIPI 카메라 모듈들은, 스테레오 시스템을 위해 캡쳐 이미지들이 시간에 맞춰 등록될 수 있도록, 하드웨어 동기화를 지원할 수 있다. 스테레오 카메라들은 연속적인 모드로 비디오를 스트리밍하도록 디자인된다. 또한, 카메라 인터페이스 보드는, 고 해상도 포토들을 촬영하기 위한 단일 RGB 애플리케이션 카메라 및 화상 회의 비디오 품질을 지원할 수 있다. RGB 애플리케이션 카메라는, 특정 포토 촬영, 이미지 스냅들 및 비디오 애플리케이션들을 위해 사용하도록 디자인될 수 있다.
[00159] 예시적이며 비제한적인 실시예들에 따르면, 하드웨어 아키텍쳐는, 마이크로폰 어레이(506), 오디오 프로세싱 및 코덱 지원부(514)를 운반할 수 있는 마이크로폰 인터페이스 보드를 포함할 수 있고, 오디오의 디지털 스트림을 메인 애플리케이션 프로세서(516)에 전송한다. 우리의 코덱(514)으로부터 출력된 오디오는, 스피커들(518)이 사운드 분리를 위해 바디의 별개의 섹션에 있기 때문에 밖으로 라우팅될 수 있다.
[00160] 예시적이며 비제한적인 실시예들에 따르면, 하드웨어 아키텍쳐는, 바디의 중간 섹션에 집적될 수 있는 바디 제어 보드(520)를 포함할 수 있고, 모터 제어, 저레벨 바디 감지, 전력 관리 및 PCD(100)에 대한 시스템 웨이크업 기능을 제공한다. 제한이 아닌 예로서, 바디 제어 보드(520)는 산업 표준 Cortex-M4F 마이크로제어기 플랫폼 주위에 구축될 수 있다. 또한, 아키텍쳐(500)는, 코어 SoC(System On Chip) 프로세서를 제공하고, 로봇 시스템의 나머지를 함께 연결할 수 있는 애플리케이션 프로세서 보드를 포함할 수 있다. 실시예에서, 보드는, SoM(System On Module)을 사용하여, 초기 프로토타입들의 개발 시간 및 비용을 최소화할 수 있다. 일부 실시예들에서, 애플리케이션 프로세서 보드는 비용 감소 및 단순화된 생산을 위해 SoC 프로세서를 포함할 수 있다. 애플리케이션 프로세서 보드의 주요 인터페이스들은, MIPI 카메라들, 디스플레이, 무선 통신들 및 고성능 오디오를 지원하기 위한 인터페이스를 포함할 수 있다.
[00161] 예시적이며 비제한적인 실시예들에 따르면, 하드웨어 아키텍쳐(500)는, PCD(100)의 전력 요건들을 처리할 수 있는 전력 관리 보드(522)를 포함하도록 구성될 수 있다. 전력 관리 보드(522)는 전력 레귤레이터들, 배터리 충전기 및 배터리를 포함할 수 있다. 전력 레귤레이터들은, 하드웨어 아키텍쳐(500)의 하나 또는 그 초과의 엘리먼트들 또는 보드들이 레귤레이팅된 전력 공급을 수신할 수 있도록 입력 전력을 레귤레이팅하도록 구성될 수 있다. 추가로, 배터리 충전기는, PCD(100)가 긴 시간 동안 동작하게 하기 위해 배터리를 충전하도록 구성될 수 있다. 실시예에서, PCD(100)는 충전 도크/베이스/크래들을 가질 수 있고, 이들은 벽 플러그와 블라인드 메이트 충전 커넥터를 통합할 것이어서, PCD(100)는 베이스 상에 배치되는 경우 내부 배터리를 충전할 수 있을 것이다.
[00162] 기계적 아키텍쳐
[00163] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)의 다양한 특징들이 단일 디바이스의 형태로 사용자에게 제공된다. 도 6a는, 다양한 특징들을 친숙한 방식으로 사용자들에게 제공하기 위해, 요구되는 소프트웨어 및 하드웨어 아키텍쳐를 포함하도록 구성될 수 있는 PCD(100)의 예시적인 설계를 예시한다. PCD(100)의 기계적 아키텍쳐는, 재료들의 비용 효과적인 청구를 타겟팅하면서, 조용한 품위 및 표정을 위해 최적화되었다. 다수의 성숙한 마켓들로부터 최상의 엘리먼트들을 신중하게 선택하고, 이들을 PCD(100)에 대한 고유의 결합으로 함께 합침으로써, 고유의 디바이스가 생성된다. 도 6a에 예시된 바와 같이, 기계적 아키텍쳐는, 마이크로폰 보드, 메인 보드, 배터리 보드, 바디 제어 보드, 카메라 보드와 같은 다양한 보드들을 PCD(100) 내의 예시적인 포지션에 배치한 것을 도시한다. 또한, 냉각 효과를 제공하는 기류를 적절히 허용하기 위해, PCD(100)의 설계에 하나 또는 그 초과의 통풍구들이 제공된다.
[00164] 아래에서 설명되는 다양한 예시적이며 비제한적인 실시예들에 따르면, PCD는 데이터를 감지하기 위해 프로세서와 통신하는 복수의 센서들을 활용한다. 아래에서 설명되는 바와 같이, 이러한 센서들은 모든 방식의 센서리 입력을 포착하도록 동작하고, 프로세서는 태스크들을 수행하기 위한 일련의 프로그래밍가능한 알고리즘들을 통해 센서리 입력에 대해 동작한다. 이러한 태스크들의 달성 시에, PCD(100)는, PCD(100)의 일부를 형성하는 로컬 메모리에 저장된 데이터를 사용하고, 유선 또는 무선 통신 모드들을 통하는 것과 같이 클라우드에서 또는 서버에서와 같이 원격으로 저장된 데이터에 액세스한다. 유사하게, PCD(100)는 다양한 출력 디바이스들, 예컨대, 터치 스크린들, 스피커들, 촉각 엘리먼트들 등을 사용하여, 사회적 상호작용에 결합한 동안 사용자에게 정보를 출력한다. 컴패니언 디바이스에 관한 데이터, 센서들, 프로세서들 및 통신 모드들의 동작 및 상호운용성을 상세화한 추가적인 비제한적 개시는, 공개된 미국 출원 2009/0055019 A1에서 발견될 수 있고, 상기 미국 출원의 내용들은 인용에 의해 본원에 통합된다.
[00165] 본 명세서에서 설명되는 실시예들은, 특히 PCD(100)와 사용자 사이에서 사회적 상호작용을 달성하기 위해, 이러한 컴패니언 디바이스가 적용될 수 있는 특징들 및 기능에 대한 신규하고 자명하지 않은 실시예들을 제시한다. 당업자에게 공지된 바와 같이, 물리적 환경으로부터 소셜 큐를 평가 및 검출하기 위해 다양한 형태들의 센서 데이터 및 기술들이 사용될 수 있음이 이해된다. 이러한 기술들은, 음성 및 스피치 인식, 아이 움직임 추적, 인간 자세의 시각적 검출, 포지션, 모션 등을 포함하지만 이에 제한되는 것은 아니다. 이러한 기술들을 참조로 설명되지만, 본 개시는, 본 명세서에서 설명되는 특징들 및 실시예들을 달성하기 위해 PCD(100)에 의한 데이터의 포착, 프로세싱 및 출력을 위한 임의의 그리고 모든 방법들을 광범위하게 포함하게 된다.
[00166] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 순수하게 물리적 실시예에서, 예컨대, 모바일 폰, PDA, 워치 등과 같은 모바일 연산 디바이스 상에서 실행되는 경우 가상의 존재로 표현될 수 있거나, 또는 물리적/가상 로봇의 혼합 모드로 표현될 수 있다. 일부 실시예들에서, 혼합 모드, 물리적 또는 가상 PCD를 구동하기 위한 소스 정보는, 모두 동일한 실시예인 것처럼 유도될 수 있다. 예컨대, GUI 인터페이스를 통해 입력되고 데이터베이스에 저장될 수 있는 소스 정보는, 기계적 PCD 뿐만 아니라 가상 PCD의 일부를 형성하는 디스플레이의 애니메이션 컴포넌트를 구동할 수 있다. 일부 실시예들에서, 소스 정보는, AI 시스템들로부터의 출력들, 실시간 감지로부터의 출력들; 소스 애니메이션 소프트웨어 모델들, 운동학적 정보 모델들 등을 포함하는 다양한 소스들을 포함한다. 일부 실시예들에서, 데이터는, (소스에서) 순수하게 가상의 캐릭터의 거동에 관한 단일 소스로부터 푸시될 수 있고, 그 다음, 물리적 모드 뿐만 아니라 물리적 PCD에 대한 가상 모드들을 출력할 수 있다. 이러한 방식으로, PCD의 실시예들은, 순수하게 물리적인 것으로부터 전적으로 가상인 모드, 그리고 둘의 일부를 포함하는 혼합 모드까지의 범위에 걸쳐있을 수 있다. PCD(100)는, 클라우드에 저장될 수 있고, 사용자가 물리적 디바이스로 행한 것을 기억되게 허용할 수 있는 코어 페르소나를 포함하고 코어 페르소나로서 표현되어, 가상 페르소나가, 물리적 디바이스로 발생하고 있는 것을 기억하고 대응할 수 있고, 그 반대도 마찬가지이다. 예컨대, 적절한 경우 하나의 인스턴스로부터 다른 인스턴스로 전이하는 것, 듀얼 경험을 갖는 것 등을 위해, 클라우드를 통해 물리적 및 가상 인스턴스들을 관리할 수 있다.
[00167] 예시된 바와 같이, PCD(100)는, 일반적으로 원형 링으로 분리된 3개의 분리된 바디 세그먼트들을 포함하는 3부 설계를 통합한다. 내부 모터들(미도시)과 같은 링을 중심으로 각각의 바디 세그먼트를 회전시킴으로써, PCD(100)는, 다양한 폼 팩터들을 달성하도록 자신의 형상을 변경할 뿐만 아니라 센서들(102, 104, 106, 108, 112)로 사용자들 및 다른 오브젝트들을 트래킹하도록 구성된다. 다양한 실시예들에서, PCD(100)의 속성들은, 터치 스크린(104)의 형상, 표현적 바디 이동, 특정한 표현적 사운드들 및 기억법, 말할 때의 특정한 품질의 프로소디 및 음성 품질, 디지털 인터페이스의 세부사항들, PCD(100)의 "얼굴들", 풀 스펙트럼 LED 조명 엘리먼트 등을 포함하여(그러나 이에 제한되는 것은 아님) 정적으로 또는 동적으로 구성될 수 있다.
[00168] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는, 많은 입력들 및 출력들이 동시에 액티브일 수 있는 멀티-모드 사용자 인터페이스를 사용하도록 구성될 수 있다. 이러한 타입의 동시적 인터페이스는 견고한 사용자 경험을 제공할 수 있다. 일부 실시예들에서, 사용자 인터페이스 입력들 또는 출력들 중 하나 이상은, PCD(100)의 비교적 덜 최적인 동작을 초래하는 환경에 따라 손상될 수 있다. 다양한 모드들을 동시에 동작시키는 것은, 사용자 경험 및 디바이스와의 상호작용의 페일-세이프(fail-safe)를 보조하여 통신의 무손실을 보장할 수 있다.
[00169] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 PCD(100)의 사용자에게 풍부한 경험을 제공하기 위해 하나 또는 그 초과의 입력들을 프로세싱하도록 구성될 수 있다. PCD(100)는 사용자의 스피치를 인식하도록 구성될 수 있다. 예컨대, PCD(100)는 "긍정 오류" 관여들을 감소시키기 위해 스피치로부터 "웨이크 업 워드" 및/또는 다른 메커니즘을 식별한다. 일부 실시예들에서, PCD(100)는 N x M 피트의 니어-필드 범위에서 스피치를 인식하도록 구성될 수 있고, 여기서 N 및 M은 스피치의 사운드 품질 및 PCD의 검출 감도에 의해 결정될 수 있다. 다른 실시예들에서, PCD(100)는, 적어도 12 피트 x 15 피트 룸 크기를 커버하는 N 피트 초과의 파-필드 범위로 스피치를 인식하도록 구성될 수 있다. 일부 실시예들에서, PCD(100)는 발화된 언어와는 다른 사운드들을 식별하도록 구성될 수 있다. PCD는, PCD가 인식할 수 있고 그에 대해 동작할 수 있는 사운드들로 구성된 사운드 서명 데이터베이스를 이용할 수 있다. PCD는 이러한 데이터베이스의 콘텐츠를 직접 또는 클라우드 기반 통신들을 통해 다른 PCD 디바이스들과 공유할 수 있다. 제한이 아닌 예로서, 발화된 언어와는 다른 사운드들은, 유리가 깨지는 것, 도어 벨, 전화 벨, 사람이 넘어지는 것, 사이렌들, 총소리들, 가청 알람들 등에 대응하는 사운드들을 포함할 수 있다. 추가로, PCD(100)는, PCD(100)의 기존의 분류기들에 매칭하지 않는 사운드의 소스를 식별시키도록 사용자에게 요청함으로써, 새로운 사운드들을 "학습"하도록 구성될 수 있다. 디바이스는 다수의 언어들에 응답할 수 있다. 일부 실시예들에서, PCD(100)는 웨이크-업 단어를 갖는 니어-필드 범위의 외부에 있는 사용자에 대해 응답하도록 구성될 수 있다. 사용자는 디바이스의 시야로 들어오도록 요구받을 수 있다.
[00170] 일부 실시예들에서, PCD(100)는, 스피치 입력이 임의의 이유로 절충될 때 사용될 수 있는 자신의 표면 상의 터치 감지 영역들을 가질 수 있다. 이러한 터치 입력들을 사용하여, PCD(100)는 예/아니오 질문들을 질문하거나 스크린 상에 옵션들을 디스플레이할 수 있고, 스크린 상의 사용자의 터치를 사용자로부터의 입력들로서 고려할 수 있다. 일부 실시예들에서, PCD(100)는, 특히 2 명 이상의 사용자들이 시야 내에 있을 때, 다른 것으로부터 하나의 사용자를 구별하기 위해 비전 및 이동을 사용할 수 있다. 추가로, PCD(100)는 니어-필드 범위 내의 총 스켈레톤의 자세 및 이동뿐만 아니라 일부 공통의 제스처들을 해석할 수 있다. 이러한 제스처들은 디바이스 제어보다 사회적 상호작용을 향해 더 많이 배향될 수 있다. 일부 실시예들에서, PCD(100)는 포토들 및 영화들을 촬영하기 위한 카메라들을 포함하도록 구성될 수 있다. 실시예에서, 카메라는, 사용자가 카메라의 미리 결정된 범위 내에 있을 때 포토들 및 영화들을 촬영하도록 구성될 수 있다. 게다가, PCD(100)는 비디오 회의(팝-인스)를 지원하도록 구성될 수 있다. 추가로, PCD(100)는, 카메라가 포토 모드에 있을 때, "레드 아이"를 제거하기 위한 모드를 포함하도록 구성될 수 있다.
[00171] 일부 실시예들에서, PCD(100)는, 자신이 픽업, 운반, 강하하는지 등을 결정하도록 구성될 수 있다. 게다가, PCD(100)는 자력계를 구현하도록 구성될 수 있다. 일부 실시예들에서, PCD(100)는 주변 조명 레벨들을 결정할 수 있다. 게다가, PCD(100)는 주변 광 레벨에 기반하여 디스플레이 및 액센트 조명 밝기 레벨들을 적절한 레벨로 조절할 수 있다. 일부 실시예들에서, PCD(100)는 디바이스의 위치를 근사화하기 위해 GPS를 사용하는 능력을 가질 수 있다. PCD(100)는 거주지 내의 상대적인 위치를 결정할 수 있다. 일부 실시예들에서, PCD(100)는 총 또는 파 필드 모션 검출을 보조하기 위해 하나 또는 그 초과의 수동 IR 모션 검출 센서들(PIR)을 포함하도록 구성될 수 있다. 일부 실시예들에서, PCD(100)는 환경의 주변 온도를 표시하기 위한 적어도 하나의 서미스터를 포함할 수 있다.
[00172] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 "하나의 음성" 영어를 사용자에게 이해 가능한 자연스러운 음성으로 말하도록 구성될 수 있다. PCD(100)는 애니메이팅된 디바이스 감정 상태를 모방하기 위해(PCD(100)가 슬플 때 슬픈 소리를 냄 등) 구두의 음성의 톤을 변경하도록 구성될 수 있다. 일부 실시예들에서, PCD(100)는 스피치, 높은 충실도 음악 및 사운드 효과들을 재생할 수 있는 적어도 하나의 스피커를 포함하도록 구성될 수 있다. 실시예에서, PCD(100)는 다수의 스피커들, 즉, 스피치를 위한 하나, 음악을 위한 하나 및/또는 특수 가청 신호들 및 알람들을 위한 부가적인 스피커를 가질 수 있다. 스피치에 전용된 스피커는 사용자를 향해 포지셔닝되고, 음성 주파수 응답에 대해 튜닝될 수 있다. 음악에 전용된 스피커는 풀 주파수 응답에 대해 튜닝될 수 있다. PCD(100)는 실제 컬러, 풀 프레임 레이트 디스플레이를 갖도록 구성될 수 있다. 일부 실시예들에서, 디스플레이된 능동 이미지는 지름이 적어도 4-1/2"인 원형(마스킹됨)일 수 있다. 일부 실시예들에서, PCD(100)는 최소 이동의 3 자유도를 가질 수 있어서, 환경의 360도 센서 커버리지 및 인간형 자세들 및 이동들의 범위(액션의 표현 라인) 둘 모두를 허용한다. PCD(100)는 물리적 애니메이션을 사운드, 스피치, 액센트 조명 및 디스플레이 그래픽들에 동기화하도록 구성될 수 있다. 이러한 동기화는 인간의 인지에 대해 끊김이 없도록 충분히 밀접할 수 있다. 일부 실시예들에서, PCD(100)는, 주변 통지 및 사회적 상호작용 둘 모두에 대한 액센트 조명을 사용할 수 있는 특정된 영역들을 가질 수 있다. 디바이스 형태에 의존하여, 액센트 조명은, PCD(100)의 카메라가 포토 또는 영화 캡쳐 모드에 있을 때, 포토 내의 대상을 조명하는 것을 도울 수 있다. 일부 실시예들에서, PCD(100)는, 카메라가 포토 캡쳐 모드에 있을 때, 포토 내의 대상을 자동적으로 조명할 카메라 플래시를 가질 수 있다. 추가로, 액센트 조명이 대상의 조명을 달성하는 것이 더 양호할 수 있다. 게다가, PCD(100)는, 카메라가 포토 캡쳐 모드에 있을 때, "레드 아이"를 제거하기 위한 모드를 가질 수 있다.
[00173] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 사용자를 식별 및 추적할 수 있다. 실시예에서, PCD(100)는, 사람이 니어-필드 범위에 진입할 때를 통지할 수 있다. 예를 들면, 니어-필드 범위는 10 피트일 수 있다. 다른 실시예에서, PCD(100)는 사람이 파-필드 범위에 진입할 때를 통지할 수 있다. 예를 들면, 파-필드 범위는 10 피트일 수 있다. 일부 실시예들에서, PCD(100)는 비디오(안면 인식), 깊이 카메라(스켈레톤 특징 매칭) 및 사운드(음성 ID)의 조합을 사용하여 최대 5 명의 상이한 사용자들을 식별할 수 있다. 실시예에서, PCD(100)가 인식할 수 있을 사용자들을 학습하기 위해 "학습" 루틴이 PCD(100)에 의해 사용된다. 일부 실시예들에서, PCD(100)는 비디오, 깊이 카메라 및 청각의 장면 분석의 조합을 사용하여 니어-필드 범위 내의 사용자들을 풀 360도로 로케이팅 및 추적할 수 있다. 일부 실시예들에서, PCD(100)는 10 피트의 원거리 범위 내의 사용자들을 풀 360도로 로케이팅 및 추적할 수 있다. 일부 실시예들에서, PCD(100)는, 사용자들이 니어-필드 범위 내에 있을 때마다 자신에 대해 상이한 사용자들의 위치들의 내부 맵을 유지할 수 있다. 일부 실시예들에서, PCD(100)는, 사용자가 PCD(100)로부터 더 멀어질 때 기능 레벨을 저하시킬 수 있다. 실시예에서, PCD(100)의 전체 기능은 PCD(100)의 니어-필드 범위 내의 사용자들에게 이용 가능할 수 있다. 일부 실시예들에서, PCD(100)는 사용자들의 무드 및 응답을 추적하도록 구성될 수 있다. 실시예에서, PCD(100)는 비디오 분석, 스켈레톤 추적, 스피치 프로소디, 사용자 어휘 및 구두의 심문(즉, 디바이스가 "how are you?"라고 묻고, 응답을 해석함)의 조합을 통해 사용자 또는 사용자들의 그룹의 무드를 결정할 수 있다.
[00174] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 감정 콘텐츠를 그의 애니메이션들로 혼합하기 위해 휴먼 소셜 코드로 프로그래밍될 수 있다. 특히, 사용자 표현의 인지된 감정 콘텐츠에 기반하여, 출력들의 감정 콘텐츠를 적절히 완전히 자율적인 방식으로 조절하기 위해 프로그래매틱 지능이 PCD(100)에 적용되어야 한다. PCD(100)는 스피치, 조명, 이동 및 사운드 효과들의 조합을 통해 사용자의 감지된 무드를 개선하려고 시도하도록 프로그래밍될 수 있다. 추가로, PCD 소셜 코드는 사용자와의 관계를 구축하기 위한 능력, 즉, 거동 미러링, 헤드 포즈들 모방 등을 제공할 수 있다.
[00175] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 학습된 사용자 선호도들에 기반하여 스포츠 뉴스 및 게임들, 날씨 보고들, 뉴스 클립들, 현재 사건들에 관한 정보 등을 포함하는 예방적으로 커스터마이징된 인터넷 콘텐츠를 사회적, 개입 방법으로 사용자에게 전달하고 및/또는 사용자의 잠재적인 관심들을 넓히는 방식으로 그 정보 및 데이터를 공유하기 위해 그 자신의 선호도들을 발전시키도록 프로그래밍될 수 있다.
[00176] PCD 디바이스는, PCD 디바이스가 인식하는 각각의 별개의 사용자에게 콘텐츠가 통신되는 방식 및 콘텐츠의 타입 둘 모두를 맞춤화하는 능력으로 프로그래밍될 수 있다.
[00177] PCD 디바이스는, 전달된 인터넷 콘텐츠의 사용자 선호도들, 그에 대한 사용자 반응 및 그의 프로세싱 습관들에 기반하여 시간에 걸쳐 별개의 사용자로의 전달/콘텐츠의 커스터마이징화(customization)를 개선하고 최적화하는 능력으로 프로그래밍될 수 있다.
[00178] PCD는, 전달된 정보가 사용자에 의해 이해되었다는 것을 확인하기 위해 사용자와의 사회적 다이얼로그에 관여하도록 프로그래밍될 수 있다.
[00179] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 사용자의 활동을 관리 및 모니터링하도록 구성될 수 있다. 일부 실시예들에서, 서비스와 관련하여 통신 디바이스들(122)은, 일단 사용자들이 쇼핑 트립을 위해 떠났다면, 사용자에게 통신될 수 있는 해야 할 일, 식료품 또는 다른 리스트들을, 사용자의 요청 시에, 생성 및 저장한다. 일부 실시예들에서, PCD(100)는 (서비스를 통해) 사용자 및 모바일 폰으로 텍스트(SMS) 메시지로서 리스트를 푸시하거나, 요청 시에, 사용자의 모바일 또는 웹 앱 중 어느 하나의 사용자에 의해 풀링될 수 있다. 일부 실시예들에서, 사용자는 PCD(100) 상에서 음성을 통해 또는 서비스를 통한 모바일 또는 웹 앱을 통해 그러한 요청을 할 수 있다. PCD(100)는 리스트들을 관리(즉, 구매된, 완료된, 더 이상 필요하지 않은 아이템들을 제거, 사용자 이력에 기반하여 부가적인 리스트 아이템들에 대한 제안들을 함 등)하기 위해 사용자와 상호작용할 수 있다. PCD(100)는 주변 대화에서 핵심 어구들을 듣고 이해함으로써 리스트에 부가할 필요성을 추론할 수 있다(즉, 디바이스는 "we are out of coffee"라는 것을 듣고, 사용자들이 식료품 리스트에 커피를 부가하는 것이 좋은지를 사용자에게 질문함)
[00180] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 사용자-생성 리마인더들 또는 메시지들을 정확한 시간들에 제공하도록 구성될 수 있다. PCD(100)는 정확한 시간들에 리마인더들을 전달하기 위한 조건들을 설정하는데 사용될 수 있다. 실시예에서, 리마인더들에 대한 조건들은 "the first time you see me tomorrow morning" 또는 "the next time my daughter is here", 또는 심지어 "the first time you see me after noon next Tuesday" 등과 같은 실시간 조건들을 포함할 수 있다. 일단 조건세트가 만족되면, PCD(100)는 ("룩-앳(look-at)" 뿐만 아니라 바디 언어/표현 관점으로부터) 사용자에 관여하고, 적절한 음성 및 문자로 리마인더를 전달할 수 있다. 일부 실시예들에서, PCD(100)는 리마인더의 무드 콘텐츠를 분석하고, 그 리마인더의 애니메이션/조명/전달에 영향을 주기 위해 이러한 정보를 사용할 수 있다. 다른 실시예들에서, 사용자들이 리마인드된 액션을 수행하였는지를 사용자에게 질문함으로써 PCD(100)가 리마인더를 전달한 후에, PCD(100)는 사용자를 따라 할 수 있다.
[00181] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는, 사용자에 의해 제공될 수 있는 요청 시에 사용자의 부재를 모니터링할 수 있다. 예를 들면, 사용자는, 그들이 밖으로 보행하는 때 및 이유(예를 들면, "I'm going for a walk now"), 및 활동의 예상된 듀레이션을 PCD(100)에 말할 수 있어서, PCD(100)는 사용자가 원하는/요청된 시간프레임 내에 리턴하는 것을 보장할 수 있다. 추가로, PCD(100)는, 사용자가 특정된 윈도우 내에 리턴되지 않은 경우에, 이러한 만일의 사태에 대해 사용자에 의해 특정된 긴급상황 연락처들을 통지할 수 있다. PCD(100)는 텍스트 메시지를 통해 및/또는 모바일 앱을 통해 긴급상황 연락처들을 통지할 수 있다. PCD(100)는, 사용자가 리턴할 때, 활동에 대한 존재 및 후속 조치를 인식할 수 있다(즉, 어떠한 활동이 있는지 또는 활동에 관련된 다른 질문들을 질문함). 그러한 타입의 상호작용은 PCD(100)와 사용자 사이의 사회적 상호작용을 가능하게 하고, 또한 학습 데이터베이스를 위한 사용자에 관한 정보의 수집을 가능하게 할 수 있다. PCD(100)는 이러한 목적으로 사용자에 의해 식별된 그러한 가족/친구들에게 체크-아웃/체크-인 시간들 및 현재 사용자 상태를 보여줄 수 있다. 이것은 모바일 앱을 통해 달성될 수 있다. PCD(100)는 더 깊이 있는 활동 모니터링/패터닝/보고를 할 수 있다.
[00182] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 하나 또는 그 초과의 데이터 연결을 통해 외부 네트워크에 연결하도록 구성될 수 있다. 일부 실시예들에서, PCD(100)는 와이파이 데이터 연결과 같은 강건하고 높은 대역폭 무선 데이터 연결에 대한 액세스를 가질 수 있다. 실시예에서, PCD(100)는 2.4GHz 및 5GHz 대역들 둘 다에서 2x2 2개의 스트림 MIMO 구성으로 802.11n 와이파이 규격을 구현할 수 있다. 일부 실시예들에서, PCD(100)는 다른 블루투스 디바이스들(메디컬 센서들, 오디오 스피커들 등)에 연결될 수 있다. 실시예에서, PCD(100)는 BLE(Bluetooth 4.0 LE) 규격을 구현할 수 있다. BLE 인에이블 PCD(100) 디바이스는 멀티-모달 사용자 데이터를 포함하고 이를 다른 BLE 인에이블 PCD(100) 디바이스와 공유하도록 그의 UUID를 커스터마이징되게 구성될 수 있다. 일부 실시예들에서, PCD(100)는 3G/4G/LTE 또는 다른 셀룰러 네트워크에 대한 연결성을 가질 수 있다.
[00183] 예시적이며 비제한적인 실시예들에 따라, 다수의 PCD(100) 디바이스들은 클라우드 기반 서비스에 대한 요구 없이 직접 데이터 공유 및 통신들을 허용하기 위해 애드-혹 네트워킹 기법들을 사용하여 메시 네트워크 구성으로 구성될 수 있다. 대안적으로, 다수의 PCD(100) 디바이스들 간에 공유되는 데이터는, 그것이 프로세싱되고 다수의 PCD(100) 디바이스들로의 브로드캐스팅을 위해 준비될 수 있는 클라우드 기반 데이터베이스/데이터 센터에 업로드되거나 저장될 수 있다. 클라우드 기반 데이터 서비스는 다수의 위치들에서 다수의 PCD(100) 디바이스들에 대한 로컬 및 중앙 데이터 저장소, 공유 및 분배를 제공하도록 메시 네트워크 어레인지먼트와 결합될 수 있다.
[00184] 예시적이며 비제한적인 실시예들에 따라, 컴패니언 애플리케이션이 PCD(100)에 연결하도록 구성될 수 있다. 일부 실시예들에서, 컴패니언 애플리케이션은, 다음의 플랫폼들: iOS, 안드로이드, 및 웹 상에서 이용 가능하다. 컴패니언 애플리케이션은 특징 또는 기능에 액세스하기 위해 3개 초과의 상호작용들을 요구하지 않을 수 있는 직관적이고 사용하기 쉬운 사용자 인터페이스(UI)를 포함할 수 있다. 컴패니언 애플리케이션은 PCD(100)의 가상 카운터파트에 대한 액세스를 사용자에게 제공할 수 있어서, 사용자는 실제 PCD(100)와 상호작용하기 위해 이 가상 카운터파트에 액세스할 수 있게 된다.
[00185] 일부 실시예들에서, 사용자는 컴패니언 애플리케이션을 통해 PCD(100)의 활동 로그들, 쇼핑 리스트들과 같은 정보에 액세스할 수 있다. 또한, 컴패니언 애플리케이션은 PCD(100)에 국부적인 사용자 활동의 장기적인 리포트들을 사용자에게 제공할 수 있다. 일부 실시예들에서, 컴패니언 애플리케이션은 비디오 및 오디오를 통해 사용자를 PCD(100)에 연결할 수 있다. 또한, 컴패니언 애플리케이션은 특정한 조건들(예컨대, 로컬 사용자는 체크-인에 의해 예상된 것보다 늦고, 시끄러운 노이즈가 있었고, 로컬 사용자는 무반응이고 등등)에 대해 사용자에게 비동기식으로 경고할 수 있다.
[00186] 일부 실시예들에서, 일군의 디바이스들에 걸친 제어 또는 연결성을 허용하기 위한 관리/전개 애플리케이션이 웹 플랫폼 상에서 이용 가능할 수 있다. 관리 애플리케이션의 UI는 상세한 리포트들, 셋-업, 전개 및/또는 지원 능력에 대한 빠른 액세스를 요구할 수 있는 병원/부양자 관리자들 또는 구매자들을 인에이블할 수 있다. 또한, 그룹은 관리 애플리케이션을 사용하여 PCD(100) 디바이스들의 관리된 세트에 걸쳐 저장된 정보에 액세스할 수 있다. 관리 애플리케이션은 특정한 조건들(예컨대, 로컬 사용자는 체크-인에 의해 예상된 것보다 늦고, 시끄러운 노이즈가 있었고, 로컬 사용자는 무반응이고 등등)에 대해 관리자에게 비동기식으로 경고할 수 있다. 또한, 관리 애플리케이션은 그의 관리된 디바이스들의 서브세트 또는 모두 다에 걸쳐서 메시지들 및 리마인더들을 브로드캐스트할 수 있다.
[00187] 예시적이며 비제한적인 실시예들에 따라, 지원 콘솔은 PCD(100)의 인원이 하나 또는 그 초과의 디바이스들을 모니터링/지원/진단/전개하도록 허용할 수 있다. 지원 콘솔은 웹 플랫폼 상에서 이용 가능할 수 있다. 일 실시예에서, 지원 콘솔은 고유 일련 번호, 소유자, 기관 전개 세트, 펌웨어 및 애플리케이션 버전 번호들, 또는 등록된 예외사항에 의해 식별될 수 있는 모든 전개된 PCD 디바이스들의 리스트 뷰를 지원할 수 있다. 일 실시예에서, 지원 콘솔은 일련 번호, 소유자, 기관 전개 세트, 펌웨어 및 애플리케이션 버전 번호, 또는 등록된 예외사항들을 포함하는 태그들로 상호작용식 질의들을 지원할 수 있다. 또한, 지원 콘솔은 디바이스 진단들의 발동 및 리포팅을 지원할 수 있다.
[00188] 예시적이며 비제한적인 실시예들에 따라, 지원 콘솔은 새로운 펌웨어 및 소프트웨어 버전들(푸시 모델)의 전개를 보조할 수 있다. 또한, 지원 콘솔은 더 새로운 NLU들, 새로운 앱들 등의 전개를 보조할 수 있다. 지원 콘솔은 고객 지원 시나리오들, 서비스의 계획된 중단시간과 같은 것들을 통신하기 위해 전개된 디바이스들 모두 또는 서브세트로의 메시지들의 브로드캐스팅 등을 지원할 수 있다. 일부 실시예들에서, 지원 콘솔은, PCD(100)와 상호작용하는데 걸린 시간, 모든 앱들/서비스들에 걸쳐 브레이크다운된 시간, 오디오 및 비디오 지각 알고리즘들에 대한 어그리게이팅된 히트/미스 메트릭들, (데이터 마이닝 등을 지원하기 위해) 로깅된 액션들, 로깅된 예외사항들, 경고 임계치들(예컨대, at what exception level should the support console scream at you?) 등을 포함(그러나 배타적이지 않음)하는 다양한 온-디바이스 메트릭들에 대한 액세스를 지원할 필요가 있을 수 있다.
[00189] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 원격회의에 관여할 수 있다. 일부 실시예들에서, 원격회의는 단순한 UI를 통해, PCD(100)의 바디 또는 터치스크린(104)을 터치하여, 또는 다수의 구문들, 사운드들 등으로 개시될 수 있는 것과 같은 음성 활성화를 통해 실행되도록 시작할 수 있다. 일 실시예에서, 원격회의를 개시하기 위해 PCD(100)의 기껏 2번의 터치들이 요구된다. 일부 실시예들에서, 콜들은 또한 콜 스케줄링/프롬프팅 특징의 출력으로서 또한 개시될 수 있다. 일단 개시되면, PCD(100)는 와이파이 연결, 블루투스, 전화 연결 또는 전화 기능성에 영향을 주는 이들의 임의의 결합을 사용하면서, 사용자로부터 오디오 데이터를 수신하고 출력하도록 마이크로폰(112) 및 스피커(110)를 사용하여 전화로서 기능할 수 있다.
[00190] 호들은 표준 음성 콜들이거나, 또는 비디오 컴포넌트들을 포함할 수 있다. 이러한 상호작용들 동안, PCD(100)는 대화의 PCD(100) 단부에 대한 카메라맨으로서 기능할 수 있다. 일부 실시예들에서, PCD(100)는 테이블의 중간 또는 PCD(100) 주위의 룸을 점유하는, 가족과 같은 복수의 사용자들과의 다른 사회적 게더링 지점에 배치될 수 있으며, 이들 모두는 콜 동안 깨어있고, 이동하고 활성일 수 있다. 콜 동안, PCD(100)는 원하는 위치의 카메라(106)를 포인팅할 수 있다. 일 실시예에서, PCD(100)는 카메라(106)가 스피커/사용자를 포인팅한 채로 유지하도록 사운드 로컬화 및 얼굴 추적을 활용할 수 있다. 다른 실시예들에서, PCD(100)는 룸 안의 사람들/사용자들에 의해 지시(예컨대, "PCD, look at Ruby")될 수 있다. 다른 실시예들에서, 원격 사람이 디바이스를 통해 추적될 타겟을 특정할 수 있고 PCD(100)는 자동으로 그 타겟을 룩 앳하고 추적할 것이다. 어느 시나리오든, 카메라(106)가 입력으로서 수신하는 것은, 예컨대, 원격 참가자가 스마트폰, 랩톱, 또는 비디오를 디스플레이할 수 있는 다른 디바이스를 사용하는 경우 이들에게 제시된다.
[00191] 디바이스는 다수의 언어들을 이해하고 응답할 수 있다. 이러한 상호작용 동안, PCD(100)는 또한 음성 입력을 수신하고 프로세서를 통해 입력을 번역하고 번역된 출력을 출력함으로써 국제 연합 인터프리터의 패러다임처럼 링크의 다른 단부 상의 사람에 대한 "인터프리터"로서 기능할 수 있다. PCD(100)가 있는 룸에 TV, iPad 등과 같은 이용 가능한 스크린이 있는 경우, PCD(100)는 예컨대, 블루투스 또는 와이파이를 통해 오디오를, 그리고 이용 가능한 경우, 이 TV 스크린 상에 디스플레이될 원격 참가자의 비디오를 송신할 수 있다. 이용가능한 다른 스크린이 없는 경우, PCD(100)는 원격 참가자로부터의 오디오를 중계할 수 있지만, 어떠한 원격 비디오도 이용 가능하지 않을 수 있다. 이러한 예에서, PCD(100)는 원격 참가자의 단어들을 단지 중계한다. 일부 실시예들에서, PCD(100)는 애니메이팅되고 예컨대, 예컨대, 원격 참가자가 미리 결정된 양의 시간 동안 멈추어 있는 경우, 깜박이거나 아래를 봄으로써 또는 원격 참가자가 매우 흥분되었음을 PCD(100)가 감지하는 경우 약간의 댄스 또는 "시미(shimmy)"를 함으로써 사용자에게 반응할 수 있다.
[00192] 다른 실시예에서, PCD(100)는 링크의 원격 단부 상의 사람의 아바타일 수 있다. 예컨대, 아이 또는 터치 스크린(104) 상에 디스플레이되는 다른 영역은 원격 참가자의 얼굴의 랜더링된 버전(다른 실시예들 중에서, 카툰, 이미지 기반 또는 비디오 스트림)으로 모핑할 수 있다. 랜더링은 PCD(100)에 저장되어 PCD(100)가 액세스 가능할 수 있다. 다른 실시예들에서, PCD(100)는 또한 원격 사용자를 설명하고 연관된 데이터를 리트리브하고 아바타 경험을 강화하기 위해 원격 사용자의 모션/비언어적 큐들을 모방할 수 있다.
[00193] 일부 실시예들에서, 콜 동안, 원격 또는 로컬 참가자들은 참가자들 및 PCD(100) 카메라 뷰의 정지 이미지들, 비디오 및 오디오 클립들, 또는 메모들(예컨대, "PCD, remember this number")의 저장을 큐잉할 수 있다. 이들 태깅된 아이템들은 적절히 메타-태깅되고 PCD 클라우드에 저장될 것이다.
[00194] 다른 실시예들에 따라, PCD(100)는 또한 요청 시에 원격 상호작용의 자극을 또한 도울 수 있다. 예컨대, 사용자가 아래에서 보다 완전히 설명되는 게임을 제안하도록 PCD(100)에 요청하고(PCD는 연결된 게임 모드를 개시할 것임), 양 참가자들이 동의할 때까지 게임들을 제안할 수 있다. 다른 예에서, 사용자는 이야깃거리에 대해 PCD(100)에 또한 요청할 수 있다. 이에 응답하여, PCD(I100)는 대화 참가자들의 공통 관심사들에 타겟팅되는 "PCD In The Know" 데이터베이스에 액세스하거나, 또는 이들이 이야기할 것을 제안하기 위해 이벤트에 대해 참가자들에 대한 PCD 캘린더를 마이닝할 수 있다(예컨대, "Grandma, tell Ruby about the lunch you had with your friend the other day").
[00195] 스케줄링 보조
[00196] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 링크의 다른 단부에 있는 존재의 캘린더 가용성, 특별한 날, 및/또는 지식에 기반하여 콜들을 제안할 수 있다(예컨대, "your mom is home right now, and it's her birthday, would you like to call her?"). 사용자가 제안을 수락하고, 이 경우에, PCD 콜 앱이 PCD(100)와 원격 참가자의 PCD(100), 전화, 스마트 디바이스 또는 스카이프 계정간에 론칭된다. 사용자는 또한 콜을 추후에 스케줄링하도록 PCD(100)에 요청함으로써 제안을 수락할 수 있고, 이 경우에 스케줄링 앱이 그것을 사용자의 캘린더에 추가한다.
[00197] 콜 답신 및 메시징
[00198] 예시적이며 비제한적인 실시예들에 따르면, 콜 응답 및 메시징 기능은 PCD(100)를 사용하여 구현될 수 있다. 이 특징이 PCD(100)에 배치된 음성 또는 비디오 콜들에 적용되고 PCD(100)는 다른 셀룰러 연결 디바이스들에 대한 콜 관리 서비스들을 수행하지 않을 것이다. 도 7을 참고하면, 예시적이며 비제한적인 실시예의 흐름도(700)가 도시된다. 예시된 바와 같이, 단계(702)에서, PCD(100)에 대한 콜이 이루어질 때, PCD(100)는 콜러를 룸에 있는 사람들에게 알릴 수 있다. 룸에 아무도 없는 경우, PCD(100)는 사용자의 캘린더를 체크할 수 있고, 캘린더가 사람들이 홈에 없다는 것을 나타내는 경우, PCD(100)는 PCD(100)와 연관된 음성메일로 직접 콜을 전송할 수 있다(단계 704). 역으로, 캘린더가 사람들이 집에 있다고 나타내는 경우, PCD(100)는 하우스에 있는 사람들의 주의를 끌도록 더 시끄러운 소리(벨, 링들, 고함소리?)를 사용할 것이다(단계 706).
[00199] 일단 PCD(100)가 그의 사용자의 주의를 끌었다면, 단계(708)에서, PCD(100)는 콜러를 알리고, 그 사람이 통화하기를 원하는지 물어볼 수 있다. 단계(710)에서, 사용자는 단순 터치 인터페이스, 또는 이상적으로 중립 언어 인터페이스로 응답할 수 있다. 사용자가 예라고 답신하는 경우, 단계(712)에서, PCD(100)는, 동기식 온-디맨드 멀티모드 메시징 특징에 설명된 바와 같이 콜을 연결한다. 답신이 아니오인 경우, 단계(714)에서, 콜이 PCD(100) 음성메일로 전송된다.
[00200] 콜러가 음성메일로 다이렉팅되는 경우, PCD(100)는 콜러들에게 인사하고 메시지를 남길지를 콜러들에게 물어볼 수 있다. 일부 실시예들에서, 음성 또는 음성/비디오(콜러가 Skype 또는 그 등가물을 사용하고 있는 경우) 메시지가, 나중에 재생되기 위해서 기록될 수 있다.
[00201] 사용자가 리턴하고 PCD(100)가 사용자가 다시 룸에 있다는 것을 검출하면, PCD(100)는, 단계(716)에서, 사용자에게 메시지(음성으로 "you have a message" 또는 비언어적으로 조명 방울 등)를 알리고, 사용자가 메시지를 청취하기를 원하는지 묻는다. 예인 경우, PCD(100)는 오디오를 재생하거나 또는 상술된 바와 같이 TV/태블릿/등에서 오디오/비디오 메시지를 재생할 수 있다.
[00202] 사용자는 나중을 위해 메시지를 저장하는 옵션을 가질 수 있다. 그는, 특정 시각에 다시 물어보도록 또는 단지 "later"라고 PCD(100)에게 말하며, 나중에라고 말한 경우, PCD(100)는 미리결정된 양의 시간 이후에 다시 물을 것이다.
[00203] 콜러가 PCD(100)에게 알려지지 않은 경우, PCD(100)는 그 콜을 음성메일로 다이렉팅될 수 있고, 사용자에게, X번호로부터의 식별되지 않은 콜이 수신되었다는 것을 통지하고, 메시지가 기록되었다면 그 메시지를 재생한다. 이후, 사용자는 앞으로 그 번호를 연결/음성메일로부터 효과적으로 차단시킬 것을 PCD(100)에게 지시할 수 있다. PCD(100)는 또한, 사용자가 동기식으로 또는 비동기식으로 콜을 리턴시키길 원하는지를 물어볼 수 있다. 사용자가 수락한 경우, PCD(100)는 사용자의 요청을 완료하기 위해 적절한 메시징 모드에 착수한다. 일부 실시예들에서, PCD(100)는 또한, 콜 관리자 기능을 다른 셀룰러 또는 집에 있는 유선 디바이스들에 제공할 수 있다. 또 다른 실시예들에서, PCD(100)는 콜에 답신하고 대화식으로 콜러에게 메시지를 남길 것을 프롬프트하므로 개인 보조자의 역할을 할 수 있다.
[00204] 연결 스토리 읽기
[00205] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 연결 스토리 읽기 앱을 포함하여, 원격 참여자로 하여금, PCD(100)을 사용하여 룸에 있는 로컬 참여자에게 PCD(100)를 "통하여" 스토리를 읽어 줄 수 있게 할 수 있다. 판독기는 스토리를 집어내고 이것을 판독하는 프로세스를 통해 가상 PCD(100)에 의해 가이드된 단순 웹 또는 안드로이드 앱 기반 인터페이스를 통해 상호작용할 수 있다. 판독기는 가상 PCD(100)에 의해 프롬프트된 것으로서 스토리의 단어들을 판독할 수 있다. 일부 실시예들에서, 판독기의 음성은 물리적 PCD(100)에 의해 청취자에게 재생될 것이며, 미리설정된 필터들이 독자의 음성에 적용되므로, 독자는, 그/그녀가 이를 하기 위한 고유 능력을 갖지 않더라도, 믿을 수 없을 만큼 강력한 방법으로 문자들의 "음성들을 수행"할 수 있다. 사운드 트랙 및 효과들이 또한 재생에 삽입될 수 있다. 독자의 인터페이스는 또한 청취자의 "PCD의 전경(Eye View)"을 보여주고, PCD(100)는, 청취자를 비디오에 유지시키는 그의 "사진사" 능력을 사용할 수 있다.
[00206] 물리적 PCD(100)는 또한, 적절한 때에 단편 애니메이션들(공포의 전율 등)을 갖는 스토리에 반응할 수 있고, 상술된 PCD(100)의 아이가 스토리 엘리먼트들의 지원 시 상이한 형상들로 변형될 수 있다. 이러한 기능으로 PCD 콜 특징 내부를 랩핑할 수 있으므로, 독자 및 청취자는 이것에 대한 대화에 의해 스토리를 중단시킬 수 있는 식이다. 이 앱은, 독자가 스토리를 읽는 것을 중단하였다는 것을 인식하고 특징을 일시중지시킬 수 있으므로, 독자와 청취자는 필터링되지 않은 상태로 대화할 수 있다. 대안으로, 텔러(teller)는 스토리를 사전 레코딩하여 아래에 설명된 스토리 중계 앱을 사용하여 나중에 재생되게 스케줄링할 수 있다.
[00207] 핫라인
[00208] 예시적이며 비제한적인 실시예들에 따르면, 사용자는 "푸시 투 토크(push to talk)" 또는 "워키-토키(walkie-talkie)" 스타일 인터페이스를 통해 "인-네트워크(in-network)" 멤버들과 통신하기 위해 PCD(100)를 사용할 수 있다. 이 특징은, 스킨 상에 1회 터치를 통해 또는 PCD(100) 상의 스크린 아이콘을 통해, 또는 "PCD(100), talk to Mom"라는 단순 음성 커맨드를 통해 액세스될 수 있다. 일부 실시예들에서, 이 특징은 단지 PCD-대-PCD 대화로 제한되고, PCD들(100) 둘 모두가 이들의 링크 끝 부분에서 사용자 존재를 검출할 경우에만 이용가능할 수 있다
[00209] 스토리 중계
[00210] 도 8과 관련하여, 예시적이며 비제한적인 실시예의 흐름도(800)가 도시된다. 도시된 바와 같이, 단계(802)에서, 사용자/스토리 텔러는 임의의 시각에 스토리를 레코딩하여 PCD(100)가 나중에 재생하게 할 수 있다. 스토리들은 여러 가지 방법들로 레코딩될 수 있다.
[00211] PCD(100)에 의해서: 스토리텔러는 그 스토리를 PCD(100)에게 말하고, PCD(100)는 재생을 위해 이것을 레코딩한다.
[00212] 가상의 PCD(100) 웹 인터페이스 또는 안드로이드 앱에 의해: 사용자는 그 스토리를 웹캡에 말하는 가상의 PCD(100)에 의해 가이드된다. 이들은 또한 이러한 타입들의 스토리들에 더욱 풍부한 애니메이션들/사운드 효과들/백그라운드 음악을 포함시키기 위한 기회를 가질 수 있다.
[00213] 스토리가 레코딩되면, PCD(100)는 텔러에 의해 설정된 스케줄링 선호들에 따라서 스토리를 재생할 수 있다(단계 804). 청취자에게는 스케줄링된 시각에 스토리를 듣는 옵션이 주어질 것이고, 스토리를 수락, 거절, 또는 리스케줄링할 수 있다.
[00214] 일 실시예에서, 스토리텔링 동안, PCD(100)는 미리결정된 레이트로 청취자의 정지 사진들을 찍을 수 있다. 스토리가 완료되면, PCD(100)는, 그/그녀가 스토리텔러에게 다시 메시지를 전송하기 원하는지를 청취자에게 물어볼 수 있다(단계 806). 사용자가 수락한 경우, 단계(808)에서, PCD(100)는 "비동기 멀티모드 메시징(Asynchronous Multimodal Messaging)" 특징을 입력하고, 메시지를 컴파일링하고, 이들이 1을 갖는 경우 텔러의 물리적 PCD(100)에 메시지를 전송하거나 또는 가상의 PCD(100) 웹 링크로 메시지를 전송할 수 있다. 청취자는, 스토리를 청취하는 그 자신/그녀 자신의 사진을 리턴 메시지에 포함시킬 기회를 가질 수 있다.
[00215] 포토/메모리 메이커
[00216] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)가 이벤트에 대한 포토그래퍼의 역할을 함으로써 PCD(100)는 사진/메모리 메이커 특징을 포함할 수 있다. 이를 위한 2가지 모드가 존재한다:
[00217] PCD 스냅 모드
[00218] 이 모드에서, 사진 안에 있길 원하는 사용자들이 함께 서있을 수 있고 "PCD, take a picture of us"라고 말한다. PCD(100)는 확인응답한 후, 구두(verbal) 큐들을 사용하여 "백업(back up)", "왼쪽으로 이동(move left)" 등과 같은 큐들을 사용하여 카메라 이미지에서 사람/들을 중앙에 위치시킨다. 이들이 적절하게 포지셔닝될 때 PCD(100)는 이들에게 멈춰있으라고 말한 후, 미소("치즈(cheese)" 등)를 유도하는 일종의 어구를 사용한다. PCD(100)는 이들이 미소를 짓고 있지 않다면 말하여 계속해서 미소를 유도하도록 시도하기 위해 얼굴 표정 인식을 사용할 수 있다. 이미지 안에 있는 모든 사용자들이 미소를 짓고 있을 때, PCD(100)는 자동 초점을 사용하여 몇 장의 사진들을 찍고 필요하다면 플래시를 터트릴 수 있다.
[00219] 이벤트 포토그래퍼 모드
[00220] 이 모드에서, 사용자는 특정 시각(또는 원하는 경우 "지금(now)")에 시작하는, 미리결정된 양의 시간 동안 이벤트의 사진들을 찍도록 PCD(100)에게 지시할 수 있다. PCD(100)는 룸을 둘러보고 사운드 위치와 얼굴 인식의 조합을 사용하고 사용자 정의된 속도로 룸에 있는 사람들의 자연스러운 사진들을 찍는다. 생성된 사진들 모두가 PCD(100) 메모리에 국부적으로 저장될 수 있다.
[00221] 일단 사진들이 생성되면, PCD(100)는, 사진들이 PCD(100) 클라우드로 업로드되었음을 사용자에게 알릴 수 있다. 그 때에, 그들이 PCD(100) 앱 또는 웹 인터페이스를 통해 액세스될 수 있고, 가상의 PCD(100)가 사진들의 삭제, 편집, 잘라내기 등의 프로세스를 통해 사용자를 안내할 수 있다. 이후, 이들이 사용자에게 이메일로 전송되거나 또는 페이스북 등에 포스팅될 수 있다. 이 앱의 이러한 "아웃 오브 더 박스(out of the box)" 버전에서, 사진들은, 아래에 설명되는 예컨대, "살아있는 유산"의 일부로서 월정액 요금으로 제공된 파일링/메타태깅을 갖는 영구 저장소를 사용하여 미리결정된 양의 시간 동안 PCD(100) 클라우드 상에서만 유지될 수 있다.
[00222] 본원에 설명된 바와 같이, 이와 같이, PCD(100)는 개인간 그리고 사회적 기회들을 향상시키는 것을 보조하도록 동작할 수 있다. 일 실시예에서, 애플리케이션, 또는 "앱"은, PCD(100)의 하나 또는 그보다 많은 인터페이스 컴포넌트들에 액세스하고 이들을 동작시켜 사회적 활동을 달성시키도록 PCD(100) 상에 구성되거나 또는 설치될 수 있다. 예컨대, PCD(100)는, 실행될 경우, 하나 또는 그보다 많은 사진들을 찍고 저장하기 위해 PCD(100)가 어느 것을 진행하는지에 따라서 하나 또는 그보다 많은 파라미터들을 수신하도록 사용자와 상호작용하도록 동작하는 팩토리 설치식 앱을 포함할 수 있다. 예컨대, 사용자가 PCD(100)에게 "Please take at least one picture of every separate individual at this party"라고 말할 수 있다. 응답으로, PCD(100)는 액세스가능한 손님 리스트로부터 파티 손님들의 리스트를 조합하고 각각의 손님의 사진을 찍도록 진행할 수 있다. 일 실시예에서, PCD(100)는 정지상태를 유지하고 손님들이 지나갈 때 개인들에게 그들의 신분에 대해 질의하고 인스턴스를 레코딩하고, 개인 사진을 찍을 수 있다. 다른 실시예에서, PCD(100)는 손님들의 사진들을 찍기 위해서 손님들과 상호작용하고 손님들의 그룹들 앞에서 PCD(100)을 설정하도록 그들에게 요청할 수 있다. 파티의 지속기간과 같은 일 시간의 기간 동안, PCD(100)는 사회적 이벤트를 문서화하는 것을 포함하여 사회적 목적/활동의 성취 시 사용자의 희망에 따라 파티 손님들의 사진을 2장 이상 획득한다.
[00223] 다른 예시적인 실시예들에 따르면, PCD(100)는 소셜 큐들을 판독하고 그에 반응할 수 있다. 예컨대, PCD(100)는, 사용자가 더 부드럽게 말할 필요를 다른 사람에게 표시한다는 것을 관측할 수 있다. 응답으로, PCD(100)는 자신이 구두 통신(verbal communication)들을 출력하는 볼륨을 낮출 수 있다. 유사하게, PCD(100)는, 껴안아지거나 또는 쓰다듬어지는 경우(stroke), 만족감을 표시하는 사운드들을 방출할 수 있다. 다른 실시예들에서, PCD(100)는 소셜 큐들을 방출하거나 그렇지 않으면 출력할 수 있다. 예컨대, 사용자가 약속이 늦어서 뛰고 있다고 감지하는 PCD(100)는, 사용자의 이동 속도를 앞당기기 위해 겉보기에 과민한 상태로 앞뒤로 흔들거릴 수 있다.
[00224] 상호작용식 캘린더
[00225] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는, 퇴근(outside of work) 이후의 사용자 및 가족 용무를 캡쳐하도록 캘린더 시스템을 사용하여 구성될 수 있다. PCD들(100)은, 그들의 사용자들이 허가를 제공하면, 캘린더들을 다른 PDC(100)들의 캘린더들과 공유 및 통합할 수 있을 수 있으므로, 모든 각각의 가정 내의 PCD(100)를 갖는 전체의 확대 가족이 모든 사람들에 대한 단일의 통합된 캘린더를 가질 수 있을 것이다.
[00226] PCD(100)들의 캘린더 내의 아이템들은, 적절한 정보, 즉 초기에는 약속이 있는 가족 멤버(들)의 이름, 그들이 약속/이벤트에 대해 어떻게 느끼는지, 날짜 또는 날짜-특정 정보(휴일 등) 등으로 메타태그될 수 있다. 입력될 수 있는 이벤트들의 타입들은, 기상 시간들, 식사 시간들, 약속들, 리마인더들, 전화 콜들, 가정 태스크들/정원일 등을 포함하지만 이에 제한되지는 않는다. 모든 이벤트들이 특정한 시간으로 셋팅될 필요는 없음을 유의하며, 이벤트들이 센서 입력들에 대해 예측되어 스케줄링될 수 있는 등의 식이고, 예컨대, "remind me the first time you see me tomorrow morning to pack my umbrella"이다.
[00227] PCD(100)들의 캘린더로의 아이템들의 엔트리는 다수의 방식들로 달성될 수 있다. 일 실시예는 안드로이드 앱 또는 웹 인터페이스를 사용하며, 여기서, 가상 PCD(100)는 프로세스를 통해 사용자를 안내한다. 이러한 포인트에서, 사용자가 apt/이벤트에 대해 어떻게 느끼는지를 PCD(100)에게 말하기 위해 이모티콘들 또는 다른 인터페이스가 사용될 수 있다. 이러한 모드에서의 캘린더의 그래픽적인 묘사는 아웃룩과 유사할 수 있어서, 사용자가 다른 네트워크 멤버들의 이벤트들/앱들을 관측하게 한다. PCD(100) 캘린더는 또한, 이와 관련하여 아웃룩이 행하는 것과 유사한 약속 충돌회피(de-confliction)를 위한 특성을 가질 수 있다.
[00228] 일부 실시예들에서, 사용자들은 또한, 자연 언어 인터페이스를 통해 캘린더에 아이템들을 부가할 수 있을 수 있다("PCD, I have a dentist appointment on Tuesday at 1PM, remind me half an hour earlier", 또는 "PCD, dinner is at 5:30PM tonight). 사용자에 의해 통신되지 않으면, 사용자 느낌이 그 이후에 PCD(100)에 의해 질의될 수 있어서(예컨대, How do you feel about that appointment?), 적절한 감정 메타태깅을 허용한다.
[00229] 일단 이벤트 리마인더가 트립되면, PCD(100)는 2개의 방식들 중 하나로 리마인더를 따라 전달할 수 있다. 리마인더가 셋팅되었던 사용자가 PCD(100)의 환경에 존재하면, 그는, 구두 리마인더, 애니메이션, 안면 표현들 등이 완비된 리마인더를 따라 대면하여(in person) 전달할 것이다. 안면 표현의 감정 내용은, 예컨대 이모티콘 또는 사용자 구두 입력들을 통해 이벤트의 메타태깅으로부터 유도될 수 있다. 그의 거동들은 또한, 알려진 맥락으로부터 유도될 수 있다(예컨대, 그는 깨어날 경우 항상 졸릴 것이거나, 식사시간에는 항상 배가 고프다). 상이한 이벤트들에 상황적으로 적절한 표현들은, 주기적으로 내용을 저술하여 그것을 비-반복적이고 즐거운 것으로 유지함으로써 리프레쉬될 수 있다.
[00230] 리마인더가 발생하는 사용자에게 PCD(100)가 물리적으로 존재하지 않으면, PCD(100)는 그들에 대해 콜 아웃(call out)될 수 있다. 그러한 예시에서, 그들이 이에 응답하지 않으면, PCD(100)는 그들의 핸드폰에 리마인더를 문자로 전송할 수 있다.
[00231] 리스트 관리자
[00232] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 리스트 관리자 특성을 사용하여 구성될 수 있다. 이러한 특성에 따르면, PCD(100)는 사용자의 요청 시에, 일단 그들이 쇼핑 트립을 위해 떠나면 사용자에게 문자로 전송될 수 있는 할일(to-do) 리스트들 또는 쇼핑 리스트들을 생성할 수 있다. 특성은 간단한 터치 인터페이스를 통해, 또는 이상적으로는 자연 언어 인터페이스를 통해 사용자에 의해 개시될 수 있다. 사용자는 행해질 리스트의 타입을 특정할 수 있다(예컨대, "식료품", "의류들", "할일", 또는 특정한 타입의 상점 또는 상점 명칭). PCD(100)는 리스트 상에 초기에 존재하는 것을 요청할 수 있으며, 사용자는 PCD(100)가 일들을 리스트에 부가하게 하기 위해 구어(spoken word)를 통해 응답할 수 있다. 임의의 나중 시간에서, 사용자는 다른 아이템들을 리스트에 부가하도록 PCD(100)에게 요청할 수 있다.
[00233] 몇몇 실시예들에 따르면, PCD(100)는, 아이템이 리스트에 부가되어야한다는 것을 결정하기 위해 일상 대화를 파싱할 수 있을 수 있다. 예컨대, 룸 내의 어떤 사람이 "we're out of milk"고 말하면, PCD(100)는 우유를 식료품 리스트에 자동적으로 부가할 수 있다.
[00234] PCD(100)가 리스트를 보유하고 있는 상점으로 트립을 위해 사용자가 떠나는 경우, 사용자는 적절한 리스트를 그들에게 문자로 전송하도록 PCD(100)에게 요청할 수 있으므로, 그들이 상점에서 쇼핑하고 있는 경우, 그 리스트가 그들에게 이용가능하게 될 것이다. 부가적으로, 사용자가 상점 근방이긴 하지만 PCD(100)로부터 떨어지면, 그들은 안드로이드 또는 웹 앱을 통해 전송하도록 리스트를 요청할 수 있다.
[00235] 사용자의 리턴 시에(즉, 다음에 PCD(100)는, 사용자가 그들에게 텍스트로 전송하도록 리스트를 요청했던 이후에 그 사용자를 관측함), PCD(100)는 트립이 어땠는지/사용자가 리스트 상의 모든 것을 발견했는지를 문의할 수 있다. "예"라면, PCD(100)는 리스트를 클리어하고 리스트에 부가될 다른 아이템들을 대기할 것이다. "아니오"라면, PCD(100)는, 구매되지 않았던 것에 대해 질의하고, 리스트로부터 다른 모든 아이템들을 클리어할 것이다.
[00236] 할일 리스트들의 경우, 사용자는 PCD(100)에게 "나는 X를 했어"라고 말할 수 있으며, 그 아이템은 저장된 리스트로부터 제거될 수 있다.
[00237] 사용자들은 또한, 그들에게 문자로 전송된 다른 사람의 PCD-생성된 리스트를 갖도록 요청할 수 있다(적절한 허가들을 보류중임). 예컨대, 성인이 나이가 많은 부모님께 PCD(100)를 제공하면, 그 성인은, 그들의 부모의 PCD(100)에 의해 생성된 쇼핑 리스트를 그들에게 전송하도록 PCD(100)에게 요청할 수 있으므로, 성인이 스스로 쇼핑하고 있었던 동안 그들은 그들의 부모님들의 식료품을 획득할 수 있거나, 성인은, 그들이 임의의 필요한 툴들을 갖는다는 것을 보장하기 위해 방문 이전에 어머니의 "할일" 리스트에 대해 PCD(100)에게 문의할 수 있는 등의 식이다.
[00238] 잘 알고 있는 PCD
[00239] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 "잘 알고 있는(In the Know)" 특성을 사용하여 구성될 수 있다. 이러한 특성에 따르면, PCD(100)는, 사용자가 관심있는 뉴스들, 날씨, 스포츠 등을 사용자에게 최신으로 유지할 수 있다. 이러한 특성은, 간단한 터치 인터페이스, 또는 이상적으로는 자연 언어 커맨드(예컨대, "PCD(100), tell me the baseball scores from last night")를 사용하여 요청 시에 액세스될 수 있다.
[00240] 사용자는, 하루의 특정한 시간들에서 "정보 세션들"을 셋업하기 위한 능력을 가질 수 있다. 이것은, 웹 또는 모바일 앱 인터페이스를 통해 행해질 수 있다. 이러한 특성을 사용하면, PCD(100)는 하루의 특정한 시간들에서 특정한 정보를 중계하도록 스케줄링될 수 있다. 예컨대, 사용자는, 사용자가 깨어난 이후 뉴스를 제공하도록 그들의 PCD(100)를 프로그래밍할 수 있다. 사용자가 "예"라고 말하면, PCD(100)는 사용자가 자신의 "모닝 브리핑"으로 요청한 정보를 전달할 수 있다. 이것은, 팀 스코어들/뉴스, 날씨, 주요 신문으로부터의 헤드라인들의 리뷰 등을 포함할 수 있다. PCD(100)는 이들 아이템들의 개관으로 시작할 수 있고, 임의의 포인트에서 사용자는 특정한 아이템에 대해 더 많이 알도록 요청할 수 있으며, PCD(100)는 전체 뉴스 아이템을 읽을 것이다.
[00241] 뉴스 아이템들은 "PCD-화"될 수 있다. 상세하게, PCD(100)는, PCD(100)가 읽고 있는 뉴스에 대한 코멘터리 및 반응을 제공할 수 있다. 그러한 반응은 AI 생성의 결과로서 상황적으로 관련있을 수 있다.
[00242] 무드, 활동, 환경 모니터
[00243] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는, PCD(100)에 대한 애플리케이션의 형태로 무드, 활동, 및 환경 모니터 특성을 사용하여 구성될 수 있다. 이러한 애플리케이션은, 예컨대 나이가 많은 부모님을 위하여 이미 PCD(100)를 구매했던 사람에 의해 구매될 수 있다. 구매 시에, 웹 인터페이스 또는 안드로이드 앱 인터페이스는 모니터링 셋업 및 상태에 액세스하기 위해 사용될 수 있다. 가상 PCD(100)는 이러한 프로세스를 통해 사용자를 안내할 수 있다. 모니터링될 수 있는 것들의 몇몇 예들은, (1) PCD(100)가 있는 룸/하우스 내의 주변 온도, (2) 활동(사람이 매 시간/하루마다 걸었던 횟수, 사람을 보고 있지 않은 시간 수 등), (3) 룸 내의 사람/사람들의 무드: 센서들로부터의 피드백에 기초한 유한한 세트의 선택들 중 하나로서 표현됨(안면 표현들, 웃음 빈도, 특정한 단어들/어구들의 사용 빈도 등) 및 (4) PCD(100)가 약제가 취해졌는지를 문의하는 것 또는 약제가 취해졌는지를 명시적으로 관찰하는 것 중 어느 하나를 통해 약제 정책(medication regime)들에 대한 준수(compliance)를 모니터링할 수 있는 것을 포함한다.
[00244] 셋팅될 수 있는 모니터들의 상태는 앱 또는 웹 인터페이스를 통해 체크될 수 있거나, 그 후, 경고 레벨이 초과된 경우(예컨대, 집안이 너무 춥다, 어떠한 사람도 임계 시간 양에서 걸어다니지 않음), 텍스트가 PCD(100)에 의해 모니터링 사용자에게 전송될 수 있다. 부가적으로, PCD(100)는, 예컨대, 너무 춥다면 한기를 느껴 온도를 높이도록 요청하는 것과 같이, 앱 또는 웹 인터페이스를 통해 모니터링 사용자에 의해 셋팅된 특정한 조건들이 충족되는지를 사용자에게 자율적으로 리마인드할 수 있다.
[00245] 무드 링
[00246] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 무드 링 특징을 사용하여 구성될 수 있다. 무드 링 특징은, 사용자의 무드/감정 상태의 표시자 및 심지어 인플루언서(influencer)로서의 역할을 하도록 PCD(100)의 센서들을 사용할 수 있다. 이 특징은 사용자의 감정 상태의 실시간 로그를 유지할 수 있다. 이 표시자는 표정 인식(facial expression recognition), 체온, 안구 운동, 활동 레벨 및 타입, 스피치 프로소디, 키워드 사용, 및 심지어 PCD(100)가 사용자에게 그들이 어떻게 느끼고 있는지를 묻는 것과 같은 단순한 기술들의 융합에 기초할 수 있다. PCD(100)는, 그의 해석들을 정정하고 그리고 시간에 따라 사용자의 더 나은 감정 모델을 만들기 위해 사용자 검증 기술들(예컨대, 묻기)을 시도할 것이다. 이는 또한, PCD(100) 클라우드로부터의 "클라우드 소싱" 학습 데이터(검증된 센서 데이터 <-> 다른 사용자들로부터의 감정 상태 맵핑들)를 수반할 수 있다. 도 9를 참조하면, 예시적이며 비제한적인 실시예의 흐름도(900)가 예시된다. 단계(902)에서, PCD(100)는 그의 감정 상태를 결정하기 위해 사용자 바디/얼굴/스피치 상세사항들을 해석한다. 시간에 따라, PCD(100)는 감정 상태를 결정하기 위해 사용자 바디/얼굴/스피치 상세사항들을 정확하게 해석할 수 있다.
[00247] 일단 PCD(100)가 사용자의 감정 상태를 결정했다면, 단계(904)에서, 그는 이것을 다른 사람들에게 리포팅한다. 이는 다수의 방식들로 이루어질 수 있다. (예컨대, 병원 셋팅에서) 코-로케이팅되는 부양자들에 대해, PCD(100)는 돌보는 사람이 속하는 개인의 무드를 표시하기 위해 조명/얼굴 그래픽들/자세의 결합을 사용할 수 있고, 따라서 부양자는 돌봄 하의 개인이 슬펐음/행복했음/화났음/등을 한눈에 알 수 있고 그에 따라 개입할 수 있다(또는 개입하지 않을 수 있다).
[00248] 코-로케이팅되지 않은 부양자들(예컨대, 여전히 혼자 사는 노부모를 돌보는 성인)에 대해, PCD(100)는, 자신이 어느 데이터를 제시하는지 그리고 어느 시간 기간들 동안 제시하는지에 관하여 커스터마이징가능한 모바일/웹 앱을 통해 이 감정 상태 데이터를 제공할 수 있다.
[00249] 일단 사용자의 무드의 이러한 이해가 설정되면, 단계(906)에서, PCD(100)는 그 무드의 변화를 시도하고 실행한다. 이는 독자적으로 일어날 수 있는데, PCD(100)는 이야기/농담 말하기, 연민, 게임 플레이, 감정 미러링 등의 프로세스를 통해 사용자 감정 상태의 긍정적 변화를 유발하려고 노력한다. 대안적으로, 주요 사용자가 부정적 감정 상태에 있음을 PCD(100)에 의해 통보받을 때, 부양자는, 그들이 알 수 있는 특정한 것들을 말하고/시도하고/수행하도록 PCD(100)에게 지시할 수 있고, 이는 이러한 특정 상황에서 부정적 감정들을 완화시킬 것이다.
[00250] 나이트 라이트
[00251] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 나이트 라이트 특징을 사용하여 구성될 수 있다. 이 특징에 따라, PCD(100)는 사용자가 한밤중에 웨이크한다면 애니메이팅되는 종야등으로서 동작할 수 있다. 정확한 조건들이 충족된다면(예컨대, 시간이 한밤중이고, 주변광이 매우 낮고, 장시간 동안 정적 및 침묵 또는 슬리핑 소음들이 존재했고, 이후에 갑자기 이동 또는 말하기가 존재한다면), PCD(100)는 부드럽게 웨이크할 수 있고, 진정시키는 색으로 방울(pompom)을 조명할 수 있고, 아마도 사용자가 오케이(OK)하는지를 질문할 수 있다. 일부 실시예들에서, PCD(100)는 진정시킬 수 있는 활동 또는 앱을 제안할 수 있고, 사용자가 자러 리턴하는 것을 도울 수 있다.
[00252] 무작위 귀여움 동작들
[00253] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 무작위 귀여움 동작들 특징을 사용하여 구성될 수 있다. 이 특징에 따라, PCD(100)는 기쁘게 하도록 또는 진지하게 생각을 하게 하도록 설계되는 식으로 온종일 다양한 시간들에 이러니저러니 말하고/질문들을 하도록 동작할 수 있다. 일 실시예에서, 이 기능은 PCD(100)와의 자유로운 형태의 자연 언어 대화를 수반하는 것이 아니라, 생각/대화를 위한 소재로서 재미있고, 귀엽고, 웃긴 것들 등을 말할 PCD(100)의 능력을 수반한다.
[00254] 일부 실시예들에서, PCD(100)는 생성, 유지, 및 가끔 리프레쉬되는 속담들, 문구들, 농담들 등의 데이터베이스 ―이 데이터베이스는 PCD(100) 내부에 있거나 또는 외부적으로 위치됨― 에 액세스할 수 있다. 데이터는 예컨대 날씨, 스포츠, 뉴스 등으로부터 나올 수 있다. RSS는 다른 PCD(100)들로부터의 클라우드 소싱, 및 사용자 프로파일들을 피딩한다. 이러한 비트들을 메타태깅하고 메타태그들을 개별 PCD(100) 사용자 선호도들과 비교하는 프로세스를 통해, 적절한 사실 또는 속담이 모든 각각의 개별 PCD(100)에 전송될 수 있다.
[00255] PCD(100)가 무작위 귀여움 동작을 전달하기로 결정할 때, PCD(100)는 클라우드에 연결될 수 있고, 사용자 ID 등을 제공할 수 있으며, 데이터 저장소로부터의 비트를 요청할 수 있다. 위에서 설명된 바와 같이, 서버는 사실을 사용자 선호도들, 요일/날짜/시간, 사용자의 홈 영역의 날씨 등에, 그 사용자에 전달할 최선의 비트를 결정하기 위해 매칭시킬 것이다.
[00256] 일부 실시예들에서, 이 특징은 단순한 질문의 형태를 취하도록 기능할 수 있는데, 여기서 질문은 답신의 인식을 더 쉽게 만들기에 충분할 정도로 구체적이고, 동시에 이러한 질문들에 대한 답신들은 그 사용자의 프로파일을 형성하는 것을 돕는데 사용될 수 있으며, 따라서 정확한 시간들에 그/그녀의 PCD(100)에 전달되는 비트들을 더욱 잘 피팅하는 것이 보장된다. 다른 실시예들에서, 사용자는 단순한 터치 인터페이스를 통해 또는 자연 언어 인터페이스를 통해 귀여움 동작을 구체적으로 요청할 수 있다. 일부 실시예들에서, 이 특징은 이러한 특정한 사용자가 관심이 있는 비트들을 제공하는데 호전되도록 알고리즘을 인에이블링하기 위해서 "좋아요/싫어요" 사용자 피드백 권유를 사용할 수 있다.
[00257] DJ PCD
[00258] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 DJ 특징을 사용하여 구성될 수 있다. 이 특징에 따라, PCD(100)는 뮤직 플레이, 댄싱, 및 PCD(100)로부터의 제안들을 특징으로 하도록 동작할 수 있다. 이 특징은 여러 모드들에서 동작할 수 있다. 이러한 모드들 또는 기능들은 단순한 터치 인터페이스(시작부터 원하는 동작까지 2개 이하의 두드림들)를 통해 또는 다른 실시예들에서 자연 언어 인터페이스를 통해 액세스 및 제어될 수 있다. 뮤직은 로컬로 저장될 수 있거나 또는 외부 소스로부터 수신될 수 있다.
[00259] PCD(100)가 이 특징을 사용하여 노래를 플레이할 때, PCD(100)는 노래에 댄스 애니메이션들, 조명/컬러 쇼들, 표정들 등을 동반시키기 위해 박자 트랙킹(beat tracking)을 사용할 수 있다. PCD(100)의 노래 선택은, 하기와 같은 모드들 중 어느 모드가 선택되는지에 의존할 수 있다:
[00260] 쥬크박스 모드
[00261] 이 모드에서는, PCD(100)가 사용자가 선택하는 특정한 노래, 아티스트, 또는 앨범을 플레이할 수 있다.
[00262] 무드박스 모드
[00263] 이 모드에서는, 사용자가 특정한 무드의 노래를 요청한다. PCD(100)는 노래를 선택하기 위해 무드 메타태그들을 사용할 수 있다. 사용자는 판도라와 유사하게 노래들에 대한 피드백을 제공할 수 있고, 이는 PCD(100)가 미래 선택들을 위해 가중치들을 맞추도록 허용한다.
[00264] 앰비언트 뮤직 모드
[00265] 일단 사용자가 이 모드를 선택하면, PCD(100)는 룸에서 백그라운드 분위기를 생성하기 위해서 플레이할 노래들 및 이 노래들을 플레이할 볼륨들을 선택하기 위해 웹으로부터의 정보(날짜, 주중 요일, 하루중 시간, 달력 이벤트들, 바깥 날씨 등), 뿐만 아니라 센서들(102, 104, 106, 108, 112)(예컨대, 룸에 있는 사람들의 수/활동 레벨, 노이즈 레벨들 등)로부터 정보를 사용한다. 사용자들은 볼륨을 제어하거나 노래를 스킵할 능력을 가질 수 있다. 부가하여, 앰비언트 뮤직 모드를 떠나지 않고, 사용자들은 아무 때나 특정한 노래를 요청할 수 있다. 요청된 노래는 플레이될 수 있고, 그리고 (볼륨 변경들에 대해서와 같은) 사용자 선택은 미래 선택 가중치들에 사용될 수 있다.
[00266] PCD 기호들
[00267] 일부 실시예들에서, 이 모드에 직접 액세스할 수 있지만("what kind of music do you like, PCD?"), PCD(100)는 또한 때때로, 노래들의 스트림에 하나 또는 그 초과의 선택들을 끼워넣을 수 있거나, 또는 쥬크박스 또는 무드박스 모드의 개시 시 선택을 플레이하려고 노력할 수 있다(앰비언트 뮤직 모드에서는, PCD(100)가 이를 수행하지 않을 수 있다). PCD의 뮤직 선택들은, PCD(100) 주식회사(Inc)로부터 규칙적으로 업데이트되는 목록들에 기초할 수 있거나, 작곡가들에 의해 생성될 수 있거나 또는 예컨대 다른 PCD들로부터의 클라우드 소싱 노래 선택들에 의해 생성될 수 있다. PCD(100) 기호들은 또한, 사용자의 네트워크의 특정한 PCD(100)로부터 특정한 노래를 뽑을 수 있는데, 예컨대, PCD(100)는 "Your daughter is requesting this song all the time now"를 알릴 수 있고, 이후 딸의 즐겨찾기 노래를 플레이할 수 있다.
[00268] 댄싱 PCD
[00269] 예시적이며 비제한적인 실시예들에 따라, 임의의 모드에서 노래를 플레이한 후, PCD(100)는 그것이 어땠는지를 물을 수 있거나(그리고 사용자의 답신에 의존하여 적절하게 행복 또는 슬픔으로 응답할 수 있음), 또는 사용자가 얼마나 잘 댄싱했는지에 관한 점수를 사용자에게 제공할 수 있다. 또한, PCD(100)는 사용자 댄싱의 포토들을 캡쳐할 수 있고, 그리고 이 포토들을 사용자의 PCD 프로파일, 사회적 미디어 사이트에 업로딩하거나 또는 이 포토들을 이메일링하도록 제공할 수 있다. 다양한 기능 모드들이 하기를 포함한다:
[00270] 상대방 복사
[00271] 이 모드에서는, PCD(100)가 플레이할 노래를 선택하고, 이후 비스(vis)/RGBD 카메라 시야에서 사용자를 포착하기 위해 사운드 위치/얼굴/스켈레톤 추적을 사용한다. 사용자가 뮤직을 따라서 댄싱할 때, PCD(100)는 사용자의 댄스를 모방하려고 노력할 수 있다. 사용자가 뮤직에 박자를 맞추는데 실패한다면, 뮤직은 스피드가 떨어지거나 올라갈 수 있다. 노래의 끝에서, PCD(100)는 사용자의 이동들을 복사할 때 그것이 어떻게 수행했는지를 물을 수 있거나, 또는 사용자가 얼마나 잘 박자를 맞추었는지에 관한 점수를 사용자에게 제공할 수 있다. 또한, PCD(100)는 사용자 댄싱의 포토들을 캡쳐할 수 있고, 그리고 이 포토들을 사용자의 PCD 프로파일, 소셜 미디어 사이트에 업로딩하거나 또는 이 포토들을 사용자에게 이메일링하도록 제공할 수 있다.
[00272] 카피 PCD
[00273] 이 모드에서, PCD(100)는 춤추고, 사용자는 춤을 모방하려고 노력한다. 다시, 사용자가 양호하게 태스크를 완수하고 있지 않는 경우, 음악의 재생에 영향을 미친다. 일부 실시예들에서, 별개의 스크린은 사용자 및 PCD(100) 둘 모두가 모방하기 위한 인간 댄서를 도시한다. 사용자 및 PCD(100) 둘 모두는 그들의 춤을 추고, 그 다음, PCD(100)는 자기 자신과 사용자 둘 모두를 등급화(grade)한다.
[00274] 따라서 춤추기
[00275] 이 모드에서, 사용자는 라디오, iPod, 노래부르기, 허밍 등으로부터 음악을 재생하고, PCD(100)는 춤을 추려고 노력하여, 그것이 결국 얼마나 잘 수행하였는지를 묻는다.
[00276] 스토리 액팅/애니메이팅
[00277] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 스토리 액팅/애니메이팅 특징(feature)로 구성될 수 있다. 이 특징에 따라, PCD(100)는 사용자가 PCD(100)와의 상호작용식 수행에 대한 플레이들을 구입하게 하도록 동작할 수 있다. 도 10을 참조하면, 예시적이며 비제한적인 실시예의 흐름도(1000)가 예시된다. 단계(1002)에서, 플레이들이 구매되고 사용자의 PCD 클라우드 프로파일에 저장될 수 있거나, 이들은 넷플릭스(Netflix) 스타일로 렌트될 수 있다.
[00278] 플레이들/장면들의 구입은, 예컨대, 안드로이드 앱 또는 웹 인터페이스를 통해 발생할 수 있고, 여기서, 가상 PCD(100)는 구입 및 설치 프로세스를 통해 사용자에게 안내할 수 있다. 일부 실시예들에서, 단계(1004)에서, 사용자들은 자신들이 수행하기를 원하는 플레이/장면을 선택할 수 있다. 이 선택뿐만 아니라, 그것을 사용하는 동안의 특징의 제어는 단순한 터치 인터페이스(PCD(100)의 아이(eye) 또는 바디)를 통해 또는 자연 언어 인터페이스를 통해 달성될 수 있다. 단계(1006)에서, 일단 사용자가 플레이를 선택하면, PCD(100)는 사용자가 리허설하거나 수행하기를 원하는지 여부를 물어볼 수 있고, 이는 진입될 모드를 지시할 것이다.
[00279] 선택된 모드와 관계없이, 단계(1008)에서, PCD(100)는 사용자가 어떤 캐릭터가 플레이에 있기를 원하는지 사용자에게 물어봄으로써 시작할 수 있다. 이것 이후, 먼저, PCD(100)는 그 플레이가 다시 선택되는 경우, 그 선택을 검증할 것이고, 사용자는 언제라도 변경할 수 있다.
[00280] 리허설 모드
[00281] 단계(1010)에서, 일단 사용자가 리허설 모드에 진입하면, PCD(100)는 사용자가 플레이에 익숙하도록 플레이를 수행하도록 제안할 수 있다. 사용자가 이미 익숙한 경우, 사용자는 이것을 스킵할 수 있다. 단계(1012)에서, PCD(100)가 플레이를 수행하기를 사용자가 원하는 경우, PCD(100)는 사용자가 철저한 판독을 수행할 때 사용자의 역할에 대한 라인들을 강조할 수 있다.
[00282] 이 판독 이후, 단계(1014)에서, PCD(100)는 라인들을 사용자에게 교시하는 것을 시작할 수 있다. 각각의 라인에 대해, PCD(100)는 프롬프트(prompt) 및 라인을 알리고, 그 다음, 사용자가 라인을 열거(recite)하는 동안 터치 스크린(104) 상에 단어들을 보여줄 수 있다. PCD(100)는 스피치 인식을 사용하여 사용자가 정확한지 여부를 결정할 수 있으며, 사용자가 라인을 정확하게 반복할 때까지 계속 노력할 것이다. 그 다음, PCD(100)는 프롬프트를 사용자에게 제안하고, 사용자들이 라인을 반복하게 할 수 있어, 사용자가 프롬프트에 대해 라인을 적절히 반복할 수 있을 때까지 다시 노력한다. 그 다음, PCD(100)는 다음 라인으로 이동할 수 있다.
[00283] 단계(1016)에서, 일단 사용자가 모든 라인들을 학습했다면, PCD(100)는 응답의 적절한 라인에 대해 체크하고 필요한 경우 사용자에게 프롬프트하여 모든 프롬프트들로 예행 연습을 행한다.
[00284] 먼저, 프롬프트들은 라인을 제안하는 형상으로의 아이 모핑(eye morphing)을 갖는 그래픽 형태를 취할 수 있다는 점이 주목된다. 이것은 프롬프트에서의 첫 번째 시도일 수 있고, 사용자가 여전히 라인을 기억할 수 없는 경우, PCD(100)는 언어적 프롬프팅(verbal prompting)으로 진행할 수 있다.
[00285] 수행 모드
[00286] 단계(1018)에서, 일단 사용자가 자신이 나타내길 원하는 캐릭터에 대한 모든 라인들을 기억한다면, 사용자는 수행 모드에 진입할 수 있다. 이 모드에서, PCD(100)는, 사용자가 자신의 라인들을 말하게 하도록 일시정지(pause)하고 사용자가 더듬거리거나 잊은 경우 프롬프팅하여, 플레이의 풀 업(full up) 수행을 이행할 것이다. PCD(100)는 이 수행 동안, 심지어 사용자-전달 라인들 동안에도, 전체 사운드 효과들, 백그라운드 음악, 애니메이션들 및 조명 효과들을 이용할 것이다. 일부 실시예들에서, 플레이가 수행된 이후, PCD(100)는, (가능한 경우) 사용자가 플레이하는 캐릭터의 입에 동기화되고 포함되는 사용자의 라인들 동안 사용자의 음성 오디오를 갖는 플레이의 카툰(cartoon)/애니메이션(animated) 버전을 생성할 수 있다. 이 카툰은 PCD 클라우드에 저장되거나, 소셜 미디어 사이트들에 포스팅되거나, 공유/기억하기 위해 사용자에게 이메일 전송될 수 있다. 일부 실시예들에서, PCD(100)는 또한, 다수의 참여자들(각각은 그들 자신의 캐릭터를 플레이함)에 의해 플레이들을 수행하도록 구성될 수 있고, 참여자들은 (예컨대, 텔레플로우(teleflow)의 다른 종단에서) 원격일 수 있다.
[00287] 춤추는 PCD - 공유
[00288] 예시적이며 비제한적인 실시예에 따라, PCD(100)는 위에서 설명된 춤추는 PCD 앱의 추가 특징을 사용하도록 구성될 수 있다. 이 특징의 일부 실시예들에서, 사용자는 PCD(100)에 대한 커스텀 댄스(custom dance)를 생성할 수 있다. 이것은 모바일 또는 웹 앱을 통해 생성되어서, 사용자가 노래를 고르고 PCD(100)가 음악과 함께 수행하도록 함께 조합할 댄스 동작들을 선택하게 한다. 사용자는 또한, PCD(100)가 춤이 PCD(100)와 협력적으로 생성되도록 댄스 동작을 고르게 할 수 있다. 일부 실시예들에서, 조명/사운드 효과들(예컨대, PCD가 "get down!"이라 말함)이 추가되어 댄스와 동기화될 수 있다. 다른 실시예들에서, 가상 PCD(100)에 의해 수행되는 친구들에게 보여지고, 온라인에 저장되는 등의 식으로, PCD(100) 춤들은 다른 PCD들(100)에게 전송될 수 있다. 사용자는 또한, 다른 PCD(100) 사용자들에 의해 생성되는 다른 PCD(100) 춤들을 플레이할 수 있다.
[00289] 셀러브리티(Celebrity) 생성 콘텐츠
[00290] 예시적이며 비제한적인 실시예들에 따라, 이 특징은 사용자가 자신의 PCD(100) 셀러브리티 생성 콘텐츠에 대해 다운로드 또는 스트리밍하게 한다. 콘텐츠는 웹 인터페이스 또는 안드로이드 앱을 통해 선택되며, 여기서, 가상 PCD(100)는 콘텐츠 구입의 프로세스를 통해 사용자에게 안내할 수 있다. 콘텐츠는 다음 중 어느 하나일 수 있다:
[00291] 프리레코딩(Prerecorded)
[00292] 이것은 영화들, Mystery Science Theater 3000 타입의 농담들 등에 대한 디렉터/액터 코멘터리를 포함할 수 있다. 모든 콘텐츠는 영화에 큐잉될 수 있다. 오디오 워터마킹은 콘텐츠의 PCD(100)의 전달을 관찰되고 있는 미디어와 동기화하기 위해 사용될 수 있다.
[00293] 라이브 스트리밍
[00294] 이 모드에서, PCD(100)는 중심 위치에서 셀러브리티/전문가(pundit)에 의해 실시간으로 생성되고 있는 콘텐츠를 스트리밍할 수 있다. 콘텐츠 크리에이터는 또한, 말한 단어를 보완하도록 애니메이션들/조명/컬러 효과들을 달성하기 위한, 실시간 "인형(puppet)" PCD(100)에 대한 능력을 가질 수 있다. 이러한 경우들에서, 콘텐츠 크리에이터가 이론적으로 사용자와 동시에 이벤트를 관찰하고 실시간으로 코멘터리를 생성할 것이기 때문에, 어떠한 오디오 워터마킹도 필요하지 않다. 이것은 정치 전문가들이 대통령 연설들, 선거 보도 등에 대해 코멘터리를 제공하는 것 또는 사용자의 좋아하는 선수가 스포츠 이벤트에 대한 코멘터리를 제공하는 것을 포함할 수 있다.
[00295] 예시적이며 비제한적인 실시예에 따라, PCD(persistent companion device)(100)는 사람 또는 사람들의 환경 내에서 계속적으로 또는 거의 계속적으로 상주하도록 적응된다. 일 실시예에서, 사람은 사람을 식별하는 다양한 파라미터 데이터가 PCD에 의해 포착되거나 PCD에 이용가능하게 이루어지는 사람의 특정 예이다. 아래에서 더 충분히 설명되는 바와 같이, 사람의 ID와 더불어, PCD(100)는 거동(스케줄들, 루틴들, 습관들 등), 선호도들, 태도들, 목표들, 태스크들 등의 패턴들을 추가로 인식할 수 있다.
[00296] 식별 파라미터 데이터는 예컨대, 위에서 설명된 센서들(102, 104, 106, 108, 112) 중 하나 또는 둘 이상을 사용하는 음성 인식, 안면 인식 등을 사용하여 사람의 존재를 식별하기 위해 사용될 수 있다. 파라미터 데이터는, 이를테면, PCD(100)의 메모리 내에서 로컬로 또는 PCD(100)가 이를테면, 블루투스, 와이파이 등을 통해 유선 또는 무선 통신하는 서버 상에서 원격으로 저장될 수 있다. 이러한 파라미터 데이터는 PCD(100) 또는 서버에 수동으로 입력될 수 있거나, 초기화 프로세스의 일부로서 또는 시간이 지남에 따라 PCD(100)에 의해 포착될 수 있다.
[00297] 예컨대, 그렇지 않고 초기화되지 않은 PCD(100)를 사용자의 환경으로 이동시킬 시, 사용자는 PCD(100)가 사용자의 음성, 안면 특징들 등(및 다른 관련 사실 정보)의 예를 포착하기 위해 함께 상호작용/동작되는 초기화 프로시저를 수행할 수 있다. 아래에서 더 충분히 설명되는 패밀리 허브(family hub) 실시예에서, 사회적 네트워크를 형성하는 사용자들이 연장된 패밀리를 포함하는 경우, 다수가 존재할 수 있다. 이 데이터는 PCD(100) 내에 저장될 수 있으며, 마찬가지로, 이를테면, 예컨대, 서버에서 외부 저장을 위해 PCD(100)에 의해 통신될 수 있다. 다른 식별 사용자 데이터, 이를테면, 사용자 이름, 사용자 생일, 사용자 아이 색, 사용자 헤어 색, 사용자 몸무게 등은, 이를테면, PCD(100)의 부분의 형성 또는 서버의 그래픽 사용자 인터페이스, 스피치 인터페이스를 통해 수동적으로 입력될 수 있다. 일단 파라미터 데이터의 일부가 PCD(100)에 입력되거나 그렇지 않으면 PCD(100)에 의해 포착되면, PCD(100)는 다른 파라미터 데이터를 추가적으로 포착하도록 동작할 수 있다. 예컨대, 이를테면, 미리 결정된 텍스트를 PCD(100)에 열거함으로써 샘플 음성 시그니처를 제공하는 것을 포함하는 초기화를 수행할 시, PCD(100)는 말하고 있는 사용자를 식별하고 안면 식별에 대해 요구되는 안면 특징 데이터를 포착하도록 자율적으로 동작할 수 있다. PCD(100)가 사용자의 환경 내에서 지속적 존재를 유지할 때, PCD(100)는 사용자의 다양한 파라미터 데이터를 포착하도록 시간이 지남에 따라 동작할 수 있다.
[00298] 일부 실시예들에서, 초기화 동안에, PCD(100)는 사람의 ID 이외의 사람에 관한 관련된 정보를 획득하도록 동작한다. 위에서 언급된 바와 같이, PCD(100)는, 백그라운드 정보, 인구통계 정보, 선호도들, 연락처 정보(이메일, 셀 폰 등), 관심들, 기호들, 성격 등을 획득하도록 동작할 수 있다. 그러한 경우들에서, PCD(100)는, 예컨대, "숙지하는(getting acquainted)" 상호작용 동안에, 텍스트 기반/GUI/스피치 입력 정보를 획득하도록 동작할 수 있다. 부가하여, PCD(100)는 또한, PCD(100)로 직접적으로 입력될 수 있을 뿐만 아니라, PCD들(100) 사이에서 공유될 수 있는, 가족 중심(예컨대, 연장자 부모, 자식 등)의 개인화된 파라미터화된 정보 및 연락처 정보를 획득하도록 동작할 수 있다. 아래에서 더 완전히 설명되는 다양한 실시예들에서, PCD(100)는 확대 가족과의 가족 연결을 용이하게 하도록 동작한다. 아래에서 더 설명되는 바와 같이, 사람의 스케줄, 이벤트들, 무드 등을 포함하지만 이에 제한되지는 않는 일간 정보는, PCD(100)가 사용자에게 어떻게 상호작용하고, 추천하고, 활동들을 제안하고, 정보를 제안하는지 등에 대한 중요한 상황을 제공할 수 있다.
[00299] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)에 의해 획득된 상황적, 종단 데이터는 적응 시스템을 용이하게 하며, 적응 시스템은, 사용자(들)의 관심들, 선호들, 사용 사례들에 점점 더 맞춰지게 되도록, 그 적응 시스템의 기능들 및 특징들을 구성한다. 예컨대, PCD(100)가, 사용자가 음악을 좋아하는 것을 학습하는 경우에, PCD(100)는, 좋아하는 음악을 발견하고, 그 종류의 음악을 플레이하고, 정보에 근거한 음악 추천들을 할 수 있도록, 클라우드로부터 "음악 속성"을 자동적으로 다운로딩할 수 있다.
[00300] 이러한 방식으로, PCD(100)는 사용자의 생활에 관하여 학습한다. PCD(100)는 실세계에서의 사용자를 감지할 수 있고, PCD(100)는, PCD(100)에 연결된, 다른 디바이스들, 기술들, 시스템들, 개인 컴퓨팅 디바이스들, 개인 전자 디바이스들의 생태로부터 데이터를 수집할 수 있다. 종단 데이터의 이러한 수집으로부터, PCD(100)는, 그것으로 하여금 사용자에 관하여 학습할 수 있게 하고, 그것이 제공할 수 있는 기능들에 대해 더 우수하게 적응되고 매칭되도록 그 자체를 구성할 수 있게 하는 활성의 패턴들 및 사람에 관하여 학습한다. 중요하게, PCD(100)는, 당신의 생활에서 중요한 사람들(당신의 확대 가족)인 당신의 사회/가족 패턴들에 관하여 학습하고, 그것은 당신의 감정들/무드들에 관하여 학습하고 추적하고, 그것은 (당신이 어떤 것들을 행하는 경향이 있는 경우에) 중요한 거동 패턴들에 관하여 학습하고, 그것은 당신의 선호들, 기호들 등을 학습하고, 그것은 당신이 알고 싶어하는 것, 당신을 즐겁게 하는 것 등을 학습한다.
[00301] 아래에서 더 완전히 설명되는 바와 같이, PCD(100)는, PCD(100)와 PCD(100)의 사용자의 상호작용들에 관한 데이터를 수집하기 위한 종단 데이터 수집 설비를 제공하기 위해, 사용자와 상호작용하도록 구성된다.
[00302] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는, 시각, 청각, 및 촉각 센서들(102, 104, 106, 108, 112)을 수반하는 상호작용을 통해 사용자와의 지속적인 상호작용의 하나 또는 그 초과의 속성들을 포함하는 종단 데이터를 획득하도록 구성된다. 각각의 경우에서, 시각, 청각, 및 촉각 감각들은 인지될 수 있거나, 또는 그렇지 않으면, 사용자로부터 PCD(100)에 의해 획득될 수 있을 뿐만 아니라, PCD(100)에 의해 사용자에게 전달될 수 있다. 예컨대, PCD(100)는, 사용자의 활성들, 감정 상태, 및 메디컬 상태에 관련된 데이터를 포함하는, 사용자로부터의 시각 정보를 획득하기 위해, 카메라 센서(106)를 포함할 수 있다. 마찬가지로, PCD(100)는, 스피치 인식으로부터 유도된 데이터, 스트레스 레벨들에 관련된 데이터, 뿐만 아니라, 사용자에 의해 활용된 엔터테인먼트 매체들의 아이덴티티와 같은 상황적 정보를 포함하는, 사용자로부터의 오디오 정보를 획득하기 위해, 오디오 센서(112)를 포함할 수 있다. PCD(100)는, PCD(100)를 허깅(hugging)하는 것 및 페팅(petting)하는 것을 포함하지만 이에 제한되지는 않는, 사용자의 터칭 또는 PCD(100)와 물리적으로 접촉하는 것에 관련된 데이터를 포함하는, 사용자로부터의 촉각 정보를 획득하기 위해, 촉각 센서(102)를 더 포함할 수 있다. 다른 실시예들에서, 사용자는 또한, PCD(100)의 터치 스크린 인터페이스를 네비게이팅하기 위해 터치를 사용할 수 있다. 다른 실시예들에서, 사용자 또는 PCD(100)의 위치가, 예컨대, 사용자가 휴대하고 있고, 위치 상황-관련된 정보를 제공하고 서비스들을 제공하기 위한 입력으로서 사용되는 셀 폰을 통해, 결정될 수 있다.
[00303] 언급된 바와 같이, 시각, 청각, 및 촉각 감각들은 PCD(100)에 의해 사용자에게 전달될 수 있다. 예컨대, 오디오 출력 디바이스는, 사운드들, 알람들, 음악, 음성 명령들 등을 출력하고, 사용자와의 대화에 관여하기 위해 사용될 수 있다. 유사하게, 그래픽 엘리먼트는, 사용자에게 이미지들 및 텍스트를 전달하기 위해 활용될 수 있을 뿐만 아니라, 사용자와 PCD(100) 사이의 통신 상호작용의 부분을 포함하는 그래픽 데이터를 전달하도록 동작할 수 있다. 그것은 주변 광 및 다른 큐들(그것의 LED 폼 폼(LED pom pom))을 사용할 수 있다. 촉각 디바이스(102)는, 예컨대, 진동을 통해, 감정 상태들 및 포함하는 다양한 다른 데이터를 PCD(100)에 전달하고, 디바이스의 인터페이스/콘텐츠를 네비게이팅하기 위해 사용될 수 있다. 디바이스는 사용자의 상황, 무드 등에 적합한 상이한 냄새들을 방출할 수 있다.
[00304] 정보는 PCD(100)에 연결된 상이한 디바이스들을 통해 수집될 수 있다. 이는, 제 3자 시스템들(예컨대, 메디컬, 홈 보안 등의 데이터), 모바일 디바이스 데이터(음악 플레이리스트들, 포토들, 검색 히스토리, 달력, 연락 리스트들, 비디오들 등), (특히, PCD(100) 포털을 통해 입력된) 데스크톱 컴퓨터 데이터로부터 유래할 수 있다.
[00305] 위에서 설명된 센서들에 부가하여, 사용자와 PCD(100) 사이의 상호작용들에 수반되는 정보 및 데이터는, 다양한 데이터 소스들로부터 획득될 수 있고, 다양한 데이터 소스들 상에 저장될 수 있고, 다양한 데이터 소스들로 출력될 수 있다. 예시적이며 비제한적인 실시예들에서, 상호작용 데이터는, 클라우드 데이터 또는 연결의 다른 모드들(블루투스 등)을 통해 사용자와 PCD(100) 사이에서 송신될 수 있고 저장될 수 있다. 일 실시예에서, PCD(100)와의 상호작용을 가능하게 하기 위해, 사용자의 클라우드 저장된 데이터에 PCD(100)에 의해 액세스가 가능하게 될 수 있다. 예컨대, PCD(100)는, 인터넷을 검색할 수 있고, 앱/서비스를 사용할 수 있거나, 또는 클라우드 스토리지로부터의 사용자의 스케줄과 같은, 클라우드로부터의 데이터에 액세스할 수 있고, 그로부터 유도된 정보를 사용하여, 상호작용들을 트리거링할 수 있다. 일 예로서, PCD(100)는, 사용자가 근처의 레스토랑에서 9:00 am에 친구와 조식 약속이 있다는 것이 주목될 수 있다. PCD(100)가, 약속 5분 전에 홈에 사용자가 있다는 것을 주목한 경우에, PCD(100)는, 사용자가 출발할 준비를 해야 하지 않는지를 질의하기 위해, 오디오 디바이스(110)를 통해 스피킹함으로써, 사용자와 상호작용할 수 있다. 예시적인 실시예에서, PCD(100)는, 현재의 GPS 좌표들 및 레스토랑의 GPS 좌표들에 기반하여, 이동 시간 계산을 자율적으로 수행함으로써, 이러한 공적을 달성할 수 있다. 이러한 방식으로, PCD(100)는, 사용자와 PCD(100) 사이의 라포 형성 상호작용들을 발생시키는 액션들을 트리거링하기 위해, 액세스된 온라인 또는 클라우드 데이터에 하나 또는 그 초과의 알고리즘들을 적용할 수 있다. 사람들은, 사회적 네트워킹, 실시간 또는 비동기 방법들, 예컨대, 텍스트들을 전송하는 것, 실시간 오디오-시각 연결을 확립하는 것, 다른 앱들/서비스들(페이스북, 트위터 등)을 통해 연결하는 것 등을 통해 PCD(100)와 통신할 수 있다. 다른 예들은, 상호작용들을 트리거링하기 위해 사용될 수 있는 아이튠즈(itunes) 및 넷플릭스(Netflix) 데이터를 포함하지만 이에 제한되지는 않는, 클라우드에 저장된, 사용자의 엔터테인먼트 및 매체 파일들로의 PCD(100)에 의한 액세스를 포함한다.
[00306] 유사한 방식으로, 다른 예시적인 실시예들에 따르면, 상호작용 데이터는, 사용자의 환경에 또는 그 근처에, 예컨대, 서버 또는 개인 컴퓨터 또는 모바일 디바이스 상에 저장될 수 있고, 사용자에 의해 액세스 가능할 수 있다. PCD(100)는, 마찬가지로, 클라우드에 데이터를 저장할 수 있다. 다른 실시예들에서, 상호작용 데이터는 PCD(100) 외부의 센서들을 통해 획득될 수 있다.
[00307] 예시적이며 비제한적인 실시예들에 따르면, 상호작용을 용이하게 하기 위해 활용될 수 있는, 활성 로그 및 디바이스 사용 로그가 생성될 수 있고, 예컨대, PCD(100) 상에, 서버 상에, 또는 클라우드에 저장될 수 있다. 활성 로그는, 사용자에 의해, PCD(100)에 의해, 또는 대화식 방식으로 사용자 및 PCD(100) 양자 모두에 의해 관여된 활성들을 레코딩하는 정보를 저장할 수 있다. 예컨대, 활성 로그는, 체스 게임에 관여하는 사용자 및 PCD(100)의 경우들을 레코딩할 수 있다. 부가적으로, 그러한 매칭들 동안의 사용자의 감정 상태에 관한 정보가 저장될 수 있고, 그로부터, 사용자의 즐거움 레벨이 추측될 수 있다. 이러한 데이터를 사용하여, PCD(100)는, 사용자가 얼마나 자주 체스를 플레이하기를 원하는지, PCD(100)와 사용자가 마지막으로 체스를 플레이한 이래로 얼마나 지났는지, 사용자가 체스 매칭에 관여하기를 원하는 가능성 등과 같은 것들을 결정할 수 있다. 유사한 방식으로, 언제, 얼마나 자주, 그리고 어떻게, 사용자가 PCD(100)와 상호작용하는 것을 선호하는지를 나타내는 디바이스 사용 로그가 저장 및 유지될 수 있다. 분명한 바와 같이, 활성 로그 및 디바이스 사용 로그 양자 모두는, 사용자와 PCD(100) 사이의 상호작용들의 품질 및 빈도 양자 모두를 증가시키기 위해 사용될 수 있다.
[00308] 예시적이며 비제한적인 실시예에 따르면, 상호작용 데이터는 수동 입력을 통해 획득될 수 있다. 그러한 데이터는, 사용자에 의해 직접적으로, PCD(100)의 부분을 형성하는 입력 디바이스들(102, 104, 106, 108, 112)을 통해 PCD(100)로 입력될 수 있거나, 또는 컴퓨팅 디바이스, 예컨대 서버, PDA, 개인 컴퓨터 등으로 입력될 수 있고, 예컨대 블루투스 또는 Wi-Fi/클라우드를 통해 PCD(100)로 송신될 수 있거나 또는 그렇지 않으면 통신될 수 있다. 다른 실시예들에서, 상호작용 데이터는 사용자와 PCD(100) 사이의 다이얼로그를 통해 PCD(100)에 의해 획득될 수 있다. 예컨대, PCD(100)는 일련의 질문들을 포함하는, 사용자와의 다이얼로그에 관여할 수 있고, 사용자의 답신들은 PCD(100) 상에서, 서버 상에서, 또는 클라우드에서 동작하는 스피치 인식 소프트웨어를 통해 텍스트로 변환되고, 결과들은 상호작용 데이터로서 저장된다. GUI 또는 터치-기반 상호작용에 대해서도 유사하다.
[00309] 예시적이며 비제한적인 실시예에 따르면, 상호작용 데이터는, 후각 데이터를 식별하도록 구성된 센서(102, 104, 106, 108, 112)를 통해 생성될 수 있다. 마찬가지로, PCD(100)는 후각 냄새들을 방출하도록 구성될 수 있다. 또 다른 실시예들에서, 상호작용을 향상시키기 위해, GPS 및 다른 위치 결정 장치가 PCD(100)에 포함될 수 있다. 예컨대, 어린이 사용자는 가족 여행 또는 방학에 자신의 PCD(100)를 가지고 갈 수 있다. 이동 중에, PCD(100)는 그것의 지리적인 위치를 결정할 수 있고, 근처의 랜드마크들을 결정하기 위해 인터넷에 액세스할 수 있고, 랜드마크들을 논의함으로써 장소 및 시간에 관련된, 어린이와의 다이얼로그에 관여할 수 있다.
[00310] 이러한 방식에서의 논의에 대한 주제들을 확인하는 것에 부가하여, 일부 실시예들에서, 이러한 상호작용들의 결과들은, 그 시간에 또는 나중 시간에, 미리 정의된 보안 설정들에 따라 복수의 사용자들로부터 그와 같이 포착된, 누적된 상호작용 데이터가 존재하는 원격 저장 설비에 전송할 수 있다. 이러한 방식에서, 위치와 같은 PCD(100) 포착 데이터 및 사용자의 속성들의 통계적 프로파일에 기반하여, 바람직한 상호작용 모드들의 중앙집중형 데이터베이스가 전개될 수 있다. 예컨대, 이전의 예에서, PCD(100)는 자신의 위치가, 항공 우주 박물관 인근의 그리고 자연사 박물관 건너편의 내셔널 몰 상에 있는 것으로 결정할 수 있다. 중앙집중형 데이터베이스에 액세스하여 사용자의 나이 및 위치를 제공함으로써, 사용자의 나이 프로파일에 매칭되는 다른 어린이들이 공룡(dinosaurs)에 흥미있어 하는 경향이 있음이 결정될 수 있다. 결과적으로, PCD(100)는 사용자를 자연사 박물관으로 향하게 하면서 공룡의 논의에 관여하기 시작한다.
[00311] 예시적이며 비제한적인 실시예에 따르면, PCD(100)는, 사용자의 다양한 생리적 그리고 물리적 속성들 및 파라미터들에 적어도 부분적으로 기반하여, 사용자와의 상호작용의 양상들을 변조(modulate)할 수 있다. 일부 실시예들에서, PCD(100)는 사용자의 시선의 방향을 결정하기 위해 시선 트랙킹을 이용할 수 있다. 이러한 정보는 예컨대, 사용자의 흥미를 결정하기 위해 또는 회피성(evasiveness)을 측정하기 위해 사용될 수 있다. 마찬가지로, 사용자의 심박동수 및 호흡률이 포착될 수 있다. 또 다른 실시예들에서, 사용자의 피부 톤(skin tone)이 시각적 센서 데이터로부터 결정되어, 사용자의 물리적 또는 감정적 상태를 확인하기 위해 활용될 수 있다. 센서들(102, 104, 106, 108, 112)을 통해 확인될 수 있는 사용자의 다른 거동 속성들은, 이에 제한되는 것은 아니지만, 음성 프로소디 및 단어 선택을 포함할 수 있다. 다른 예시적인 실시예들에서, PCD(100)는, 흔드는 것(waving) 또는 가리키는 것(pointing)과 같은 사용자의 물리적 제스처들을 확인 및 해석할 수 있고, 이는 추후에 상호작용을 위한 트리거들로서 활용될 수 있다. 마찬가지로, 사용자가 서 있는지, 구부정하게 있는지, 기대 있는지 등을 결정하기 위해, 사용자의 자세가 PCD(100)에 의해 평가 및 분석될 수 있다.
[00312] 다양한 예시적이며 비제한적인 실시예들에 따르면, PCD(100)와 사용자 사이의 상호작용은, 사용자의 결정된 감정적 또는 정신적 상태 또는 속성에 적어도 부분적으로 기초할 수 있다. 예컨대, PCD(100)는, 사용자가 예컨대, 불안해하는 것 같은지, 행복해하는 것 같은지, 걱정스러워하는 것 같은지, 즐거워하는 것 같은지 등을 확인하기 위해, 사용자가 아이를 깜빡이는 레이트, 사용자가 웃고 있는지 자신의 입술을 깨물고 있는지, 사용자가 웃음소리를 내는지 등을 결정 및 기록할 수 있다. 유사하게, PCD(100)는, 사용자 외에는 조용한 환경에서 사용자가 비교적 움직임없이 그리고 조용하게 있으면서 사용자의 시선이 공간의 포인트를 응시하는 것을 관찰하고, 사용자가 생각하는 상태 또는 혼란스러워하는 상태에 있음을 결정할 수 있다. 또 다른 실시예들에서, PCD(100)는, 자신의 머리를 끄덕이거나 흔드는 것과 같은 사용자 제스처들을 정신적 동의 또는 비동의의 표시들로서 해석할 수 있다.
[00313] 예시적이며 비제한적인 실시예에 따르면, 사용자가 상호작용하는 인터페이스의 일반적 속성들은, 의인화(anthropomorphic) 또는 비-인간(non-human) 기반 PCD(100)를 제공하도록 구성 및/또는 조정될 수 있다. 일 실시예에서, PCD(100)는 비-인간 동물(non-human animal)의 특성들을 디스플레이하도록 구성된다. 그렇게 하는 것에 의해, 특정 동물에 대한, 사용자에 의한 기존의 감정적 애호성(emotional predilection)을 모방 및/또는 증폭시킴으로써, PCD(100)와 사용자 사이의 상호작용이 향상될 수 있다. 예컨대, PCD(100)는, 개가 행동할 때 짖는 것에 의해 흥분 상태를 전달하는 것을 모방할 수 있다. PCD(100)는 추가로, 사용자의 상호작용들에 응답하여 흔들 수 있는 꼬리 같은 부속물을 갖출 수 있다. 마찬가지로, PCD(100)는, 친숙한 고양이과의 "야옹(meow)"과 유사한 소리들을 출력할 수 있다. PCD(100) 인터페이스의 실시간 표현(real time manifestation)들에 부가하여, 이러한 인터페이스 속성들은, 상호작용을 추가로 향상시키기 위해 사용자의 에이징 프로세스 및 PCD(100) 동물 캐릭터를 조정함으로써, 시간에 걸쳐 바뀔 수 있다. 예컨대, 개에 기초하는 PCD(100) 캐릭터는, 처음 포착될 때 강아지의 동작들을 모방하고, 사용자와 PCD 캐릭터의 관계가 발전되고 있다는 의미를 사용자 쪽에 제공하기 위해 자신의 거동들 및 상호작용들을 점진적으로 발달시킬 수 있다.
[00314] 유의된 바와 같이, 동물들 또는 허구적인 존재(fictional creature)들에 기초하는 PCD 특성들에 부가하여, PCD(100)는 인간(human being)을 본떠 모델링된 의인화 인터페이스를 제공하도록 구성될 수 있다. 이러한 인간 또는 "페르소나"는 사전-구성되거나, 사용자 정의가능하거나 또는 이 둘의 임의의 조합일 수 있다. 이는, PCD(100)가 유명인사, 매체의 유명인 또는 캐릭터(예컨대, 래리 버드(Larry Bird), 존 스튜어트(Jon Stewart), 다운튼 애비(Dowton Abby)로부터의 캐릭터 등)의 매너리즘(mannerism)들 및 특성들을 취할 수 있는 경우, 인격화(impersonation)들을 포함할 수 있다. PCD(100)의 페르소나 또는 "디지털 소울"은, PCD(100) 상에 상주하는 것에 부가하여 PCD(100) 외부 (예컨대, 클라우드에) 저장될 수 있고, 그러므로 다른 PCD들(100) 상에 다운로드 및 설치될 수 있다. 이러한 다른 PCD들은 그래픽적일 수 있거나(예컨대, 그것의 화상(likeness)이 사용자 모바일 디바이스 상에 나타남), 다른 물리적 PCD(100)(예컨대, 새로운 모델)가 될 수 있다.
[00315] PCD(100)의 페르소나는 또한, 합성적 또는 기술적 성질일 수 있다. 결과적으로, PCD(100)는 의인화된 기술로서 기능하며, 디바이스 PCD(100)는, 사람, 동물, 알려진 캐릭터 등과 같은 이미 존재하는 다른 것을 모방하려고 시도하기 보다는, 자기 자신의 고유한 페르소나를 갖는 것으로 보여진다. 일부 실시예들에서, 시간에 걸쳐 그 사용자에게 더 양호하게 맞춰지도록 적응 및 수정될 수 있는, PCD(100)에 대한 사유 페르소나(proprietary persona)들이 생성될 수 있다. 예컨대, 사용자의 PCD(100)의 프로소디는, 친밀감 및 애정을 쌓는 그러한 기법들로서, PCD(100)의 사용자 자신의 프로소디에 더 가깝게 반영하도록 시간에 걸쳐 적응될 수 있다. PCD(100)는 또한, PCD(100)의 사용자가 구매한 임의의 코스메틱 또는 가상 아티팩트들에 부가하여, PCD(100)를 개인화(personalize) 또는 커스터마이징하기 위해, PCD(100)의 사용자의 기호(like)들 및 선호도(preference)들에 적응되도록, PCD(100)의 그래픽적 모습을 변경할 수 있다.
[00316] 예시적인 실시예에서, PCD(100)의 디지털 소울은, 사용자와 PCD(100) 사이의 상호작용들의 성질에 영향을 미치는 속성들뿐만 아니라, PCD(100)의 인터페이스의 속성들 및 특성들을 정의한다. 이러한 디지털 소울이, 사용자와의 상호작용에 관여하기 위해 PCD(100)에 의해 활용되는 상호작용 데이터 및 정보로부터 분기(bifurcate)되지만, 디지털 소울은 특정 사용자들과의 상호작용에 응답하여 시간에 걸쳐 변경될 수 있다. 예컨대, 사용자들 각각을 그들 자신의 PCD(100)와 분리시키는 것은, 예컨대, 알베르트 아인슈타인(Albert Einstein)과 같은 잘 알려진 역사적 인물에 기반하여 동일한 디지털 소울을 설치할 수 있다. 2개의 분리된 PCD들(100) 상에서의 설치 순간으로부터, 각각의 PCD(100)는 PCD(100)에 의해 발생되고 PCD(100)에 액세스가능한 사용자 특정 상호작용 데이터에 따라 상이한 방식으로 상호작용할 것이다. 디지털 소울은, 상이한 물리적 형태들(예컨대, 로봇 형태들) 또는 디지털 형태들(예컨대, 그래픽적 아바타들)로부터의 다수의 형태들로 구현될 수 있다.
[00317] 예시적이며 비제한적인 실시예에 따르면, PCD(100)는 수집된 데이터에 기반하여 상호작용들의 품질을 개선하기 위한 기계 학습 설비를 제공한다. 기계 학습을 수행하기 위해 활용되는 알고리즘들은, PCD(100) 상에, PCD(100)와 통신하는 컴퓨팅 플랫폼 상에서 발생될 수 있다. 예시적인 실시예에서, PCD(100)는, 코칭 및 트레이닝을 제공하도록 사용자와 상호작용하기 위해, 연관성 컨디셔닝을 이용할 수 있다. 연관성, 또는 "자발적(operant)" 컨디셔닝은 거동을 증가시키기 위해 강화(reinforcement)를 사용하는 것에 초점을 맞춘다. 이러한 프로세스를 통해, 거동과 그러한 거동에 대한 결과들 사이에 연관성이 형성된다. 예컨대, PCD(100)는, 움직이지 않고 가만히 있는 것과 대조적으로, 사용자가 일찍 깨어나서 침대에서 뛰쳐나갈 때, 행복 노이즈(happy noise)를 낼 수 있다. 시간에 걸쳐, PCD(100)와 사용자 사이의 이러한 상호작용은, 사용자가 더 일찍 일어나는 것에 동기부여하게 작용하는데, 그 이유는 사용자가 이러한 액션과 PCD들(100)의 명백한 행복 상태를 연관시키기 때문이다. 다른 예에서, PCD(100)는, 사용자가 운동중임을 PCD(100)가 관찰한 경우, 격려하는 소리들 또는 단어들을 낼 수 있다. 이러한 경우, PCD(100)는 사용자에 의해 원해지는 액션들을 위해 지속되는 긍정적 강화인자를 제공하도록 기능한다.
[00318] 다양한 예시적인 실시예들에 따르면, PCD(100)는, 이에 제한되는 것은 아니지만, 시간적 패턴 모델링 및 인식, 사용자 선호도 모델링, 특징 분류, 태스크/정책 모델링 및 강화 학습을 포함하는 기계 학습을 수행할 때, 당해 기술분야에 알려진 복수의 유형들의 분석 중 하나를 이용할 수 있다.
[00319] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는, 사용자와의 상호작용에 가장 적합화된 상호작용 모드를 식별하기 위해 시각적, 오디오, 운동감각적, 또는 "VAK" 모델을 이용할 수 있다. PCD(100)는 사용자의 지배적인 학습 스타일을 결정하도록 동작할 수 있다. 예컨대, 사용자가 대부분 시각적인 방식으로 정보를 처리함을 PCD(100)가 결정하는 경우, PCD(100)는 정보를 사용자에게 전달하기 위해 PCD(100)의 일부를 형성하는, 이를테면, 그래픽 디스플레이(104) 상에서, 차트들 또는 일러스트레이션들을 이용할 수 있다. 마찬가지로, PCD(100)는, 청각적 환경들에서, 그들을 기민하게 유지하는 것을 돕기 위해, 질문들 및 다른 프롬프트들을 사용자에게 발행하도록 동작할 수 있다.
[00320] 마찬가지로, 사용자가 대부분 청각적 방식으로 정보를 처리함을 PCD(100)가 결정하는 경우, PCD(100)는, 무슨 일이 있을지의 간략한 설명으로 새로운 상호작용들을 시작할 수 있고, 무슨 일이 있었는지의 요약으로 마무리 지을 수 있다. 마지막으로, 사용자가 대부분 운동감각적 방식으로 정보를 처리함을 PCD(100)가 결정하는 경우, PCD(100)는 움직임 및 터치를 수반하는 운동감각적 및 촉각적 상호작용들을 통해 사용자와 상호작용하도록 동작할 수 있다. 예컨대, 아침에 사용자를 깨워서 활동적이게 하기 위해, PCD(100)는 활동에 관여할 수 있으며, PCD(100)는 사용자에게 포옹을 요청한다. 다른 실시예들에서, 사회적 상호작용의 엘리먼트를 강조 및 강화하기 위해, PCD(100)는 상호작용과 관련된 향을 방출할 수 있다.
[00321] 하우스 주위에서 PCD(100)를 움직이게 하는 능력은 PCD(100)로서 중요한 양상이다. 동작시에, PCD(100)는 사람들로 하여금 스크린 정면에 멈춰 모여야(huddle)(현대의 비디오 회의) 하기보다는 "그들 삶의 흐름에서 머무르게" 하도록 허용하는, 통신하기 위한, 원격의 사람에게 물리적으로 체화되고(physically embodied) 그리고 물리적으로 사회적인 표현 방식을 제공하도록 동작한다. 그 결과, PCD(100)는 마치 사용자가 그들의 집에서 누군가를 방문하고 있었던 것처럼 일상적인 상호작용들에 대한 지원을 제공한다. 사용자는, 설겆이 등과 같은 다른 활성들을 하고 있었을 수 있고, PCD(100)가 룸 주위의 사용자를 추적할 수 있는 방법으로 인해 대화를 여전히 이어가고 있을 수 있다. 전술한 예시적인 실시예들에서, PCD(100)는 자체 센서를 갖도록 설계되어 룸 등을 가로지르는 이동(carry)을 출력한다. 중심 기술 양상들은 이하를 포함한다.
[00322] 사용자는 PCD(100)의 카메라 뷰를 제어할 수 있고, 이는 또한 타겟 물체 상에 자신의 카메라를 유지시키기 위해 역운동학(inverse kinematics)을 추적하고 행함으로써 이를 자동화하도록 도울 수 있다.
[00323] PCD(100)는 아이-컨택(eye-contact)과 같은 중요한 비-언어 큐들을 보존하는 방식으로 스크린에 사용자 당신의 표현(비디오 스트림, 그래픽들 등)을 렌더링할 수 있다.
[00324] PCD(100)는, 사람이 표현적 물리적 존재를 갖도록, 원격에 있는 사람의 머리 포즈, 바디 자세를 미러링할 수 있다. PCD(100)는 또한 라포(rapport)를 구축하기 위해 자세 미러링 및 동조(synchrony)와 같은 상황에 맞추도록 자신 소유의 표현 바디 움직임을 생성할 수 있다.
[00325] PCD(100)는 재미있는 애니메이션들 및 소리들을 추가로 트리거할 수 있다. 그래서, 사용자는 당신으로서 또는 재미난 캐릭터로서 정확하게 당신 자신을 전달하도록 시도할 수 있다. 이는 실제로 연관된 스토리 리딩을 위해 유용한데, 이 스토리 리딩에서 할머니가 그녀의 손녀딸과 원격으로 스토리를 읽으면서 스토리 세션 동안 서로 다른 캐릭터들을 취할 수 있다.
[00326] PCD(100)는 (PCD(100)를 수동으로 제어해야만 하는데 있어서의 인지 부하(cognitive load)를 감소시키기 위해) 스피커(speaker)에게 자체 응시/당신의 카메라 뷰를 자동으로 시프트하라고 말하는 누군가를 추적할 수 있다.
[00327] PCD(100)는 슬라이딩 자율성 인터페이스를 가져서, 이에 따라 원격의 사용자는 PCD(100)를 통해 더 많은 또는 더 적은 직접적 제어를 어써트할 수 있으며, 이는 보충하기 위해 자율성을 이용할 수 있다.
[00328] PCD(100)는, 사용자에게 (당신이 디바이스 정면에 머물러야하기 때문에 다른 디바이스들이 제공/가정하는 터널 비전보다 훨씬 더) 넓은 범위의 뷰를 제공할 수 있다.
[00329] 이러한 일들을 모두 함으로써 그리고 집 주위의 여러 장소들에 PCD(100)를 놓아둘 수 있음으로써, 원격의 사람은 이제 이들이 통신할 수 있을 뿐만 아니라 활성에 참여할 수 있다는 것을 느낀다. 취침시에 스토리를 공유할 수 있게 하기 위해, 플레이룸에 있어 손자들과 놀게 할 수 있게 하기 위해, 추수감사절 저녁을 원격으로 참여할 수 있게 하기 위해, 당신의 딸이 가족 레시피로 요리하는 것을 당신이 돕게 하기 위해 조리대에 참여할 수 있게 하기 위해서의 식이다. 이는, 당신이 실제로 어디서나 물리적 사회적 존재감을 갖는 것으로 느끼게 하도록, 핸즈 프리 동작을 지원한다.
[00330] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 사용자가 생활하고 동작하는 통상적인 환경의 여러 가지 표면들에 대해 또는 이들에 관해 안정적인 또는 균형잡힌 방식으로 포지셔닝되도록 구성 또는 적응될 수 있다. 예컨대, PCD(100)의 일반적으로 평평한 표면들은, 평활한 표면들 상에서 PCD(100)의 슬라이딩을 방지하도록 동작하는 마찰 패드들로부터 적어도 부분적으로 제작될 수 있거나 또는 마찰 패드들을 적어도 부분적으로 포함할 수 있다. 다른 실시예들에서, PCD(100)는 평평하지 않은 표면들 상에 PCD(100)를 포지셔닝하기 위해 수동으로 또는 자동으로 전개될 수 있는 부분적으로 탈착가능한 또는 텔레스코핑 부속물들을 채용할 수 있다. 다른 실시예들에서, 디바이스는, 그 디바이스로 하여금 그 환경에서 이리저리 움직이게 하거나 또는 물체들을 조작하게 하는 하드웨어 액세서리들을 가질 수 있다. 이 디바이스들에는 외부 표면들 또는 물체들 상에 디스플레이하게 하기 위해 레이저 포인터 또는 프로젝터가 장착될 수 있다. 이러한 인스턴스들에서, PCD(100)는 미끄럼을 추가로 저감하기 위해 부속물들의 사지들(extremities)에 또는 그 근처에 마찰 패드들을 포함할 수 있다. 또 다른 실시예들에서, PCD(100)는 표면으로의 일시적인 부착을 위해 PCD(100)의 외부 표면 또는 표면들 상에 하나 또는 그 초과의 석션 컵(suction cup)들을 포함할 수 있다. 또 다른 실시예들에서, PCD(100)는 PCD(100)를 자리에 고정시키고 그리고/또는 PCD(100)를 걸게 하기 위해 후크들, 루프들 등을 포함할 수 있다.
[00331] 다른 예시적인 실시예들에서, PCD(100)는 손으로 휴대가능하도록 적응된다. 구체적으로, PCD(100)는 10㎏미만의 중량이 되고 4,000㎤를 넘지 않는 체적을 점유하도록 구성된다. 추가로, PCD(100)는 PCD(100)를 운반하는데 사용하기 위한 부착된 또는 탈착가능한 스트랩 또는 핸들을 포함할 수 있다.
[00332] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는, 소셜 큐들의 존재 또는 출현을 컴퓨테이션을 통해 지속적으로 결정할 수 있게 되도록 또는 그에 대해 지속적으로 인지하게 되도록 그리고 사회적으로 존재하게 되도록 구성된다. 이와 같이, PCD(100)는 완전한 셧다운의 기간들을 회피하도록 동작할 수 있다. 일부 실시예들에서, PCD(100)는 전력을 보존하기 위해 저전력 상태, 또는 "슬립 상태"로 주기적으로 진입할 수 있다. 이러한 슬립 상태 동안, PCD(100)는, PCD(100)의 주변으로 진입하는 사람 또는 사용자, 사람 음성의 소리 등과 같은 소셜 큐들의 존재에 대해 PCD(100)에 경고하기 위한 것 같은 감소된 세트의 입력들을 처리하도록 동작할 수 있다. PCD(100)가 PCD(100)가 상호작용할 수 있는 사람 또는 사용자의 존재를 검출할 때, PCD(100)는 완전 경고 모드로 트랜지션할 수 있는데, 이 완전 경고 모드에서는 더 많은 또는 전체 PCD들(100) 센서 입력들이 상황적 데이터를 수신 및 처리하는데 활용된다.
[00333] 소셜 큐들을 지속적으로 인지하도록 유지하는 능력은, PCD(100)가 언제나 파워 오프되거나 또는 수동으로 파워 온될 필요성을 감소시킨다. 턴 오프 그리고 턴 온 될 능력이 머신 디바이스들과 연관된 속성이기 때문에, 완전 파워 다운 모드에 있는 것을 회피하기 위한 PCD(100)의 능력은 PCD(100)가 살아있는 컴패니언이라는 인지를 증가시키도록 기능한다. 일부 실시예들에서, PCD(100)는 백색 노이즈 또는 코골음을 모방하는 소리들을 방출함으로써 슬립 상태에 있는 것으로 증강(augment)할 수 있다. 이러한 예시에서, 사용자가 PCD(100)를 발견했을 때, PCD(100)는, 사용자의 존재를 감지하고, 예컨대, 하품과 같이 깨어남을 나타내는 노이즈로 사용자를 그리팅함으로써 완전 경고 또는 파워 업 모드로 트랜지션하도록 진행한다. 이러한 액션들은 PCD(100)와 사용자 사이의 상호작용들을 시작하기 위한 큐들로서의 역할을 한다.
[00334] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 사용자로부터의 언어적 및 비언어적 신호를 모니터링, 추적 및 특징화하도록 적응된다. 이러한 큐들의 예시들은, 제스처, 응시 방향, 단어 선택, 음성 프로소디, 바디 자세, 얼굴 표정, 감정의 큐들, 터치 등을 포함한다(그러나, 이에 한정되지 않는다). 모든 이러한 큐들은 센서 디바이스들(102, 104, 106, 108, 112)을 통해 PCD(100)에 의해 캡쳐될 수 있다. PCD(100)는 캡쳐된 큐들을 효율적으로 모방하거나 미러링하기 위해 자신의 거동을 적응시키고 조정하도록 더 구성될 수 있다. 이렇게 함으로써, PCD(100)는 사용자의 특징들 및 정신적 상태들을 반영하는 것처럼 보임으로써 PCD(100)와 사용자 사이의 라포를 증가시킨다. 이러한 미러링은, PCD(100)에 의한 상기 특성들의 장기간 프로젝션 동안 PCD(100)의 개성 또는 디지털적 소울에 통합될 수 있거나, 또는 일시적일 수 있고 그리고 예컨대, 특정 사회적 상호작용을 포괄하는 시간 기간에 걸쳐 연장할 수 있다.
[00335] 예컨대, 사용자가 특정 관용구(phrase)를 주기적으로 이용한다고 PCD(100)가 검출하면, PCD(100)는 미래에 사용자와 상호작용할 때 PCD(100)에 의한 지속적인 이용을 위해 상호작용 데이터의 코퍼스에 그 관용구를 부가할 수 있다. 유사하게, PCD(100)는 실시간으로 또는 거의 실시간으로 순간적인 언어적 및 비언어적 제스처들을 모방할 수 있다. 예컨대, PCD(100)가 검출하는 것이 흥분을 나타내는 증가된 단어 속도(word rate)와 결합된 사용자의 목소리의 증가된 주파수인 경우, PCD(100)는 증가된 말 속도를 통해 정상 주파수보다 더 높게 사용자와 언어적으로 상호작용하기 시작할 수 있다.
[00336] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 바디 폼 팩터, 물리적 움직임들, 그래픽들 및 소리를 포함하는(그러나, 이에 한정되지 않는) PCD(100)의 일부를 형성하는 다양한 물리적 징후들을 통해 별개의 페르소나(distinct persona) 또는 디지털 소울을 투영할 수 있다. 일 실시예에서, PCD(100)는 표현적 메카닉들을 채용할 수 있다. 예컨대, PCD(100)는 오디오 신호의 출력을 통해 말할 때 활성화될 수 있는 이동가능 턱 부속물(movable jaw appendage)을 포함할 수 있다. 이러한 부속물은 적절할 때 웃음 또는 찡그림을 모방하기에 충분한 다수의 자유도로 그랜트(grant)될 수 있다. 유사하게, PCD(100)는 시각적 노출의 정도를 변화시킬 수 있는 하나 또는 그 초과의 "눈과 비슷한" 액세서리들로 구성될 수 있다. 그 결과, PCD(100)는 경악함, 놀람, 흥미로움 등에 응답하여 "눈이 휘둥그레진(wide eyed)" 표현을 디스플레이할 수 있다.
[00337] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는, 예컨대, 스크린 모드와 전체 모드 사이에서의 트랜지션을 위해 공간 내 자체 자세 또는 포지션을 검출할 수 있다. 예컨대, PCD(100)가 그래픽 정보를 디스플레이하기 위한 스크린(104)을 포함하면, PCD(100)는, 그가 처한 어떤 상황으로부터, 사용자가 사용자의 얼굴에까지 스크린을 들고 있을 때 스크린에 그리고 사용자가 디스플레이를 보는 포지션으로 정보를 출력하는 모드로 트랜지션할 수 있다.
[00338] 다른 실시예에 따르면, PCD(100)의 일부를 형성하는 하나 또는 그 초과의 압력 센서들은, 사용자가 사회적인 방식으로 PCD(100)를 터치하고 있을 때를 검출할 수 있다. 예컨대, PCD(100)는, 1개 초과의 압력 센서들은 사용자가 PCD(100)를 스트로킹(stroking)하거나, 페팅(petting)하거나, 또는 패팅(patting)하고 있는 동안의 압력을 경험하는 패턴으로부터 결정할 수 있다. 사회적인 터치의 상이한 검출 모드들은, 사용자와의 사회적 상호작용을 격려하거나 또는 나타내는 상호작용식 거동들을 표현하기 위해 PCD(100)에 대한 트리거들로서의 역할을 할 수 있다.
[00339] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 PCD(100)의 외관(the look) 및 느낌을 강화하기 위한 액세서리들로 고정될 수 있다. 이러한 액세서리들은, 스킨들, 코스튬들, 내부 라이트뿐만 아니라 외부 라이트, 마스크들 등을 포함한다(그러나, 이에 한정되지 않는다).
[00340] 앞서 설명된 바와 같이, PCD(100)의 페르소나 또는 디지털적 소울은 PCD(100)의 물리적 징후로부터 두 갈래로 나뉠 수 있다. PCD(100) 페르소나를 포함하는 속성들은, 서버 및 개인용 컴퓨팅 디바이스를 포함하는(그러나, 이에 한정되지 않는) 하나 또는 그 초과의 다른 컴퓨팅 디바이스들에, 예컨대, 블루투스 또는 wifi를 통해 전달 및 통신될 수 있는 디지털 데이터로서 저장될 수 있다. 이러한 문맥에서, 개인용 컴퓨팅 디바이스는 일련의 프로그래머블 단계들을 실행하기 위해 프로세서 및 저장 메모리를 활용하는 임의의 디바이스일 수 있다. 일부 실시예들에서, PCD(100)의 디지털 소울은 워치 또는 모바일 폰과 같은 소비자 액세서리로 전달될 수 있다. 이러한 경우에서, PCD(100)의 페르소나는 다른 디바이스에 효과적으로 그리고 일시적으로 전달될 수 있다. 일부 실시예들에서, 전달되는 동안, PCD(100)의 전달된 인스턴스는, 사용자의 환경을 감지하고, 사회적 상호작용에 관여하고, 그리고 상호작용 데이터를 리트리브하고 출력하는 것을 계속할 수 있다. 이러한 상호작용 데이터는, 나중 시간에 PCD(100)에 전달될 수 있거나 또는 PCD(100)에 의한 나중에 리트리벌을 위해 서버에 업로드될 수 있다.
[00341] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는, 소셜 큐들에 반응하여 조정되는 시각적 패턴들을 보여줄 수 있다. 예컨대, 디스플레이(104)는, 흥분된 경우 적색 광을 그리고 차분한 경우 청색 광을 방출할 수 있다. 마찬가지로, 디스플레이(104)는, 사용자가 태스크를 성공적으로 완료하는 때와 같은 경우, 환희를 전달하기 위해 애니메이팅된 떨어지는 색종이를 디스플레이할 수 있다. 일부 실시예들에서, 디스플레이를 위한 텍스쳐들 및 애니메이션들은, PCD(100)와 통신하는 외부 디바이스 또는 서버 내로 또는 직접 PCD(100) 내로 프로그래밍 가능하거나, 또는 사용자 선택 가능할 수 있다. 또 다른 실시예들에서, PCD(100)는, 시뮬레이팅된 감정들을 표현하기 위해, 일련의 비프음들 및 휘슬들을 방출할 수 있다. 일부 실시예들에서, 비프음들 및 휘슬들은, 사용자의 스피치 및 다른 구두 발언들로부터 유도된 패턴들에 따라 패터닝될 수 있다. 몇몇 예들에서, 비프음들, 휘슬들, 및 다른 청각적 출력들은 PCD(100)에 대해 고유한 청각적 서명(signature)으로서의 역할을 할 수 있다. 일부 실시예들에서, 관련성의 정도를 나타내기 위해, 시뮬레이팅된 패밀리를 형성하는 "관련된" PCD들(100)의 그룹과 같은 복수의 PCD들(100)에 대해, 동일한 청각적 서명의 변형들이 채용될 수 있다.
[00342] 일부 실시예들에서, PCD(100)는 감정을 전달하기 위한 표현의 모드들 사이의 애니모픽(animorphic) 트랜지셔닝에 관여할 수 있다. 예컨대, PCD(100)는, 인간의 감정을 디스플레이하기 위한 방법으로서, 디스플레이(104)가, 랜덤한 또는 의사 랜덤(pseudorandom)한 패턴 또는 다른 그래픽으로부터 웃거나 찡그린 입의 디스플레이로 트랜지션하도록 동작할 수 있다.
[00343] 다른 예시적인 실시예들에서, PCD(100)는 감정 상태를 표현하기 위해 향들 또는 페로몬들을 방출할 수 있다.
[00344] 또 다른 예시적인 실시예에 따르면, 사용자와의 상호 작용들의 기초를 위해서일 수 있는, PCD(100)에 액세스 가능한 데이터의 형태의 백 스토리로 제공될 수 있다. 그러한 데이터는, PCD들(100) 이전 히스토리의 일부를 형성하는, 실제와 가상 양자 모두의 과거 이벤트들을 참조하는 하나 또는 그 초과의 스토리들을 포함할 수 있다. 예컨대, PCD(100)의 인생에서의 과거 사건들에 대해 말해주는 스피치 생성을 통해 사용자에게 전달될 수 있는 스토리들이, PCD(100)에 제공될 수 있다. 그러한 스토리들은, 상호작용 데이터에 의해 트리거링될 수 있는, 사용자에 의한 요청에 따라 출력될 수 있다. 예컨대, PCD(100)는 사용자 데이터로부터, 오늘이 사용자의 생일이라는 것을 인식할 수 있다. 반응하여, PCD(100)는 PCD(100)의 과거 생일에 관련된 사용자와 스토리를 공유하도록 트리거링될 수 있다. 백 스토리를 포함하는 데이터는 중앙에 저장될 수 있고, 그리고 사용자에 의한 또는 자율적으로 PCD(100)에 의한 요청에 따라 PCD(100)에 다운로드될 수 있다.
[00345] 백 스토리들은 PCD(100)의 제조자에 의해 생성되고 저장될 수 있으며, 요청에 따라 사용자에게 사용가능할 수 있다. 도 11을 참조하면, 예시적이며 비제한적인 실시예의 흐름도(1100)가 예시된다. 예에서, 단계(1102)에서, 제조자는 입력으로서, 스포츠, 특히 야구 및 보스톤 레드 삭스에 관심이 있는 사용자와 연관된 개에 대해 모델링된 PCD(100)를 위한 백스토리에 대한 요청을 수신할 수 있다. 반응하여, 제조자 또는 제3자 백 스토리 제공자는, 단계(1104)에서, 베이스 백 스토리를 생성할 수 있다. 예에서, 스토리는, 레드 삭스와 관련된 세부 사항들이 부가된, 야구를 다루는 더 구체적인 스토리들에 의해 증대된, 상대적으로 일반적인 개 스토리들을 포함할 수 있다.
[00346] 일부 실시예들에서, 단계(1106)에서, 백 스토리는, PCD(100)에 의한 추가적인 실시간 커스터마이징화를 허용할 변수들에 의해 인코딩될 수 있다. 예컨대, 백 스토리는: "Me and my brothers and sisters <for i==1 to max_siblings, insert sibling_name[i]> were raised in ..."와 같은 의사 코드로 인코딩될 수 있다. 이러한 방식에서, PCD(100)에 의해 판독되는 경우, 스토리는, PCD(100)와 연관되도록 구성된 다른 PCD들(100)의 이름을 포함하는 것으로 판독될 수 있다.
[00347] 예시적이며 비제한적인 실시예에 따르면, 사용자가 동료 디바이스를 돌보도록 권장되는, PCD(100)의 공동 양육 기능을 관리하기 위한 실행 가능한 모듈 또는 프로그램이 PCD(100)에 제공될 수 있다. 예컨대, 공동 양육 모듈은, 유아들과 연관된 소리들, 그래픽들, 향기들 등을 수반하는 거동을 통해 사용자와의 상호 작용을 시작함으로써 아기를 돌보기 위해, 사용자의 타고난 임펄스에 따라 플레이하도록 작동할 수 있다. PCD(100)와 사용자 사이의 일치는, 공동 육아 모듈이, 부정적인 감정을 완화시키도록 사용자에게 액션들을 권유하는 동안 슬픔, 외로움, 및/또는 우울과 같은 부정적인 감정을 표현하도록 작동하는 경우, 추가적으로 권장될 수 있다. 이러한 방식으로, 사용자는 PCD(100)를 응원하기 위해 PCD(100)와 상호작용하도록 권장된다.
[00348] 예시적이며 비제한적인 실시예에 따르면, PCD(100)는 사용자 특성들, PCD(100)와 PCD100)의 사용자의 상호작용들, 및 PCD(100)의 사용자의 환경을 나타내는 상호작용 데이터에 액세스하도록 구성된 모듈을 포함할 수 있다. 도 1200을 참조하면, 예시적이며 비제한적인 실시예의 흐름도가 예시된다. 단계(1202)에서, 상호작용 데이터가 액세스된다. 단계(1204)에서, 상호작용 데이터는 중앙집중화된 데이터 수집 설비에 저장될 수 있다. 일단 검색되고 저장되면, 단계(1206)에서, 상호작용 데이터는 사용자의 요구 상태를 예상하기 위해 활용될 수 있다. 일단 요구 상태가 식별되면, 단계(1208)에서, 액션을 수행하기 위한 스케줄에 의존하지 않고, 사용자의 요구들을 예방적으로 처리하기 위해 상호작용 데이터가 활용될 수 있다. 일부 실시예들에서, 사용자의 물리적 외모, 및 자세 등은 요구 상태를 식별하기 위한 기초를 형성할 수 있다. 몇몇 예에서, 요구 상태의 식별은, 상호작용 데이터의 일부를 포함하는 것과 같이, 스케줄 데이터에 의해 보완될 수 있다. 예컨대, 스케줄은, 항생제의 투여를 수행할 사용자의 요구를 충족하기에 시간이 지났음을 나타낼 수 있다. PCD(100)는, 안면 분석 및 음성 변조 분석으로부터 유도된 데이터로부터, 사용자의 요구 상태를, 부분적으로, 확인할 수 있다.
[00349] 예시적이며 비제한적인 실시예들에 따르면, PCD(100)는 한 사람으로부터 다른 사람으로 메시지를 중계하는 메신저로서 사용될 수 있다. 메시지들은, 전송자의 음성의 오디오 녹음들을 포함하지만 이에 제한되지는 않고, PCD(100)는 문자 메시지를 중계하며, 메시지와 노래들을 강화하기 위해 댄스들/애니메이션들/소리 클립들이 사용된다.
[00350] 메시지들은 다양한 방식들로 생성될 수 있다. 일 실시예에서, PCD(100)는 스마트 디바이스 상의 앱으로서 구현된다. 전송자는 앱을 열고, 메시지 및 연관된 소리들, 스케줄링, 등을 선택한다. 앱에서의 PCD(100)의 가상 인스턴스는 사용자에게 프로세스를 보여준다. 다른 실시예에서, PCD(100)와의 직접적인 상호작용을 통해, 전송자/사용자는, 어떤 미래의 시간에 다른 사람에게 무언가를 말하기 위해, 간단한 터치 인터페이스 또는 자연 언어 인터페이스를 통해서 PCD(100)에게 지시할 수 있다. 예컨대, 사용자는, "PCD, when my wife comes into the kitchen this morning, play her X song and tell her that I love her" 라고 말할 수 있다. 전송자는 또한, 메시지의 일부로서 사용하기 위해, 그/그녀의 목소리를 PCD(100)가 녹음하게 할 수 있다. 다른 실시예들에서, 전송자의 PCD(100)가 메시지를 전달하는 대신에, 메시지는 다른 위치의 다른 PCD(100)에 의해 전달될 수 있다. 또 다른 실시예에서, 사용자/전송자는, 예컨대, 메시지를 특정 PCD들(100) 해시태그에 트윗할 수 있고, PCD(100)는 그러한 메시지를 사용자/수신인에게 말할 수 있다. PCD(100)에 의해 행해질, 미리 준비된 애니메이션/소리 스크립트를 프롬프팅하는 이모티콘들이 또한, 메시지 내에 삽입될 수 있다. 몇몇 예시적인 이모티콘들이다:
Figure 112018107408968-pct00001
[00351] 부가적으로, 메시지들은, 특정 날짜 및 시간 또는 특정 세트의 환경들(예컨대, "the first time you see person X on Tuesday" 또는 "when person Y wakes up on Wednesday, give them this message") 하에서, 나중에 전송되도록 스케줄링될 수 있다.
[00352] 다른 실시예들에서, PCD(100)는 PCD들을 가지고 있지 않은 사용자들을 위한 메시지들을 생성하도록 사용될 수 있다. 그러한 메시지들은 웹링크의 형태로 생성될 수 있고, 그리고 수신자가 PCD를 가졌다면 물리적 PCD(100)가 했었을 것과 동일한 메시지를 전달하기 위한 가상 PCD(100)를 포함할 수 있다.
[00353] 따라서 명백한 바와 같이, PCD(100)는 사용자의 가족들 및 친구들과 같은 사람들로부터 메시지들을 수신하도록 구성될 수 있고, 메시지들은 메시지들에서 특정된 감정들과 관련된 액션들을 트리거링한다. 예컨대, 사람은, 메시지의 전송자가 PCD(100)을 통해 전달하기를 원하는 사회적 액션 또는 감정을 표현하는 이모티콘이 내부에 내장된, 사용자외 연관된 PCD(100)에 메시지를 문자로 보낼 수 있다. 예컨대, 전송자가 PCD(100)에, "Missing you a lot OX"라고 판독되는 메시지를 전송하면, PCD(100)는, 메시지를 수신할 때, 스피치 합성기를 통해, "In coming message from Robert reads 'Missing you a lot' "를 출력하면서, 동시에 키스 소리를 방출하면서, 디스플레이 상에 오므린 입술들을 디스플레이하거나, 또는 유사한 액션을 할 수 있다. 이러한 방식으로, 메시지 전송자들은, PCD(100)가 사용자와 상호작용할 수 있는 표현 양식들을 사용하기 위해 그들의 메시지들에 주석을 달 수 있다.
[00354] 도 13을 참조하면, 예시적이며 비제한적인 실시예의 흐름도 및 개개의 방법(1300)이 예시된다. 방법은 단계(1302)에서, PCD(persistent companion device)를 제공하는 단계를 포함한다. 방법은 단계(1304)에서, 제스처, 응시 방향, 단어 선정, 음성 프로소디, 바디 자세, 얼굴 표정, 감정적 큐들 및 터치로 이루어진 그룹으로부터 선택된, 사용자로부터의 언어적 및 비언어적 신호들 중 적어도 하나를 입력하는 단계를 더 포함한다. 방법은 단계(1306)에서, 언어적 및 비언어적 신호들 중 적어도 하나를 미러링하기 위해 PCD의 거동을 조정하는 단계를 더 포함한다.
[00355] 개발 플랫폼, 라이브러리, 어셋들, PCD 등의 위의 모든 속성은 다른 언어들 및 문화들(로컬화)을 지원하도록 확장될 수 있다.
[00356] 도 14를 참조하면, PCD(100)가 사용자와의 상호 작용 동안 아이와 같은 반복적, 지속적 또는 반지속적, 시각적 엘리먼트를 디스플레이하기 위해 사용자 인터페이스를 활용할 수 있게 하는 예의 예시적이며 비제한적인 실시예가 도시되어 있다. 예컨대, 아래에 도시된 바와 같이, 물음표를 디스플레이하기, 아이의 표면 상의 반사 또는 홍채를 나타내는 밝은 원을 포함하는 시각적 엘리먼트(1400)는, 아이가 중간 시각적 엘리먼트들(1400', 1400")를 통해 물음표 시각적 엘리먼트(1400''') 내로 모핑하거나 그러지 않으면 평활하게 트랜지션될 때, 그 포지션을 물음표의 최하부로 이동시킬 수 있다. 설명되고 예시된 바와 같이 모핑하기 위한 시각적 엘리먼트의 능력은 가독성을 높인다.
[00357] 도 15를 참조하면, 아이가 아이에 대해 너무 시각적으로 복잡한 형상으로 모핑하려고 의도하는 인스턴스들에서, 시각적 엘리먼트(1500)는 더욱 시각적으로 복잡한 형상(1500')으로 트랜지션하기 위해 예시된 바와 같이 "깜빡"이게 하는 예의 예시적이며 비제한적인 실시예가 도시되어 있다. 예컨대, 예시된 바와 같이, 아이(1500)의 시각적 엘리먼트는 온도 또는 다른 날씨 관련된 가변적인 형상(1500')을 드러내기 위해 "깜박"인다.
[00358] 도 16을 참조하면, 입 심볼이 아이의 시각 엘리먼트의 표면 영역 밖으로 구멍내어 지거나 형성될 수 있게 하는 예의 예시적이며 비제한적인 실시예가 예시되어 있다. 다양한 실시예들에서, 시각적 엘리먼트의 컬러는 디스플레이된 표현을 강화하기 위해 변경될 수 있다.
[00359] 다양한 예시적이며 비제한적인 실시예들 따라, PCD(100)는 스마트폰들 및 태블릿들과 같은 종래의 모바일 디바이스들 상에서 실행되는 애플리케이션들과 비교하여 "스킬들"을 가지며 이를 나타낼 수 있다. 마치 iOS 및 안드로이드와 같은 모바일 플랫폼들 상에서 실행되는 애플리케이션들처럼, PCD(100)는 매우 다양한 새로운 스킬들을 전개하기 위한 능력을 지원할 수 있다. PCD 스킬은, 실행 엔진에 대한 피드 정보는 물론, 다양한 JavaScript API들을 인보크할 수 있는 어셋들 및 구성 파일들과 함께 JavaScript 패키지를 포함할 수 있다. 결과적으로, 내부 및 외부 개발자 둘 모두가 PCD(100)에 대한 새로운 스킬들을 개발하는 데 지원될 수 있다.
[00360] 기본 원칙으로서, 임의의 새로운 소셜 로봇 스킬은 새로운 스킬들을 개발하기 위한 소프트웨어 개발 키트(SDK)의 코어 컴포넌트를 포함하는 JavaScript API들의 세트와 관련된 JavaScript로 완전히 기록될 수 있다. 그러나 개발을 가능하게 하기 위해, 표현 툴 모음 및 거동 편집기와 같은 툴들의 세트가 개발자들이 실행 엔진에 피딩되는 구성 파일들을 생성하게 할 수 있어서, 이전에 개발된 스킬들의 사용은 물론 더 간단하고 신속한 스킬 개발을 가능하게 한다.
[00361] 도 17을 참조하면, PCD(100)에 대한 런타임 스킬을 가능하게 하기 위한 플랫폼의 예시적이며 비제한적인 실시예가 예시된다. 예시된 바와 같이, 스테레오 RGB 카메라, 마이크로폰 어레이 및 터치 감지 센서들로부터의 이미저리를 포함하는(그러나 이에 제한되지 않음) 다양한 입력들(1700)이 수신된다. 입력들(1700)은 터치 스크린을 통해 들어올 수 있다. 입력들(1700)은 입력 데이터로부터 정보를 추출하고 입력 데이터를 카테고리화하기 위해 프로세싱이 수행되는 센서리 프로세싱 모듈(1702)로의 입력을 형성할 수 있다. 입력들은 디바이스들 또는 디바이스 외부의 소프트웨어 애플리케이션들, 이를테면, 웹 애플리케이션들, 모바일 애플리케이션들, IoT(Internet of Things) 디바이스들, 홈 자동화 디바이스들, 알람 시스템들 등으로부터 발생할 수 있다. 센서리 프로세싱 모듈에 사용될 수 있는 프로세싱의 형태들의 예들은 -이로 제한되는 것은 아니지만- ASR(automated speech recognition), 감정 검출, 안면 식별(ID), 사람 또는 물체 추적, 빔 형성 및 터치 식별을 포함한다. 센서리 프로세싱의 결과들은 실행 엔진(1704)에 입력으로서 포워딩될 수 있다. 실행 엔진(1704)은, 제한적이지 않게, 예컨대, 입력 문법, 거동 트리, JavaScript, 애니메이션들 및 스피치/사운드들 중 하나 또는 그 초과의 형태로 선택적으로 부가적 입력들(1706)을 수신하여 정의된 스킬을 적용하도록 동작할 수 있다. 실행 엔진(1704)은 유사하게 가족 멤버 모델(1708)로부터의 입력들을 유사하게 수신할 수 있다.
[00362] 실행 엔진(1704)은 로지컬 정의된 스킬의 양상들이 PCD(100)의 표현 엘리먼트들에 맵핑되는 표현 모듈(1710)로의 입력을 형성하는 데이터를 출력할 수 있으며, 표현 엘리먼트들은 -이에 제한되지 않지만- 애니메이션(예컨대, PCD의 다양한 부분들의 움직임), 그래픽들(이를테면, 터치스크린일 수 있는 스크린 상에 디스플레이되거나, 위에서 설명된 아이의 움직임), 조명 및 스피치 또는 다른 사운드들을 포함하며, 이들 각각은 표현 모듈(1710)에서 프로그래밍될 수 있고 본 개시내용의 다른 곳에서 설명된 바와 같이 PCD의 모드, 상태, 무드, 페르소나 등을 반영한다. 표현 모듈(1710)은 -이에 제한되지 않지만- 오디오 출력, 디스플레이, 조명 엘리먼트들, 및 움직임 인에이블링 모터들을 포함하는 스킬을 표현하기 위해 PCD(100)의 다양한 하드웨어 컴포넌트들(1712)에 데이터 및 명령들을 출력할 수 있다. 출력들은 디바이스 또는 PCD(100) 외부의 애플리케이션들, 이를테면, IoT 디바이스들, 웹 애플리케이션들, 모바일 애플리케이션들 등에 대한 제어 신호들 또는 데이터를 포함할 수 있다.
[00363] 도 18을 참조하면, SDK를 사용한 스킬의 개발을 인에이블링하는 플랫폼에 대한 흐름 및 다양한 아키텍처 컴포넌트들의 예시적이며 비제한적인 실시예가 예시된다. 예시된 바와 같이, 로직 레벨(1800)은 인지 레벨(1802)과 통신할 수 있다. 인지 레벨(1802)은 비전 기능 모듈(1804)을 통한 비전 기능 이벤트들, 표현 엔진(1806)을 통한 애니메이션 이벤트 및 스피치 인식기(1806)를 통한 스피치 인식 이벤트와 같은 다양한 이벤트들을 검출할 수 있다. 로직 레벨(1800)과 인지 레벨(1802) 간의 통신은 인식된 이벤트들은 표현된 스킬들로 변환하는 역할을 할 수 있다.
[00364] 이를 염두에 두고, 특정 성능들은 JavaScript API들의 세트를 통해 제공될 수 있다. 첫째, JavaScript API들은 다양한 타입들의 센서리 입력을 위해 존재할 수 있다. JavaScript API들은 다양한 표현 출력을 위해 존재할 수 있다. 또한, JavaScript API들이 실행 엔진(1704)에 대해 존재할 수 있으며, 이는 결국 다른 기존 JavaScript API들을 호출할 수 있다. JavaScript API들은 가족 멤버 모델(1708)과 같은 다양한 모델들 내에 저장된 정보를 위해 존재할 수 있다. 실행 엔진(1704)은, 이를테면, 실행 엔진 (1704)에서 사용하기 위해 이들 API 중 임의의 API를 통해 정보를 추출함으로써 임의의 API들을 사용한다. 실시예들에서, 실행 엔진을 사용하지 않는 개발자들은, 가족 멤버 모델(1708)에 직접 액세스할 수 있다. 특히, PCD(100)는, 이를테면, PCD(100)가 하나 또는 그 초과의 사용자들에게, 그 환경에, 그리고 사용의 그 패턴들에 적응하고 이들에 대해 그 자체를 개인화할 수 있게 하기 위해, 이를테면, 정보, 거동 패턴, 선호도들, 사용 사례 패턴 등에 대한 머신 학습을 이용하여 학습할 수 있다. 그러한 데이터 및 그러한 학습의 결과들은 PCD(100)에 대한 가족 멤버 모델(1708)에서 구체화될 수 있다.
[00365] 센서리 입력 API들은 ASR API들, 보이스 입력 API들, (예컨대, 뮤직 인식, 특정 사운드 패턴들의 검출 등에 대해) 다른 사운드들을 프로세싱하기 위한 API들, 초음파 또는 소나를 핸들링하기 위한 API들, 전자기 에너지(가시광, 라디오 신호들, 마이크로웨이브, X선, 적외선 신호들 등)를 프로세싱하기 위한 API들, 이미지 프로세싱을 위한 API들, 화학 신호들(예컨대, 연기, 일산화탄소, 냄새 등의 검출)을 핸들링하기 위한 API들 등을 포함하는 광범위한 타입들을 포함할 수 있다. 센서리 입력 API들은 PCD(100)의 센서들로부터 직접 입력을 다루기 위해 또는 다른 센서리 입력 소스들, 이를테면, 센서 네트워크들, IOT 디바이스들의 센서들 등에 의해 수집되고 송신된 센서 데이터를 다루기 위해 사용될 수 있다.
[00366] 다양한 센서리 입력들에 대해, 타임스탬프들은 다양한 상이한 센서리 입력 타입들을 합병하는 것을 가능하게 하도록 제공될 수 있다. 예컨대, 타임스탬프들에는, 인식된 스피치를 다른 센서리 입력과 합병할 수 있게 하는 스피치 인식기가 제공될 수 있다. ASR은 다양한 스피커들을 등록하는 데 사용될 수 있다. 전체적으로, 스피치 툴 모음은 PCD(100)의 스피치 인터페이스를 위해 제공될 수 있다.
[00367] 또한, 다양한 얼굴 추적 및 사람 추적 API들, 터치 API들, 감정 인식 API들, 표현 출력 API들, 움직임 API들, 스크린 및 아이 그래픽 API들, (예컨대, LED 라이트들을 위한) 조명 API들, TTS(sound and text to speech) API들 및 다양한 다른 것들이 제공될 수 있다. 사운드 및 TTS API들은 PCD(100)가 오디오 파일들을 플레이하거나, 텍스트의 스트링으로부터 단어들을 말하거나 하는 것 등을 가능하게 할 수 있다. 이것은 스트링 변수의 콘텐츠 또는 상수, 사일런스의 임의의 양, 또는 이들의 임의의 결합일 수 있다. 예컨대, 개발자는, 비핑 사운드, NAME 변수를 파퓰레이팅(populating)함으로써 표현된 특정 이름을 실제 이름으로 말하기, 3초의 사일런트 기간, 그 다음 그리팅하게 하는 Speak( "beep.wav", NAME, ": SIL 3sec", "I am so happy to see you")와 같은 명령을 특정할 수 있다. 텍스트는 SSML(Speech Synthesis Markup Language)로 표현될 수 있다. 간단한 텍스트는 종래의 구두점 규칙들에 따라 발화될 수 있다. 실시예들에서, 발화된 발화로 중첩되거나 삽입되는 표현 필터들 또는 사운드 효과들이 있을 수 있다.
[00368] PCD SDK는 볼륨과 같은 오디오 출력의 속성을 세팅하는 것은 물론 오디오 파일들과 같은 콘텐츠 어셋들을 업로드하는 방법들을 포함할 수 있다. 소셜 로봇은 .wav, .mp3 등과 같은 다양한 상이한 포맷들을 플레이하도록 구성될 수 있다. 어셋들은 다양한 라이브러리들, 이를테면, 클라우드 또는 로컬 컴퓨팅 디바이스에 저장될 수 있다. PCD SDK는 PCD가, 뮤직, 비디오, 애니메이션 등과 같은 적합한 콘텐츠에 대해, 이를테면, 인터넷 또는 하나 또는 그 초과의 사이트들을 검색함으로써, 어셋들을 검색하는 것을 가능하게 할 수 있다.
[00369] 이를테면, 클라우드에 원격으로 저장된 데이터에 대해 프런트 엔드로서 동작하는 일 세트의 가족 멤버 및 유틸리티 API들이 제공될 수 있다. 이러한 API들은 또한, (로깅 등과 같이) 개발자가 사용하길 원하는 유틸리티들을 포함할 수 있다.
[00370] 실행 엔진(1704)과의 인터페이스를 인에이블링하기 위해 실행 엔진 API들의 세트가 제공될 수 있다. 실행 엔진(1704)은 거동 편집기 및 표현 툴 모음(이들에 제한되지 않음)과 같은 몇몇 상이한 툴을 사용하여 생성된 구성 파일들에 작용할 수 있는 선택적인 JavaScript 컴포넌트를 포함할 수 있다. 실행 엔진은 또한, 가족 멤버 스토어로부터의 데이터를 멀티플렉싱할 수 있어서, 개발자들이 다시 보다 쉽게 스킬들을 기록하게 한다. 실시예들에서, 패밀리 멤버 스토어는 또한, PCD(100)의 외관을 사용자들이 커스터마이징하게 하는 장식 엘리먼트들은 물론, PCD(100)의 물리적 성능을 확장시키는 하드웨어 액세서리, 이를테면, 프로젝터, PCD(100)용 모바일 베이스, 조작자들, 스피커들 등을 확장하도록 하드웨어 액세서리들을 포함할 수 있다.
[00371] 어셋 생성부터 스킬 기록, 시뮬레이션, 테스팅 및 인증(이 인증은 본원에서 설명된 방법들 및 시스템들을 관리하는 호스트 기업에 의해 실시예들에 제공됨)으로 진행되는 새로운 PCD 스킬을 생성하기 위해 워크플로우를 따를 수 있다.
[00372] 도 19를 참조하면, 어셋들의 생성을 위해 제공될 수 있는 사용자 인터페이스의 예시적이며 비제한적인 실시예가 예시되어 있다. 어셋 생성은 스킬의 어셋들을 생성하는 것을 수반할 수 있다. 그것은 반드시 제1 단계는 아니지만, 스킬 자체가 개발됨에 따라 어셋들이 정밀화되거나 확장되는 스킬을 생성하는 흐름에서 대개 진행되는 태스크이다. 생성될 수 있는 어셋들의 타입들은, 새로운 바디 및 아이 애니메이션들을 쉽게 생성하기 위해 이를테면, 표현 툴 모음 내의 특수 툴을 사용하는 애니메이션들을 포함한다. 개발자들은 또한 PCD 스킬 스토어의 "개발자들" 섹션에서 바디 및 아이 애니메이션들을 용도 변경할 수도 있다. 실시예들에서, 개발자들은 자신의 어셋들을, 이를테면 PCD(100)용 스킬 스토어 또는 개발자의 포탈과 같은 다른 환경에서 컨슈머들 또는 다른 개발자들과 공유할 수 있다. 어셋들은, 또한 사운드들을 포함할 수 있어서, 자원이 적절하게 정의된 특징들을 가진 적절한 포맷으로 되어 있는 한, 개발자들은 그들이 좋아하는 사운드 편집기를 사용하여 그들 자신의 사운드들을 생성할 수 있다. 어셋들은, 파라메트릭 TTS 시스템을 레버리지하는 TTS(text-to-speech) 어셋들을 포함할 수 있어서, 개발자들은 TTS 인스턴스들을 생성하고, 스피치를 조절할 수 있는 ("행복" 같은) 다양한 속성들로 이들 인스턴스들에 주석을 달 수 있다
[00373] 어셋들은 이를테면, PCD(100) 상의(이를테면, 몸통 상의) LED 라이트들을 제어하기 위해 라이트 가시화들을 포함할 수 있으며, 그런 경우, 개발자들은 제어를 특정하기 위한 표현 툴 모음을 사용할 수 있다. 개발자들은 또한 이를테면, PCD 스킬들 스토어의 "Developers" 섹션으로부터 LED 라이트 애니메이션들의 용도를 변경할 수 있음이 주목된다.
[00374] 어셋들은 입력 문법들을 포함할 수 있다. 스킬의 인식된 입력 문법을 관리하기 위해, 개발자들은 그들이 인식되기를 바라는 다양한 문법들을 특정하기 위해 스피치 툴 모음을 사용할 수 있다.
[00375] 개발자가 적법한 스킬에 대한 어셋들을 가지면, 개발자는 거동 편집기를 사용하여 스킬 그 자체를 기록할 수 있다. 거동 편집기는 센서리 입력의 핸들링은 물론 표현 출력 제어를 통제하는 로직을 인에이블링한다. 이 단계 대부분은 간단한 편집기를 사용하여 행해질 수 있지만, SDK는 하나 또는 그 초과의 전유 REST API들을 통한 데이터의 교환 등과 같이, 개발자가 특정 스킬에 고유할 수 있는 작업들을 행하는 것을 인에이블링하도록 스트레이트(straight) JavaScript 코드의 추가를 인에이블할 수 있다.
[00376] 스킬이 (부분적으로) 기록되면, 개발자는 PCD 시뮬레이터를 사용하여 실시간으로 또는 거의 실시간으로 발생할 수 있는 스킬의 다양한 양상들을 연습할 수 있다. 시뮬레이터는 기본 센서리 입력의 트리거링을 지원할 수 있으며, PCD의 개발자 레코드 모드를 통해 조기에 생성된 센서리 입력 파일 상에서 또한 동작할 수 있다. 시뮬레이터에 대한 입력들은, PCD(100)로의 물리적 입력으로부터, PCD(100) 외부의 하나 또는 그 초과의 센서들로부터, 직접 시뮬레이터로부터, 또는 외부 디바이스들, 이를테면 IoT 디바이스들 또는 애플리케이션들, 이를테면 웹 애플리케이션들 또는 모바일 애플리케이션들로부터 발생할 수 있다. 시뮬레이터는 TTS 출력을 나타내기 위해 텍스트는 물론, WebGL 그래픽 출력을 통해 표현 시스템의 부분들을 지원할 것이다. 개발 및 시뮬레이션 사이클은 WYSIWYG 접근법을 사용하여 실시간 또는 거의 실시간으로 이루어질 수 있어서, 스킬의 변화들은 시뮬레이터 상에서 즉시 가시적이며 시뮬레이터의 동적 편집에 응답한다.
[00377] 궁극적으로, 더 복잡한 거동들(이를테면, 통지들)이 시뮬레이터 내에서 지원되지 않을 수 있으므로, 개발자는 PCD(100) 그 자체 상에서 스킬을 테스트할 필요가 있을 수 있다. 애드혹 라이브 테스팅 외에도, 개발자는 PCD의 레코드 모드를 통해 생성된 센서리 입력 파일들을 통해 테스팅을 재차 구동할 수 있다. 실시예들에서, 입력들은 외부 소스로부터 실시간으로 또는 거의 실시간으로 스트리밍될 수 있다.
[00378] 또한, 개발자가 다른 사람들이 새로운 스킬을 사용하고 구매하는 것일 인에이블하기를 바라는 경우, 개발자는 인증을 위해 스킬을, 이를테면 SDK의 호스트에 제출할 수 있다. 상이한 스킬들에 걸친 거동의 일관성을 조장하고, 안전을 보장하고, 신뢰성을 보장하는 등을 위해 다양한 인증 가이드라인들이 생성될 수 있다. 인증되면, 사용자들, 다른 개발자들 등에 의한 액세스들을 위해 스킬을 PCD 스토어에 배치될 수 있다. 실시예들에서, 개발자들은 또한 PCD(100)에 대한 스토어, 개발자의 포탈 등 상에 어셋들(예컨대, 애니메이션들, 스킬들, 사운드들 등)을 포스팅할 수 있다.
[00379] 다양한 툴들이 SDK에 또는 SDK와 관련하여 전개될 수 있다. 개발자가 소셜 로봇의 로컬 인지 공간(예컨대, 사람의 식별, 사람 추적, 감정 검출 등)을 보고, 이해하고 그리고/또는 테스트하게 할 수 있는 LPS(local perception space) 가시화 툴을 포함할 수 있다. 툴들은 새로운 문법들을 생성하고 텍스트-대-스피치 출력에 주석을 달기 위한 유틸리티들의 스피치 툴 모음에서 스피치와 관련된 다양한 툴들을 포함할 수 있다. 실시예들에서, 툴들은 발화된 발화에 대해 필터들 또는 다른 사운드들 또는 오디오 효과들을 적용하는 데 사용될 수 있다. 툴들은 개발자들이 이를테면, 주어진 스킬에 대한 거동 트리들(예컨대, "브레인")을 통해 거동을 저작할 수 있도록 거동 편집기를 포함할 수 있다.
[00380] 표현 툴 모음은 소셜 로봇에 대한 표현 출력을 저작하기 위한 유틸리티들의 모음을 포함할 수 있으며, 이는 PCD(100)의 애니메이팅된 거동을 시뮬레이팅하는 애니메이션 시뮬레이터를 포함할 수 있다. 이는 웹킷 및 인터프리터, 이를테면 Google ™ 하의 V8 JS Interpreter ™를 갖는 JavaScript 또는 HTML을 포함할 수 있다. 거동들 및 스크린 그래픽들은 표준 웹 애플리케이션 코드를 사용하여 증강될 수 있다.
[00381] 시뮬레이팅된 런타임 환경은 스킬의 다양한 양상들을 연습하기 위한 툴로 제공될 수 있다.
[00382] 도 20을 참조하면, 개발자가, 이를테면, PCD(100)의 카메라를 통해 보여지는, PCD(100)의 로컬 인지 공간을 보게 할 수 있는 LPS(local perception space) 가시화 툴의 예시적이며 비제한적인 스크린 샷들이 예시되어있다. 이는 PCD(100)의 뷰 내의 사람들을 식별하고 추적하는 데 사용될 수 있다. 실시예들에서, 이는 복잡하게 성장할 수 있고 PCD(100)가 상호작용할 수 있는 아바타들 및 다른 시각적 엘리먼트들과 같은 엘리먼트들과 더불어, 3-차원 세계를 포함할 수 있다.
[00383] 스피치 툴 모음은 듣고(예컨대, "이어" 툴) 말하기와 관련된 툴들을 포함할 수 있다. 이는, 라이브러리로부터 어구들 및 다양한 타입들의 문법들(이를테면, 단어 스포팅, 통계적 등), 이를테면 예/아니오 문법들, 숫자들의 시퀀스, 자연수들, 제어들(계속, 중지, 일시정지), 날짜 및 시간, 비-어구-스포팅(non-phrase-spotting) 문법들, 변수들(예컨대, $name) 등을 가져오기 위한 다양한 성능들을 포함할 수 있다. 이들은 ASR, 스피치-대-텍스트 성능들 등을 사용할 수 있으며, 클라우드-기반이거나 PCD(100) 그 자체 상에 임베딩될 수 있다. 이 툴 모음은 위에서 주목된 시뮬레이터에서 애플리케이션 로직과 더불어, 문법의 기본 검증 및 디버깅을 포함할 수 있다. 툴 모음은 PCD(100)에 대한 NLU(natural language understanding) 모드들을 개발하기 위한 툴들을 포함할 수 있다. 자원들은 온-디바이스 문법 컴파일 툴을 사용하여 생성될 수 있다. 자원들은 데이터를 (예컨대, 기계적 터크와 같이) 데이터를 수집하기 위한 툴들 및 새로운 모델들을 트레이닝하기 위한: 이를테면, 어구 스포팅, 보이스를 통한 사람 식별, 또는 다른 스피치 또는 사운드 인식 또는 이해 성능들을 위한 머신 학습 툴들을 포함할 수 있다. 문법들은 GUI 프리젠테이션 및 로직 디버깅을 위한 출력 태그들을 게재할 수 있다. PCD(100)의 센서 라이브러리는 센서리 자원들을 생성하고 문법 인식 성능들을 테스트하기 위해 사용될 수 있다. 테스팅은 실제 발화된 ASR을 사용하여 전체 스킬에 대해 수행될 수 있다. 어구-스포팅 문법들이 생성, 테스팅 및 튜닝될 수 있다.
[00384] 거동 편집기에서, 인식기를 인보크할 때, 개발자는 제약된 세트의 인식기의 파라미터들(예컨대, 시간초과, 거부 등)을 수정하고 그리고/또는 (이를테면, 텍스트 프로세싱을 수행하기 위해) 인식 결과들에 대한 콜백을 인보크할 수 있다.
[00385] 도 21을 참조하면, 예시적이며 비제한적인 실시예에 따른 거동 편집기의 스크린샷이 제공된다. PCD 거동 편집기(2100)는 개발자들/설계자들이 PCD(100) 상에서 새로운 스킬을 신속하게 생성하도록 인에이블링한다. 이 섹션에서 정의된 출력 파일은 실행 엔진(1704)을 구동한다. 거동 편집기(2100)에 관한 더 많은 세부사항들이 아래에 제공된다.
[00386] 실시예들에서, 거동 저작 툴은 사용하기 쉽고, 모호하지 않고, 확장 가능하고, 실질적으로 WYSIWYG이도록 설계된 거동 트리 생성기를 포함할 수 있다. 거동들 그 자체는 실황 문서화(living documentation)를 포함할 수 있다. 각각의 거동은 설명 및 주석 표기를 가질 수 있다. 거동은 구현되지 않고도 정의될 수 있다. 이는 설계자들이 아직 존재하지 않는 거동들을 "채우게(fill in)" 할 수 있다.
[00387] PCD 거동 시스템은 그의 코어에서, 매우 저레벨의 간단한 거동으로 구성될 수 있다. 이러한 저레벨의 거동들은 보다 고레벨의 복잡한 거동들을 형성하기 위해 결합될 수 있다. 더 고레벨 거동은 손으로 코딩되거나 다른 하위 레벨 거동들로 구성될 수 있다. 이 계층구조는 사실상 무한하다. 비록 복잡성의 구배들이 존재할지라도, 거동 계층구조들은 대략 3개의 레벨들 즉; (1) 어토믹 거동(일반적으로, PCD(100)의 기능들에 반드시 의존하진 않는 거동들을 포함해서, 기능적 거동 트리를 갖는 거동들의 최소 세트); (2) PCD(100) 기반 거동들(이를테면, 소셜 로봇과 연관된 다양한 JavaScript API들에서 구체화되는 PCD(100)의 전체 성능 세트에 걸친 거동들); (3) (손으로 코딩되거나, 또는 파라미터화된 거동 계층구조들 그 자체로 구성될 수 있는) 컴파운드(compound)의 고레벨 거동들; 및 (4) 스켈레톤 거동들(존재하지 않거나 완전히 구현되지 않았거나 구현이 별개인 거동)으로 분할될 수 있다. 거동 계층구조들은 다른 것들 중에서도, 이를테면, 머신 학습 방법들, 이를테면, 강화 학습을 이용하여 PCD(100)의 경험으로부터 학습될 수 있다. 이를테면, JavaScript API에서 구체화되는 소셜 로봇 API의 각각의 함수 콜은 그것이 의미가 통하는 거동으로 표현될 수 있다. 스켈레톤 거동은 문서화를 위해 거동 트리에 삽입되고 나중에 구현되고 런타임에 바인딩될 수 있다. 이는 아직 존재하지 않는 거동을 필요로 하는 설계자가 이 거동의 설명 및 가능한 결과(실패, 성공 등)를 포함하는 이 "바운드 타입(Bound Type)"을 삽입하고 나중에 구현을 위한 엔지니어 코드를 갖게 할 수 있다. 플레이백 동안, 바운드 타입이 존재하는 경우, 그 타입은 구현에 바인딩되고; 그렇지 않으면, PCD(100) 또는 시뮬레이션은 바운드 거동 이름 및 그 리턴 타입을 말하고 트리에서 계속 진행할 수 있다. 또한, 툴들은 정교한 인지 프로세싱 파이프라인들을 개발하기 위해 인지 계층구조들의 정의를 지원할 수 있다. 이러한 인지 트리들의 출력들은 거동 등에 연결될 수 있다. 게다가, 개발 플랫폼 및 SDK는 개발자들에 대해 이용 가능하게 되는 더 높은-순서 인지 분류 모듈들(Reusable Multi-Modal Input-Output Modules)의 멀티-모달 라이브러리들의 모음을 지원한다.
[00388] 가장 어토믹적으로, 거동 트리는 다음과 같은 기본적인 거동들 즉, BaseBehavior - 리프 노드; BaseDecorator - 거동 데코레이터; Parallel - 컴파운드 노드; Sequence(및 시퀀스 변동들) - 컴파운드 노드; Select - 컴파운드 노드; 및 Random(및 랜덤 변동들) - 컴파운드 노드로 구성될 수 있다. 어토믹 거동들은 PCD JavaScript API에 대한 거의 원시 함수 콜들일 수 있지만 적합한 타이밍으로 거동으로 랩핑된다. 이들은 전체 API에 걸쳐 있으며 매우 저레벨일 수 있다. 일부 예들은, LookAt; LoadCompileClip; 및 PlayCompiledClip를 포함한다. 컴파일된 클립들은 임베딩된 이벤트를 가질 수 있다. 거동 또는 데코레이터는 특정 타입의 이벤트를 청취하고 그 이벤트의 정확한 순간에 로직을 실행할 수 있다. 이는 표현 출력과 더 높은-레벨 판정 내리기 간의 긴밀한 동기화를 허용한다. 또한, 어토믹 거동들은 PlayMp3; Listen; ListenTouch; 및 Blink(이릍테면, blinkSpeed, interruptPreviousBlink=(true|false)와 관련된 파라미터들을 가짐)을 포함할 수 있다.
[00389] 컴파운드/고레벨 거동들은 다른 고레벨 및/또는 저레벨 거동들을 결합하는 고레벨 거동들일 수 있다. 이러한 거동들은 파라미터화될 수 있다. 예들은, BeAttentive; TakeRandomPictures; BeHappy; 및 StreamCameraToScreen을 포함할 수 있다. 거동들은 이를테면, 세계와의 원하는 결과 또는 상태를 달성하도록 액션들을 변하도록 목표 지향적일 수 있다. 예컨대, 오브젝트 추적의 경우에, 목표는 오브젝트를 추적하여 이를 시각적 필드 내에 유지하는 것이다. 보다 복잡한 예들은 특정한 사람을 찾기 위한 검색 또는 이를테면, 사람을 웃게 하도록 PCD(100)의 거동을 변동시키는 것일 수 있다. 실시예들에서, PCD(100)의 무드 또는 감정 또는 정서 상태는 거동 또는 PCD(100)의 거동의 스타일을 수정할 수 있다. 이는 목표들의 우선순위화 또는 PCD의 관심에 영향을 미칠 수 있다. 또한, 이는 PCD(100)가 경험으로부터 무엇을 어떻게 학습하는지에 영향을 미칠 수 있다.
[00390] 특히, 트리가 커질 때, 거동 트리들의 가독성이 중요하다. 발화에 기반하여 트리를 분기시키는 간단한 사례문을 보자. 사례문을 선언하는 공식적인 방식은 그것이 실행할 하나를 "선택"하는 칠드런을 갖는 Select 거동을 생성하는 것이다. 각각의 차일드는 그 거동을 "선택"하기 위한 로직을 포함하는 FailOnCondition로 데코레이팅된다. 공식적이지만, 이는 각각의 데코레이터의 로직을 검사하지 않고 다른 엘리먼트보다 하나의 엘리먼트가 선택되는 이유를 자동적으로 알게 하는 것을 어렵게 한다. 그러나 설명 필드는 더 많은 컨텍스트를 제공하기 위해 수동으로 편집될 수 있지만, 선택 로직과 설명 필드 간의 공식적인 관계가 반드시 존재하는 것은 아니다. 도 22를 참조하면, 예시적이며 비제한적인 실시예에 따른 분기 로직을 생성하는 공식적 방식이 예시된다. 제1 및 제2 데코레이터(2200, 2202)의 코드에 주의한다. 도 22는 공식적 관계를 예시한다.
[00391] PCD(100)에서, 공통 분기 패턴들이 존재한다. 이들 중 소수는 문법-기반의 분기; 터치-기반 분기; 및 비전-기반 분기를 포함한다.
[00392] 가장 일반적인 분기의 경우, 거동 툴 GUI가 트리 가시화를 단순화하고 "설명"과 논리 간의 공식적 관계를 제공할 수 있다. 이는 거동 트리 편집기에 "Info" 열을 추가함으로써 달성될 수 있으며, 이는 기본 로직을 인트로스페 팅(introspecting)함으로써 유도된 설명이 자동 파퓰레이팅된다. GUI 툴은 "GrammarSelect"로 불리는 전문화된 Select 거동이 GUI의 특정 모드에서 제공되도록 되어있다는 것을 안다. 기본 트리 구조는 도 22에서와 정확히 동일할 수 있지만 보다 판독 가능한 방식으로 제공될 수 있다.
[00393] 도 23을 참조로, 예시적이며 비제한적인 실시예가 예시되며, 이로써, 선택 로직은 인수로서 거동 그 자체에 부가될 수 있다. 이 경우, 부가된 인수는 리턴된 문법 태그에 대응하는 스트링 필드일 수 있으며, 인수의 값은 "Info" 필드에 자동적으로 배치될 수 있다. GrammarSelect에 대한 각각의 차일드 거동의 부가된 인수의 값은 기본 SucceedElseFail 데코레이터를 파퓰레이팅하는 정확한 코드를 생성하기 위해 사용될 수 있다.
[00394] 멀티모달 상호작용에 대한 "공통 패턴"이 알려져 있으며, 그것은, 과거에 사용되었던 유니모달 상호작용(스피치)에 대한 공통 패턴의 진화이다. 이것은 순차적인 멀티모달러티(예컨대, 2개의 모드들)에서만 참이다. 그러나, 로봇 거동 및 HMI(human-machine interaction)는 약간 상이한 패러다임들을 갖는다. 처음 것은 거동 트리에 의해 더 용이하게 표현되는 반면, 다이얼로그의 "중첩하는" 구조 그 자체는 중첩 "경우" 사례문들, 또는 훨씬 더 일반적으로는 조건부 원호를 갖는 재귀적 방향성 그래프를 수반하는 표현에 더 적합하다. 그러므로, 본 발명은, HMI의 가독성을 증가시키기 위해 GrammarSelect에 대한 향상으로 2개를 매칭시켜, 정교한 상호작용들을 구축하는 것을 허용할 수 있다.
[00395] 실제로, 임의의 인간-머신 상호작용이 이런 식으로 발생할 수 있다. 먼저, 머신은 어떤 것(일반적으로, 애니메이션+오디오+텍스처와 같은 어떤 것)을 출력하도록 구성되고, 그런 다음, 인간은 어떤 것(일반적으로, 스피치 또는 터치)을 입력하거나 또는 일부 다른 프로세스는 상호작용에 상당한 이벤트를 리턴시키며, 시퀀스는 부가적인 출력들 및 입력들과 함께 그곳으로부터 반복된다.
[00396] 그러므로, 위의 경우 사례문(GrammarSelect)은, 본 발명이 그 경우 사례문을 전체 이벤트 패러다임으로 확장시켰고, 본 발명이 일반적인 HMI 선택을 가질 수 있다는 것을 커버할 것이며, 여기서, 본 발명은 (이벤트에 대응하는) 태그 및 태그의 타입(문법, 비전, 터치)을 특정할 수 있다. 위의 것은 다음과 같을 것이다:
[00397] HMI_InputSelect:
[00398] AnyBehavior1 Speech:RANDOMPICTURE, Touch: AREA1
[00399] AnyBeahvior2 Speech:RANDOMPICTURE, Touch: AREA2
[00400] AnyBehavior3 Vision: TRACKINGFACELOST
[00401] 쉼표들에 의해 분리된 태그들은 또는(OR)에 있다. 이러한 예에서, 거동은 누군가가 "take random pictures"를 말하거나 또는 AREA1을 터치한 것에 대해 AnyBehavior1로 누군가가 "Play Music"을 말하거나 또는 Area2를 터치한 것에 대해 Behavior 2로, 또는 비전 시스템이 TRACKINGFACELOST를 리턴한 경우 응답할 것이다.
[00402] HMI 흐름의 가독성을 개선시키기 위한 다른 방식은, 예컨대, "말하다"로 불리는 기본 거동을 도입함으로써 거동 트리 사양 뷰 내의 프롬프트들의 텍스트를 명시적으로 보는 것이다. 그러므로, 위의 예를 참조하면, 누군가가 RANDOMPICTURE를 말한 경우, 그것은 AnyBehavior1Sequence:AnyBehavior1로 입력된다.
[00403] PCD(100)는 "OK, I am going to take a picture of you now. Ready?"를 말한다.
[00404] 사용자는 "Yes"를 리턴하여, Behavior Speech:YES 또는 Touch:YESAREA의 프로세싱을 야기한다.
[00405] 그런 다음, PCD(100)는 시퀀스, 이를테면 TakePictureBehavior I을 개시한다.
[00406] PCD(100)가 "no"를 검출하는 경우, 이를테면 NoBehavior Speech:NO를 듣거나 또는 Touch:NOAREA를 감지하는 경우, 사용자는 GoHomeBehavior를 실행하고, 스피치 거동: robotSpeak "OK. Going back to home screen"을 개시한다.
[00407] 이 경우, PCD 말하기는 다수의 프롬프트들 및 대응하는 애니메이션들을 랜덤화하는 기본 거동이다(실시예들에서, 사람이 거동을 더블 클릭하는 경우 사람은 프롬프트들 및 애니메이션들을 볼 수 있고, 거동 편집 박스가 팝업될 것이다). 개발자가 애플리케이션을 설계하고 있는 동안 UI 설계가 프롬프트를 기록할 수 있기 때문에, 이러한 거동의 타이핑을 갖는 것이 중요하다. 그런 다음, 사람은 모든 프롬프트들에 대한 거동 트리를 자동적으로 마이닝하고, 보이스 탤런트에 대한 매니페스트 표를 생성하고, 프롬프트들에 대한 파일 이름들을 자동적으로 생성할 수 있는 등의 식이다. (그것만으도 많은 설계 및 스킬-개발 시간을 절약할 것이다).
[00408] 상호작용 거동이 위의 예에서 표현되는 방식으로, 개발자는 무엇이 발생할 것인지를 신속히 이해할 수 있으므로, 이것은 설계 및 구현을 동시에 나타낼 것이다.
[00409] 상호작용들을 나타내기 위해 의도된 트리들을 사용하는 것에 관해 통지하기 위한 하나의 것은, 상호작용이 깊은 경우(이를테면, 많은 중첩 턴들을 갖는 경우), 그것은 수평의 실제 자산을 신속히 소모한다는 것이다. 그러므로, 설계자는 다른 곳에서 정의된 거동들로 후속적인 턴들을 캡슐화하는 습관을 만들 수 있다. 가동성에 영향을 주는 다른 문제점은, 종료 조건이 중첩 문들에서 명확하지 않다는 것이다. 방향성 그래프 표현에서, 사람은 원하게 될 때마다 임의의 지점에 원호를 놓을 수 있으며, 그것은 완벽하게 판독가능하다. 중첩 절차에서, 그것은 절차로 하여금 나가게 하는 조건 뿐만 아니라 다른 콜링 절차들을 생성할 수 있다.
[00410] 거동 편집기의 메인 윈도우는 확장가능하고 접힘가능한 트리 구조일 수 있다. 이것은 거동들의 트리 구조를 나타낸다. 실시예들에서, 이러한 뷰의 각각의 거동에 대해, 사람은 드래그, 드롭, 삭제, 복사, 잘라내기, 붙이기, 다른 거동과 스와핑하고, 하나 또는 그 초과의 데코레이션들을 부가 또는 제거하고, 위 또는 아래에 형제를 부가하고 차일드를 부가할 수 있다(그리고 위의 것 중 임의의 것을 형제 또는 차일드에 적용할 수 있다).
[00411] 이러한 최상부 레벨 뷰는, 트리가 시도하려는 것의 양호한 아이디어를 저자가 획득할 수 있을 만큼 충분히 유익해야 한다. 이것은, 모든 각각의 행이 거동 및 데코레이터 이름들, 거동 타입을 나타내기 위한 작은 아이콘, 및 사용자-작성된 설명 필드를 포함할 수 있다는 것을 의미한다.
[00412] 각각의 거동은 제로 또는 그 초과의 파라미터들로 파라미터화될 수 있다. 예컨대, SimplePlayAnimation 거동은 하나의 파라미터: 애니메이션 이름을 취할 수 있다. 더 복잡한 거동들은 통상적으로 더 많은 파라미터들을 취할 것이다.
[00413] 컴파운드 거동은 서브 거동들로서 거동 툴에서 생성될 수 있다. 실시예들에서, 그것은 서브트리 파라미터들을 임의로 파라미터화하고, 그들을 컴파운드 거동의 최상부까지 그래픽으로 버블링할 수 있다.
[00414] 거동에 대한 각각의 파라미터는 그 파라미터와 연관된 "타입"을 가질 수 있다. 파라미터의 타입은 거동 저작 툴이 각각의 인수에 대한 유효 값들을 그래픽으로 입력하기 위해 사용자를 가능한 많이 돕게 할 수 있을 수 있다. 다음은, 사용자가 적합한 값을 작성하게 툴이 그래픽으로 어떻게 돕는지에 대한 설명들을 갖는 타입 상속 구조의 실시예이다: (1) CompiledClip: 컴파일링된 클립을 편집하는 것은, 타임라인 기반 편집기일 수 있는 애니메이션 편집기로 개발자를 안내할 수 있다; (2) 스트링: 텍스트 박스가 나타난다; (3) 파일: 파일 선정기가 나타난다; (4) 애니메이션 파일: 사용자 생성된 애니메이션들 및 PCD-생성된 애니메이션들을 포함할 수 있는 이용가능한 애니메이션들을 열거하는 파일 선정기 윈도우가 나타난다. 그것은 또한, 스폿 상에 애니메이션을 생성하기 위해 애니메이션 저작 툴로의 링크를 디스플레이할 수 있다; (5) 사운드 파일: 이용가능한 mp3 파일들을 열거하는 파일 선정기가 나타날 수 있다; (6) 문법 파일: 이용가능한 .raw 또는 .grammar 파일들을 열거하는 파일 선정기; (7) 문법 텍스트: 자동완성 및 구문 강조를 이용하는 문법 구문 편집기를 나타낸다; (8) TTS: TTS 편집기는 가급적 미리보기 모드에서 나타난다; (9) JavaScript: 소셜 로봇 API들에 대한 구문 강조 및 가능한 코드 완료를 이용하는 JavaScript 편집기, 이를테면 아톰을 나타낸다; (10) 환경 변수들: PCD(100)에 중요한 변수들이 존재한다; (11) 넘버: 넘버 박스가 나타난다. 최소, 최대, 디폴트; (12) 정수: 정수 선택 박스가 나타난다. 최소, 최대, 디폴트; (13) 부울: 참/허위 콤보 박스 또는 라디오 선택 버튼들이 나타난다; (14) Array<Type>: 타입의 엘리먼트들을 부가, 차감, 위 또는 아래로 이동시키기 위한 능력을 디스플레이한다; (15) Vector3d: (x, y, z) 박스를 디스플레이한다; 및 (16) 사람: 가장 근접하거나, 가장 멀리있거나, 가장 잘-알려진 등일 수 있다.
[00415] PCD(100)가 거동 트리를 실행할 때, 디버그 웹 인터페이스는, 트리가 있는 현재의 노드를 강조하여 그 트리의 그래픽 표현을 나타낼 수 있다. 시작, 중단, 및 전진 버튼들이 이용가능할 수 있다. 일시정지 동안, 툴은 글로벌 워치 변수들 및 거동 파라미터 값들에 대한 내성검사(introspection)를 허용할 수 있다. 뿐만 아니라, 제한된 입력 상호작용은 이용가능하게 계속 유지될 수 있다. 예컨대, 이것은, 어구를 트리거링하거나 또는 소셜 로봇 근방에 사람을 배치하는 것을 포함할 수 있으며, 이는 이러한 사람에 관한 템플릿 지식을 부가하는 것이 가능할 수 있다. 실시예들에서, 개발자들은 또한, 거동 모델들을 다른 개발자들과 공유할 수 있고, 이를테면 센서리-모터 스킬들 또는 모듈들을 공유할 수 있다. 예컨대, PCD(100)가 모바일 베이스를 갖는 경우, 내비게이션 및 맵핑 모델들이 개발자들 간에 공유될 수 있다. 거동 로직 부류들은, 이를테면 기능성에 대한 변형들을 확장 및 제공하도록 개발자들에 의해 수정될 수 있다.
[00416] SDK의 툴들은 소셜 로봇의 표현들을 관리하기 위한 표현 툴 모음을 포함할 수 있다. 표현 툴 모음의 코어 특징은 시뮬레이션 윈도우이다. 도 24를 참조로, 시뮬레이션 윈도우의 실시예가 예시되며, 여기서, 스크린샷들 둘 모두의 메인 뷰는 PCD(100)의 애니메이션을 시뮬레이팅한다. 최상부 메인 뷰(2400)는 또한, 아이 그래픽에 대한 초점을 시뮬레이팅한다. 각각의 스크린샷의 상부 좌측 부분은 스크린 그래픽(2402, 2402')을 시뮬레이팅한다. 이러한 시뮬레이션 뷰는, (실행되는 브라우저, 이를테면 Chrome™의 현재 버전을 갖는 것 이외에) 어떠한 특수 툴들도 소셜 로봇 애니메이션을 시뮬레이팅하도록 요구되지 않도록 WebGL로 기록될 수 있다. 이러한 시뮬레이션 뷰는 그 자체로 별개의 툴일 필요는 없으며; 대신, 그 시뮬레이션 뷰는, PCD 플랫폼의 호스트 및 다른 개발자들이 PCD 애니메이션들, 이를테면 다양한 스킬들의 애니메이션들을 생성 및 테스트하게 할 수 있을 툴들에 임베딩될 수 있는 뷰일 수 있다. 그것은, 개발자가 실시간으로 움직임 또는 애니메이션을 플레이 백하길 원할 때 또는 애니메이션을 순차적으로 "스텝 쓰루"함으로써 인보크될 수 있다. 따라서, 본원에서 제공된 것은 소셜 로봇의 거동을 시뮬레이팅하기 위한 시뮬레이션 툴이며, 여기서, 동일한 코드가 시뮬레이션, 및 소셜 로봇의 실제 실행에 대해 사용될 수 있다.
[00417] 도 25를 참조로, 소셜 로봇 표현 툴 모음의 소셜 로봇 애니메이션 편집기의 예시적이며 비제한적인 실시예가 예시된다. 그러한 툴을 이용하여, 개발자는 하나 또는 그 초과의 소셜 로봇 움직임들, 스크린 그래픽들, 사운드들, 텍스트-대-스피치 액션들, 및 조명, 이를테면 LED 바디 조명 및 기능성으로 구성된 소셜 로봇 애니메이션을 함께 짜 맞출 수 있다. 도 25는 PCD(100)와 함께 사용을 위해 적응될 수 있는 타입의 종래의 애니메이션 편집기(2500)를 도시한다. 애니메이션 편집기의 핵심 특징들은 소셜 로봇 애니메이션들을 플레이 백하기 위한 시뮬레이션 윈도우(2502), 개발자/설계자가 어셋들(움직임들, 그래픽들, 사운드/TTS, LED 바디 조명, 또는 완료된 애니메이션들)을 타임라인에 배치시킬 수 있는 애니메이션 편집기(2504), 및 개발자/설계자는 타임라인으로의 포함을 위해 기존의 어셋들을 픽할 수 있는 어셋 라이브러리(2506)를 포함할 수 있다. 어셋들은 개발자의 하드 드라이브로부터 또는 PCD 스토어로부터 발생될 수 있다. 이것은, PCD(100)의 뷰, 스케일, 회전 등을 변경하기 위한 D3 뷰잉을 지원할 수 있다. 실시예들에서, 편집기는, PCD의 가상 환경을 확장할 수 있는, 이를테면 사람들을 시뮬레이팅하기 위한 아바타들을 갖거나, 사용자 인터페이스로부터 입력들을 수신하거나 등을 행할 수 있는 백그라운드들 또는 오브젝트들의 사용을 허용할 수 있다. 실시예들에서, 애니메이션 편집기는, 제어들을 반전시키고, 사용자들이 로봇을 포즈하고 그 포즈에 기반하여 키프레임들을 세팅하기 위한 인터페이스를 갖게 할 수 있는 모드를 가질 수 있다. 유사한 방식으로, 아이와 같은 스크린-기반 엘리먼트들, 오버레이 또는 백그라운드 엘리먼트를 애니메이팅하는 것은 터치 조작, 뒤이어 새로운 배향/변화들의 키프레이밍에 의해 행해질 수 있다. 이러한 접근법의 변형들이 또한 구체화될 수 있으며, 이를테면, 애니메이션들에 대한 커스텀 사운드 효과들(플레이스홀더 또는 최종)을 레코딩하기 위해 PCD(100)를 사용하는 것은 설계 스킬들의 창의적인 프로세스를 매우 가속화시킬 것이다. 실시예들에서, 툴은, 편집기가 연결되는 PCD(100) 상에서 직접 애니메이션 편집기를 통해 애니메이션들을 미리보는 것을 허용할 수 있다.
[00418] 실시예들에서, PCD 플랫폼의 호스트는 어셋들을 가져오고 새로운 어셋들을 생성하기 위한 능력을 지원할 수 있다. "가져오기" 및 "생성" 성능들은 본원에서 설명되는 다양한 어셋 타입들을 지원할 수 있다. 예컨대, 새로운 움직임을 생성하는 것은 소셜 로봇 애니메이션 움직임 툴을 론칭할 수 있는 반면, 새로운 TTS 어구들을 생성하는 것은 소셜 로봇의 말하는 툴을 론칭한다.
[00419] 새로운 LED 조명 스킴들을 생성하는 것은 다이얼로그 박스 또는 조명 툴을 통해 특정될 수 있다.
[00420] 실시예들에서, 하나 또는 그 초과의 툴들은 웹 애플리케이션, 이를테면 Chrome™ 웹 애플리케이션으로서 구체화될 수 있다. 실시예들에서, 정해진 툴은, 이를테면 고유한 파일 타입, 이를테면 .jba 또는 .anim 파일의 소셜 로봇 애니메이션 그 자체를 저장할 뿐만 아니라, 이를테면 .jbp 파일 타입의 소셜 로봇 애니메이션 프로젝트 파일로서 저장될 수 있다. PCD(100)가 새로운 능력들, 이를테면 지각 성능들, 물리적 성능들, 표현 성능들, 새로운 디바이스들(예컨대, 증강 현실 디바이스들)과의 연결성 등으로 진화되므로, 이러한 접근법은 새로운 툴들로 확장가능할 수 있다.
[00421] 도 26을 참조로, 이를테면, PCD 애니메이션 편집기(2500)로부터 "New...Animation"을 인보크함으로써 사용될 수 있는 PCD 애니메이션 편집기(2500)의 예시적이며 비제한적인 실시예가 예시된다. 자신의 코어에서, (이를테면, 로봇의 방사상 포지션 최하부, 중간 및 최상부 섹션들을 제어함으로써, 3 부분 로봇에서) 바디 포지션들을 특정하는 라디안 포지션들이 존재한다. 도 26에서, 한 세트의 슬라이더들(2602)은 움직임 포지션들을 제공하는 데 사용될 수 있다. 실시예들에서, 각각의 세트의 포지션들은 또한 타임-스탬핑될 수 있어서, 완전한 움직임이 시간/바디-포지션 값들의 어레이에 의해 정의된다. 나머지 슬라이더들은 아이 애니메이션에서 조인트들을 제어하기 위해 사용될 수 있다. 실시예들에서, 새로운 바디 애니메이션들을 생성하는 것으로부터 새로운 아이 애니메이션을 생성하는 것이 분리될 수 있다(이러한 실시예에서, 2개가 융합됨). 마지막으로, 툴은 또한 아이 그래픽의 룩(look)을 제어하기 위해 텍스처 파일의 가져오기를 지원할 수 있다. 툴은 터치 스크린과의 상호작용을 시뮬레이팅하는 것을 지원할 수 있다. 실시예들에서, 툴은 아이 외에 다양한 그래픽들, 이를테면 상호작용식 스토리 애니메이션들을 인에이블링할 수 있다.
[00422] PCD 시뮬레이터는 위의 참조된 시뮬레이션 윈도우를 포함할 뿐만 아니라, 센서리 입력을 주입하기 위한 인터페이스/콘솔을 가질 수 있다.
[00423] 실시예들에서, PCD(100)와 연관된 웹 포탈에 대한 키-기반 액세스는 개발자가 개발 및 테스팅을 위해 소셜 로봇 상에 스킬들을 설치하게 할 수 있다. PCD(100) 상의 웹 포탈은, 사용자가 PCD(100)와 계속해서 상호작용하는 동안에, PCD(100)의 스킬들의 런타임 디버깅을 위해 웹-기반 개발, 디버깅 및 가시화 툴들의 수집을 제공할 수 있다.
[00424] PCD(100)는 연관된 원격 저장 설비, 이를테면, PCD 클라우드를 가질 수 있고, 이는 그래픽들의 애니메이션, 바디 움직임, 사운드 및 표현에 대한 콘텐츠 생성을 지원하는 한 세트의 호스팅되는, 웹-기반 툴들 및 저장 성능들을 포함할 수 있다. 실시예들에서, PCD(100)는 다른 오프-보드 프로세싱, 이를테면, 스피치 인식 머신 학습, 내비게이션 등을 가질 수 있다. 이것은 거동 트리 라이브러리들을 사용하는 스킬들의 로직에 대한 거동 트리들의 생성을 위한 웹-기반 툴들뿐만 아니라 개발자 스킬들, 이를테면, 공통 정서 애니메이션들, 그래픽들 및 사운드들을 향상시키기 위한 "플러그-인" 콘텐츠의 라이브러리를 포함할 수 있다. 인터페이스는 다른 AP들, 이를테면, 홈 자동화 API들 등과 인터페이싱하기 위해 확장가능할 수 있다.
[00425] 본원에서 개시된 방법들 및 시스템들은 다양한 보안 고려사항들을 해결할 수 있다. 예컨대, 스킬들은 감각 플랫폼 자원들, 이를테면, 비디오 및 오디오 입력 스트림들에 액세스하기 위해 인가 토큰들을 요구할 수 있다. 스킬들은 소셜 로봇 스토어를 통해 디지털방식으로 서명된 "패키지들"로서 릴리즈될 수 있고, 설치 동안에 검증될 수 있다. 개발자들은 SDK의 일부로서 적용가능한 키들을 갖는 개개의 패키지를 획득할 수 있다.
[00426] 실시예들에서, PCD SDK, 종래의 웹 개발 툴들, 이를테면, HTML5, CSS, JS 및 WebGL뿐만 아니라 가시화를 위한 캔버스를 지원하면서, 간단한 브라우저, 이를테면, ChromeTM 브라우저에 의해 액세스될 수 있는 컴포넌트들을 포함할 수 있다. 실시예들에서, 개방 소스 버전의 브라우저, 이를테면, ChromeTM은 데스크톱 애플리케이션들을 구축하는 데 사용되고, 시뮬레이터 개발 환경 및 관련된 플러그인 위해 사용될 뿐만 아니라 PCD(100) 애플리케이션 런타임 동안에 사용될 수 있다. 이것은, 개발을 위해, 시뮬레이션 또는 런타임 사용이 통상적으로 최소의 수정으로 정규 브라우저들에서 실행될 수 있든지 아니든지 간에, PCD(100)가, 이를테면, 모바일 또는 PC 브라우저들 상에서 스킬들을 미리볼 수 있게 하기 위한 코드를 의미한다.
[00427] 본원에서 설명되는 SDK는 다양한 어셋 타입들, 이를테면, 입력 문법들(이를테면, 프리-튜닝된 단어-스포팅 문법들을 포함함), 그래픽 자원들(이를테면, 소셜 로봇의 스크린 상에 디스플레이하기 위한 대중적인 그래픽 자원들); 사운드들(이를테면, PCD(100)의 스피커들 상에서 플레이하고, PCD(100)의 발화의 프로소디를 스컬춰링(sculpting)하고, 필터들을 보이스에 추가하기 위한 대중적인 사운드 자원들, 및 다른 사운드 효과들); 애니메이션들(이를테면, 조정된 애니메이션들에 패키징되는 움직임, 스크린 그래픽들, 사운드, 및 스피치의 대중적인 번들들); 및 거동 트리들(이를테면, 개발자들이 스킬들에 통합할 수 있는 대중적인 거동 트리 예들)을 지원할 수 있다.
[00428] PCD SDK는 광범위한 센서리 입력 및 제어 성능들, 이를테면, 로컬 지각 공간에 관련된 성능들(이를테면, 실시간 3D 사람 추적, 보이스 및/또는 안면 인식 및 안면 감정 추정을 통한 사람 식별); 이미징(이를테면, 포토들의 스냅핑, 이미지들의 오버레이, 및 이미지 스트림들의 압축); 오디오 입력(이를테면, 오디오 소스들의 로케이팅, 오디오 빔의 방향의 선택, 및 오디오 스트림의 압축); 스피치 인식(이를테면, 스피커 식별, 어구의 인식 및 어구-스포팅 문법들의 사용, 이름 인식, 표준 스피치 인식, 및 커스텀 어구-스포팅 문법들의 사용); 터치(이를테면, 그래픽 엘리먼트 상의 얼굴 터칭의 검출 및 소셜 로봇의 헤드에 대한 터치들의 검출); 및 제어(이를테면, 단순화된 IFTTT, JavaScript를 갖는 복잡한 거동 트리들 또는 빌트-인 거동 라이브러리들의 사용)를 관리하는 것을 인에이블링할 수 있다.
[00429] PCD SDK는 또한 표현들의 출력 및 공유에 관련된, 이를테면, 움직임(이를테면, 소셜-로봇-생성 애니메이션들의 플레잉), 커스텀 애니메이션들의 저장, 커스텀 애니메이션들의 가져오기 및 프로그램에 따른 그리고 운동학적 애니메이션 구조); 사운드(이를테면, 소셜-생성 사운드들의 플레잉, 커스텀 사운드들의 가져오기, 커스텀 사운드들의 플레잉, 및 혼합(이를테면, 실시간) 또는 사운드들의 혼합); 스피치 출력(이를테면, 사전-레코딩된 보이스 세그먼트들의 플레이 백, 정확한 이름 발음의 지원, 텍스트-대-스피치를 사용하는 텍스트의 플레이 백, 커스텀 사전-레코딩된 보이스 세그먼트들의 통합 및 텍스트-대-스피치 감정적 주석들의 사용); 조명(이를테면, LED 라이트들의 제어); 그래픽들(이를테면, 소셜 로봇-생성 그래픽들의 실행 또는 커스텀 그래픽들의 가져오기); 개인화 또는 스킬의 공유(이를테면, 단일 계정 내의 디바이스들 상의 실행, 다른 디바이스들 상의 다른 개발자들과의 공유, 및 스킬 스토어로의 분산)에 관련된 다양한 성능들을 가질 수 있다.
[00430] 다양한 예시적이며 비제한적인 실시예들에 따라, IOT(Internet of Things) 디바이스들의 라이브 성능을 조정하기 위해 PCD(100)를 사용하기 위한 방법들 및 시스템들이 제공된다.
[00431] 일부 실시예들에서, PCD(100)는 스피커들, 라이트들 등을 포함하는 IOT 디바이스들의 타입들 및 위치들을 자동적으로 발견할 수 있다. 그런 다음, PCD(100)는 라이브 뮤지컬 공연을 향상시키기 위해 라이트들 및 스피커들을 제어할 수 있다. PCD(100)는 또한, 이를테면, 외부 디바이스들, 이를테면, 뮤직 디바이스들, IOT 디바이스들 등의 세팅들 및 거동들을 개인화하기 위해, 사용자들의 선호도들이 무엇인지를 경험으로부터 학습할 수 있다.
[00432] 비싸지 않은 IOT 디바이스들이 공통이 될 때, 그들을 엔터테이닝 방식들로 활용하는 것이 가능할 것이다. 공간 맵핑, 오브젝트 검출 및 오디오 검출과 함께, 뮤직, 비디오 및 다른 엔터테인먼트 미디어와 협력하여 이들 디바이스들을 제어하기 위해 PCD(100)가 이상적으로 장착된다. 잘 조정된 공연은 그의 청중을 기쁘게 할 것이다.
[00433] 연극 및 라이브 뮤직 공연들을 향상시키도록 사운드 및 조명을 자동적으로 제어하기 위한 상업적 솔루션들이 존재한다. 가라오케 공연들을 향상시키기 위해 유사한 시스템들이 또한 사용된다. 기존 상업적 시스템들에서의 문제점은, 그들이 값비싸고 사운드 및 조명 디바이스들을 정확하게 구성하기 위한 전문지식을 요구한다는 것이다. 제어가능한 디바이스들은 일반적으로 구체적으로 극장 또는 강당 환경들을 위해 설계된다. 이들 시스템들 및 디바이스들은 홈들에서 발견되지 않는다.
[00434] 이를테면, 라이브 뮤지컬 공연을 향상시키기 위해, (1) 라이트들, 스피커들 등을 포함하는 IOT 디바이스들의 타입들 및 위치들을 자동적으로 발견하고, (2) 이들 라이트들, 스피커들 등을 제어할 수 있는 적절하게 프로그래밍된 PCD(100)가 본원에서 제공된다.
[00435] IOT 라이트들 및 스피커들이, 이를테면, 주방 및 인접한 가족 룸에 설치된 홈에 있는 가족이 고려된다. 새로운 기술의 채택자들인 이러한 가족은 주방에 전개될 수 있는 개인 PCD(100)를 구매할 수 있다. 그의 셋업 절차의 일부로서, 소셜 로봇은 가족의 IOT 디바이스들의 타입들 및 위치들을 발견하고, 그들에 액세스하고 그들을 제어하기 위한 허가를 요청할 수 있다. 허가가 그랜트된 경우, PCD(100)는 대중적인 노래를 연주하도록 제시할 수 있다. 그런 다음, 소셜 로봇은 공연을 시작하기 위해 그 자신의 사운드 시스템 및 표현 물리적 애니메이션을 사용한다. 그런 다음, 가족을 기쁘게 하기 위해, 주방 및 가족 룸의 IOT 라이트들은 뮤직과 함께 고동치기 시작하여, 뮤지컬 이벤트들을 강조한다. 그런 다음, IOT 스피커들은 플레이하기 시작하여, 뮤직의 스테레오/공간 성질을 향상시킨다.
[00436] IOT 디바이스들과 뮤직(또는 다른) 공연을 조정하기 위한 능력은 PCD(100)의 인식되는 값을 향상시킨다. 이것은 또한 홈 외부에서 ad hoc 라이브 공연들을 자동적으로 세팅하고 향상시키는데 있어서 PCD(100)를 가치가 있게 할 수 있다.
[00437] 인간 참가자들 간의 미팅 또는 대화를 조정하기 위해 PCD(100)를 사용하기 위한 방법들 및 시스템들이 본원에서 제공된다. 그러한 실시예들에서, 적절히 설계된 PCD(100)는, 미팅들 및 대화들의 동적 및 유효성을 개선하기 위한 미팅 조정자로서 사용될 수 있다.
[00438] 미팅들은 종종 의도된 바와 같이 효과적이지 않고, 미팅들을 숙련되게 조정할 수 있는 개인들이 항상 이용가능하지는 않다. 차선의 미팅들에 기여하는 팩터들을 해결하기 위한 성공적인 시도들은 일반적으로 전문 조정가들의 전문화된 트레이닝 세션들 또는 활용의 형태를 취한다. 이들 접근법들은 효과적일 수 있지만, 그들은 값비싸다.
[00439] 트레이닝되지 않은 개인들이 미팅들을 조정하기 위한 시도들은 종종 실패하는데, 왜냐하면 개인들이 피어들에 의해 제시된 명령 및 충고에 저항력이 있기 때문이다.
[00440] 종종, 미팅 또는 대화의 목표는, 참가자들이 미팅하는 동안에 아이디어들 및 견해들에 기여할 때, 아이디어들 및 견해들을 논의하는 것이다. 종종, 참가자들이 자유롭게 기여할 기회를 가질 것이라고 예상된다. 이들 목표들 및 예상들이 정해지면, 최적의 미팅 또는 대화는, 모든 참가자들에 의해 가치가 있고 관련된 기여들이 이루어지고 모든 중요한 아이디어들 및 견해들이 기여되는 것이다.
[00441] 다수의 인간 팩터들은 미팅의 성공을 제한할 수 있다. 예컨대, 개인들이 항상 미팅의 목표들 및 예상들에 커미팅되지는(committed) 않다. 또한, 개인들 간의 다이나믹은 미팅의 목표들 및 예상들과 항상 정렬되지는 않는다. 때때로, 미팅의 참가자들의 의도는 미팅의 목표들에 명시적으로 반대된다. 예컨대, 상호 논의를 촉진시키도록 의도된 미팅은, 목표가 논의를 특정 방향으로 조종하는 것인 참가자에 의해 장악될 수 있다. 다른 경우들에서, 개인들 간의 동력학은 적대적일 수 있어서, 논의가 의도된 주제보다는 동력학에 포커싱하게 한다. 의도치 않은 방해는 또한 미팅의 성공을 최소화할 수 있다. 예컨대, 수다스럽고 표현력이 있는 참가자는 무심코 논의를 독점하고, 다른 것들이 자유롭게 기여하는 것을 방지할 수 있다.
[00442] 이들 제한 팩터들로 인해, (대부분은 아니지만) 많은 미팅들은 차선이다. 비지니스 세팅에서, 차선의, 비효율적인 미팅들이 자원들의 값비싼 낭비일 수 있다. 가족에서, 차선의 대화들은 불운한 손실된 기회일 수 있다.
[00443] 위에 언급된 문제점은 타고난 인간 성향들의 결과이고, 이를 해결하고 정정하기 것이 너무 없기 때문에, 문제점이 지속된다. 개인들의 통상적인 교육 동안, 읽기, 쓰기, 산술, 과학, 미술, 뮤직, 비지니스 등을 위한 명령에 상당한 시간이 소비된다. 그러나, 거의 또는 아예 명백하지 않은 명령은 대화 콜라보레이션 또는 설득(수사법)과 같은 중요한 스킬들에 제공된다. 이로 인해, 일반적으로 콜라보레이션, 및 특히 미팅들의 유효성을 상당히 개선할 기회가 있다.
[00444] 연구는, 인간들이 다른 인간으로부터보다는 소셜 로봇으로부터 명령 및 충고를 더 기꺼이 수용하고 따른다는 것을 드러낸다. 소셜 로봇은 미팅들에 대한 공정하고, 도덕적 판단이 아닌 전문 조정자로서 동작할 수 있다. PCD의 바이오메트릭 인식 성능은 PCD가 미팅의 각각의 개인에 의한 참가도를 정확하게 추적하고 측정하게 할 수 있다. 이러한 정보는 참가의 실시간 히스토그램으로서 제공될 수 있다. 히스토그램은 개인 당 발화 시간; 개인들 간의 전후; 각각의 개인에 의해 프로젝팅된 톤(포지티브/네거티브); 공손함; 관용적 표현들(포지티브 및 네거티브, 격려 및 비판, 무감각); 문화적 실례; 개인들의 감정 상태(정서적인 분석); 시간에 따른 전체 에너지; 및 논의되는 토픽들 및 서브토픽들을 포함할 수 있다.
[00445] 미팅하는 동안 전반에 걸쳐, PCD(100)는 언어적 콘텐츠를 기록하고 그리고 논의를 캡처하고 미팅의 유효성을 평가하는 것 둘 모두를 위해 객관적 툴을 제공하기 위해 이를 사회적 측정들과 상관시킬 수 있다.
[00446] PCD(100)는 미팅을 추적하기 위해 미팅 동안 끼어들을 수 있는 관련 임계치들로 구성될 수 있다. 예컨대, 로봇은 다음과 같은 때에 끼어들 수 있다: 누군가가 너무 많이 이야기할 때; 톤이 너무 네거티브일 때; 부적절한 관용 표현들이 사용될 때; 무감각이 검출될 때; 전체 에너지가 너무 낮을 때; 및/또는 본질적 토픽들이 처리되지 않을 때.
[00447] 공정한 미팅 조정자 및 소셜 미러링 둘 다로서의 능력에서, PCD(100)는 참가자들이 2개의 중요한 목표들을 달성하게 도울 수 있다: 즉 미팅들을 더 효율적으로 수행하고 협력과 대화를 더 효과적으로 학습하는 것.
[00448] 예컨대, 미팅은 기술이 전개될 수 있는 환경이다. 미팅 참가자들은 다양한 통신 스타일들을 가진 다양한 분야들의 전문가들을 포함할 수 있다. 미팅이 수다스러운 참가자에 의해 지배되는 경우에, PCD 조정자는 모든 참가자들의 상대적인 발화 시간을 나타내는 실시간 히스토그램(적합한 디스플레이 상에 디스플레이됨)을 (비-판단 방식으로) 제시할 수 있다. 부가적으로, 부적절한 표현들이 사용되는 경우, 소셜 로봇은 이를테면 히스토그램을 통해, 참가자들에게 이들 표현들을 (판단 없이) 나타낼 수 있다. 미팅의 에너지 및 톤은 또한 실시간으로 측정되고 추적되며 이전, 효과적인 미팅들과 비교될 수 있다. 학습하는 기회로서, 효과적인 미팅과 비효과적인 미팅 둘 다는 PCD(100)에 의해 수집된 통계를 사용하여 비교될 수 있다.
[00449] 따라서, 소셜 로봇, 이를테면 PCD(100)는 미팅들의 조정자로서, 관련 정보를 레코딩 및 디스플레이하고, 그리고 미팅들의 유효성 및 동력학을 개선하고, 이는 증가된 생산성 및 자원의 더 나은 사용으로 변환될 수 있다.
[00450] 또한 본원에는 인증된 인간 아이덴티티들 및 네트워크화된 모바일 디바이스들 중에서 정보를 분산시키기 위해 로봇 에이전트들의 네트워크를 조직하기 위한 방법들 및 시스템들이 제공된다.
[00451] 통신 채널들의 수 및 다양성이 증가함에 따라, 메시지 전송자들과 수신자들이 경쟁해야 하는 "노이즈"도 증가한다. 부가적으로, 새로운 채널들은 종종 특정 모드의 메시지 전달을 전문으로 한다. 결과는, 메시지 전송자가, 메시지 전달의 가능성 및 유효성을 최대화하기 위해 어느 채널을 사용할지를 판정해야 하는 것이다. 마찬가지로, 메시지 수신자는 시기 적절하게 메시지들을 수신하기 위해 어느 채널(들)을 "시청"할지를 판정하해야 한다. 이들 판정들은 점점더 어렵게 된다.
[00452] 오늘날, 다수의 이메일 계정들로부터의 메시지들은 메일-판독 프로그램들에 의해 자동적으로 통합되고, 이는 다수의 이메일 채널들을 동시적으로 모니터링하는 것을 가능하게 한다. 마찬가지로, 모바일 디바이스들은 통합된 방식으로 다수의 채널들로부터 텍스트 메시지들을 제공할 수 있다. 그러나, 메시지 통합은 "노이즈" 문제점을 해결하지 못한다. 이는, 동일한 모드로 모두 제공되는 메시지들로 수신자에게 충격을 줌으로써 문제점이 더 악화되게 할 수 있다.
[00453] 소셜 로봇들은, 커맨드 관심에 대한 그들의 능력 때문에 그리고 인간들이 인간형 통신에 할당하는 중요성 때문에, 메시지 통신에서 고유한 역할을 플레이할 수 있다. 소셜 로봇이 메시지를 수신자에게 전달하기 위한 채널로서 사용될 때, 전달 모드는 소셜 로봇에 의해 자동적으로 선정될 수 있어서, 메시지는 수신자에 의한 최적 관심 정도를 수신한다.
[00454] 이것은 소셜 로봇들에 고유한 몇몇 특징을 사용하여 달성될 수 있다: (1) 소셜 로봇의 물리적 존재는 인간들이 타고나게 조율을 이룬 표현 큐들로 관심을 끌게 할 수 있다, 즉 모션, 응시 방향, "바디 언어"; (2) 바이오메트릭 인식 성능을 가진 소셜 로봇은 메시지의 의도된 수신자가 물리적으로 존재할 때를 검출하고 가장 효과적인 물리적 큐들을 가진 그 수신자를 프롬프팅할 수 있다; 그리고 (3) 소셜 로봇에 의해 사용되는 학습하는 알고리즘들은 메시지를 어떻게 효과적으로 전달할지에 관한 최적 판정을 하기 위해 메시지 콘텐츠, 시츄에이션 콘텍스트 및 거동 히스토리를 사용할 수 있다.
[00455] 네트워크화된 소셜 로봇들, 이를테면 PCD(100)뿐 아니라, 다른 디바이스들, 이를테면 모바일 디바이스들 및 다른 네트워크-연결된 디바이스들은 본원에서 개시된 방법들 및 시스템들에 사용될 수 있다. 개개의 소셜 로봇에 의해 제공된 메시지-전달 장점들은, 다수의 네트워크화된 소셜 로봇들이 사용되는 로봇들일 때 증폭된다. 가정 세팅에서, 다수의 PCD들(하우스의 룸들/존들 중에서 분산됨)은 그들의 메시지-전달 노력들을 조정할 수 있다. 가정 전반에 걸쳐 다수의 PCD들의 물리적 존재는 메시지들이 로봇들에 의해 전달될 수 있는 윈도우를 증가시킨다. PCD들의 네트워크는 가정 전반에 걸쳐 의도된 수신자의 소재들을 추적하기 위해 그들의 공유된 바이오메트릭 인식 성능들을 사용할 수 있다. PCD들의 네트워크에 의해 사용되는 학습하는 알고리즘들은, 어느 PCD 에이전트가 메시지를 가장 효과적으로 전달할 수 있는지를 결정하기 위해 수신자 움직임 및 거동에 관한 예측 모델들을 생성할 수 있다.
[00456] 이런 동일한 동력학은 임의의 물리적 위치에 적용될 수 있고 그리고 비지니스들, 박물관들, 라이브러리들 등에 적용될 수 있다.
[00457] PCD들의 네트워크에서 로봇들의 물리적 형태들은 변화할 수 있다. 네트워크는운송수단의 대시보드에 임베딩되고, 냉장고 같은 기기에 임베딩되는 등의 정지, 모바일, 이동, 롤링(roll) 가능, 비행가능한 PCD들로 이루어질 수 있다.
[00458] 게다가, PCD의 "브레인"(이의 소프트웨어, 로직, 학습하는 알고리즘들, 메모리 등)은 다양한 디바이스들에 걸쳐 복제될 수 있고, 이들 중 일부는 물리적 표현 바디들을 가지며, 이들 중 일부는, PCD(100) 소프트웨어가 모바일 폰 또는 태블릿(모바일 디바이스에 복제됨)에서 구체화되는 경우에서와 같이 물리적 표현 바디들을 가지지 않는다.
[00459] PCD의 소프트웨어가 모바일 디바이스에 복제될 때, 그 디바이스는 소셜 로봇 네트워크의 완전히 협력적이고, 완전히 인지되는 멤버로서뿐 아니라, 사회적 및/또는 기술적 네트워크 내의 인간들로서 동작할 수 있다. 물리적으로 제약된 PCD 인스턴스가 메시지들을 전달하는 태스크에 기여할 수 있는 정도는, 소유하는 기능성에 의존하는데, 즉 통상적인 스마트폰에서 구체화되는 PCD 소프트웨어는 종종 바이오메트릭 인식, 카메라 감시, 스피치 인식, 및 심지어 온-스크린 렌더링에 의한 시뮬레이팅된 물리적 표현을 제공할 수 있을 것이다.
[00460] 스마트폰 제약 PCD 인스턴스는 일반적으로 완전히 형성된 메시지들에 기여할 수 있고, 이어서 이런 메시지들은 네트워크 내의 다른 제약되지 않은 PCD들에 의해 전달될 수 있다.
[00461] PCD 인스턴스들의 네트워크에서, 각각의 인스턴스는 완전히 독립적인 기여자로서 동작할 수 있다. 그러나, 임의의 정해진 인스턴스는 또한 네트워크 상의 다른 PCD 인스턴스에 대한 원격 인터페이스(원격 제어부)로서 동작할 수 있다. 이런 원격 인터페이스 모드는 간헐적으로 액티브일 수 있거나, 또는 인스턴스는, 제약되지 않은 인스턴스에 원격 액세스를 제공하는 특정 목적을 위해 PCD 소프트웨어가 스마트폰 또는 스마트워치에 구체화되는 경우에서와 같이 다른 인스턴스에 대한 원격 인터페이스로서 동작하도록 영구적으로 구성될 수 있다.
[00462] 실시예들에서, 가족 홈 세팅에서, 메시지는 주방에서 제약되지 않은(전체-피처링된) 로봇 유닛을 사용하여 페어런츠에 의해 생성될 수 있다. 페어런츠는 PCD(100)와 말함으로써 메시지를 생성할 수 있다.
[00463] 메시지는 오디오/비디오 레코딩으로서 그리고 텍스트 트랜스크립트(transcript)로서, 이를테면 스피치-대-텍스트 기술로부터 캡처되고, 그리고 TTS(텍스트-대-스피치)를 통해 전달될 수 있다. 전달은 향후, 이를테면 방과 후 같이 일부 시간에 스케줄링된다. 의도된 수신자, 십대는 현재 집에 없을 수 있지만, 의도된 전달 시간에 도달할 수 있다. 이 예에서, 십대는 방과 후에 집에 오지만, 주방에 진입하지 않는다. 차고 입구 벽에 임베딩된 태블릿-구체화된 로봇 유닛은 그녀가 도달할 때 십대를 인식할 수 있다. 태블릿-구체화된 유닛이 주방 로봇 유닛, 이층방 로봇 유닛, 및 십대의 아이포드-구체화된 유닛과 네트워크화되기 때문에, 모두 4개의 유닛들은 시기 적절하게 메시지를 전달하도록 협력한다. 이런 종류의 메시지에 대해, 바람직한 전달 모드는 제약되지 않은 로봇 유닛을 통해 이루어지므로, 태블릿 유닛만이, 메시지가 대기 중인 것을 언급한다. "Hi, [teenager], you have a message waiting. 십대는 주방 및 이층 로봇 유닛들을 우회하여 그녀의 룸으로 진행할 수 있다. 전달 시간에 도달할 때, 로봇 유닛들의 네트워크는, 십대가 제약되지 않은 로봇 유닛에 근접하게 있지 않기 때문에, 메시지를 전달하기 위한 다음 최선의 방식이 십대의 아이포드-구체화된 유닛을 통해서라는 것을 결정할 수 있다. 결과적으로, 아이포드 유닛은 경고 톤을 사운딩하고 메시지("Hey, [teenager)]. There is a brownie waiting for you in the kitchen"를 전달한다. 십대가 마지막으로 주방에 진입할 때, 주방 로봇 유닛은 이미, 메시지("Hi, [teenager]. If you ready for that brownie, it’s in the toaster oven")가 전달되었다는 것을 인지하고 단지 공손한 리마인더만을 제공한다. PCD(100)는 또한, "Carol, Jim left a message for you. Something about picking up the kids from soccer today" 같이 메시지의 콘텐츠와, 누구인지를 요약할 수 있다. 이것은 메시지를 청취할 때(즉, 또는 다소 나중에) Carol이 판정하게 도울 수 있다.
[00464] 따라서, 소셜 로봇들의 네트워크는 (이를테면 PCD(100)와 연관된 모바일 디바이스 간의 링크에 기반하여) 바이오메트릭 인식, 추적, 물리적 존재, 비언어적 및/또는 소셜 큐들, 및 그렇지 않으면 다수의, 복잡한 메시지 채널들의 노이즈에서 손실될 메시지들을 전달하기 위한 액티브 프롬프팅을 사용할 수 있다.
[00465] 다른 실시예들에서, 큰소리로 플레이되는 비디오 게임들을 큰소리로 플레이하거나 TV를 청취하는 것은, 오디오가 기분을 좋게 한다는 점에서 상이한 취향들을 가진 근처의 다른 사람들에게 매우 성가시게 할 수 있다. 부가적으로, 많은 가족들은 다른 가족들보다 나중까지 머무르는 멤버들을 가질 수 있다.
[00466] 제안된 솔루션은, 청취자들이 소셜 로봇으로부터 무선으로 오디오를 수신하는 헤드폰들을 사용하는 방식을 지원하여, 단지 그 청취자만이 듣고 타협 없이 그들이 원하는 만큼 크게 자유롭게 듣는 것이다. 변형들은 블루투스 헤드폰들, 헤드폰들 번들, 유선 헤드폰들(이를테면 로컬 Wi-Fi 또는 블루투스를 사용함)을 가진 모바일 수신기 등을 포함할 수 있다.
[00467] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 대중적인 스마트폰들 상의 개인 보조자의 성능들과 유사한 리마인더 성능들을 가질 수 있다. 예: "At 3pm on December 5th, remind me to buy an anniversary gift" "OK, I'll remind you". 리마인더들은 약 리마인더들 같은 것들을 지원하기 위해 반복적일 수 있다. 사용자들은 오디오 또는 비디오 레코딩으로서 리마인더를 생성하기 위한 옵션을 가질 수 있고, 그런 경우 PCD(100)는 레코딩의 시작들에서 프롬프팅할 필요가 있을 수 있다. PCD(100)는, 메시지가 생성된 후에 요약할 수 있다(예컨대, "OK, I'm going to remind John tomorrow when I see him [play audio]"). 리마인더는 단지, 시간이 특정된 특수 형태의 PCD Jot(PCD Jo)이다.
[00468] PCD(100)는 물건들에 관한 가족 내의 알려진 사람들(동일한 리마인더에 대해 하나 또는 그 초과)을 리마인드할 수 있을 수 있다. 예컨대, "When you see Suzie, remind her to do her homework" or "At 6pm, remind Dad and Mom to pick me up from soccer practice"일 때, 리마이더가 정해진 경우, 리마인더의 발신자는, 자신이 소셜 로봇 링크 디바이스를 가지면 소셜 로봇 PCD 링크에 통지되어야 한다. 리마인더는 단지, 시간이 특수 형태의 특정된 PCD Jot(PCD Jot)이다. 실시예들에서, 링크는 PCD(100)와 모바일 디바이스 간에 있을 수 있다.
[00469] 타겟 사람이 없기 때문에 PCD(100)가 리마인더를 전달할 수 없는 경우, 리마인더는 타겟 소셜 로봇 링크 디바이스(들)에 나타날 수 있다. 타겟에 할당된 소셜 로봇 링크 디바이스가 없는 경우, PCD(100)는, 타겟 사람을 보자마자 메시지를 디스플레이할 수 있다.
[00470] 예시적이며 비제한적인 실시예들에 따라, PCD(100)는 짧은 텍스트 메시지들 또는 오디오/시각적 레코딩들을 본원에서 "Jots"로 지칭되는 디렉토리 내의 다른 PCD들로 전송하도록 할 수 있다. PCD Jot는 편집가능할 수 있고, 그리고 PCD Jot(PCD Jot) 레코딩은 전송 전에 플레이 백하고 재-레코딩할 수 있을 수 있다. PCD(100)는, PCD Jot(PCD Jot)가 성공적으로 전송된 것을 전송자들에게 확인할 수 있다. PCD(100)는 가정의 각각의 멤버에 대해 "전송된" Jots 폴더를 유지할 수 있고, 이는 메시지마다 브라우징되고 삭제될 수 있다. 전송된 Jots는 PCD 링크 또는 PCD(100) 상에서 뷰잉가능하고 그리고/또는 편집가능할 수 있다.
[00471] PCD는 이를테면 메시지들에 생명을 부여하거나 메시지들의 라이브니스를 향상시키기 위해 스크린-기반 디바이스들에서 사용되는 이모티콘들과 유사한, 본원에서 "로보티콘들"로 지칭되는 PCD 애니메이션들의 리스트를 유지할 수 있다. 예들은 "hello"를 나타내는 귀여운 윙크 또는 "uh-oh"를 나타내는 "o0"을 포함할 수 있다. 소셜 로보티콘들은 정교할 수 있고, 특정한 전문화된 라이브러리들이 PCD 스킬들 스토어 상에서의 구매를 위해 이용가능할 수 있다. 일부 PCD 로보티콘들은 독립형 애니메이션 표현들일 수 있다. 다른 것들은 사용자 비디오 이미지/메시지의 통합을 수용할 수 있다. PCD 로보티콘들은 PCD들의 표현 성능들(LED, 비피티 붑들, 또는 다른 사운드들 또는 사운드 효과들, 애니메이션 등) 중 임의의 것을 포함할 수 있다.
[00472] 사용자가 이를테면 PCT의 "스냅" 모드에 의해 캡처된 포토를 전송하도록 선택한 경우, PCD Jot 성능들은 포토에 첨부하도록 이용가능할 수 있다.
[00473] 예컨대, 가족 멤버는 PCD(100)에 "play me my reminders [from [person]]"를 항상 요청할 수 있고, PCD(100)는 그 사람에 대한 가장 빠른 리마인더들로부터 플레이를 시작함으로써 응답할 수 있다. PCD의 스크린은 대기하는 리마인더들이 있음을 나타낼 수 있다. PCD가 PCD Jot의 의도된 수신자를 보는 경우, PCD(100)는 리마인더가 마지막 6시간 내에 뷰잉되지 않았고 이제 리마인더의 시간이 도달된 경우 Jot를 플레이하도록 제시할 수 있다. 메시지를 뷰잉한 후, 수신자는 회답 또는 포워딩할 옵션을 가질 수 있고, 그런 다음 메시지를 세이브 또는 삭제할 수 있거나, 또는 사용자 정의된 시간 인터벌 후에 리플레이되는 메시지를 "스누즈"하고 가질 수 있다. 디폴트 액션은 메시지들을 세이브할 수 있다. PCD는 스크롤될 수 있는 세대의 각각의 멤버에 대한 PCD Jot들의 인박스를 유지할 수 있다.
[00474] 다수의 가족 멤버들이 있는 경우, 착신 PCD Jot는 이와 함께 의도된 수신자의 식별자를 반송할 수 있다. PCD(100)는 단지 의도된 수신자 또는 다른 인가된 사용자들에게 메시지들을 도시할 수 있다. 예컨대, 가족의 각각의 멤버는 자기 자신의 컬러를 가질 수 있고, 그 컬러에서 플래싱 "메시지" 표시자는 그 메시지가 자신을 위한 것임을 그 가족 멤버가 알게 한다. 패러다임은 가족의 상이한 멤버들을 대기하는 상이한 메시지들이 있는 인스턴스들을 수용해야 한다. 가족 멤버가 다른 가족 멤버의 메시지를 뷰잉하도록 인가되는지 여부는 관리자를 통해 구성가능할 수 있다.
[00475] PCD(100)는 해야할 일 리스트들 및 쇼핑 리스트들을 생성할 수 있고, 이는 PCD 링크 상에서 뷰잉가능하고 편집가능할 수 있다. 예컨대, 사용자들이 "PCD, I need to sign Jenny up for summer camp"를 말할 수 있고, PCD(100)는 "I've added 'sign Jenny up for summer camp' to your to-do list"를 응답할 수 있거나, 또는 "PCD, add butter to my shopping list"를 말할 수 있다. 리스트들은 각각의 가족 멤버를 위해 또는 전체 가족을 위해 생성될 수 있다. 가족의 각각의 멤버는 리스트를 가질 수 있고, 가족 리스트가 있을 수 있다.
[00476] PCD Jot는 미-사용 기간 후에 타임 아웃될 수 있다.
[00477] PCD는, 사용자들과 사회적 및 캐릭터-기반(정서, 페르소나 모델-주도 거동들) 상호작용들, 판정들, 학습들에 관여하는 지속적 "Be" 상태를 가질 수 있다. 이러한 상태는 PCD 스킬들을 조절하고, 경험 및 다른 입력들에 기반하여 PCD 거동 및 이러한 스킬들의 성능을 특정 사용자들에 대해 개인화할 수 있다.
[00478] PCD(100)는 단일의 별개의 "파워 오프" 포즈 뿐만 아니라, 턴 오프될 때 이를 그 포즈로 유도하는 일부 상이한 애니메이션 시퀀스들을 가질 수 있다. PCD(100)는, 플러그 인되거나 배터리 전력 상에서 실행될 때 단일의 별개의 "어슬립" 포즈 뿐만 아니라, "슬립" 커맨드를 획득한 후 또는 관여되지 않은 동안 낮잠을 자는 것으로 판정하는 경우 그 포즈로 유도하는 다수의 상이한 애니메이션 시퀀스들을 가질 수 있다. PCD(100)는, "웨이크 업" 언어적 또는 촉각적 커맨드들 또는 다른 시청각 이벤트들에 대응하거나 또는 <=48 시간 동안 어슬립 또는 오프될 때 전력을 턴 온/전력원에 연결하는 몇몇의 상이한 애니메이션들을 가질 수 있다. 실시예들에서, 별개의 슬립 모드들, 이를테면, PCD(100)가 대기하고 있지만 적합한 때 웨이크 업할 액티브 마이크로폰들 및 카메라들을 여전히 갖는 모드가 있을 수 있다. 다른 슬립 모드(일부 큐, 이를테면 LED 표시자)에 의해 표시될 수 있음)에서, PCD(100)는 마이크로폰들 및 카메라를 오프시킬 수 있어서, PCD(100)는 이러한 모드에서 어슬립일 때 보거나 듣지 않는다. 후자의 모드에서, 사람은 PCD(100)를 웨이크 업하기 위해 로봇을 터치하거나 또는 스피치 또는 시각적 입력과 상이한 모달리티를 사용할 필요가 있을 수 있다.
[00479] PCD(100)는, 언어적 또는 촉각적 "웨이크 업" 커맨드들 또는 >=48 시간 동안 어슬립 또는 오프될 때 전력을 턴 온/전력원에 연결하는 다른 시청각 이벤트들에 대응하는 몇몇의 상이한 애니메이션들을 가질 수 있다.
[00480] PCD(100)는 언어적 또는 촉각적 "웨이크 업" 커맨드들에 대응하거나 또는 예컨대 11pm와 11am 로컬 시간 간에 3시간 초과의 어슬립 또는 오프 이후 전력을 턴 온하는 몇몇의 웨이크 업 애니메이션들을 가질 수 있다.
[00481] PCD(100)는 어슬립인 동안 "드리밍"의 몇몇의 상이한 방식들을 가질 수 있다. 이러한 드리밍 상태들은 15분보다 오래 지속되는 슬립 세션들의 ~30% 동안 발생할 수 있다. PCD의 드림들은 인터럽트되어, 룸 안의 사람들이 PCD의 드림들이 방해받는 것을 발견하는 경우, 커맨드들로 또는 터치 스크린에 의해 사일런트 슬립 상태로 이동할 수 있다.
[00482] PCD(100)는 자신의 전력 레벨이 20% 미만일 때 그리고 예컨대, 그 후 대략 5%의 각각의 감소로, 구두로 및 온-스크린으로 사용자들에게 통지할 수 있다.
[00483] PCD(100)는 자신의 전력원이 아울렛과 배터리 간에 스위칭될 때 사용자들에게 온-스크린으로 통지할 수 있다. 또한, 질문들, 이를테면 "Are you plugged in?" 또는 "Are you using your battery?"에 응답할 수 있어야 한다. PCD(100)는, 자신의 머리의 후방 상의 버튼이 푸시되고 유지될 때 자동적으로 파워 온 또는 오프될 수 있다. 짧은 버튼 푸시는 소셜 로봇을 슬립하게 한다.
[00484] PCD(100)는 (보이스 또는 터치) 또는 단지 터치를 통해 슬립으로부터 웨이크 업하도록 세팅될 수 있다. PCD(100)가 온이지만 액티브 상호작용에(즉, 본원에서 "Be" 또는 "being" 상태로 지칭되는 베이스 상태에) 관여되지 않으면, PCD(100)는 누군가 자신의 라인 또는 시선에 진입하거나 노이즈를 만들 때, 수동 인지 애니메이션들을 나타낼 수 있다. 이러한 애니메이션들은, 사람이 관여하기를 원한다고 PCD(100)가 믿는 경우 액티브 인지를 유휴시키도록 유도할 수 있다.
[00485] 언어적 커맨드 때문에 또는 사람이 의도적으로 PCD(100)를 향해 걸어가고 있기 때문에 PCD(100)가 수동적으로 누군가를 인지하고 사람이 활발히 관여하기를 원한다고 믿는 경우, "at your service" 타입 액티브 인지 애니메이션을 나타낼 수 있다.
[00486] PCD(100)는, 시선을 요구하는 어떠한 것을 행하도록 요청받은 경우 외부 오브젝트가 PCD의 아이들을 커버하고 있기 때문에 볼 수 없는 경우 코멘트할 수 있다. PCD(100)가 임의의 종류의 프롬프트와는 독립적으로 머리에서 탭핑되는 경우, 액티브 인지를 유휴시키는 것으로 전환할 수 있다. 다른 실시예들에서, PCD(100)가 스트로크 또는 페팅되는 경우, 또는 구두로 칭찬받는 경우, "기쁨" 애니메이션을 나타낼 수 있고, 액티브 인지를 유휴시키는 것으로 전환할 수 있다.
[00487] PCD의 가족의 인식된 멤버가 이를테면 음성 ID를 통해 가시선에 있거나 식별되는 경우, PCD(100)는 일반적으로, 반드시 구두로서가 아니라 개인적인 방식으로(이는 그 가족 멤버의 마지막 목격의 최신성에 의존할 수 있음) 그 가족 멤버에게 그리팅할 수 있다.
[00488] 낯선 사람이 가시선에 있거나 보이스를 통해 검출되는 경우, PCD는 수동 인지 모드로 이동할 수 있다. 낯선 사람으로부터의 관심을 검출하는 경우, 반복 없이 자신을 소개해야 한다. PCD(100)는 그 다른 사람이 누구인지 적극적으로 요청하지 않을 수 있는데, 이는, "알려진 가족 멤버들"이 PCD의 가족 관리자에 의해 관리되기 때문이다.
[00489] PCD의 가족의 인식된 멤버가 인식되지 않은 낯선 사람과 함께 있는 경우, PCD(100)는 먼저 가족 멤버에게 개인적으로 그리팅한다. 그 가족 멤버가 PCD(100)를 낯선 사람에게 소개하는 경우, PCD(100)는 그 다른 사람이 누구인지 적극적으로 요청하지 않을 수 있는데, 이는, "알려진 가족 멤버들"이 소셜 로봇의 가족 관리자에 의해 관리되기 때문이다.
[00490] 소셜 로봇의 가족 관리자가 새로운 사람을 만나도록 소셜 로봇을 소개하고, 그가 새로운 사람을 기억해야 한다고 관리자가 적극적으로 말하는 경우, 소셜 로봇은 16개의 ID 슬롯들 중 하나를 차지해야 한다. 어떠한 이용가능한 ID 슬롯들도 없는 경우, PCD(100)는 그가 기존의 인식된 사람을 대체하기를 원하는지 여부를 관리자에게 문의할 수 있다.
[00491] 새로운 사람을 학습하도록 요청받을 때, PCD(100)는 필요한 시각적 및 오디오 데이터를 수집하고, 시각적 및 오디오 샘플들을 더 최적으로 캡처하고 이름 발음을 학습하기 위해 새로운 사람이 PCD 링크 앱을 경험하게 하도록 관리자에게 또한 제안할 수 있다.
[00492] 일부 실시예들에서, PCD(100)는 시각에 기반하여 몇몇 형태들의 그리팅들을 가질 수 있다. 예컨대, "Good Morning" 또는 "Good evening" 또는 "You're up late". 자신이 그리팅하고 있는 사람을 PCD(100)가 아는 경우, 항상은 아니지만 자주 그 사람의 이름으로 개인화될 수 있다.
[00493] 누군가가 PCD(100)에게 굿바이를 말하는 경우, PCD는 작별을 고하는 몇몇 방식들을 가질 수 있다. PCD(100)가 굿바이를 말하는 사람을 아는 경우, PCD는 그 사람의 이름을 갖는 작별을 개인화할 수 있다.
[00494] PCD(100)는 제한되지 않은 다이얼로그를 조장하지 않는 그러한 방식으로 구성된 일부 유휴 채터 성능들을 가질 수 있다. 이들은 사용자 응답을 목적으로 하는 발화들, 또는 응답을 베코닝하지는 않지만 사용자를 즐겁게 하도록 설계된 간단한 재담들을 포함할 수 있다. 이러한 발화들은 가족 팩트 탭에 정의된 바와 같은, 이를테면 가족의 누군가의 "happy birthday"를 바라는 알려진 "가족 팩트들"을 지칭할 수 있다. 실시예들에서, 이를테면 PCD(100)의 사용자에게 프롬프팅하기 위해 PCD(100)가 청취할 것으로 예상하고 있는 발화들에 관한 시각적 힌트들이 스크린 상에 디스플레이될 수 있다. 발화들은 또한 특정 PCD의 지프 코드에 기반하여 지오센트릭일 수 있다. 발화들은 또한 설계 팀에 의해 PCD 클라우드로부터 푸시되는 것과 같은 토피컬일 수 있어서, 이를테면 "I can't believe Birdman swept the Academy Awards!"일 수 있다. 재담들은 유머러스하고 영리하며 PCD의 페르소나와 일관될 수 있다. 챗봇 콘텐츠는 또한, 사람들이 무엇을 말했는지 또는 사진들, 노래들, 농담들 등과 같은 것들에 대한 얼굴 표정 반응들로부터 무엇을 수집하는지에 기반하여 사람들이 무엇을 좋아하고 싫어하는지를 PCD의 메모리로부터 인출해야 한다.
[00495] PCD(100)는 즐겁게 하도록 설계된 질문들을 가족 멤버들에 주기적으로 질문할 수 있다.
[00496] PCD(100)는, 발화를 반복하기 위해 요청들에도 불구하고 사용자를 이해시킬 수 없는 경우 사용자들이 용서하도록 조장하는 이해못함을 표현하는 몇몇 고상한 방식들을 가질 수 있다.
[00497] PCD(100)는 때때로 이를테면 특정 선호도들, 두려움들 및 무드들을 표현하는 가급적 좋아하는 특이한 거동들을 가질 수 있다.
[00498] PCD(100)는 사용자들로부터 인내 및 용서를 끌어내도록 설계될 수 있는 정의된 멀티모달 모호성 패러다임을 가질 수 있다.
[00499] PCD(100)는 발화를 이해함을 표현하는 몇몇 고상한 방식들을 가질 수 있지만, 만족스럽게 준수하거나 응답할 수는 없다.
[00500] PCD(100)은 때때로 자신이 행복하고, 점유되고, 어떠한 보조도 필요없음을 나타내는 방식들로 스스로 조용히 즐겁게 할 수 있다.
[00501] PCD(100)는 임의의 레이턴시 발생 동안 또는 코어 서버 업데이트 동안 자신이 생각하고 있음을 나타내는 몇몇의 방식들을 가질 수 있다.
[00502] PCD(100)는 WiFi 연결성이 다운된 것 및 또한 WiFi가 재연결된 것을 사용자에게 경고하는 몇몇의 방식들을 가질 수 있다. 사용자들은 세팅들로부터 및 PCD 링크의 QR 코드를 사용함으로써 WiFi를 항상 재활성화시킬 수 있다.
[00503] PCD(100)는, 사용자들이 스킬들 및 기본 세팅들을 통해 브라우징하고 입력하도록 허용하는 기본 멀티모달 내비게이션 패러다임을 가질 수 있다. 진보된 세팅들이 PCD 링크를 통해 입력될 필요가 있을 수 있다.
[00504] PCD(100)는, 자신이 로킹되어 있다는 사과 통지를 넘어, 패스워드가 없다면 관여될 수 없도록, 자신의 관리자가 자신을 "로킹"하게 하는 능력을 가질 수 있다.
[00505] PCD(100)는 이용가능한 WiFi 네트워크들을 커맨드 상에 디스플레이할 수 있다. WiFi 연결이 손실되는 경우, PCD(100)는 이용가능한 WiFi 네트워크들을 디스플레이할 수 있다. PCD(100)는 자신의 스크린 상에 WiFi 패스워드를 입력하는 방식을 제공할 수 있다.
[00506] PCD(100)는 가족의 각각의 알려진 멤버와의 시각적 연관성을 가질 수 있다. 예컨대, Jim은 항상 블루, Jane은 항상 핑크, Mom은 항상 그린 및 Dad는 항상 퍼플이다. PCD(100)가 가족의 그 멤버와 상호작용할 때, 그 시각적 방식이 지배적이어야 한다. 이러한 시각적 식별자는, PCD(100)가 멤버들을 인식하는 것을 가족 멤버들이 아는 것을 보장하기 위해 PCD의 스킬들 전반에 걸쳐 사용될 수 있다.
[00507] PCD(100)는 미소들을 인식하고 유사한 방식으로 응답할 수 있다.
[00508] PCD(100)는, 그것이 있는 동안 슬라이드 보기 모드에서 그것의 PCD 스냅 포토 앨범으로부터 사진들을 플레이할 수 있으며, 사용자가 사진에 있는 경우, PCD(100)는 "you look particularly good in this one"라고 말할 수 있다. 때때로, PCD(100)는, 제 1 매킨토시 또는 R2D2 또는 핀볼 머신들에 대해서처럼, 그 "자신의" 포토들을 룩 앳할 수 있지만, 그런 다음, 그의 가족의 사진들은 또한 가끔 포함된다.
[00509] PCD(100)는 종종, 상호작용을 요구하지 않으면서, 행복을 나타낼 수 있다. 예컨대, PCD(100)는 그 자신과 퐁(pong)을 플레이하고, 얼굴로서 PCD(100)를 갖는 모나리자처럼 그것의 스크린 상에 사진들을 그린다. 시간이 지날수록, 이들 스킬들은 진화할 수 있다(예컨대, 달 착륙선 ASCII 게임 또는 스틱 피겨(stick figure)들로 시작하고, 그런 다음, 더욱 복잡한 게임들로 진행된다). 일부 실시예들에서, PCD(100)는 애완동물, 이를테면 강아지를 가질 수 있으며, 그것의 아이는 강아지가 페치할 수 있는 볼이 될 수 있다. PCD(100)는 그의 강아지와 함께 수동으로 주고 받고 할 수 있다. PCD(100)는 요리 책들을 읽는 것과 같이 그것의 스킬들을 통해 브라우징할 수 있다. PCD(100)는 그것의 이동들을 연습하면서 일부 종류의 제한된 뮤직 라이브러리에 대해 춤출 수 있다. 때때로, PCD(100)는 낮잠을 잔다. 일부 실시예들에서, PCD(100)는 공(gong)을 갖는 가족 팩트들에 기반하여 시들, 이를테면 하이쿠(Haikus)를 기록할 수 있다. 다른 실시예들에서, PCD(100)는 운동하고 스스로를 격려할 수 있다. 다른 실시예들에서, PCD(100)는 악기들을 플레이하며, 웃기는 유투브 클립들을 보고 응답으로 빙그레 웃으며, 숫자 키즈 게임으로 컬러를 실행하며, 볼로 하여금 미로를 통해 이동하게 하기 위해 이동하며, 그리고 스도쿠(Sudoku)를 플레이할 수 있다. PCD(100)는 그 자신의 포토 앨범을 가지며 스탬프들을 수집할 수 있다.
[00510] 일부 실시예들에서, PCD(100)는 탁구 기반 게임에 관여하고 이 탁구 기반 게임을 디스플레이할 수 있으며, 여기서, 좌우 움직임들은 PCD(100)와의 시합시 사용자의 패들을 제어한다.
[00511] PCD(100)가 배터리 전력으로 실행되고 있을 경우, 그것의 스크린 상에 나머지 배터리 수명을 도시하는 아이콘이 있을 수 있다.
[00512] 사람들이 태스크 콘텍스트가 아니라 소셜 콘텍스트에서 PCD(100)를 칭찬하는 경우, PCD(100)는 "기쁨/애정(delight/affection)" 애니메이션을 나타낼 수 있다.
[00513] 그룹으로 있을 때, PCD(100)는 한 번에 한 사람과 관여할 수 있다. PCD(100)는, 누군가가 PCD(100)와 말하고 싶다는 것을 표시하며 그리고 PCD(100)와 현재 관여된 사람이 사일런트로 유지되거나 이와 달리 관여되지 않은 경우에만, 그들에 관여하기 위해 터닝할 수 있다. 실시예들에서, PCD는 다수인(multi-person) 상호작용들을 동시적으로 관리하기 위해 다양한 비언어적 및 준언어적 소셜 큐들을 사용할 수 있다.
[00514] PCD(100)는 기본 타이머 기능성을 가질 수 있다. 예컨대, "PCD, let me know when 15 minutes have passed".
[00515] PCD(100)는, WiFi 범위 내에 있는 손실된 폰을 로케이팅할 때 사용자들을 보조하기 위해, PCD 링크를 통해 그것에 연결되는 폰 상에 톤을 생성할 수 있다. 누군가가 그들 자신의 디바이스가 아닌 PCD 링크 폰 상에 이 톤을 생성할 수 있는지 여부를 제어하는 능력은, 관리자 세팅들을 통해 구성가능할 수 있다.
[00516] PCD(100)는 현재 스마트폰들에서 사용되는 것과 유사한 스톱워치 기능성을 가질 수 있다.
[00517] PCD(100)는 빌트 인 클록을 가지며, 요청되는 경우 임의의 시간 구역에서 시간을 말할 수 있다. 때때로, PCD(100)는, 그것의 관여 레벨 및 그것이 하고 있는 것에 적어도 부분적으로 기반하여, 시간을 디스플레이할 수 있고, PCD(100)는 다른 시간들을 디스플레이하지 않을 수 있다. PCD(100)는 알람 클록 기능성을 가질 수 있다. 예컨대, "The social robot, let me know when its 3:30pm". 포함된 스누즈 기능이 존재할 수 있다. PCD(100)는 이용가능한 몇몇의 알람 사운드들을 가질 수 있으며, 각각의 가족 멤버는 그들의 바람직한 알람 사운드를 세팅할 수 있다. 바람직한 알람 사운드가 세팅되지 않은 경우, PCD(100)는 하나를 선택할 수 있다.
[00518] PCD(100)는 스킬에 의해 변할 수 있는 다자 상호작용 정책을 설정했을 수 있다.
[00519] PCD(100)는, 그것의 성능들을 "show off" 요청되는 경우, 그것이 도시할 수 있는 신속한 "데모 릴(demo reel)"을 가질 수 있다.
[00520] PCD(100)는, 그것이 가족 멤버에 의해 다른 PCD(100)에 소개되는 경우, 그것이 다른 PCD(100)에 맞닥뜨리고 보이스 ID에 의해 이 다른 PCD(100)를 인식할 때, 특정되었지만 간단한 거동 옵션들을 가질 수 있다. 실시예들에서, PCD(100)는 다른 PCD(100)와 상호작용하도록 설계된 특정 특수 거동들을 가질 수 있다.
[00521] 예시적이며 비제한적인 실시예들에 따라, 정해진 스킬 또는 거동(이를테면, 애니메이션, 스피치 등)은 PCD(100)와 연관된 다른 속성들에 기반하여 상이하게 나타날 수 있다. 예컨대, PCD(100)는, 이를테면, 시간이 지날수록 사용자 또는 그룹과의 상호작용들을 통해, 특정 성격을 갖고, 특정 페르소나를 착수하고, 특정 모드로 동작하고, 특정 무드를 갖고, 에너지 또는 피로 레벨을 표현하고, 특정 역할을 플레이하는 등을 하도록 프로그래밍될 수 있거나 또는 적응할 수 있다. PCD SDK는 개발자가, 전술한 것 중 임의의 것 또는 전술한 것의 임의의 조합에 기반하여, 특정 스킬 또는 그것의 컴포넌트가 어떻게 변해야 하는지를 표시하게 할 수 있다. 예컨대, PCD(100)는 "외향적인" 성격으로 채워질 수 있으며, 그런 경우, 그것은, 더 짧고 더 조용한 버전들을 실행하는 "내성적인" PCD(100)와 비교하여, 스피치 거동들의 더 길고 더 시끄러운 버전들을 실행할 수 있다. 유사하게, 동일한 스킬 또는 거동을 실행할 때, "액티브" PCD(100)가 큰 움직임들을 착수할 수 있는 반면에, "조용한" PCD(100)는 작은 움직임들을 착수할 수 있다. 유사하게, "피곤한" PCD(100)는, 이를테면 자러 갈 시간이라는 큐를 교묘하게 차일드에게 주기 위해, 느릿느릿한 움직임들, 느린 스피치 등을 디스플레이할 수 있다. 따라서, 본원에서, 스킬들 및 거동들의 개발을 허용하는, SDK를 포함하는 소셜 로봇 플랫폼이 제공되며, 스킬들 및 거동들은 스킬에 독립적인 PCD(100)의 모드에 따라 표현될 수 있다. 실시예들에서, PCD(100)는, 별개의 일관적인 페르소나를 계속해서 유지하면서, 별개의 사람들과 상이하게 상호작용하도록 적응하는데, 이를테면, 성인들과 상이하게 칠드런에게 말할 수 있다.
[00522] 다양한 실시예들에 따라, 광범위한 스킬들이 제공될 수 있다. 중요한 스킬들은, 미팅 스킬들(제 1 및 후속적인 미팅들에 대해, 이를테면 로봇-증강 비디오 콜들을 포함함), 모니터링 스킬들(이를테면, 홈의 사람들 및/또는 애완동물들을 모니터링하는 것), 포토그래퍼 스킬들, 스토리텔링 스킬들(및 멀티-미디어 매시업들, 이를테면 사용자가 어드벤처 플롯, 멀티-미디어 공연-기반 스토리들 등에 영향을 미치기 위해 브랜치에서 포인트를 선정하게 할 수 있음), 게임-플레이 스킬들, 사용자가 지능적인 미러로서 소셜 로봇을 사용하게 할 수 있는 "매직 미러(magic mirror)" 스킬, 날씨 스킬, 스포츠 스킬, 또는 판타지 스포츠들처럼 스포츠 프로그램 또는 스포츠 정보 또는 활동을 향상시키기 위해 상호작용하는 스포츠 버디 스킬, 뮤직 스킬, 레시피들로 작업하기 위한 스킬, 백그라운드/애니메이션 효과들을 이용하여 지능적인 상호작용식 텔레프롬프터로서의 역할을 하는 것, 그리고 (이를테면, 약물 준수, 개인 개발, 트레이닝 등에 대한) 코칭 스킬을 포함한다.
[00523] 자동화된 스피치 인식(또는 다른 사운드 인식)을 가능하게 하기 위해, 본원에서 개시된 방법들 및 시스템들은 빔 형성을 착수할 수 있다. 난제는, 이를테면 "핫 어구(hot phrase)", 이를테면 "Hey, Buddy"를 사용함으로써 사용자가 소셜 로봇의 관심을 콜링하게 하는 것이 원해질 수 있다는 것이다. PCD(100)가 존재하는 경우, 그것은 핫한 어구를 발화한 보이스로 터닝(또는 관심을 지시)할 수 있다. 그것을 하기 위한 하나의 방법은 빔 형성을 사용하는 것이며, 여기서, 상이한 위치들을 가리키는 빔들(공간 필터들 또는 채널들)이 존재한다. 이론상, 빔에 대응하는 각각의 공간 필터 또는 채널은 그 채널로부터 사운드를 취하며, 다른 채널들을 무시하려고 한다. 통상적으로, 사람들은, 예컨대 폴리폰(polyphone) 디바이스들에서, 가장 높은 볼륨을 갖는 빔들을 픽업하고 가장 높은 볼륨의 빔이 이야기하는 사람을 위한 것이라고 가정함으로써, 그것을 수행한다. 본원에서 개시된 방법들 및 시스템들은, 이를테면 핫한 어구를 말하는 사람의 빔을 픽업하기 위하여, 개선된 빔 형성 및 활용을 착수할 수 있다. 실시예들에서, 본원에서 개시된 소셜 로봇 플랫폼은, 각각의 빔에 대해 또는 빔들의 서브-세트에 대해 스피치 인식기의 별개의 인스턴스를 가질 수 있다. 따라서, 각각의 스피치 인식기는 원뿔의 공간을 청취하고 있다. 디바이스가 예컨대 4명의 사람들의 그룹 중에 있고, 한 사람이 "Hey Buddy"라고 말하는 경우, 디바이스는 그 스피커의 방향으로부터 누군가가 관심을 콜링하고 있다는 것을 알 것이다. 그것을 구현하기 위해, 시스템들 및 방법들은 채널마다 또는 채널들의 서브세트마다 스피치 인식기를 가질 수 있다.
[00524] 이상적으로, PCD의 모션/배향에 기반하여 빔의 배향을 유지하는 것이 원해질 수 있다. 빔 형성을 실행하고 있는 시스템은, 모터 제어기들로부터 정보를 수신할 수 있거나, 또는 외부 시스템, 이를테면 GPS 시스템, 비전 시스템 또는 시각적 입력들, 또는 환경의 위치 시스템, 이를테면 IOT 디바이스들의 위치들에 기반하여 이를테면 홈의 위치 시스템으로부터 위치 또는 배향을 수신할 수 있다. 예컨대, 모터 제어기들은, PCD(100)가 PCD(100)를 회전시키는 각도를 알 수 있으며, 그런 다음, PCD(100)는 그것의 좌표들을 찾을 필요가 있을 수 있다. 이는, 그것을 재-배향시키기 위해 다시 핫한 어구를 말함으로써, 또는 다른 위치 정보의 장점을 취함으로써 달성될 수 있다. 일단 스피커가 로케이팅되면 사람 추적이 사용될 수 있으며, 따라서 PCD(100)는 스피커가 이동함에 따라 스피커의 방향으로 빔을 유지하기 위해 적절하게 이동 및 터닝할 수 있으며, 다른 지각 양식들, 이를테면 터치, 열 시그니처 등에 의한 추적이 이것을 증강시킬 수 있다. 실시예들에서, 시각적 큐들과 사운드 로컬화의 통합은, 이를테면 안면 움직임을 시각적으로 결정함으로써 어느 사람이 PCD(100)에 말하려고 시도하고 있는지를 이해하는 데 사용될 수 있다. 실시예들에서, 룸에서의 모션을 검출하고 그런 다음 더 높은 품질의 카메라를 스피커로 지향시키기 위해, 전방향성 "낮은 해상도(low resolution)" 비전 시스템이 또한 전개될 수 있다.
[00525] 다른 예시적인 실시예들에서, 본원에서 개시된 방법들 및 시스템들은 어구 스포팅 기술의 일부로서 결합된 문법들을 사용할 수 있다. 효과적인 어구 스포팅을 수행하기 위해, 바람직하게는, 짧은 어구들을 가질 수 있지만, 얼마나 많은 상이한 어구들을 인식해야 하는지에 의존하여, 어구 스포팅 구축 비용은 더 높다. 예컨대, 10개의 콘텐츠들 간을 구분하기 위해, 당신이 상이한 별개의 어구들을 더 많이 가질수록, 그것은 (기하학적으로) 더 비싸진다. 실시예들에서, 본원에서 개시된 방법들 및 시스템들은 어구들을 상이한 인식기들로 쪼갤 수 있으며, 이 인식기들은 상이한 쓰레드들에서 동시적으로 실행하며, 따라서 각각의 인식기는 작고 덜 비싸다. 이제, 일련의 것들이 도입될 수 있는데, 그 이유는 어구 스포팅의 개념이, 당신이 스피치의 콘텐츠-베어링 청크들을 찾도록 하기 때문이다. 예컨대, 어구: "Hey Buddy, I want to take a picture and send it to my sister"를 취하라. 대부분의 시츄에이션들에서 2개의 청크들: "take a picture" 그리고 "send it to my sister"이 문제의 가능성이 있다. 하나의 어구 스포팅 쓰레드에 의존하여, 다른 수정된 어구 스포팅 인식기가 트리거될 수 있다. 인식기들의 그래프(단지 문법들의 그래프가 아니라, 실제 인식기들)가 구축될 수 있으며, 인식기들 각각은 특정 타입들의 어구들을 인식한다. 그래프에 기반하여, 인식기는, 그것의 적용가능성 및 사용을 통제하는 적합한 페어런츠 인식기에 의해 트리거될 수 있다. 따라서, 병렬로 작업하는 복수의 스피치 인식기들을 갖는 자동화된 스피치 인식 시스템이 본원에서 제공되며, 스피치 인식기들은 선택적으로, 광범위한 어구들에 걸쳐 어구 스포팅을 허가하기 위한 그래프에 따라 배열된다.
[00526] 로봇 스킬들 및 어셋들을 개발하기 위한 방법들, 툴들, 사용자 인터페이스들, 및 기법들(일반적으로, SDK 엘리먼트들)의 세부사항들은 첨부된 도면들에서 도시되고, 이와 함께 아래에서 설명된다. 일반적으로, 본원에서 설명되는 소프트웨어, 데이터 구조들, 데이터베이스들, 사용자 인터페이스들 등으로 적응된 하나 또는 그 초과의 컴퓨터 서버들을 통해 개발자들 등이 이들 엘리먼트들에 액세스가능할 수 있다. 각각의 엘리먼트는, 그것의 요건들, 입력들, 사용들, 동작, 다른 엘리먼트들과의 상호작용, 및 출력들 측면에서 설명되지만, 이들 엘리먼트들과 함께, 사회적 상호작용을 개발, 테스팅 및 인스턴스화하기 위한 포괄적 환경, 그리고 지속적으로 존재하는 소셜 로봇의 스킬들에 대한 다른 스킬들 및 어셋들을 제공한다. 여기서, 엘리먼트들은, 로봇의 물리적 양상들에 관련된 많은 복잡한 기술적 문제들, 이를테면 포지셔닝, 움직임, 제어, 입력 감지, 디스플레이, 라이트, 사운드, 아로마 생성을 해결하도록 설계된다. 이들 엘리먼트들은 또한, 성능들, 이를테면 인간들과의 라포를 개발하는 것, 인간-유사 감정들을 표현하는 것, 거의 인간의 방식으로 로봇의 환경을 검출하여 이에 응답하는 것 등을 심어주기 위해, 로봇의 하나 또는 그 초과의 프로세싱 설비들 상에서 동작하는 복잡한 알고리즘들에 대한 액세스를 제공하도록 설계된다.
[00527] 소셜 로봇 SDK(Software Developer Kit)는, 소셜 로봇 스킬들(예컨대, 로봇 애플리케이션들)을 구축하기 위한 쉬운 방법을 개발자들에 제공하도록 적응된 웹-기반 애플리케이션 툴이다. 소셜 로봇 SDK는, 다른 것들 중에서 Atom/Electron 및 Node.js와 호환적인 다수의 주요 컴포넌트들을 통해 스킬 개발을 가능하게 한다. 이들은 애니메이션, 거동 생성, 스킬 시뮬레이션, 비언어적 및 준언어적 소셜 큐들과의 자연 언어 상호작용들, 및 로봇 유지보수를 포함한다. SDK를 이용하여, 소셜 로봇의 스피치 기술, 안면 인식 및 추적, 터치 입력 기술, 움직임 시스템들, 비전 시스템들 등, 뿐만 아니라 그것들을 사용하여 구축되는 소셜 로봇의 더 고레벨의 기능들 및 스킬들을 포함하는, 소셜 로봇의 많은 양상들이 액세스된다.
[00528] 일 실시예에서, 소셜 로봇 SDK는 적절한 사용자 인터페이스를 통해 아톰(Atom) 패키지 관리자로부터 다운로드될 수 있다. (소셜 로봇-sdk로 불리는) 소셜 로봇 아톰 패키지는 Electron™ 상에서 구축되는 IDE(Integrated Developer Environment)인 Atom™ 상에서 구축될 수 있다. 소셜 로봇 스킬들은, 예컨대, JavaScript에 기록되고, Electron™ 상에서 실행될 수 있다. 그는 JavaScript에서 직접적 API 콜들을 수행함으로써 또는 소셜 로봇 아톰 패키지 GUI에서 직접적으로 소셜 로봇 스킬들을 저작할 수 있다. 소셜 로봇 아톰 패키지는 간단한 UI를 포함하며, Chrome DevTools™, 사전-생성된 애니메이션, 거동들, 이미지들 및 사운드 효과들의 라이브러리, 및 정서 오버레이들 및 비언어적 또는 준언어적 큐들을 갖는 발화된 라인들의 매우 표현적인 캐릭터-풍부 성능을 설계하기 위한 툴들 및 마크업 언어에 대한 액세스에 더해 스크래치로부터 스킬들을 생성하기 위한 능력을 제공할 수 있다.
[00529] 소셜 로봇 커맨드 라인 인터페이스(CLI: command line interface)는 커맨드 라인 인터페이스를 통해 스킬들을 직접적으로 생성 및 전개하기 위한 능력을 제공할 수 있다. 소셜 로봇 아톰 패키지와 소셜 로봇 CLI 둘 다는 소셜 로봇 시뮬레이터에 대한 액세스를 제공할 수 있으며, 소셜 로봇 시뮬레이터는, 애니메이션들, 3D 바디 움직임들, 상호작용들, 표현들 및 스킬들의 다른 징후들이 소셜 로봇에 전송되기 전에 미리보여지게 할 수 있다.
[00530] 예시적이며 비제한적인 실시예들에 따라, 소셜 로봇의 애니메이션 시스템은 모터들, 라이트 링, 아이 그래픽들 등을 포함하는 로봇의 전체 바디를 통한 표현 출력을 조정하는 것을 담당할 수 있다. 시스템은 스크립팅된 애니메이션들의 플레이백뿐만 아니라 실시간으로 절차상 렌더링된 표현 거동들, 이를테면, 표현 룩-앳 및 배향 거동들을 지원할 수 있다. 부가적으로, 시스템은, 로봇이, 포즈로부터 포즈로, 또는 하나의 애니메이션 또는 표현 거동의 종료로부터 다음의 것으로 평활하게 트랜지션하도록 보장한다.
[00531] PCD SDK의 주요한 엘리먼트들은 다음의 것들을 포함할 수 있다:
· Skill Structure - 대부분의 스킬이 고착되는(adhere) 데이터 구조;
· Main Script - 로봇이 초기화될 때 보내지는 스킬 엔트리 포인트들의 세트;
· Styling - 로봇의 바디 부분들로 스타일 동작들을 수행하기 위한 데이터 구조;
· Builders 및 Instances - 스킬 엘리먼트들의 구현을 위한 데이터를 반송하는 데이터 구조들;
· Degrees of Freedom(DOFs) - 애니메이션 모듈에 의해 제어되는 동적 엘리먼트들의 표현;
· Animations - 스크립팅된 애니메이션들의 플레이백을 제어함;
· Transitions - 하나의 애니메이팅된 거동으로부터 다음 거동으로의 평활한 모션을 보장함;
· Gaze/Orient Behaviors - 소셜 로봇의 부분들을 관심 위치들을 향하도록 표현방식으로 지향시키기 위해 사용됨;
· Animation Editor - 별개의 애니메이션 계층들을 사용하여 상호작용식으로 애니메이션 파일들을 생성하기 위한 그래픽 인터페이스;
· Behavior Editor - 각각의 스킬에 대한 거동들의 트리의 편집을 허가함;
· Speech Rules Editor - 스피치가 로봇의 자연 언어 이해 또는 청취 성능을 통해 검출될 때 사용될 규칙들을 생성함; 및
· MIM 편집기 - 자연적 사운딩 다이얼로그에 대한 상호작용 다이얼로그 규칙들 및 기능성을 생성함.
PCD SDK
[00532] PCD-특정 소프트웨어 개발 키트의 아키텍처의 블록 다이어그램을 도시하는 도 27을 참조하면, PCD Software Developer Kit(SDK)(2704)는 PCD 스킬들(로봇 애플리케이션들)을 구축하기 위한 용이한 방식을 개발자들에게 제공하도록 적응된 웹-기반 애플리케이션 툴로서 동작할 수 있다. PCD SDK는 4개의 주요 컴포넌트들로 구성되며, 이들 중 일부는 별개의 사용자 인터페이스들, 툴 세트, API들 등을 가질 수 있다. 주요 컴포넌트들은 애니메이션 컴포넌트(2706), 거동 생성 컴포넌트(2702), 스킬 시뮬레이션 컴포넌트 및 로봇 유지보수 컴포넌트를 포함한다. SDK를 이용하여, 그는 PCD의 스피치 기술, 안면 인식 및 추적하는 터치 입력 기술, 및 다른 센서리 입력들 및 표현 출력들에 액세스한다.
[00533] 그는 프로그래밍 언어, 이를테면, JavaScript에서 직접적 API 콜들을 수행함으로써 또는 컴포넌트 사용자 인터페이스들에서 직접적으로 PCD 스킬들을 저작할 수 있다. PCD SDK는 사용자 인터페이스들을 포함할 수 있으며, 사전-생성된 애니메이션들, 거동들, 이미지들 및 사운드 효과들의 라이브러리 등에 대한 액세스에 더해 스크래치로부터 스킬들을 생성하기 위한 능력을 제공할 수 있다.
[00534] PCD SDK는 PCD가 수행할 수 있는 스킬들을 생성하는 것을 가능하게 할 수 있다. 예시적이며 비제한적인 실시예들에 따라, 스킬들은 SDK가 생성하는 것을 가능하게 할 수 있는 기본 구조에 대한 고착(adherence)을 요구할 수 있다. 예시적인 실시예들에서, 아래에서 설명된 구조는, 본원에서 설명되는 거동 및 애니메이션 편집기들과 같은 SDK의 스킬 생성기 성능들을 통해 새로운 스킬이 생성될 때 디폴트로 개시될 수 있다. 각각의 스킬은, 스킬의 사용자 인터페이스(UI)를 구현하고, 스타일 파일에 대한 링크, 코드의 구분 또는 섹션을 정의하는 태그, 모든 UI 엘리먼트들을 포함하는 PCD의 id와 같은 엘리먼트들을 포함하는 index.html 파일을 갖도록 요구될 수 있다.
[00535] 각각의 스킬은 또한, PCD에 의한 스킬의 실행 동안 하나 또는 그 초과의 스킬 기능들을 보내는 것을 담당하는 메인 스크립트로 구성될 수 있다.
[00536] 스킬의 액션들은, 한 액션으로부터 다른 액션으로의, 이를테면, 포토그래프를 촬영하는 액션으로부터, 캡처된 이미지를 디스플레이하는 액션으로의 현실적인 트랜지션을 가능하게 하기 위한 액션들 전에 그리고/또는 그 후에, 특정 마진들 또는 패딩들을 갖는 PCD SDK로 구성될 수 있다. PCD SDK는 스킬들, 스킬들 간의 트랜지션들, 및 관련 PCD 표현들을 구성하는 것을 가능하게 한다.
[00537] PCD 커맨드 라인 인터페이스(CLI)는 커맨드 라인 인터페이스를 통해 스킬들을 직접적으로 생성 및 전개하기 위한 능력을 제공할 수 있다. PCD 아톰 패키지와 PCD CLI 둘 다는 PCD 시뮬레이터에 대한 액세스를 제공할 수 있으며, PCD 시뮬레이터는, 애니메이션들, 3D 바디 움직임들, 상호작용들, 및 표현들이 PCD에 전송되기 전에 미리보여지게 할 수 있다.
거동들 & 거동 편집기
[00538] 도 27을 참조로, SDK(2704)의 거동 편집기(2702)는 트리들, 노드들, 리프들, 페어런츠들, 데코레이터들 등을 포함할 수 있다. 거동들은 SDK(2704)에 의해 구성, 순서화, 시뮬레이팅 및 전개될 수 있는 부류들로서 SDK(2704)에서 액세스가능할 수 있다. 예시적인 거동 부류들은, Blink, ExecuteScript, ExecuteScriptAsync, Listen, ListenEmbedded, ListenJs, LookAt, Nul, Parallel, PlayAnimation, PlayAudio, Point3D, Random, ReadBarcode, Sequence, Subtree, SubtreeJs, Switch, TakePhoto, TextToSpeech, TextToSpeechJs, TimeoutJs 등을 포함한다.
[00539] 거동 트리들은 자율적인 에이전트들의 거동 및 제어 흐름을 모델링하는 데 사용될 수 있는 표현 툴이다. 그들은 동시적 액션들 및 판정-수행 프로세스들을 조정하기 위한 그들의 능력에 대해 로봇 공학 및 비디오 게임 산업들에서 대중적이다. 상태 머신들(임의의 정해진 시간에 단일의 활성 상태가 있음)과 달리, 거동 트리들은 다수의 거동들을 병렬로 실행할 수 있다. 이것은 그들을 모든 PCD 센서리 입력을 표현 출력으로 조정하는 데 매우 강력한 툴들로 만든다. 거동 트리들은 계층적이며, 상태 머신들과는 달리, 이들은 그래프들로 표현된다.
[00540] 각각의 생성된 스킬은 디폴트로 main.bt 거동 트리를 포함할 수 있다. 이것은 스킬이 실행될 때 실행되는 거동 트리이다. 그는 main.bt가 참조할 부가적 거동 트리들을 스킬에 생성할 수 있다. 거동들은 달리 특정되지 않는다면, 거동 트리의 최상부에서부터 최하부까지 실행할 수 있다.
[00541] 도 28을 참조로, 2개의 거동들이 동시에 실행되고, 그런 다음 제2 거동이 실행되고, 그런 다음 제3 거동이 실행되는 거동 트리 스니펫(2800)의 예시적이며 비제한적인 실시예가 예시된다. 구체적으로, 카메라 애니메이션을 플레이하고, 사진을 촬영하는 것은, 제1 거동의 일부로서 병렬로 먼저 수행된다. 완료 시에, 포토들을 디스플레이하고 디스플레이로부터 포토를 제거하는 것을 포함하는 제2 및 제3 거동들이 각각 수행된다.
[00542] 거동은 액션을 수행하는 거동 트리의 노드이다. 이것은 (오디오 파일을 플레이하는 것과 같은) 매우 간단한 액션이거나 또는 (누군가의 이름을 요청하는 것과 같은) 복잡한 액션일 수 있다.
[00543] 거동들은 적어도 4개의 별개의 상태들을 취할 수 있다:
a. INVALID: 거동이 아직 시작되지 않았다.
b. IN_PROGRESS: 거동은 애니메이션을 플레이하거나 또는 텍스트-대-스피치를 사용하여 말하는 것과 같은 일부 액션을 활발히 수행하고 있다.
c. SUCCEEDED: 거동은 자신의 태스크를 성공적으로 끝마쳤다.
d. FAILED: 거동은 그것의 태스크를 성공하지 못하게 끝마쳤다. 이것은 반드시 에러가 발생했음을 의미한 것은 아님이 주목된다.
[00544] 리프 거동은 어떤 칠드런도 갖지 않는다. 그것은 오디오 파일을 플레이하는 것 또는 PCD 말하기를 수행하는 것과 같은 하나의 액션을 수행하는 것을 담당한다.
[00545] 도 29를 참조로, 리프 거동의 예시적이며 비제한적인 실시예가 예시된다. 이러한 예시된 리프 거동은 애니메이션을 플레이하고, 포토를 촬영하며, 타임아웃 동안 일시정지하고, JavaScript 코드를 실행한다.
[00546] 일반적으로, 페어런츠 거동은 칠드런을 가질 수 있다. 그것의 칠드런은 리프 거동들 또는 다른 페어런츠 거동들일 수 있다. SDK(2704)에는, 4개의 코어 페어런츠 거동들이 존재한다.
a. Sequence: Sequence는 그것의 칠드런을 최상부에서부터 최하부까지 순서대로 플레이할 것이다. 그것의 칠드런 중 임의의 차일드가 IN_PROGRESS 상태인 동안, Sequence는 또한 IN_PROGRESS 상태에 있을 것이다. Sequence의 칠드런 모두가 SUCCESS 상태로 리턴하는 경우, Sequence는 SUCCESS 상태로 리턴할 것이다. 그것의 칠드런 중 임의의 차일드가 FAILED 상태로 리턴하자마자, Sequence는 즉시 FAILED 상태로 리턴할 것이다.
b. Parallel: Parallel 페어런츠 거동은 동시에 그것의 칠드런 모두를 시작시킬 수 있다. Parallel은 그것의 칠드런 중 하나의 차일드가 실패할 때까지(그런 경우 Parallel이 FAILED 상태를 리턴할 것임) 또는 그것의 칠드런 모두가 SUCCEEDED일 때까지(그런 경우, Parallel은 SUCCESS 상태로 리턴할 것임) IN_PROGRESS를 계속 유지할 것이다.
c. Switch: Switch 거동은 거동 트리들이 분기 로직을 처리하는 방법이다. Switch는 차일드가 성공할 때까지 순차적으로 그것의 칠드런 모두를 테스트할 것이며, 이 포인트에서 Switch는 그 차일드를 실행할 것이고, 그런 다음 SUCCEEDED 상태로 리턴한다. Switch는 그것의 칠드런 모두가 실패한 경우에도 항상 성공할 것이다.
d. Random: 랜덤 거동은 그것의 칠드런 중 하나의 차일드를 랜덤으로 선정할 것이다. 그 차일드가 실패하는 경우, Random은 실패할 것이다. 그 차일드가 성공하는 경우, 랜덤은 성공할 것이다.
[00547] 도 30을 참조로, 시퀀스 및 병렬 페어런츠 거동들 둘 다의 예시적이며 비제한적인 실시예가 예시된다. Sequence 페어런츠 거동은 그것의 칠드런을 최상부에서부터 최하부까지 순서대로 실행한다. Parallel 페어런트 거동은 그것의 칠드런 모두를 동시에 실행한다.
[00548] 데코레이터들은 트리의 노드들이 아니다. 데코레이터들은 거동에 부가되어 그 거동의 상태를 수정할 수 있는 컴포넌트들이다. 데코레이터들은 네 가지 것들을 할 수 있다:
a. 어떤 조건이 충족될 때까지 거동이 시작하는 것을 방지한다.
b. IN_PROGRESS인 거동을 성공하도록 강제한다.
c. IN_PROGRESS인 거동을 실패하도록 강제한다.
d. 성공 또는 실패한 거동을 다시 시작한다.
[00549] SDK(2704)를 통해 액세스가능한 예시적인 데코레이터 부류들은 다음을 포함한다:
a. 데코레이팅하는 거동이 시작되기 전에 단일 체크를 수행하는 Case. 그 체크가 실패하는 경우, Case가 거동에 실패한다.
b. 평가되고 있는 조건이 충족되는 경우, 데코레이팅하는 거동을 명시적으로 인터럽트하는 FailOnCondition.
c. 애니메이션이 그 애니메이션의 이벤트 계층에서 이벤트를 시동(fire)할 때, 해당 거동의 실행을 시작하는 StartOnAnimEvent.
d. 평가하고 있는 조건이 충족될 때까지 데코레이팅하는 거동이 시작하는 것을 방지하는 StartOnCondition.
e. 거동 트리의 글로벌 방출기로부터 이벤트가 방출될 때까지 데코레이팅하는 거동이 시작하는 것을 방지하는 StartOnEvent.
f. 평가하고 있는 조건이 충족되는 경우, 데코레이팅하는 거동을 명시적으로 인터럽트하는 SucceedOnCondition.
g. 특정된 오디오 어구가 발견될 때, 데코레이팅하는 거동에 성공하는 SucceedOnEmbedded.
h. 거동 트리의 글로벌 방출기로부터 이벤트가 방출될 때, 데코레이팅하는 거동에 성공하는 SucceedOnEvent.
i. 오디오 스피치 인식을 수행하고 규칙들 파일에 따라 결과들을 적용하고 파싱하는 SucceedOnListen.
j. 오디오 스피치 인식을 수행하고. 규칙들 파일에 따라 결과들을 파싱하고 적용하는 SucceedOnListenJs.
k. 특정된 양의 시간 후에, 데코레이팅하는 거동을 실패하도록 강제하는 TimeoutFail.
l. 특정된 양의 시간 후에, 데코레이팅하는 거동을 성공하도록 강제하는 TimeoutSucceed.
m. 특정된 양의 시간 후에, 데코레이팅하는 거동을 성공하도록 강제하는 TimeoutSucceedJs.
n. 컴포넌트가 성공적으로 성공한 후에 조건을 평가할 WhileCondition. 평가되고 있는 조건이 충족되는 경우, 컴포넌트가 다시 시작된다. 조건이 충족되지 않는 경우, 컴포넌트의 상태가 데코레이터를 활성화한 함수로 전달(리턴)된다.
[00550] 도 31을 참조로, 조건이 충족될 때까지 Sequence 거동이 시작하는 것을 방지하는 Case 데코레이터의 예시적이며 비제한적인 실시예가 예시된다. StartOnAnimEvent 데코레이터는 PlayAnimation 거동에서 카메라 애니메이션으로부터 이벤트가 방출될 때까지 TakePhoto 거동이 시작하는 것을 방지한다.
[00551] 도 32를 참조로, 스킬의 메인 거동 트리의 사용자 인터페이스 렌더링의 예시적이며 비제한적인 실시예가 예시된다.
[00552] 각각의 스킬은 디폴트로 메인 거동 트리를 포함한다. 이는 스킬이 실행될 때 실행하는 거동 트리이다. main.bt가 참조할 부가적 거동 트리들을 스킬에 생성할 수 있다.
[00553] 거동들은 달리 특정되지 않는다면, 거동 트리의 최상부에서부터 최하부까지 실행한다.
[00554] 도 33을 참조로, Sequence 페어런츠의 차일드인 Parallel 페어런츠의 차일드로서 TextToSpeech 리프 거동의 예시적이며 비제한적인 실시예가 예시된다. TextToSpeech 거동은 StartOnAnimEvent 데코레이터 및 설명을 갖는데, 거동 트리에 부가될 수 있는 세 가지 타입들의 거동들: 페어런츠 거동들, 리프 거동들 및 데코레이터들이 존재한다.
[00555] 페어런츠 거동들은 차일드 거동들을 가질 수 있다. 칠드런은 리프 거동들 또는 다른 페어런츠 거동들일 수 있다.
[00556] Behavior Editor에는 4개의 페어런츠 거동들이 존재한다:
a. Sequence: 칠드런을 최상부에서부터 최하부까지 순서대로 실행한다.
b. Parallel: 한 번에 칠드런을 모두 실행한다.
c. Switch: 최상부에서부터 최하부까지 계승되는(succeed) 제1 차일드를 실행한다.
d. Random: 칠드런 중 랜덤 차일드를 실행한다.
[00557] 일부 실시예들에서, 리프 거동들은 다른 거동들을 포함할 수 없다. 이러한 리프 거동들은 오디오 파일을 플레이하거나 PCD를 말하게 하는 것과 같은 단일 액션을 실행한다.
[00558] 예시된 바와 같이, 데코레이터들은 거동이 시작, 성공 또는 실패할 때 수정한다. 데코레이터들은 또한 거동들을 다시 시작할 수 있다.
[00559] 도 34를 참조로, 측정가능한 조건에 기반하여 거동의 상태를 변경하도록 구성된 데코레이터의 예시적이며 비제한적인 실시예가 예시된다.
[00560] 도 35를 참조로, 거동의 인수들을 특정하기 위한 사용자 인터페이스의 예시적이며 비제한적인 실시예가 예시된다.
[00561] Behavior Tree에서 거동이 선택될 때, 그 거동에 이용가능한 임의의 인수들이 Behavior Arguments 페인에 나타난다. Decorator Pane에서 데코레이터가 선택될 때, 그 데코레이터에 대한 임의의 인수들이 Decorator Arguments pane에 나타난다.
[00562] Behavior Editor에는 8가지 타입들의 인수들이 존재한다:
a. string
b. file
c. integer
d. number
e. enum
f. boolean
g. function
h. SSML subset
애니메이션들 & 애니메이션 편집기
[00563] 예시적이며 비제한적인 실시예들에 따르면, PCD의 애니메이션 시스템은 모터들, 라이트 링, 아이 그래픽들 등을 포함하는 로봇의 전체 바디에 걸친 표현 출력의 조정을 담당할 수 있다. 시스템은 표현 응시 및 배향 거동들뿐만 아니라 스크립팅된 애니메이션들의 플레이백을 지원할 수 있다. 부가적으로, 시스템은 로봇이 포즈에서 포즈로 또는 하나의 애니메이션 또는 표현 거동의 종료에서 다음 거동으로 평활하게 트랜지션하는 것을 보장한다.
[00564] 구성, 활성화 및 실행/제어에 걸쳐 빌더들 및 인스턴스들의 생활주기의 예시를 도시하는 도 36을 참조하면, 빌더들은 구성 정보 및 다른 데이터를 저장하는 데 사용될 수 있으며, 그런 다음 액티브 인스턴스 핸들들을 유발하는 데 사용(재사용)될 수 있다. 빌더들 및 인스턴스들의 몇 가지 예들은 AnimationInstances를 유발하는 AnimationBuilders, LookatInstances를 유발하는 LookatBuilders, "중간" 모션들을 유발하는 TransitionBuilders 등을 포함할 수 있다. 빌더(3602)는 구성 프로세스 단계(3604) 동안 구성될 수 있다. 액티브 프로세스 단계(3608) 동안, 빌더(3602)는 예컨대, 현재 파라미터들에 기반하여 빌더가 빌더의 인스턴스(3610)를 생성하는 것을 개시할 수 있는 시작 입력을 수신할 수 있다. 실행/제어 프로세스(3612) 동안, 빌더(3602)는 재사용될 준비가 되어 있을 수 있는 한편, 개시된 인스턴스(3610)는 이를테면, 모터/그래픽/LED 값들을 PCD의 동작 엘리먼트들에 제공하는 액션들을 수행할 수 있다. 실시예들에서, 빌더의 개시된 인스턴스는 단지 한 번만 사용될 수 있다.
[00565] 로봇의 개개의 자유도(DOF)들, DOF 값 타입들 및 공통 DOF 그룹핑들의 맵을 제공하는 다이어그램을 도시하는 도 37을 참조하면, 애니메이트 모듈을 통해 동기화되는 동적 엘리먼트들이 자유도들로서 표현될 수 있다. DOF들은 PCD SDK의 사용자가 제어할 수 있는 애니메이트 모듈의 가장 작은 분리가능한 유닛들을 나타낼 수 있다. 일부 DOF들은 PCD의 바디 모터들의 회전을 제어하고, 다른 DOF들은 LED 라이트 링의 컬러 채널들을 제어하며, 다른 DOF들은 온-스크린 아이 및 오버레이에 관련된 그래픽 파라미터들을 제어한다. DOF들은 개별적으로 제어될 수 있지만, 이들은 통상적으로 다른 DOF들과 DOF 세트들로 그룹화된다. 흔히 사용되는 DOF 세트들이 예컨대, SDK를 통해 이용가능한 자원들에 제공된다. 도 37은 로봇의 개개의 DOF들(이탤릭체로), DOF 값 타입들 및 공통 DOF 그룹핑들(CAPS로)의 맵을 제공한다:
[00566] 가장 최근에 트리거된 애니메이트 인스턴스에 의한 배타적인 DOF 소유권의 정책에 따르는 애니메이트 모듈을 도시하는 도 38을 참조하면, PCD SDK의 애니메이트 모듈은 가장 최근에 트리거된 인스턴스에 의한 배타적인 DOF 소유권의 정책을 따를 수 있다. 도 38에서, 로봇의 바디, LED 및 아이를 제어하고 있는 인스턴스 A가 PCD의 바디 DOF들만을 제어하도록 구성된 인스턴스 B에 의해 인터럽트된다. 인스턴스 B가 트리거되자마자, 인스턴스 B는 로봇의 바디에 대한 배타적인 제어를 가정하는 한편, 인스턴스 A는 로봇의 LED 및 아이를 계속해서 제어한다. DOF 제어의 다양한 다른 조합들 및 오버랩핑하는 인스턴스들이 본원에서 통합된다.
[00567] 빌더(3602)에 의해 제공되는 애니메이션의 빌더 인스턴스(3610)에 의해 어떤 DOF가 제어되는지를 결정하는 것 외에도, 애니메이션 동작 제어는 파라미터들 또는 인수들, 이를테면 setSpeed(3902), setNumLoops(3904) 또는 관련된 방법들을 포함하여 도 39에 도시된 것들에 의해 조정될 수 있다.
[00568] 애니메이션들 간의 트랜잭션을 구성하는 것을 도시하는 도 40을 참조하면, 트랜지션들은 하나의 애니메이팅된 거동의 종료에서부터 다음 거동의 시작까지 평활한 모션을 보장한다. 애니메이션(들)을 구성하기 위해 PCD SDK의 사용자에 의해 AnimationBuilder(4002)의 인스턴스가 선택될 때, SDK는 PCD의 현재 상태(예컨대, PCD의 바디 상태)로부터 선택된 애니메이션의 시작까지의 트랜지션 모션(4004)을 자동적으로 생성할 수 있다. 이러한 트랜지션 모션은 도 40에 예시된 바와 같이, 애니메이션 인스턴스 전에 스킬 흐름에 삽입될 수 있다. PCD 현재 상태와 선택된 애니메이션에 대한 PCD 상태가 이미 잘 정렬되어 있는 경우, 트랜지션 모션은 짧은(또는 심지어 제로) 지속기간을 가질 수 있다.
[00569] 예시적이며 비제한적인 실시예들에 따르면, PCD SDK의 AnimationBuilder(4002) 기능은, AnimationBuilder(4002)에 의해 정의되는 애니메이션에 대한 인바운드 트랜지션을 생성하는 데 사용될 수 있는 시스템-디폴트 TransitionBuilder(4004)를 갖게 사전-구성될 수 있다. 이러한 디폴트 거동은 빌더의 setTransitionIn 기능을 통해 수정될 수 있다. 이러한 기능은 SDK의 사용자 인터페이스를 통해 또는 커맨드, 이를테면, animationBuilder.setTransitionIn(transitionBuilder)를 통해 세팅될 수 있다. SDK는 적어도 2개의 기본 타입들의 트랜지션 빌더들을 제시할 수 있다. 예컨대, LinearTransitionBuilders는 간단한 선형 혼합을 사용하여 트랜지션 모션들을 생성할 수 있지만, AccelerationTransitionBuilders는 구성가능한 가속 제한들을 따르는 모션들을 생성할 수 있다. 트랜지션 빌더들은 스크래치로부터 생성되거나 또는 기존의 트랜지션을 복제 및 수정함으로써 생성될 수 있으며; SDK는 트랜지션들을 생성 및 커스터마이징하는 이러한 모드들 중 임의의 것을 가능하게 할 수 있다.
[00570] 예시적인 코어 애니메이션 이벤트들의 타이밍을 도시하는 도 41을 참조하면, 예컨대, 애니메이션 시퀀스의 플레이백을 포함할 수 있는, 애니메이션, 이를테면, 본원에서 설명된 바와 같은 애니메이션의 인스턴스는, 다른 커스텀 이벤트들에 더해 STARTED, STOPPED, 및 CANCELLED를 포함한 다수의 상이한 이벤트들을 통해 모니터링될 수 있다. 액티브 애니메이션 인스턴스들을 모니터링하기 위한 이벤트 청취자들은 AnimationBuilder의 이벤트 청취 특징을 사용하여 설치될 수 있다. 도 41의 예에서, 적용가능한 경우, STARTED 이벤트는, 임의의 인바운드 트랜지션 모션의 완료 후에, 애니메이션 인스턴스가 시작될 때, 시동된다(예컨대, 이벤트는, 애니메이션-시간 0에서 시동됨). STOPPED 이벤트는, 애니메이션 인스턴스가 끝마치거나 또는 완전히 인터럽트될 때, 시동된다. STOPPED 이벤트의 인터럽트된 특성은 이러한 경우들을 구별하기 위해 체크될 수 있다. 예로서, 새롭게-트리거된 인스턴스가 현재 실행되는 애니메이션을 트렁케이팅하거나 또는 현재 실행되는 애니메이션의 중단 방법이 애니메이션의 종료 전에 실행되는 경우, payload.interrupted === true이다. CANCELLED 이벤트는, 애니메이션 인스턴스가 언제든 STARTED 되기 전에, 애니메이션 인스턴스가 제거되거나 또는 완전히 인터럽트되는 경우에 시동된다.
[00571] 애니메이션들은, 그들이 로봇의 DOF들 중 적어도 하나의 제어를 계속 유지할 수 있는 한, 계속해서 이벤트들을 산출할 수 있다. STOPPED 이벤트는 특정 애니메이션에 대해 유지되는 어떤 DOF들도 없을 때, 시동된다. 따라서, 다수의 애니메이션 인스턴스들이 동시에 이벤트들을 산출하는 것이 일반적이다. 도 42는 2개의 오버랩핑하는 애니메이션 인스턴스들에 의해 산출되는 이벤트들(4202)의 타임라인을 도시한다. 애니메이션 A(4204)는 바디, LED, 및 아이에 대한 DOF들을 제어한다. 애니메이션 B(4208)는 바디 DOF만을 제어하므로, 이는 애니메이션 A 바디 DOF를 인터럽트하지만, 애니메이션 A LED 또는 아이 애니메이션들을 인터럽트하지 않는다. 이벤트들(4202)은 애니메이션 A(4204) LED 및 아이 DOF들에 대해 산출되는 반면, 애니메이션 B(4208)는 바디 DOF에 대한 이벤트들을 산출한다.
[00572] 응시 배향 구성 인터페이스의 예를 도시하는 도 43 및 44를 참조하면, PCD에 의한 응시 및 배향을 수행하기 위한 애니메이션 성능들을 구성 및 조작하기 위한 방법들 및 시스템들의 성능을 나타낸다. PCD의 응시 및 배향 성능들은 표현 응시 거동들을 산출하도록 트리거될 수 있다. 이러한 거동들은 PCD의 바디 및/또는 아이를 주위 환경의 관심 위치들을 향해 표현방식으로 지시하는 데 사용될 수 있다.
[00573] 응시 거동들은 애니메이션들과 유사한 방식으로 관리될 수 있다. 거동 트리거링은 LookatBuilder 오브젝트들을 사용하여 달성된다. 먼저, createLookatBuilder 방법을 사용하여 빌더를 생성한다. 다음, 빌더를 선택적으로 구성할 수 있다. 마지막으로, 빌더의 startLookat 방법을 통해 거동의 인스턴스를 트리거한다.
[00574] 응시 거동들은 2개의 모드들: 싱글-샷 모드 또는 연속적 모드 중 하나로 동작할 수 있다. 이러한 모드는 빌더의 setContinuousMode 방법을 통해 구성될 수 있다. 싱글-샷 모드에서, 응시 거동은 스크립트된 애니메이션과 매우 흡사하며, 로봇을 선택된 타겟을 향해 표현방식으로 배향하고, 그런 다음, 타겟에 도달하면 중단한다. 연속적 모드에서, 거동 그 자체는 절대 중단되지 않고, 타겟 위치는 인스턴스의 updateTarget 방법을 사용하여 반복적으로 수정될 수 있다. 이는 얼굴 추적에 유용하거나 또는 이동하는 타겟을 PCD가 따르는 다른 시츄에이션들에 유용할 수 있다. 도 43은 싱글-샷 모드 응시 동작을 구성하는 것을 도시한다. 연속적 모드에서, 타겟 포인트는 언제라도 업데이트될 수 있다. 도 44는 매 3초마다 2개의 상이한 응시 타겟들 간을 토글링하기 위한 LookAt 기능을 갖는 PCD SDK를 갖는 커스텀 코드를 포함하는 것을 도시한다.
[00575] 소프트웨어 개발 키트에 의해 참조되는 소셜 로봇의 3차원 좌표계를 도시하는 도 45를 참조하면, 응시 API에 타겟들을 제공하는 것은 때때로 3D 벡터들을 이용하여 수학적 계산(math)을 수행하는 것을 요구할 수 있다. 3D 벡터 산술 및 다른 선형 대수학 연산들을 위해 사전구성된 모듈을 사용하는 것이 바람직할 수 있다. 새로운 3D 벡터 오브젝트는 하기 예를 통해 생성될 수 있다: target = new animate.THREE.Vector3(1.0, 0.0, 1.0)이라고 함. 실시예들에서, PCD는 로봇의 베이스의 중심에서 자신의 원점(4502)을 갖는 3D 좌표계를 사용할 수 있다. 도 45의 다이어그램에서 예시된 바와 같이, PCD의 관점에서, 포지티브 X 축(4504)은 순방향을 가리키고, 포지티브 Y 축(4508)은 좌측을 가리키고, 포지티브 Z 축(4510)은 위를 가리킨다.
[00576] 애니메이션들을 편집하기 위한 소프트웨어 개발 키트의 사용자 인터페이스를 도시하는 도 46을 참조하면, 애니메이션들은 이러한 인터페이스를 통해 생성될 수 있다. 애니메이션들은 개개의 애니메이션 파일들로 구성 및 저장될 수 있다. 도 46의 애니메이션 편집기는 바디 페인(4602), 아이 페인(4604), 및 타임라인 페인(4608)을 포함할 수 있다. 각각의 페인은 줌될(zoomed) 수 있고; 각각의 페인의 컬러는 변경될 수 있고; 애니메이션 편집기의 페인들은 리세팅될 수 있다. 바디 페인(4602)은, 포인트, 클릭, 및 드래그 기능성을 통해 바디 세그먼트들의 직접적 제어를 가능하게 한다.
[00577] 타임라인 페인(4608)은 초 당 30 프레임들의 프레임 레이트로 30 프레임들의 디폴트 애니메이션을 조정함으로써 애니메이션 길이를 조정하는 데 사용될 수 있다. 타임라인 페인의 타임라인들은, 이를테면, 2배만큼 스케일링될 수 있는 식이다. 타임라인의 특정 프레임들은 키프레임 파라미터를 세팅함으로써 로킹될 수 있다. 타임라인 페인(4608)의 프레임들은 커맨드들, 이를테면, 잘라내기, 붙이기, 복사, 삭제 등을 이용하여 편집될 수 있다. 타임 라인 상의 프레임들은, 바디 페인(4602) 및/또는 아이 페인(4604)이 타임라인 페인(4608)에서 선택된 애니메이션 프레임들의 시퀀스를 도시할 수 있도록, 시뮬레이션 기능을 통해 동작될 수 있다. 시뮬레이션들은 한 번에 하나의 프레임씩, 또는 중단 커맨드가 입력될 때까지 계속 동작될 수 있는 식이다.
[00578] 애니메이션 편집기는 계층들을 통한 애니메이션들의 생성을 가능하게 한다. 애니메이션 편집기에서 계층을 선택하며, 이는 그 계층에 대한 애니메이션을 생성하기 위해서이다.
[00579] 일부 경우들에서, 동일한 타입의 다수의 계층들이 혼합될 것이다. 일부 계층들은 가산적이다(additive). 예컨대, PCD의 아이를 위로 1만큼 이동시키는 계층과 아이를 아래로 2만큼 이동시키는 계층이 혼합되어, 아이를 아래로 1만큼 이동시키는 애니메이션을 생성할 것이다. 다른 계층들은 곱셈적이다(multiplicative). 예컨대, PCD의 아이를 3만큼 스케일링하는 계층과 PCD의 아이를 2만큼 스케일링하는 계층이 혼합되어, PCD의 아이를 6만큼 스케일링하는 애니메이션을 생성할 것이다. 혼합되지 않는 계층들은 최상부 계층 상에 적용된 애니메이션들을 디폴트로 할 것이다.
[00580] 도 47은 PCD의 제한들의 위반이 표시될 수 있는 디스플레이 스크린이다. 애니메이션을 생성할 때, 당신이 PCD에게 수행하도록 요청하는 움직임들이 그로 하여금 그의 모터들의 내부 하드웨어 제한들을 초과하게 하는 경우, 프레임들은, 그가 너무 신속히 이동하는 동안에, 적색(4702)으로 터닝되고, 특성 페인(4704)에서 에러 메시지가 나타날 것이다. 움직임이 가속 제한들 또는 속도 제한들을 위반하는 경우, 애니메이션 에러들이 발생할 수 있다. 이러한 메시지들은 단지 경고들일뿐이다. PCD는 여전히 움직임들을 수행하도록 시도할 수 있지만, 하드웨어는 그러한 움직임들을 지원하지 못할 수 있다. 제한들은 모든 바디 계층들의 가산적 누적에 기반한다. 예컨대, 하나의 바디 계층 상에 과도하게 빠른 키프레임을 부가하지만 그것이 다른 바디 계층 상에서 상쇄되는 경우, 결과적인 애니메이션은 허용되고, 에러들은 나타나지 않을 것이다. 제한이 초과되는 경우, 모든 각각의 영향받은 영역의 모든 각각의 바디 계층 상에 경고들이 나타나는데, 왜냐하면, 임의의 바디 계층이 원인(culprit) 또는 솔루션일 수 있기 때문이다. 제한 위반들을 정정하기 위해, PCD가 키프레임들 간에 이동하는 자유도를 감소시키거나 또는 키프레임들 간의 프레임들의 수를 증가시킬 수 있다.
[00581] 프레임들 간의 모션의 핸들링은 본원에서 "트위닝"으로 지칭된다. 예컨대, 선형 트윈은 키프레임들 간에 일정한 페이스(steady pace)로 PCD의 바디를 이동시킬 것이다. 애니메이션 트윈들은 자연적 움직임을 모방하기 위해 더 느리게 키프레임 내로 그리고/또는 키프레임 밖으로 용이하게 조정될 수 있다. 트위닝은, 그것이 적용된 키프레임으로부터 다음 세팅된 키프레임으로(타임라인 상에서 좌측에서 우측으로) 애니메이션이 이동하는 방법에 영향을 미친다.
[00582] 소셜 로봇의 대표적 아이 이미지를 제어하기 위해 아이 계층을 구성하기 위한 사용자 인터페이스를 도시하는 도 48을 참조하면, 사용자 인터페이스는 PCD의 아이의 사이즈, 포지션, 형상, 및 회전을 조작하는 데 사용될 수 있다. 트위닝은 또한, 아이 애니메이션들에 적용될 수 있다. PCD의 아이는 리사이징되고, 제약된 비율들로 또는 제약된 비율들 없이 스케일링되고, 재형상화되고, 회전될 수 있는 식이다. 도 48의 사용자 인터페이스는, 포인트, 클릭, 및 드래그 기능성을 통해 아이의 직접적 제어를 가능하게 한다.
[00583] 소셜 로봇의 대표적 아이 이미지의 텍스처 양상을 제어하기 위해 아이 텍스처 계층을 구성하기 위한 사용자 인터페이스를 도시하는 도 49를 참조하면, 아이 컬러들 및 텍스처들은 이러한 사용자 인터페이스를 통해 구성될 수 있다. PCD 아이 계층 구성 사용자 인터페이스는 바디 페인(4902), 아이 페인(4904), 및 타임라인 페인(4908)을 포함할 수 있다. 애니메이션들의 시뮬레이션들은 바디 페인(4902)에서 도시될 수 있고, 바디, 라이트 링, 아이, 및 오디오 시뮬레이션을 포함할 수 있다. 아이 페인(4904)은, 적어도 컬러 및 텍스처 애니메이션을 포함하는 아이(4910)의 애니메이션의 제어 및 시뮬레이션 둘 다를 제공할 수 있다. 컬러들은 RGB 공간을 통해 애니메이션 프레임으로부터 프레임으로 보간되며, 부가적일 수 있다. 컬러들은 텍스처들의 최상부 상에서 혼합될 수 있으며; 따라서, 디폴트 백색 이외의 아이 텍스처를 구성하는 것은, 기본 텍스처 컬러의 영향으로 인해 각각의 컬러가 어떻게 도시되는지에 영향을 미칠 것이다.
[00584] 도 50을 참조하면, 소셜 로봇의 대표적 아이 이미지를 제어하기 위해 아이 오버레이 계층을 구성하기 위한 사용자 인터페이스가 도시된다. 사용자 인터페이스는 바디 페인(5002), 아이 오버레이 페인(5004), 및 타임라인 페인(5008)을 포함할 수 있다. 오버레이 계층은 PCD 스크린 상에서, 그의 아이 앞에 나타난다. 오버레이들은 아이 오버레이 계층 사용자 인터페이스에서 수정될 수 있다. 이러한 사용자 인터페이스에서, x 값들은 우측으로 증가되고 y는 스크린의 중심으로부터 아래로 증가되는데, 스크린의 중심은 디폴트로 아이의 중심이며, (x=0,y=0)에 로케이팅된다. 오버레이는, 실질적으로 모든 동일한 특성들을 포함하여, 아이와 실질적으로 동일하게 구성된다. 아이 오버레이 계층 콘텐츠는 디폴트로 PCD의 아이의 앞에 나타나는 한편, 이는 텍스처들을 스와핑함으로써(즉, 아이 오버레이 텍스처에 대해 아이 텍스처를 스와핑함으로써) 효과적으로 반전될 수 있다. 아이 오버레이 계층들은, 부가되고, 제거되고, 이동되고, 아이와 독립적으로 트위닝되고, 제약된 비율들로 또는 제약된 비율들 없이 리사이징되고, 재형상화되고, 그리고 회전될 수 있다.
[00585] 소셜 로봇의 대표적 아이 이미지를 제어하기 위해 아이 오버레이 텍스처 계층을 구성하기 위한 사용자 인터페이스를 도시하는 도 51을 참조하면, 아이 오버레이에 대한 텍스처가 구성될 수 있다. 도 51의 사용자 인터페이스는, 오버레이 텍스처가 변경되는 것, 오버레이 컬러가 변경되는 것 등을 가능하게 한다. 비록 상이한 계층들 상의 텍스처들이 혼합되지 않을 수 있을지라도, 컬러들은 RGB 공간을 통해 혼합될 수 있고, 부가적이다. 오버레이가 컬러링된 텍스처를 갖는 경우, 컬러 조작들은 텍스처 컬러와 또한 혼합될 수 있다.
[00586] 소셜 로봇의 대표적 아이 이미지의 백그라운드를 제어하기 위해 백그라운드 계층을 구성하기 위한 사용자 인터페이스를 도시하는 도 52를 참조하면, 디스플레이 백그라운드 계층 텍스처가 구성될 수 있다. 백그라운드 텍스처 계층은 아이 뒤의 PCD 스크린 상에 나타날 수 있다. 백그라운드 텍스처뿐만 아니라 백그라운드 텍스처 컬러도 변경될 수 있다.
[00587] 소셜 로봇의 바디 세그먼트 둘레에 배치된 LED를 구성하기 위한 사용자 인터페이스를 도시하는 도 53을 참조하면, LED는 양상들, 이를테면, 온/오프, 온-강도, 온-컬러, 컬러 온도, 컬러 포화도, 변화 레이트 등에 대해 제어될 수 있다. 이러한 엘리먼트들은 도 53의 LED 구성 사용자 인터페이스에서 선택되고 그리고/또는 입력될 수 있다.
[00588] 이벤트들은 중단, 시작, 인터럽팅 등에 대한 애니메이션 동작 제어와 관련하여 본원에서 전술되었다. 아이, 바디, LED 및 다른 계층들 외에도, 이벤트 계층들이 또한, PCD SDK 사용자 인터페이스들을 통해 구성되고 그리고/또는 커스터마이징될 수 있다. 도 54는 이벤트의 활성화 시에 연관된 애니메이션의 조건을 테스팅하기 위한 정보, 이를테면, 이벤트 이름 및 페이로드로 이벤트를 구성하기 위한 사용자 인터페이스를 도시한다. 이벤트들은 또한, 애니메이션들을, 본원에서 도 27-35를 참조하여 설명된 거동들과 링크시킬 수 있다. 애니메이션의 특정 프레임 동안 발생하는 거동을 생성하기 위해, 먼저 이벤트를 생성한다. 이벤트들은 애니메이션들 및 거동들을 링크시킨다. 본원에 포함된 거동 편집기 자료는 거동 툴에서 이벤트들을 사용하는 방법을 설명한다. 다수의 이벤트 계층들이 허용된다. 모든 이벤트들이 실행될 것이며; 동일한 프레임으로 세팅된 이벤트들은 최상부 계층으로부터 최하부 계층의 순서로 실행될 것이다.
[00589] 오디오 이벤트 계층을 구성하기 위한 사용자 인터페이스를 도시하는 도 55를 참조하면, 오디오 파일 또는 다른 콘텐츠를 애니메이션과 연관시킴으로써 애니메이션에 오디오가 부가될 수 있다. 오디오 이벤트 계층 사용자 인터페이스는 또한, 사용자로 하여금 애니메이션과 연관시키기 위한 오디오 파일의 일부를 선택할 수 있게 하기 위해 제어들, 이를테면 스크러버 아이콘을 포함한다.
스피치 인식 및 스피치 편집기
[00590] 도 56을 참조로, PCD SDK 스피치 규칙 편집기(5600)에서 생성되는 "reservations.rule"로 불리는 스피치 규칙의 예시적이며 비제한적인 실시예가 예시된다.
[00591] PCD는 NLU(Natural Language Understanding)를 나타낸다. PCD는 2개의 타입들의 스피치 인식 규칙들을 인식할 수 있다:
a. 임베딩된 규칙들 - PCD가 청취할 수 있는 빌트-인 어구들.
b. 커스텀 규칙들 - 커스텀 어구 또는 단어를 청취하도록 PCD에게 명령하기 위한 개발자에 의해 코딩된 규칙들.
[00592] 임베딩된 규칙들은 SDK 내에 구축된다. 부가적으로, 어구-스포팅이 PCD의 소프트웨어 내에 구축되고, 그에 따라, 스피치를 프로세싱하기 위해 클라우드까지 도달해야 하는 요건이 존재하지 않는다.
[00593] 예컨대, 누군가가 'hey PCD'라고 발언할 때, PCD에게 무언가를 행하라고 전달하기 위해, ListenEmbedded 거동 또는 SucceedOnEmbedded 데코레이터가 인수들에서 ruleName으로서 'Hey PCD'를 특정함으로써 그렇게 행하기 위해 사용될 수 있고, PCD는 누군가가 'hey PCD'라고 발언하는 것을 PCD가 들을 때 스트링 'hey PCD'를 리턴할 것이다.
[00594] PCD SDK에는 하나 또는 그 초과의 규칙들, 이를테면 스피커가 “Hey PCD”라고 발언하는 것을 인식하는 규칙이 프리로딩될 수 있다. PCD는 이들 규칙들을 청취하도록 구성될 수 있고; 규칙 코딩이 요구되지 않는다.
[00595] 도 57을 참조로, 누군가가 'hey PCD'라고 발언할 때까지 PCD가 유휴 상태에 있는 예시적이며 비제한적인 실시예가 예시되며, 누군가가 'hey PCD'라고 발언할 때, PCD는 유휴 상태를 멈추고, hello라고 발언하기 위해 텍스트-대-스피치를 사용한다.
[00596] PCD로 하여금 임베딩된 규칙들을 통해 이용가능한 것 이외의 무언가를 청취하게 하기 위해, 커스텀 규칙이 생성될 수 있다. 이는, 이를 달성하기 위한, 예컨대, Listen 거동, ListenJs 거동, SucceedOnListen 데코레이터, 또는 SucceedOnListenJs 데코레이터의 사용을 통해 달성될 수 있다.
[00597] 스피치 규칙의 로직은 간단한데: PCD는 청각적 입력을 청취하고, PCD가 들은 것에 기반하여 스트링 변수들을 리턴한다(현재, SDK 내의 스피치 규칙들은 PCD가 수를 듣는 경우에도, 스트링 값들만을 리턴한다. 수들 및 정수들을 리턴하기 위한 지원이 조만간 이루어진다). 예컨대, 당신은 book으로 불리는 스트링 변수를 생성할 수 있고, PCD가 단어 "flight"를 듣는 경우 스트링 air를 리턴하고 PCD가 단어 'hotel'을 듣는 경우 단어 lodging을 리턴하도록 SDK에게 전달할 수 있다. 당신은 더 나아가, PCD가 단어 'flight' 또는 'air' 또는 'plane' 또는 'airplane'을 듣는 경우 스트링 air를 리턴하고 PCD가 'hotel' 또는 'motel' 또는 'room' 또는 'suite'를 듣는 경우 lodging을 리턴하도록 SDK에게 전달할 수 있다.
[00598] 스피치 규칙들을 설계할 때, 2가지를 고려하는 것이 중요하다: (1) PCD가 달성할 필요가 있는 일을 PCD가 이해하도록 하기 위해 어떤 변수들이 리턴되어야 하는지, 및 (2) PCD 사용자가 그 정보를 말로 표현할 수 있는 가능한 상이한 방식들.
[00599] 일반적으로, 커스텀 스피치 규칙은 다음과 같은 식이다:
[00600]
Figure 112018107408968-pct00002
[00601]
Figure 112018107408968-pct00003
[00602]
Figure 112018107408968-pct00004
[00603] 또는, 예컨대,
[00604]
Figure 112018107408968-pct00005
[00605]
Figure 112018107408968-pct00006
[00606]
Figure 112018107408968-pct00007
[00607] 위의 예에서, PCD는 어구 'reserve me a flight'를 청취한다. PCD가 정확한 어구를 듣는 경우, SDK는 값 air를 갖는 book으로 명명된 변수를 리턴한다. 그러나, 이는 굉장히 유용한 것은 아니다. 규칙에 약간의 복잡성을 더 부가하기 위해 규칙을 확장해 본다. 'flight'만을 청취하는 대신, PCD가 'hotel'을 또한 청취하기 위한 옵션을 부가해 본다. 우리는 우리의 코드에서 표준 OR 로직을 사용할 수 있다.
[00608]
Figure 112018107408968-pct00008
[00609]
Figure 112018107408968-pct00009
[00610]
Figure 112018107408968-pct00010
[00611]
Figure 112018107408968-pct00011
[00612] 이제, PCD는 'reserve me a'를 청취한 후에, 'flight' 또는 'hotel'을 청취한다.
[00613] 아래의 표는 위의 규칙을 사용하여 SDK가 다양한 발화된 입력에 대해 어떤 것을 리턴할 것인지를 도시한다:
[00614]
Figure 112018107408968-pct00012
[00615] Listen 거동 및 SucceedOnListen 데코레이터는 누군가가 규칙 파일을 선택한 파일 인수들을 취한다.
[00616] 도 58을 참조로, ".rule" 타입의 파일들을 사용하는 PCD를 위한 커스텀 청취 규칙들을 생성하는 예시적이며 비제한적인 실시예가 예시된다.
[00617] 도 59를 참조로, 'hey PCD'를 청취하도록 PCD에게 전하는 예시적이며 비제한적인 실시예가 예시된다.
[00618] 도 60을 참조로, JavaScript를 사용하는 PCD를 위한 동적 청취 규칙들을 생성하는 예시적이며 비제한적인 실시예가 예시된다.
MIMS
[00619] 자연적 다이얼로그를 시뮬레이팅하기 위해, PCD SDK는 가변성을 도입하고, 에러들을 다루고, VUI(Voice User Interface) 및 GUI(Graphical User Interface) 상호작용들을 조정하기 위한 메커니즘들을 구성 및 사용하는 것을 가능하게 한다. PCD SDK는 MIM(Multimodal Interaction Module)들을 제공하여, 개발자들에게서 부담을 제거하고, 스킬들 간에 일관성을 제공한다. 이름이 암시하는 바와 같이, MIM들은 보이스(VUI) 및 터치스크린(GUI) 모드들을 포함하는 하나 초과의 모드를 갖는 상호작용들을 다룬다. "Do you want to share this photo?"와 같은 질문이 프롬프팅될 때, 사용자가 "yes"를 발언함으로써 또는 PCD의 터치스크린 상의 버튼을 태핑함으로써 답신할 수 있는 것이 예상된다. MIM 거동은, MIM 타입(예컨대, 질문, 알림, 선택적인 응답 등), 사용자의 발화들을 파싱하기 위해 사용되는 스피치 인식 규칙, TTS(text to speech) 프롬프트들, 오디오 입력이 예상되지만 수신되지 않을 때(예컨대, 사용자가 프롬프트에 응답하지 않았을 때)의 프롬프트들, 비매칭 프롬프트 응답들 등을 포함하는 다양한 파라미터들에 걸쳐 구성된 상태 머신을 포함한다. MIM(Multi Modal Interaction Module)들은 TTS(Text-to-Speech) 거동들을 미리 정의된 방식으로 더 플렉시블하게 만들도록 설계된다. PCD SDK MIM 편집기는 당신으로 하여금 TTS 프롬프들을 스피치 인식 규칙 파일들 및 API 입력과 매칭할 수 있게 한다.
[00620] MIM 편집기를 도시하는 도 61을 참조하면, 사용자는 다양한 방식들로 MIM들을 구성할 수 있다. 다이얼로그를 자연스럽게 느끼도록 만들기 위해, MIM들은 임의의 수의 프롬프트들로 구성될 수 있다. MIM 거동이 실행할 때, MIM 거동은 적합한 카테고리로부터 이용가능한 프롬프트들 중 하나를 선발한다. 프롬프트는 랜덤하게, 또는 Condition 필드에 공급된 로직을 사용하여 선정될 수 있다.
[00621] 예컨대, 다수의 Entry-Core 프롬프트들이 Condition 필드들로 정의될 수 있고, 그 Condition 필드들은 이용가능한 데이터에 기반하여 이들을 필터링한다. 이 예에서, PCD가 스피커를 식별하지 않은 상황들에 적합한 2개의 Entry-Core 프롬프트들이 존재한다(Entry-1 및 Entry-3). 이런 경우들에, PCD는 그 둘 중 하나를 랜덤하게 선정할 것이다. 그러나, 스피커가 식별된 경우, PCD는 Entry-2 프롬프트들을 사용할 것이다. 임의의 MIM에 대해 임의의 수의 프롬프트들+조건들이 정의될 수 있기 때문에, 개발자는 다이얼로그 상호작용들에 많은 프롬프트 가변성을 부가하기 위한 간단한 방식을 갖는다.
[00622] MIM 구성에서 샘플 발화들을 정의함으로써, PCD는 보이스 상호작용에 대한 대안으로서 사용될 수 있는 GUI(Graphical User Interface) 제어들을 자동적으로 생성할 수 있다. 도 61에서의 CheckLights MIM은 사용자의 발화들을 프로세싱하기 위해 YesNo 규칙을 사용한다. 샘플 발화들로서 "yes" 및 "no"를 제공함으로써, PCD는 PCD의 스크린 상에 Yes 및 No 터치스크린 버튼들을 제공할 수 있다. 그 버튼들을 태핑하는 것은 "yes" 또는 "no"를 발언하는 것과 동일한 결과를 산출한다. 이 예에서, Failures to Trigger GUI 필드는 1로 세팅된다. 이는, NoMatch 에러가 존재하는 경우에만 GUI를 제공하도록 PCT에게 전하는데, 이는 스피커가 보이스를 통해 PCD와 통신하는 것에 어려움을 겪고 있다는 것을 의미한다. 이 값이 0으로 세팅될 때, PCD는 항상 GUI를 제공할 것이다.
[00623] 본원에서 설명되는 listen 거동과 같이, MIM들은 사용자의 발화들을 파싱하기 위해 스피치 인식 규칙로 구성된다. PCD의 ASR(automatic speech recognition) 시스템이 사용자의 발화의 트랜스크립트를 리턴할 때, 이 트랜스크립트는 PCD의 온-보드 NLU(Natural Language Understanding) 파서로 전달된다. 발화의 어의를 결정하기 위해, 파서는 MIM과 연관된 규칙 파일에 정의된 패턴들을 찾는다. 규칙들은 다수의 응답들이 MIM 예상을 준수할 수 있게 하는 규칙 구문을 준수할 수 있다. 예에서, 규칙은 YES의 예상되는 응답들이 "right", "I'm good" 등을 포함할 수 있도록 구성될 수 있다.
[00624] 도 62는 MIM 규칙들을 편집하는 것을 가능하게 하는 PCD SDK의 사용자 인터페이스를 도시한다. 입력 필드(6202) 내에 어구를 타이핑함으로써, 규칙 페인(6204)에서의 정해진 규칙에 대해 결과 오브젝트가 결과 페인(6208)에 디스플레이된다.
[00625] 마치 인간-대-인간 다이얼로그처럼, PCD와의 보이스 상호작용들은 때때로, 오해들 및 인식 에러들을 포함할 것이다. MIM들은 가능한 자연스럽게 이들 에러들로부터 복원한다. 위에서 언급된 바와 같이, MIM들은, PCD가 질문을 요청했지만 답신을 이해할 수 없을 때 PCD가 응답하기 위한 방식을 정의한다. 위에서 설명된 NoInput 및 NoMatch 프롬프트들을 정의함으로써, PCD는 질문을 재-요청 및/또는 바꾸어 말하기 위한 적합한 방식들을 갖는다.
[00626] PCD SDK는 또한, MIM들을 위한 API를 포함한다. 이 API는 회답이 예상되지만 수신되지 않을 때, 타이밍 아웃을 인에이블할 수 있다. MIM의 다양한 특징들은, 엔트리 스트링, 매치 스트링들, 비_매치 스트링들, 반복, 감사 스트링들, 장황한 응답 스트링들 등을 포함하는 API에 의해 제어될 수 있다.
흐름들
[00627] PCD는, 흐름-실행자 활동들, MIM 활동들, 및 거동들과 같은 활동들로 구성되는 제어 흐름들의 사용을 통해 동작될 수 있다. 도 63은, PCD SDK의 예시적인 흐름 편집기를 도시한다. PCD 제어 흐름들은, PCD 상에서 실행되는 흐름 엔진에 의해 해석될 수 있다. PCD SDK는, 흐름도와 같은 방식으로 로봇 스킬들을 생성 및 편집하기 위한 흐름 편집기 툴을 포함한다. 흐름들은, 활동들 및 활동들에 대한 제어들을 부가함으로써 흐름 편집기 툴에서 구성될 수 있다. 이러한 제어들은 흐름-실행자 활동들로 불리고, 흐름에서의 활동들을 제어하는 데 사용된다. 흐름-실행자 활동들은, 흐름을 시작하고, 병렬 흐름들을 실행하고, 흐름들을 종료하고, 다른 흐름에 액세스하고, 거동 트리를 실행하고, 흐름을 인터럽트하고, 스로우(throw)들 및 캐치(catch)들을 사용하여 흐름 내에서 곳곳을 스킵하고, 임의의 JavaScript를 실행하는 등을 행하는 데 사용될 수 있다. 흐름에 부가될 수 있는 다른 활동들은, MIM 활동들 및 거동 활동들을 포함한다. 흐름들은 또한, 수행할 다음 활동을 결정하기 위해 흐름에서의 하나의 활동의 결과들을 사용하는 것을 가능하게 하는 트랜지션 프로세싱을 포함할 수 있다.
[00628] 실시예들에서, PCD SDK는, PCD를 동작시키기 위한 스킬들 및 어셋들을 생성하는 데 사용될 수 있다. 스킬을 생성하기 위한 기본 단계들은, SDK 사용자 인터페이스를 사용하여 새로운 스킬 프로젝트를 오픈하고; 애니메이션을 생성하고; 활동들(이를테면, 바디 움직임, 아이 활동, 및 LED 링 조명)을 수행하기 위해 거동 트리를 생성하고; 청취하도록 PCD에 지시하는 스피치 규칙을 생성하고; PCD가 스피치 규칙을 적용하는 것에 대한 응답으로 멀티-모달 상호작용을 가능하게 하기 위해 하나 또는 그 초과의 MIM들을 생성하고; PCD의 디스플레이 스크린 상에 디스플레이할 GUI 메뉴를 생성하고; 이러한 생성된 엘리먼트들을 활동들의 코히어런트(coherent) 순차적 흐름으로 합치는 흐름을 생성하고; 스킬을 포함하는 활동들의 흐름이 예상되는 바와 같다는 것을 검증하기 위해 시뮬레이터를 사용하고; PCD에 스킬을 다운로드하는 것을 포함한다.
[00629] 거동 편집기는, PCD 거동들의 계층적 구조를 구성하는 것을 가능하게 할 수 있다. 거동 편집기는, 노드들, 리프들, 페어런츠 거동들 등으로 구성될 수 있는 거동 트리 구조에 기반하여 PCD의 거동 활동을 제어하는 것을 가능하게 할 수 있다. 거동 편집기는, 순차적 및 병렬 순서 중 적어도 하나로 거동을 순서화하는 계층적 거동 트리로 PCD 거동들을 구성하는 것을 가능하게 할 수 있다. 거동 트리는, 판정-수행 프로세스들 및 PCD 프로세싱 리소스들의 액션들을 조정하는 것을 가능하기 위해 PCD의 제어 시퀀스들을 포함한다. 거동 편집기는, PCD의 복수의 표현 시스템들 중 적어도 하나의 표현 시스템 및 적어도 하나의 지각 시스템을 사용자가 제어할 수 있게 할 수 있다. 거동 트리 편집기는, 무효 거동 상태, 진행 중인 거동 상태, 성공된 거동 상태, 및 실패된 거동 상태를 포함하는 적어도 4개의 별개의 거동 상태들에 기반하여 PCD 거동들을 제어하는 것을 가능하게 할 수 있다. 무효 거동 상태는, 특정 거동이 아직 시작되지 않았다는 것을 표시할 수 있다. 진행 중인 거동 상태는, PCD가 특정 거동을 활발히 수행하고 있다는 것을 표시할 수 있다. 성공된 거동 상태는, 거동이 성공적이었다는 결정에 기반하여 PCD가 특정 거동을 수행하는 것을 끝마쳤다는 것을 표시할 수 있다. 실패된 거동 상태는, 거동이 성공하지 못했다는 결정에 기반하여 PCD가 특정 거동을 수행하는 것을 끝마쳤다는 것을 표시할 수 있다. 거동 편집기는, 거동들의 계층적 구조에서 PCD 거동을 정의하는 거동 트리의 기능적 엘리먼트로서 리프 거동을 구성하는 것을 가능하게 할 수 있으며, 여기서, 리프 거동은 어떠한 하위 레벨 거동들도 갖지 않는다. 거동 편집기는, 페어런츠 거동과 차일드 거동의 결합으로 한 세트의 PCD 거동들을 구성하는 것을 가능하게 할 수 있으며, 여기서, 차일드 거동은, 대응하는 페어런츠 거동의 완료 후에 PCD에 의해 수행된다. 페어런츠 거동은, 하나 또는 그 초과의 차일드 거동들을 개별적으로, 이를테면 미리 정의된 시퀀스로 또는 병렬로 수행하도록 거동 편집기로 구성될 수 있다. 차일드 거동은, 순차적인 차일드 거동 실행, 병렬 차일드 거동 실행, 스위칭된 차일드 거동 실행, 및 랜덤 차일드 거동 실행 중 적어도 하나에 기반하여 거동 트리에서 페어런츠 거동에 의해 선택될 수 있다. 거동 편집기는, 거동 편집기에 의해 구성되는 PCD 거동에 대한 적어도 하나의 거동 데코레이터를 구성하는 것을 가능하게 할 수 있다. 거동 데코레이터는, PCD 상에서, PCD의 대응하는 거동의 상태를 수정하도록 동작할 수 있다. PCD SDK는 사용자 인터페이스를 포함할 수 있으며, 사용자 인터페이스를 통해, 거동 편집기로 사용자에 의해 구성되는 거동 트리 특성들에 기반하여, PCD 상에서 스킬이 실행될 때, 연관된 거동에서의 거동들이 실행되도록, 거동 트리가 구성될 수 있고 그리고 거동 트리가 PCD 스킬과 연관될 수 있다. 거동 편집기는, PCD SDK의 거동 툴 모음을 포함할 수 있다. PCD SDK의 거동 툴 모음은 거동 편집기를 포함할 수 있다. 거동 편집기는, PCD에 대한 거동의 생성, 정의, 구성, 시뮬레이팅, 변경 및 전개 중 적어도 하나를 행하도록 적응되는 복수의 거동 사용자 인터페이스들을 포함할 수 있다.
[00630] PCD SDK의 애니메이션 툴 모음은, PCD의 어셋들을 제어하는 것을 가능하게 하도록 적응되는 애니메이션 편집기를 포함할 수 있으며, PCD의 어셋들은, 복수의 움직일 수 있는 세그먼트들의 다중-축 바디, 광원, 디스플레이 스크린, 및 오디오 출력 시스템 중 적어도 하나를 포함한다. 애니메이션 편집기는, 애니메이션 액션들 간의 트랜지션들 동안 PCD 어셋들을 제어하는 것을 가능하게 할 수 있다. 애니메이션 편집기는, 특정 애니메이션 빌더 모듈로부터 유도되는 적어도 하나의 애니메이션 인스턴스의 PCD 프로세서에 의한 실행을 유발하는 애니메이션 빌더들에 기반하여 한 세트의 PCD 애니메이션 액션들을 구성하는 것을 가능하게 할 수 있다. 적어도 하나의 유발된 애니메이션 인스턴스는 PCD의 어셋들을 제어한다. 어셋들 중 적어도 하나의 제어는, 애니메이션 인스턴스가 PCD 상에서 실행되는 동안 애니메이션 인스턴스에 의해 배타적으로 제어된다. PCD SDK의 애니메이션 툴 모음은, PCD의 실행 시퀀스에서 애니메이션 빌더를 인스턴스화할 수 있다. 애니메이션 툴 모음은, PCD의 복수의 자유도를 제어하기 위한 액세스를 제공할 수 있으며, 여기서, 각각의 자유도는, PCT의 액션가능한 물리적 양상과 연관된다. PCD의 자유도는, PCD의 하나 또는 그 초과의 움직일 수 있는 바디 세그먼트들과 연관될 수 있다. PCD의 자유도는, PCD의 전자 디스플레이 스크린과 연관될 수 있다. PCD의 자유도는, 광원, 이를테면, PCD의 하나 또는 그 초과의 바디 세그먼트들 상에 배치되는 라이트 링과 연관될 수 있다. PCD의 자유도는, PCD의 전자 디스플레이 상에 디스플레이되는 예시된 아이를 포함할 수 있다. 애니메이션 툴 모음은, PCD의 하나 또는 그 초과의 자유도를 애니메이션 인스턴스에 할당하는 것을 가능하게 할 수 있다. 애니메이션 툴 모음은, PCD의 자유도의 제어를 별개의 애니메이션 인스턴스들 사이로 변경하는 것을 가능하게 할 수 있다. 애니메이션 툴 모음은, PCD의 하나 또는 그 초과의 자유도의 애니메이션들의 스피드, 상호작용들 등의 제어를 가능하게 할 수 있다. PCD의 자유도를 제어하기 위한 애니메이션 툴 모음은, 시작된 애니메이션 이벤트, 중단된 애니메이션 이벤트, 및 취소된 애니메이션 이벤트를 포함하는 애니메이션 인스턴스와 연관된 이벤트들에 기반하여, 애니메이션 제어를 가능하게 할 수 있다. PCD SDK의 애니메이션 툴 모음은, PCD의 표현 응시 애니메이션 제어를 가능하게 할 수 있는, 컴퓨팅 디바이스의 전자 디스플레이에 디스플레이되는 사용자 인터페이스 제어 엘리먼트들을 포함할 수 있다. 표현 응시 애니메이션은, PCD에 대해 3차원 공간에 정의될 수 있는 응시 포인트에 대한 단일 움직임으로서 수행될 수 있다. 대안적으로, 표현 응시 애니메이션은, 응시 타겟을 계속 응시하도록 PCD를 애니메이팅하는 것을 가능하게 하는 응시 타겟 추적을 이용한 연속하는 움직임으로서 수행될 수 있다. 애니메이션 툴 모음과 연관된 것과 같은 PCD SDK의 애니메이션 편집기는, PCD의 시각적 표현이 도시되는 바디 페인, PCD의 전자 디스플레이 스크린 상에 디스플레이되는 아이의 시각적 표현이 도시되는 아이 페인, 및 애니메이션 액션들이 애니메이션들, 트랜지션들 등의 타임라인에 있는 것으로 도시되는 타임라인 페인을 포함할 수 있다.
[00631] PCD와 인간 참가자 간의 상호작용들 동안 가변성, 핸들링 에러들 등을 도입하기 위한 MIM(multi-modal interaction module) 편집기는, 상호작용의 하나 초과의 모드를 제어하는 것을 가능하게 할 수 있다. MIM 편집기는, 인식된 조건(이를테면, 발화된 응답, 촉각 입력, 응답의 부재 등)에 대한 응답으로 PCD에 의해 산출될 복수의 멀티-모달 프롬프트들을 구성하는 것을 가능하게 할 수 있다. MIM 편집기는, 참가자, 이를테면 인간, 다른 PCD 등과의 상호작용들 동안 멀티-모달 응답들을 제어하는 것을 가능하게 한다. MIM 편집기는, PCD의 디스플레이 스크린이 PCD에 의해 출력되는 오디오와 조정되도록 그 디스플레이 스크린을 제어하는 것을 가능하게 할 수 있으며, 여기서, 디스플레이 스크린은, 촉각 입력을 수신하고 그 입력을 디스플레이 스크린 상의 시각적 프리젠테이션에 기반하여 복수의 응답 옵션들 중 하나와 연관시키도록 적응된다. MIM 편집기는, PCD의 자연 언어 이해 프로세서가 PCD에 근접하게 있는 인간으로부터의 발화들을 해석하는 방식을 제어할 수 있는 스피치 인식 규칙을 구성하는 것을 가능하게 할 수 있다. MIM 편집기는, 어구 입력 필드, 결과 오브젝트 디스플레이 페인, 및 스피치 인식 규칙 페인을 포함할 수 있는 사용자 인터페이스를 포함할 수 있다. MIM 편집기는 추가로, PCD에 의해 취해질 비-매치 및 비-입력 액션들의 사용자 구성을 가능하게 하는 것을 통해 에러들 또는 인식되지 않은 응답들로부터의 복원을 가능하게 할 수 있다.
[00632] 본 명세서에 설명된 방법들 및 시스템들은, 프로세서 상에서 컴퓨터 소프트웨어, 프로그램 코드들, 및/또는 명령들을 실행하는 머신을 통해 부분적으로 또는 그 전부가 전개될 수 있다. 프로세서는, 서버, 클라이언트, 네트워크 기반구조, 모바일 컴퓨팅 플랫폼, 정적 컴퓨팅 플랫폼, 또는 다른 컴퓨팅 플랫폼의 일부일 수 있다. 프로세서는, 프로그램 명령들, 코드들, 바이너리 명령들 등을 실행할 수 있는 계산 또는 프로세싱 디바이스의 임의의 유형일 수 있다. 프로세서는, 프로세서에 저장된 프로그램 명령들 또는 프로그램 코드의 실행을 직접적으로 또는 간접적으로 용이하게 할 수 있는 신호 프로세서, 디지털 프로세서, 임베딩된 프로세서, 마이크로프로세서, 또는 코-프로세서(co-processor)(매쓰 코-프로세서, 그래픽 코-프로세서, 통신 코-프로세서 등) 등과 같은 임의의 변형일 수 있거나 또는 이를 포함할 수 있다. 부가적으로, 프로세서는 다수의 프로그램들, 쓰레드들, 및 코드들의 실행을 가능하게 할 수 있다. 프로세서의 성능을 향상시키고 애플리케이션의 동시 동작들을 용이하게 하기 위해, 쓰레드들은 동시에 실행될 수 있다. 구현으로서, 본 명세서에 설명된 방법들, 프로그램 코드들, 프로그램 명령들 등은 하나 또는 그 초과의 쓰레드로 구현될 수 있다. 쓰레드는, 그들과 연관된 할당된 우선순위들을 가질 수 있는 다른 쓰레드들을 유발할 수 있으며, 프로세서는 우선순위에 기초하거나 프로그램 코드에서 제공되는 명령들에 기반하여 임의의 다른 순서로 이들 쓰레드들을 실행할 수 있다. 프로세서는, 본 명세서 및 다른 곳에서 설명된 바와 같은 방법들, 코드들, 명령들, 및 프로그램들을 저장하는 메모리를 포함할 수 있다. 프로세서는, 본 명세서 및 다른 곳에서 설명된 바와 같은 방법들, 코드들, 및 명령들을 저장할 수 있는 저장 매체에 인터페이스를 통해 액세스할 수 있다. 컴퓨팅 또는 프로세싱 디바이스에 의해 실행될 수 있는 방법들, 프로그램들, 코드들, 프로그램 명령들 또는 다른 타입의 명령들을 저장하기 위한 프로세서와 연관된 저장 매체는, CD-ROM, DVD, 메모리, 하드 디스크, 플래시 드라이브, RAM, ROM, 캐시 등 중 하나 또는 그 초과를 포함할 수 있지만 이에 제한되지 않을 수 있다.
[00633] 프로세서는, 멀티프로세서의 스피드 및 성능을 향상시킬 수 있는 하나 또는 그 초과의 코어들을 포함할 수 있다. 실시예에서, 프로세스는, 2개 또는 그 초과의 독립적인 코어들(다이로 지칭됨)을 결합시킨 듀얼 코어 프로세서, 쿼드 코어 프로세서들, 다른 칩-레벨 멀티프로세서 등일 수 있다.
[00634] 본 명세서에 설명된 방법들 및 시스템들은, 서버, 클라이언트, 방화벽, 게이트웨이, 허브, 라우터, 또는 다른 그러한 컴퓨터 및/또는 네트워크 하드웨어 상에서 컴퓨터 소프트웨어를 실행하는 머신을 통해 부분적으로 또는 그 전부가 전개될 수 있다. 소프트웨어 프로그램은, 파일 서버, 프린트 서버, 도메인 서버, 인터넷 서버, 인트라넷 서버, 및 2차 서버, 호스트 서버, 분산형 서버 등과 같은 다른 변형들을 포함할 수 있는 서버와 연관될 수 있다. 서버는, 메모리들, 프로세서들, 컴퓨터 판독가능 매체들, 저장 매체들, (물리적 및 가상) 포트들, 통신 디바이스들, 및 유선 또는 무선 매체를 통해 다른 서버들, 클라이언트들 머신들 및 디바이스들에 액세스할 수 있는 인터페이스들 등 중 하나 또는 그 초과를 포함할 수 있다. 본 명세서 및 다른 곳에서 설명된 바와 같은 방법들, 프로그램들 또는 코드들은 서버에 의해 실행될 수 있다. 부가적으로, 본 출원에 설명된 바와 같은 방법들의 실행을 위해 요구되는 다른 디바이스들은 서버와 연관된 기반구조의 일부로서 고려될 수 있다.
[00635] 서버는, 클라이언트들, 다른 서버들, 프린터들, 데이터베이스 서버들, 프린트 서버들, 파일 서버들, 통신 서버들, 분산형 서버들 등을 제한 없이 포함하는 다른 디바이스들에 인터페이스를 제공할 수 있다. 부가적으로, 이러한 커플링 및/또는 접속은 네트워크에 걸친 프로그램의 원격 실행을 용이하게 할 수 있다. 이들 디바이스들 중 일부 또는 그 전부의 네트워킹은, 범위를 벗어나지 않으면서 하나 또는 그 초과의 위치에서 프로그램 또는 방법의 병렬 프로세싱을 용이하게 할 수 있다. 부가적으로, 인터페이스를 통해 서버에 연결된 디바이스들 중 임의의 디바이스는, 방법들, 프로그램들, 코드 및/또는 명령들을 저장할 수 있는 적어도 하나의 저장 매체를 포함할 수 있다. 중앙 저장소는 상이한 디바이스들 상에 실행될 프로그램 명령들을 제공할 수 있다. 이러한 구현에서, 원격 저장소가 프로그램 코드, 명령들, 및 프로그램들에 대한 저장 매체로서 동작할 수 있다.
[00636] 소프트웨어 프로그램은, 파일 클라이언트, 프린트 클라이언트, 도메인 클라이언트, 인터넷 클라이언트, 인트라넷 클라이언트, 및 2차 클라이언트, 호스트 클라이언트, 분산형 클라이언트 등과 같은 다른 변형들을 포함할 수 있는 클라이언트와 연관될 수 있다. 클라이언트는, 메모리들, 프로세서들, 컴퓨터 판독가능 매체들, 저장 매체들, (물리적 및 가상) 포트들, 통신 디바이스들, 및 유선 또는 무선 매체를 통해 다른 클라이언트들, 서버들, 머신들 및 디바이스들에 액세스할 수 있는 인터페이스들 등 중 하나 또는 그 초과를 포함할 수 있다. 본 명세서 및 다른 곳에서 설명된 바와 같은 방법들, 프로그램들, 또는 코드들은 클라이언트에 의해 실행될 수 있다. 부가적으로, 본 출원에서 설명된 바와 같은 방법들의 실행을 위해 요구되는 다른 디바이스들은, 클라이언트와 연관된 기반구조의 일부로서 고려될 수 있다.
[00637] 클라이언트는, 서버들, 다른 클라이언트들, 프린터들, 데이터베이스 서버들, 프린트 서버들, 파일 서버들, 통신 서버들, 분산형 서버들 등을 제한 없이 포함하는 다른 디바이스들에 인터페이스를 제공할 수 있다. 부가적으로, 이러한 커플링 및/또는 접속은 네트워크에 걸친 프로그램의 원격 실행을 용이하게 할 수 있다. 이들 디바이스들 중 일부 또는 그 전부의 네트워킹은, 범위를 벗어나지 않으면서 하나 또는 그 초과의 위치에서 프로그램 또는 방법의 병렬 프로세싱을 용이하게 할 수 있다. 부가적으로, 인터페이스를 통해 클라이언트에 연결된 디바이스들 중 임의의 디바이스는, 방법들, 프로그램들, 애플리케이션들, 코드 및/또는 명령들을 저장할 수 있는 적어도 하나의 저장 매체를 포함할 수 있다. 중앙 저장소는 상이한 디바이스들 상에 실행될 프로그램 명령들을 제공할 수 있다. 이러한 구현에서, 원격 저장소가 프로그램 코드, 명령들, 및 프로그램들에 대한 저장 매체로서 동작할 수 있다.
[00638] 본 명세서에 설명된 방법들 및 시스템들은 네트워크 기반구조를 통해 부분적으로 또는 그 전부가 전개될 수 있다. 네트워크 기반구조는, 컴퓨팅 디바이스들, 서버들, 라우터들, 허브들, 방화벽들, 클라이언트들, 개인용 컴퓨터들, 통신 디바이스들, 라우팅 디바이스들, 및 당업계에 알려져 있는 바와 같은 다른 능동 및 수동 디바이스들, 모듈들 및/또는 컴포넌트들과 같은 엘리먼트들을 포함할 수 있다. 네트워크 기반구조와 연관된 컴퓨팅 및/또는 넌-컴퓨팅(non-computing) 디바이스(들)는, 다른 컴포넌트들 외에도, 플래시 메모리, 버퍼, 스택, RAM, ROM 등과 같은 저장 매체를 포함할 수 있다. 본 명세서 및 다른 곳에서 설명된 프로세스들, 방법들, 프로그램 코드들, 명령들은, 네트워크 기반구조 엘리먼트들 중 하나 또는 그 초과에 의해 실행될 수 있다.
[00639] 본 명세서 및 다른 곳에서 설명된 방법들, 프로그램 코드들, 및 명령들은, 다수의 셀들을 갖는 셀룰러 네트워크 상에 구현될 수 있다. 셀룰러 네트워크는, 주파수 분할 다중 액세스(FDMA) 네트워크 또는 코드 분할 다중 액세스(CDMA) 네트워크 중 어느 하나일 수 있다. 셀룰러 네트워크는, 모바일 디바이스들, 셀 사이트들, 기지국들, 중계기들, 안테나들, 타워들 등을 포함할 수 있다. 셀 네트워크는 GSM, GPRS, 3G, EVDO, 메시, 또는 다른 네트워크 타입들일 수 있다.
[00640] 본 명세서 및 다른 곳에서 설명된 방법들, 프로그램 코드들, 및 명령들은 모바일 디바이스들 상에 또는 모바일 디바이스들을 통해 구현될 수 있다. 모바일 디바이스들은, 내비게이션 디바이스들, 셀 폰들, 모바일 폰들, 모바일 개인 휴대 정보 단말들, 랩톱들, 팜탑들, 넷북들, 페이저들, 전자 책 판독기들, 뮤직 플레이어들 등을 포함할 수 있다. 이들 디바이스들은, 다른 컴포넌트들 외에도, 플래시 메모리, 버퍼, RAM, ROM과 같은 저장 매체 및 하나 또는 그 초과의 컴퓨팅 디바이스들을 포함할 수 있다. 모바일 디바이스들과 연관된 컴퓨팅 디바이스들은, 모바일 디바이스들 상에 저장된 프로그램 코드들, 방법들, 및 명령들을 실행하도록 가능하게 될 수 있다. 대안적으로, 모바일 디바이스들은 다른 디바이스들과 협력하여 명령들을 실행하도록 구성될 수 있다. 모바일 디바이스들은, 서버들과 인터페이싱되고 그리고 프로그램 코드들을 실행하도록 구성되는 기지국들과 통신할 수 있다. 모바일 디바이스들은, 피어 투 피어 네트워크, 메시 네트워크 또는 다른 통신 네트워크를 통해 통신할 수 있다. 프로그램 코드는, 서버와 연관된 저장 매체 상에 저장되고 서버 내에 임베딩된 컴퓨팅 디바이스에 의해 실행될 수 있다. 기지국은 컴퓨팅 디바이스 및 저장 매체를 포함할 수 있다. 저장 디바이스는, 기지국과 연관된 컴퓨팅 디바이스들에 의해 실행되는 프로그램 코드들 및 명령들을 저장할 수 있다.
[00641] 컴퓨터 소프트웨어, 프로그램 코드들, 및/또는 명령들은, 컴퓨터 컴포넌트들, 디바이스들, 및, 일부 시간 구간 동안 컴퓨팅하기 위해 사용되는 디지털 데이터를 보유하는 기록 매체들; 랜덤 액세스 메모리(RAM)로 알려져 있는 반도체 저장부; 광학 디스크들, 자기 저장 유형 하드 디스크들의 형태들, 테이프들, 드럽들, 카드들 및 다른 타입들과 같은 통상적으로 더 영구적인 저장을 위한 대용량 저장부; 프로세서 레지스터들, 캐시 메모리, 휘발성 메모리, 비-휘발성 메모리; CD, DVD와 같은 광학 저장부; 플래시 메모리(예컨대, USB 스틱 또는 키들), 플로피 디스크들, 자기 테이프, 페이퍼 테이프, 펀치 카드들, 독립형 RAM 디스크들, Zip 드라이브들, 착탈형 대용량 저장부, 오프-라인 등과 같은 착탈형 매체들; 동적 메모리, 정적 메모리, 판독/기입 저장부, 이변(mutable) 저장부, 판독 전용, 랜덤 액세스형, 순차적 액세스형, 위치 어드레스가능형, 파일 어드레스가능형, 콘텐츠 어드레스가능형, 네트워크 연결 저장부, 저장 영역 네트워크, 바 코드들, 자기 잉크 등과 같은 다른 컴퓨터 메모리를 포함할 수 있는 머신 판독가능 매체들 상에 저장될 수 있고 그리고/또는 그들 상에서 액세스될 수 있다.
[00642] 본 명세서에 설명된 방법들 및 시스템들은, 물리적이거나 및/또는 무형의 아이템들을 하나의 상태로부터 다른 상태로 변환할 수 있다. 본 명세서에 설명된 방법들 및 시스템들은 또한, 물리적 및/또는 무형의 아이템들을 표현하는 데이터를 하나의 상태로부터 다른 상태로 변환할 수 있다.
[00643] 도면들 전체에 걸친 흐름도들 및 블록도들에 포함되는 본 명세서에 설명되고 도시된 엘리먼트들은, 엘리먼트들 사이의 로직 경계들을 함의한다. 그러나, 소프트웨어 또는 하드웨어 엔지니어링 실시들에 따르면, 도시된 엘리먼트들 및 그들의 기능들은, 단일구성 소프트웨어 구조로서, 독립형 소프트웨어 모듈로서, 또는 외부 루틴들, 코드, 서비스들 등을 사용하는 모듈들 또는 이들의 임의의 결합으로서 그들 상에 저장된 프로그램 명령들을 실행할 수 있는 프로세서를 갖는 컴퓨터 실행가능 매체들을 통해 머신들 상에서 구현될 수 있으며, 그러한 구현들 전부가 본 개시의 범위 내에 있을 수 있다. 그러한 머신들의 예들은, 개인 휴대 정보 단말들, 랩톱들, 개인용 컴퓨터들, 모바일 폰들, 다른 핸드헬드 컴퓨팅 디바이스들, 의료 장비들, 무선 또는 유선 통신 디바이스들, 트랜스듀서들, 칩들, 계산기들, 위성들, 태블릿 PC들, 전자 책들, 가젯(gadget)들, 전자 디바이스들, 인공 지능을 갖는 디바이스들, 컴퓨팅 디바이스들, 네트워킹 장비들, 서버들, 라우터들 등을 포함할 수 있지만 이에 제한되지 않을 수 있다. 게다가, 흐름도 및 블록도들에 도시된 엘리먼트들 또는 임의의 다른 로직 컴포넌트는, 프로그램 명령들을 실행할 수 있는 머신 상에서 구현될 수 있다. 따라서, 전술한 도면들 및 설명들이 기재된 시스템들의 기능적 양상들을 설명하지만, 명백히 언급되지 않거나 또는 맥락으로부터 달리 명확하지 않으면, 이들 기능적 양상들을 구현하기 위한 소프트웨어의 어떠한 특정 어레인지먼트라도 이들 설명들로부터 추론되어야 한다. 유사하게, 위에서 확인되고 설명되는 다양한 단계들이 변경될 수 있고, 본 명세서에 기재된 기술들의 특정한 애플리케이션들로 단계들의 순서가 적응될 수 있음이 인식될 수 있다. 모든 그러한 변형들 및 변경들은 본 개시의 범위 내에 속하는 것으로 의도된다. 따라서, 다양한 단계들에 대한 순서의 도시 및/또는 설명은, 특정한 애플리케이션에 의해 요구되지 않으면, 또는 명백히 언급되거나 맥락으로부터 달리 명확하지 않으면 그들 단계들에 대해 특정한 순서의 실행을 요구하는 것으로 이해되어서는 안된다.
[00644] 상술된 방법들 및/또는 프로세스들, 및 그들의 단계들은, 특정한 애플리케이션에 대해 적절한 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 임의의 결합으로 실현될 수 있다. 하드웨어는, 범용 컴퓨터 및/또는 전용 컴퓨팅 디바이스 또는 특정 컴퓨팅 디바이스 또는 특정 컴퓨팅 디바이스의 특정한 양상 또는 컴포넌트를 포함할 수 있다. 프로세스들은, 내부 및/또는 외부 메모리와 함께, 하나 또는 그 초과의 마이크로프로세서들, 마이크로제어기들, 임베딩된 마이크로제어기들, 프로그래밍가능 디지털 신호 프로세서들 또는 다른 프로그래밍가능 디바이스에서 실현될 수 있다. 프로세스들은 또한 또는 그 대신, 주문형 집적 회로, 프로그래밍가능 게이트 어레이, 프로그래밍가능 어레이 로직, 또는 전자 신호들을 프로세싱하도록 구성될 수 있는 다른 디바이스 또는 디바이스들의 결합에서 구현될 수 있다. 프로세스들 중 하나 또는 그 초과는, 머신 판독가능 매체 상에서 실행될 수 있는 컴퓨터 실행가능한 코드로서 실현될 수 있음이 추가로 인식될 수 있다.
[00645] 컴퓨터 실행가능 코드는, 상기 디바이스들 뿐만 아니라 프로세서들의 이종 결합들, 프로세서 아키텍쳐들, 또는 상이한 하드웨어 및 소프트웨어의 결합들, 또는 프로그램 명령들을 실행할 수 있는 임의의 다른 머신 중 하나 상에서 구동하도록 저장되거나 컴파일되거나 또는 해석될 수 있는 C와 같은 구조화된 프로그래밍 언어, C++와 같은 오브젝트 지향 프로그래밍 언어, 또는 (어셈블리 언어들, 하드웨어 디스크립션 언어들, 및 데이터베이스 프로그래밍 언어들 및 기술들을 포함하는) 임의의 다른 하이-레벨 또는 로우-레벨 프로그래밍 언어를 사용하여 생성될 수 있다.
[00646] 따라서, 일 양상에서, 상술된 각각의 방법 및 그들의 결합들은, 하나 또는 그 초과의 컴퓨팅 디바이스들 상에서 실행되는 경우 그들의 단계들을 수행하는 컴퓨터 실행가능한 코드로 구현될 수 있다. 다른 양상에서, 방법들은, 그들의 단계들을 수행하는 시스템들에서 구현될 수 있거나, 다양한 방식으로 디바이스들에 걸쳐 분산될 수 있거나, 또는 그 기능 전부가 전용, 독립형 디바이스 또는 다른 하드웨어 내에 통합될 수 있다. 다른 양상에서, 상술된 프로세스들과 연관된 단계들을 수행하기 위한 수단은, 상술된 하드웨어 및/또는 소프트웨어 중 임의의 것을 포함할 수 있다. 그러한 치환들 및 결합들 전부가 본 개시의 범위 내에 속하는 것으로 의도된다.
[00647] 본 명세서에 설명된 방법들 시스템들이, 상세히 설명되고 도시된 특정한 바람직한 실시예들과 관련하여 기재되었지만, 그들 상에서의 다양한 변형들 및 개선들이 당업자들에게 용이하게 명백해질 수 있다. 따라서, 본 명세서에 설명된 방법들 및 시스템들의 사상 및 범위는 전술한 예들에 의해 제한되는 것이 아니며, 법에 의해 허용되는 가장 넓은 의미에 있는 것으로 이해될 것이다.
[00648] 본 명세서에서 참조된 모든 문헌들은 이로써 인용에 의해 포함된다.

Claims (14)

  1. 지속적 컴패니언 디바이스(PCD: persistent companion device)에 대한 스킬(skill)을 개발하기 위한 시스템으로서,
    프로세서상에서 실행하는 애플리케이션 프로그래밍 인터페이스(API: application programming interface)를 통해 액세스가능하며, 개발자가 상기 PCD에 의해 실행 가능한 스킬을 생성하는데 활용 가능한 하나 또는 그 초과의 콘텐츠 어셋들을 찾는 것, 생성하는 것, 편집하는 것 그리고 이들에 액세스하는 것 중 적어도 하나를 수행하는 것을 가능하게 하도록 구성된 어셋 개발 라이브러리;
    프로세서상에서 실행하며 하나 또는 그 초과의 API들을 가진 애니메이션 툴 모음(animation tool suite) ―전자 디스플레이, 복수의 움직일 수 있는 바디 세그먼트들, 스피치(speech) 출력 시스템 및 멀티-컬러 광원 중 적어도 2개를 포함하는, 상기 스킬에 대한 상기 PCD의 하나 또는 그 초과의 물리적 엘리먼트들의 동작은 하나 또는 그 초과의 API들을 통해 상기 개발자에 의해 특정되며, 상기 스킬은 상기 개발자에 의해 정의되는 적어도 하나의 입력에 대한 응답으로 상기 PCD에 의해 실행 가능함―;
    상기 스킬에 대한 상기 PCD의 하나 또는 그 초과의 거동 시퀀스들을 특정하기 위하여 상기 프로세서상에서 실행하는 거동 편집기(behavior editor); 및
    상기 스킬을 실행하기 위한 실행 엔진에 상기 스킬을 전개하기 위하여 상기 프로세서상에서 실행하는 스킬 전개 설비를 포함하는, 지속적 컴패니언 디바이스(PCD: persistent companion device)에 대한 스킬을 개발하기 위한 시스템.
  2. 제1 항에 있어서,
    상기 스킬 전개 설비는 API를 통해 상기 스킬을 전개하는, 지속적 컴패니언 디바이스(PCD: persistent companion device)에 대한 스킬을 개발하기 위한 시스템.
  3. 제1 항에 있어서,
    상기 거동 편집기는 상기 PCD의 표현 출력 시스템 및 센서리 입력 시스템의 동작을 가능하게 하는, 지속적 컴패니언 디바이스(PCD: persistent companion device)에 대한 스킬을 개발하기 위한 시스템.
  4. 소프트웨어 개발 키트(SDK)를 사용하여 지속적 컴패니언 디바이스(PCD) 스킬의 개발을 인에이블링하기 위한 시스템으로서,
    프로세서상에서 동작하며, 상기 PCD로 수신된 입력들을 코딩된 응답들에 맵핑하도록 구성된 로직 레벨 맵핑 시스템; 및
    상기 프로세서상에서 동작하며, 상기 PCD의 인지 엔진을 구성하도록 적응된 PCD 거동 툴 모음(behavior tool suite)을 포함하며,
    상기 PCD 거동 툴 모음은,
    하나 또는 그 초과의 비전 기능 이벤트들을 검출하고 하나 또는 그 초과의 검출된 비전 기능 이벤트들을 상기 로직 레벨 맵핑 시스템에 알리기 위하여 상기 거동 툴 모음을 통해 구성된 비전 기능 시스템, 및
    정의된 사운드(sound)들을 검출하고 검출된 스피치/사운드들을 상기 로직 레벨 맵핑 시스템에 알리기 위하여 상기 거동 툴 모음에 의해 구성 가능한 스피치/사운드 인식 및 이해 시스템; 및
    적어도 하나의 입력에 대한 응답으로 적어도 하나의 정의된 상태를 표현하는 하나 또는 그 초과의 애니메이션들을 생성하고 상기 입력들에의 상기 애니메이션들의 맵핑을 위해 상기 로직 레벨 맵핑 시스템에 상기 하나 또는 그 초과의 애니메이션들을 송신하도록 표현 엔진을 구성하도록 적응된, 상기 프로세서상에서 실행하는 PCD 애니메이션 툴 모음을 포함하는, 소프트웨어 개발 키트(SDK)를 사용하여 지속적 컴패니언 디바이스(PCD) 스킬의 개발을 인에이블링하기 위한 시스템.
  5. 제4 항에 있어서,
    상기 정의된 상태는 감정 상태, 페르소나 상태(persona state), 인식 상태(cognitive state), 및 정의된 에너지 레벨을 표현하는 상태 중 적어도 하나인, 소프트웨어 개발 키트(SDK)를 사용하여 지속적 컴패니언 디바이스(PCD) 스킬의 개발을 인에이블링하기 위한 시스템.
  6. 스킬을 수행하도록 지속적 컴패니언 디바이스(PCD)를 구성하기 위한 시스템으로서,
    네트워킹된 서버상에서 실행하는 소프트웨어 개발 키트를 포함하며;
    상기 소프트웨어 개발 키트는,
    복수의 애니메이션 사용자 인터페이스 스크린들 ―사용자는 상기 복수의 애니메이션 사용자 인터페이스 스크린들을 통해 상기 스킬과 연관된 애니메이션을 구성하며, 상기 복수의 사용자 인터페이스 스크린들은 전자 디스플레이, 복수의 움직일 수 있는 바디 세그먼트들, 스피치 출력 시스템 및 멀티-컬러 광원 중 적어도 2개를 포함하는, 상기 PCD의 물리적 엘리먼트들의 동작의 사양(specification)을 가능하게 함―;
    복수의 거동 사용자 인터페이스 스크린들을 포함하며, 상기 사용자는 상기 복수의 거동 사용자 인터페이스 스크린들을 통해 상기 스킬과 연관된 로봇 액션들 및 판정들을 조정하기 위한 상기 PCD의 거동을 구성하며, 상기 복수의 거동 사용자 인터페이스 스크린들은 상기 PCD의 센서리 입력 시스템에 대한 응답으로 상기 PCD의 표현 출력 시스템의 동작을 가능하게 하며;
    상기 애니메이션 사용자 인터페이스 스크린들 및 상기 거동 사용자 인터페이스 스크린들 중 적어도 하나에서의 상기 PCD의 그래픽 표현은 상기 사용자에 의한 구성에 기반한 입력들에 대한 응답으로 상기 PCD의 움직임을 나타내는, 스킬을 수행하도록 지속적 컴패니언 디바이스(PCD)를 구성하기 위한 시스템.
  7. 제6 항에 있어서,
    응시 배향 사용자 인터페이스 스크린을 더 포함하며, 상기 응시 배향 사용자 인터페이스 스크린을 통해, 사용자는 상기 PCD에 대한 3차원 공간내의 포인트로서 상기 PCD에 근접하게 로케이팅된 타겟을 향해 상기 PCD의 디스플레이 스크린을 표현방식으로 배향시키도록 상기 PCD를 구성하며, 상기 PCD는 싱글-샷 모드(single-shot mode) 및 연속하는 타겟-추적 모드(continuous target-tracking mode) 중 적어도 하나에서 상기 타겟에 응답하는, 스킬을 수행하도록 지속적 컴패니언 디바이스(PCD)를 구성하기 위한 시스템.
  8. 지속적 컴패니언 디바이스(PCD)를 애니메이팅하기 위한 시스템으로서,
    네트워킹된 서버상에서 실행하며, 소프트웨어 개발 키트를 통해 상기 PCD의 제어 기능들 및 PCD 애니메이션 구성에 대한 액세스를 제공하는 애니메이션 편집기;
    복수의 상호연결된 움직일 수 있는 바디 세그먼트들, 상기 바디 세그먼트들의 회전을 위한 모터들, 적어도 하나의 라이트 링, 전자 디스플레이 스크린, 및 오디오 시스템으로 구성된 PCD에 대한 전자 인터페이스;
    PCD 애니메이션 애플리케이션 프로그래밍 인터페이스 ― 상기 애니메이션 편집기는 상기 PCD 애니메이션 애플리케이션 프로그래밍 인터페이스를 통해 상기 PCD의 특징들 중 적어도 일부를 제어함 ―; 및
    상기 애니메이션 편집기의 사용자에 의해 구성 가능한 복수의 애니메이션 빌더(builder)들을 포함하며, 상기 애니메이션 빌더들은 액티브(active) 애니메이션 세션들을 특정하는 애니메이션 인스턴스(instance)들을 유발하는, 지속적 컴패니언 디바이스(PCD)를 애니메이팅하기 위한 시스템.
  9. 제8 항에 있어서,
    신호에 대한 응답으로 제1 애니메이션 인스턴스로부터 제2 애니메이션 인스턴스로의 상기 PCD의 트랜지션(transition)을 특정하기 위한 거동 트랜지션 시스템을 더 포함하는, 지속적 컴패니언 디바이스(PCD)를 애니메이팅하기 위한 시스템.
  10. 지속적 컴패니언 디바이스(PCD)의 거동들을 제어하기 위한 시스템으로서,
    네트워킹된 서버상에서 실행하며, 소프트웨어 개발 키트를 통해 상기 PCD의 제어 기능들 및 PCD 거동 구성에 대한 액세스를 제공하는 거동 편집기;
    상기 거동 편집기에 의해 액세스가능하고, 자율적인 로봇 동작 기능들의 거동 및 제어 흐름을 제어하는 것을 가능하게 하는 복수의 거동 트리 데이터 구조들을 포함하며, 상기 동작 기능들은 복수의 센서 입력 기능들 및 복수의 표현 출력 기능들을 포함하며, 상기 복수의 거동 트리 데이터 구조들은 로봇 동작 기능들의 제어를 계층적으로 체계화하며, 적어도 하나의 거동 트리 데이터 구조는 상기 PCD에 의해 수행되는 적어도 하나의 스킬과 연관되며;
    각각의 거동 트리 데이터 구조는 복수의 거동 노드들을 포함하며, 상기 복수의 거동 노드들 각각은 무효 상태, 진행중인 상태, 성공적인 상태 및 실패된 상태로 구성된 4개의 거동 상태들 중 하나와 연관되며;
    각각의 거동 트리 데이터 구조는 적어도 하나의 페어런츠(parent) 거동 노드를 포함하며, 상기 적어도 하나의 페어런츠 노드는 적어도 하나의 차일드(child) 거동 노드를 참조하며, 순차적 차일드 거동 노드 동작, 병렬 차일드 거동 노드 동작, 차일드 거동 노드들 간을 스위칭하는 것, 및 참조된 차일드 거동 노드를 랜덤하게 활성화하는 것 중 적어도 하나를 개시하도록 적응되는, 지속적 컴패니언 디바이스(PCD)의 거동들을 제어하기 위한 시스템.
  11. 제10 항에 있어서,
    상기 거동 노드들 중 적어도 일부는 거동 노드가 시작하는 것을 방지하는 것, 실행 거동 노드가 성공하게 강제하는 것, 실행 거동 노드가 실패하게 강제하는 것, 거동 노드를 재실행하는 것 중 적어도 하나를 수행함으로써 자신의 거동 노드의 상태를 수정하는 기능을 하는 거동 노드 데코레이터(decorator)로 각각 구성되는, 지속적 컴패니언 디바이스(PCD)의 거동들을 제어하기 위한 시스템.
  12. 지속적 컴패니언 디바이스(PCD)로 스피치를 인식하기 위한 시스템으로서,
    PCD가 이해하는 자연 언어를 가능하게 하는 PCD 스피치 인식 구성 시스템 ― 상기 시스템은 사용자가 임베딩된 규칙(embedded rule) 및 커스텀 규칙(custom rule) 중 적어도 하나를 포함하는 스피치 이해 규칙들을 구성하기 위하여 네트워킹된 컴퓨터상에서 실행하는 스피치 규칙 편집기를 동작하게 하는 복수의 사용자 인터페이스 스크린들을 포함함 ―;
    상기 네트워킹된 서버를 통해 상기 사용자에 의해 액세스되는 임베딩된 스피치 이해 규칙들의 라이브러리(library)를 포함하는 소프트웨어 개발 키트; 및
    청취 성공 데코레이터에 의해 테스트된 조건의 성공적인 결과에 기반하여 사용자가 상기 PCD로 하여금 동작을 수행하게 하도록 구성하는 상기 청취 성공 데코레이터 및 청취-타입 PCD 거동 중 적어도 하나와 스피치 이해 규칙들을 사용자가 연관시키게 하는 상기 소프트웨어 개발의 로봇 거동 연관성 기능을 포함하는, 지속적 컴패니언 디바이스(PCD)로 스피치를 인식하기 위한 시스템.
  13. 지속적 컴패니언 디바이스(PCD) 제어 구성 시스템으로서,
    스크립팅된(scripted) 애니메이션들의 플레이백(playback)을 통한 상기 PCD의 표현 출력, 사용자에 의해 구성 가능한 이벤트 청취자들에 의해 검출된 이벤트들에 대한 상기 PCD의 응답 동작 및 애니메이션 커맨드들을 특정하는 것을 가능하게 하는 복수의 애니메이션 계층들을 제어하는 것을 가능하게 하는 PCD 애니메이션 구성 시스템;
    상기 PCD의 기계적 및 전자적 동작을 제어하는 것을 가능하게 하는 PCD 거동 구성 시스템;
    싱글-샷 및 타겟 추적 중 적어도 하나의 것의 응시 PCD 기능 모드 및 타겟을 특정함으로써 상기 PCD의 응시의 지향성 활동을 결정하는 것을 가능하게 하는 PCD 응시 배향 구성 시스템; 및
    인간 스피치를 인식하기 위한 복수의 임베딩된 규칙들, 및 인간 스피치를 인식하기 위한 규칙들을 커스터마이징(customizing)하기 위한 사용자 인터페이스를 포함하는 PCD 스피치 인식 구성 시스템을 포함하며, 상기 인간 스피치는 상기 PCD의 오디오 센서 입력 시스템에 의해 캡처되는, 지속적 컴패니언 디바이스(PCD) 제어 구성 시스템.
  14. 제13 항에 있어서,
    로봇 거동을 통해 상기 PCD의 기계적 및 전자적 동작을 제어하는 것은 애니메이팅된 거동들 간의 트랜지션들을 제어하는 것, 병렬 제어 및 순차적인 제어 중 적어도 하나의 제어로 복수의 애니메이팅된(animated) 거동들을 제어하는 것, 및 페어런츠 및 차일드 거동들의 거동 트리에 기반하여 복수의 차일드 거동들을 제어하는 것을 포함하며, 차일드 거동은 상기 차일드 거동들 중에서 선택하고 상기 차일드 거동들 중에서 랜덤하게 선택하기 위한 스위치 조건 중 하나에 기반하여 활성화되는, 지속적 컴패니언 디바이스(PCD) 제어 구성 시스템.
KR1020187031496A 2016-03-31 2017-03-30 지속적 컴패니언 디바이스 구성 및 전개 플랫폼 KR102306624B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662316247P 2016-03-31 2016-03-31
US62/316,247 2016-03-31
PCT/US2017/025137 WO2017173141A1 (en) 2016-03-31 2017-03-30 Persistent companion device configuration and deployment platform

Publications (2)

Publication Number Publication Date
KR20180129886A KR20180129886A (ko) 2018-12-05
KR102306624B1 true KR102306624B1 (ko) 2021-09-28

Family

ID=59966475

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187031496A KR102306624B1 (ko) 2016-03-31 2017-03-30 지속적 컴패니언 디바이스 구성 및 전개 플랫폼

Country Status (4)

Country Link
JP (1) JP2019521449A (ko)
KR (1) KR102306624B1 (ko)
CA (1) CA3019535A1 (ko)
WO (1) WO2017173141A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10567570B2 (en) 2017-12-29 2020-02-18 DMAI, Inc. System and method for personalized and adaptive application management
WO2019133710A1 (en) * 2017-12-29 2019-07-04 DMAI, Inc. System and method for dialogue management
EP3732677A4 (en) * 2017-12-29 2021-09-29 DMAI, Inc. SYSTEM AND PROCEDURE FOR AN AUTOMATIC COMPANION DRIVEN BY ARTIFICIAL INTELLIGENCE
US11504856B2 (en) 2017-12-29 2022-11-22 DMAI, Inc. System and method for selective animatronic peripheral response for human machine dialogue
WO2019133698A1 (en) * 2017-12-29 2019-07-04 DMAI, Inc. System and method for personalizing dialogue based on user's appearances
US11222632B2 (en) 2017-12-29 2022-01-11 DMAI, Inc. System and method for intelligent initiation of a man-machine dialogue based on multi-modal sensory inputs
US11150869B2 (en) 2018-02-14 2021-10-19 International Business Machines Corporation Voice command filtering
WO2019160613A1 (en) 2018-02-15 2019-08-22 DMAI, Inc. System and method for dynamic program configuration
US11238856B2 (en) 2018-05-01 2022-02-01 International Business Machines Corporation Ignoring trigger words in streamed media content
US11200890B2 (en) 2018-05-01 2021-12-14 International Business Machines Corporation Distinguishing voice commands
CN108928631B (zh) * 2018-05-25 2024-01-26 上海优异达机电有限公司 Fpc拼板的自动分料装置
USD916161S1 (en) 2018-11-05 2021-04-13 DMAI, Inc. Robot
USD888165S1 (en) 2018-11-05 2020-06-23 DMAI, Inc. Robot
US10824370B2 (en) * 2019-02-07 2020-11-03 quadric.io, Inc. Systems and methods for implementing random access memory in a flow-based machine perception and dense algorithm integrated circuit based on computing and coalescing of indices
US10467062B1 (en) * 2019-03-11 2019-11-05 Coupang, Corp. Systems and methods for managing application programming interface information
KR102361038B1 (ko) * 2019-06-29 2022-02-09 주식회사 큐버 적응형 다중 생체정보를 이용한 고수준 상황인지 기반의 스마트미러 챗봇 시스템
US11355108B2 (en) 2019-08-20 2022-06-07 International Business Machines Corporation Distinguishing voice commands
CN116564304A (zh) * 2019-09-30 2023-08-08 华为终端有限公司 语音交互方法及装置
KR102271361B1 (ko) 2019-11-08 2021-06-30 고려대학교 산학협력단 자동 질의응답 장치
JP7446178B2 (ja) 2020-08-05 2024-03-08 本田技研工業株式会社 行動制御装置、行動制御方法、およびプログラム
EP4144425A4 (en) * 2020-06-24 2024-03-06 Honda Motor Co., Ltd. BEHAVIOR CONTROL DEVICE, BEHAVIOR CONTROL METHOD AND PROGRAM
CN111787169B (zh) * 2020-07-13 2021-06-15 南京硅基智能科技有限公司 一种用于移动式人机协作呼叫机器人的三方通话终端
CN113744414B (zh) * 2021-09-06 2022-06-28 北京百度网讯科技有限公司 图像处理方法、装置、设备和存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6427063B1 (en) * 1997-05-22 2002-07-30 Finali Corporation Agent based instruction system and method
JP4934904B2 (ja) * 2000-05-12 2012-05-23 富士通株式会社 ロボット連携装置、ロボット連携プログラム記憶媒体、およびロボット連携プログラム
JP4670136B2 (ja) * 2000-10-11 2011-04-13 ソニー株式会社 オーサリング・システム及びオーサリング方法、並びに記憶媒体
CN1929894A (zh) * 2004-03-12 2007-03-14 皇家飞利浦电子股份有限公司 能够使对象活跃的电子设备和方法
JP2007069302A (ja) * 2005-09-07 2007-03-22 Hitachi Ltd 動作表出装置
TWI375933B (en) * 2007-08-07 2012-11-01 Triforce Co Ltd Language learning method and system thereof
FR2946160B1 (fr) * 2009-05-26 2014-05-09 Aldebaran Robotics Systeme et procede pour editer et commander des comportements d'un robot mobile.
US9286711B2 (en) * 2011-09-30 2016-03-15 Microsoft Technology Licensing, Llc Representing a location at a previous time period using an augmented reality display
JP2016522465A (ja) * 2013-03-15 2016-07-28 ジボ インコーポレイテッド 永続性コンパニオンデバイスを提供するための装置及び方法
US20150314454A1 (en) * 2013-03-15 2015-11-05 JIBO, Inc. Apparatus and methods for providing a persistent companion device

Also Published As

Publication number Publication date
CA3019535A1 (en) 2017-10-05
KR20180129886A (ko) 2018-12-05
JP2019521449A (ja) 2019-07-25
WO2017173141A1 (en) 2017-10-05

Similar Documents

Publication Publication Date Title
KR102306624B1 (ko) 지속적 컴패니언 디바이스 구성 및 전개 플랫폼
US11148296B2 (en) Engaging in human-based social interaction for performing tasks using a persistent companion device
US20170206064A1 (en) Persistent companion device configuration and deployment platform
US10391636B2 (en) Apparatus and methods for providing a persistent companion device
WO2016011159A9 (en) Apparatus and methods for providing a persistent companion device
Park et al. A metaverse: Taxonomy, components, applications, and open challenges
US20220148271A1 (en) Immersive story creation
Case Calm technology: principles and patterns for non-intrusive design
RU2690071C2 (ru) Способы и системы для управления диалогами робота
US9634855B2 (en) Electronic personal interactive device that determines topics of interest using a conversational agent
US20230092103A1 (en) Content linking for artificial reality environments
TW201916005A (zh) 互動方法和設備
CN112262024A (zh) 用于增强数字体验的动态机器人配置的系统和方法
US20200257954A1 (en) Techniques for generating digital personas
WO2016206645A1 (zh) 为机器装置加载控制数据的方法及装置
WO2018183812A1 (en) Persistent companion device configuration and deployment platform
Smith Ok, google: designing information architecture for smart speakers
Hanke et al. Embodied ambient intelligent systems
Singh Analysis of Currently Open and Closed-source Software for the Creation of an AI Personal Assistant
Endres et al. Fiction meets fact: exploring human-machine convergence in today’s cinematographic culture
Yim Robotic User Interface for Telecommunication
Team et al. PROTOCOL AND INTERFACE FOR DEVICE CONTROL IN THE HOME ENVIRONMENT
Hansson et al. Lava AI-Design of an Interactive Online Device

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant