SkyNet est en marche !
Dans un précédent billet, j’avais fais plusieurs tests d’Avatar basés sur des Hologrammes de manière à fournir un visage à SARAH.
Depuis, j’ai reçu un nouveau projet KickStarter ! Un animatronic de chez Toonimal !
L’idée est très intéressante !
- Le squelette est en Acrylic découpé au laser
- Les moteurs sont connectés à un Ardruino UNO
- La peau est tout bêtement du papercraft
Ensuite j’ai connecté l’Arduino à SARAH
- Installer l’IDE Ardruino
- Passer des heeeuuurresss à configurer le port série
- Utiliser johnny-five pour piloter le tout dans un plugin SARAH
Voici un résultat à l’arrache sans la peau !!!
Le Code:
[crayon]
var five = false;
var board = false;
var servo = false;
var eyeV = false;
var eyeH = false;
exports.init = function(SARAH){
if (five) return;
console.log(‘Init Animatronic !’);
five = require("./lib/johnny-five");
board = new five.Board({ port : ‘\.COM6’ });
board.on("ready", function() {
console.log(‘Board is ready !’);
// Init mouth servo
servo = new five.Servo({ pin: 10, range: [95, 160] });
board.repl.inject({ servo: servo });
// Init eye vertical
eyeV = new five.Servo({ pin: 9, range: [20, 160], continuous: ‘continuous’ });
board.repl.inject({ servo: eyeV });
// Init eye horizontal
eyeH = new five.Servo({ pin: 8, range: [80, 120], continuous: ‘continuous’ });
board.repl.inject({ servo: eyeH });
eyes();
});
}
exports.speak = function(tts, async, SARAH){
var s = syllables(tts);
console.log(‘Speak: [‘+tts+’]’, s);
speak(s);
return tts;
}
exports.action = function(data, callback, config, SARAH){ }
// ——————————————
// ANIMATRONIC
// ——————————————
var speak = function(count){
console.log(‘speak’);
if (count <= 0) { servo.stop(); return; }
servo.to(160);
setTimeout(function(){ servo.to(100); }, 200);
setTimeout(function(){ speak(count-1); }, 400);
}
var eyes = function(){
setTimeout(function(){
var pause = Math.round(Math.random()*4);
if (pause == 4){
eyeV.stop();
eyeH.stop();
}
else {
var dV = Math.round(Math.random()*140+20);
var dH = Math.round(Math.random()*40 +80);
eyeV.to(dV,280);
eyeH.to(dH,280);
}
eyes();
},300);
}
var syllables = function(word) {
word = word.toLowerCase();
if(word.length <= 3) { return 1; }
word = word.replace(/(?:[^laeiouy]es|ed|[^laeiouy]e)$/, »);
word = word.replace(/^y/, »);
return word.match(/[aeiouy]{1,2}/g).length;
}
[/crayon]
Pas mal !
Bonjour ,
Nous sommes actuellement , entrain de travailler sur votre logiciel SARAH que l’on aimerai intégrer dans une tête InMoov.
Comme vous l’avez effectué ici , comment avez procédé exactement?
Quelle est la bibliothèque utilisée ?
Dans mon cas j’utilise la librairie NodeJS JohnnyFive qui permet de controller des moteurs de carte Arduino.
Attention dans le monde réel les moteurs ne sont pas super précis et du coup les tempo sont pas raccord avec la voix
Merci de votre réponse , j’ai installer JohnnyFive ainsi que Node JS sur windows , pour le moment j’arrive a contrôler à peine une Led avec la carte arduino.
Comment vous utiliser le code ci dessus ?
Je ne comprends pas la question, c’est le code d’un plugin SARAH a l’initialisation on initialise la carte et on créé des objets servo comme dans la doc de JohnyFive. Puis quand SARAH parle on décupe la phrase en sylabe et on ouvre la bouche un des servo autant de fois que necessaire
Bonjour,
Si j’ai bien compris il faut installer:
Node.js
Visual Studio 2012 (par exemple)
Johnny-Five via npm
Charger dans l’ARDUINO un code FIRMATA.
Après écrire un plungin pour SARAH qui utilisera Johnny-five et ajouter le programme qui commande les servos moteurs ?
Est-ce bien celà ?
Je n’ai pas bien compris ce que vous cherchez à faire
1. Pour piloter une carte Arduino avec NodeJS il faut installer JohnyFive. Pour installer JohnyFive sous windows il faut suivre la doc qui indique d’installer VisualStudio et faire 2-3 manip
2. Ensuite il faut effectivement que le Arduino utilise Firmata pour recevoir des commandes JohnnyFive
3. Ensuite pour n’importe script NodeJS qui utilise l’API JohnnyFive peut envoyer des ordre à la carte
4. Enfin dans le cas de SARAH mon script est un plugin SARAH car c’est le framework que je développe.
Mais si votre besoin est juste de pilote un arduino:
– NodeJS n’est pas forcément nécessaire il suffit de coder en Arduino
– Windows n’est pas nécessaire vous pouvez utiliser un Raspberry Pi
– SARAH n’est pas nécessaire vous pouvez juste faire un script NodeJS
Cet article part du postula que je code un plugin SARAH donc je fais des choix « spécifiques »
Merci, c’est clair.
Est-ce possible d’avoir votre plugin car je n’ai pas réussi à en créer un utilisant Johnny-five et SARAH ?