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.