Aller au contenu
Pages de la documentation

Satellites

Les appareils qui donnent à Nestor une voix et un corps, et comment on les appaire.

Un satellite est un appareil appairé au serveur Nestor : un Raspberry Pi avec une enceinte, un onglet sur une tablette murale, un robot Reachy Mini. Un micro et un haut-parleur suffisent. Un écran, une caméra ou des moteurs sont des capacités optionnelles : l’appareil les déclare, une personne les autorise, et rien dans Nestor ne suppose qu’elles sont là.

Ce que fait un satellite

  • Il s’appaire une fois et garde son jeton.
  • Il déclare dans un manifeste qui il est et ce qu’il sait faire.
  • Il fait passer l’audio dans les deux sens en WebRTC.
  • Il exécute les intentions du serveur et accuse réception de chacune.
  • Il remonte les observations qu’on lui a permises (activité vocale, personne détectée).

Le serveur demande des intentions, jamais des mouvements. Avec intent.expression et joy, un robot bouge la tête et les antennes, un écran pourrait dessiner un visage, une simple enceinte l’ignore.

Capacités

Capacité L’appareil…
audio.capture envoie son micro au serveur
audio.playback joue la voix du serveur
audio.speech_activity signale quand quelqu’un commence et arrête de parler
vision.person_detection signale une personne qu’il voit
expression.emotion montre une émotion (intent.expression)
motion.head bouge la tête au rythme de la parole (intent.beat)
device.identify se fait remarquer quand quelqu’un le cherche

Appairage

Appairer demande une preuve qu’une personne le voulait. Elle circule dans un sens ou dans l’autre, et la première acceptée l’emporte :

  • un code d’appareil, six chiffres que l’appareil présente et que la personne tape dans l’administration ;
  • un code d’enrôlement créé dans l’administration (K7QF-2M9X), que la personne donne à l’appareil, le plus souvent sous forme d’URI d’appairage : nestor+http://nestor.local:7860/?code=K7QF2M9X.
Méthode La personne…
device_code.display lit le code sur l’écran de l’appareil et le tape dans l’administration
device_code.speech entend l’appareil dire son code et le tape dans l’administration
enrollment.input tape le code d’enrôlement sur l’appareil
enrollment.provisioning met l’URI d’appairage dans la configuration de l’appareil (option, environnement, fichier)
enrollment.qr montre le QR code de l’URI d’appairage à la caméra de l’appareil

Tout appareil accepte enrollment.provisioning ; les autres méthodes découlent de ce qu’il a (un écran, un haut-parleur, un clavier, une caméra). Les SDK les déclarent pour vous.

Ajouter un satellite

Dans l’administration, ouvrez Satellites, puis Ajouter, et choisissez une méthode. Vous pouvez nommer l’appareil, le placer dans une pièce et restreindre ses capacités. Avec une méthode d’enrôlement, l’administration affiche le code et son URI d’appairage ; avec un code d’appareil, elle liste les appareils en attente et vous tapez le code du bon (Identifier le fait clignoter ou sonner pour les distinguer).

La même chose depuis la ligne de commande du serveur, pendant que Nestor tourne :

nestor satellites add --room salon --name "Enceinte du salon"   # affiche le code et l’URI d’appairage
nestor satellites approve 042917                                # le code présenté par un appareil
nestor satellites revoke enceinte-salon                         # désappaire un appareil

approve --only audio.capture,audio.playback accorde moins de capacités que l’appareil n’en a déclaré. Puis, sur l’appareil, donnez-lui l’URI d’appairage :

NESTOR_PAIRING_URI='nestor+http://nestor.local:7860/?code=K7QF2M9X' nestor-satellite run --room salon

Prêts à l’emploi

  • nestor-satellite run : le micro et le haut-parleur de cette machine, avec le SDK Python, TypeScript ou Rust.
  • nestor-reachy : Reachy Mini, dont la tête et les antennes suivent la conversation (son jumeau simulé pour l’instant).
  • Un onglet de navigateur, avec le SDK TypeScript.

Vous écrivez le vôtre ? Le protocole fait foi, les schémas donnent la forme de chaque message et la suite de conformité vérifie un appareil sur les deux.