|
| libastag : Une interface Ruby à l'API Violet | |
| | Auteur | Message |
---|
kaworu Lapin nain
Localisation : genève Nbr de messages : 8 Carottes : 6214
| Sujet: libastag : Une interface Ruby à l'API Violet Mar 20 Nov 2007 - 1:15 | |
| Bonsoir ! je viens d'adopter un petit Nabaztag/tag, et voilà que j'apprend qu'on peut s'amuser avec grâce à l'API Violet ! J'ai regardé les Wrapper/Libs (vite fais hein) qui existent, et malheureusement aucune ne me plaisais (ok, je suis un peu difficile), donc j'ai commencé le développement de ma propre bibliothèque. Pourquoi Ruby ? pour les objectifs, et surtout parce que Ruby c'est vraiment fun (mais bon, ça aurait pu être Python). Objectifs :1) licence libre je sais pas encore laquelle, j'hésite en Ruby, GPL et (new)BSD. J'ai tendence à penser qu'un lib doit être sous une licence moins restrictive que la GPL. 2) Portable (quasi) toutes les libs que j'ai trouvé étaient en C#. Comme je ne connais pas C# et que je tourne sous GNU/Linux (et que C# n'est pas vraiment portable), il me fallait autre chose. J'ai (rapidement) étudié les libs Nabazplayeret NabNET(un grand merci aux auteurs de ces libs !) qui sont bien codées (ne connaissant rien au C#, j'ai pu comprendre facilement leur fonctionnement. Ruby tourne facilement sous tous les unices (*BSD, GNU/Linux, OSX etc.) et Windows, et j'essaye d'utiliser uniquement les bibliothèques standard de Ruby. 3) Bien documentée. Tout le code est commenté, de façon à fournir une documentation complète et exhaustive (format Rdoc). Cela manquait un peu dans les libs C# que j'ai pu lire. 4) Peu de code, structure simple. rester le plus simple et concis que possible, de manière à faire évoluer facilement la bibliothèque. Pour parler un peu de la structure (vu que c'est encore que des idées) voiçi une brève description : Deux niveau d'abstrations : - le module VioletAPI donne les classes de base pour envoyer des requêtes / recevoir les réponses au server Violet. - un module de plus haut niveau, avec des classes pour représenter les "éléments" du Nabazatag (oreilles, leds...) et le Nabaztag lui-même. Pour le module VioletAPI, il est composé de cette manière : - VioletAPI::Request => les requêtes que l'on peut envoyer, - VioletAPI::Response => les réponses du serveur, - VioletAPI::Help => des méthodes/classes d'aide (description de l'API etc). Pour Le module de plus haut niveau j'ai commencé un brouillon, sur la base des libs C#. Voilà, j'espère que ça interesse du monde, si vous touchez un peu à Ruby ou juste interessé faites moi signe vous pouvez télécharger la lib ici : (lien mort)http://www.kaworu.ch/public/violetapi.rb (elle est encore vraiment à l'état de brouillon, ça commencera à donner quelque chose d'ici la fin de la semaine). Bonne soirée.
Dernière édition par le Ven 23 Nov 2007 - 14:24, édité 2 fois | |
| | | aerosmiss Yellow Subadmin
Age : 56 Localisation : Paris Nabaztag : Zvi (V1) et Zeev (V2) Nbr de messages : 10056 Carottes : 7024
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Mar 20 Nov 2007 - 6:27 | |
| Tout d'abord, bienvenue sur le forum Je ne suis pas informaticienne pour un sou franc suisse, mais il y en a qui vont sans doute se lécher les babines en lisant ton post. Bonne continuation et tiens-nous au courant de tes dev' Bonne journée | |
| | | Phabbrrysse Nabazteur Voyageur
Age : 38 Localisation : Sassenage Nabaztag : PhormiBBrrysse et Pharramyneu (V2) Nbr de messages : 14389 Carottes : 13328
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Mar 20 Nov 2007 - 8:23 | |
| En tout cas bienvenue et bon developpement je ne vais pas t'aider car mes connaissance las dedans ne sont pas ... tres etendu (qui a dit sont totalement abentese ) _____________________________ Connexion du lapin difficile : ICI -- PAS D'AIDE PAR MP NI PAR MAIL | |
| | | jbx028 Gold Nabz
Localisation : Dans le sept huit Nabaztag : Rosie (v1), NoFutur Tag/tag (v2), et Nabaztag mon Karotz..... Nbr de messages : 677 Carottes : 7132
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Mar 20 Nov 2007 - 8:37 | |
| Un wrapper ruby existe déja : http://rubyforge.org/projects/nabaztag/
Tu peux probablement t'en inspirer.
Bon courage pour ton projet. | |
| | | The fast Nabz Junior
Age : 29 Localisation : BELGIQUE Nabaztag : (V2) Znak Nbr de messages : 84 Carottes : 6290
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Mar 20 Nov 2007 - 19:37 | |
| Mouais.. mais pour Linux.... | |
| | | jbx028 Gold Nabz
Localisation : Dans le sept huit Nabaztag : Rosie (v1), NoFutur Tag/tag (v2), et Nabaztag mon Karotz..... Nbr de messages : 677 Carottes : 7132
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Mar 20 Nov 2007 - 21:16 | |
| - Citation :
- Mouais.. mais pour Linux....
Non, ruby fonctionne sur linux, windows, mac, et unix, etc... | |
| | | kaworu Lapin nain
Localisation : genève Nbr de messages : 8 Carottes : 6214
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Mar 20 Nov 2007 - 21:36 | |
| Merci pour votre accueil ! j'ai regardé vite fais la lib ruby (merci pour le lien) et elle va m'aider dans mon developement, merci ! | |
| | | castagnette Lapin nain
Localisation : Paris Nabaztag : Castagnette et Crhonch Nbr de messages : 9 Carottes : 6277
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Mer 21 Nov 2007 - 0:26 | |
| Merci, merci, merci !!!
J'utilisais l'autre bibliothèque Ruby, mais je vais jeter un coup d'oeil à celle-ci. Au moins un effort de documentation a été fait. | |
| | | The fast Nabz Junior
Age : 29 Localisation : BELGIQUE Nabaztag : (V2) Znak Nbr de messages : 84 Carottes : 6290
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Mer 21 Nov 2007 - 19:15 | |
| Comment fait-on pour utiliser une interface ruby (en tout cas sous windows) | |
| | | jbx028 Gold Nabz
Localisation : Dans le sept huit Nabaztag : Rosie (v1), NoFutur Tag/tag (v2), et Nabaztag mon Karotz..... Nbr de messages : 677 Carottes : 7132
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Mer 21 Nov 2007 - 20:52 | |
| http://rubyforge.org/frs/download.php/27227/ruby186-26_rc2.exe
..entre autre. Il existe d'autres solutions. Cela installe seulement ruby et pas le fabuleux framework Rail. | |
| | | kaworu Lapin nain
Localisation : genève Nbr de messages : 8 Carottes : 6214
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Mer 21 Nov 2007 - 21:36 | |
| plop plop. Voilà, la lib évolue tranquillement, j'ai splitté VioletAPI en plusieurs fichiers pour que ce soit plus facile à comprendre. Pour l'instant je bosse uniquement sur la gestion des réponses, c'est presque complet. bientôt on pourrra faire (par exemple) : - Code:
-
>> require "response.rb" >> r = Response.parse (<le_code_XML_de_la_reponse_message_send>) => une instance de MessageSend >> r.good? => true >> r.message => "MESSAGESEND"
etc lien: (lien mort) http://www.kaworu.ch/public/libastag-r12.tar.gz
Dernière édition par le Ven 23 Nov 2007 - 14:31, édité 1 fois | |
| | | kaworu Lapin nain
Localisation : genève Nbr de messages : 8 Carottes : 6214
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Jeu 22 Nov 2007 - 18:39 | |
| Salut ! Le module de gestion des réponses du serveur est fini ! Faut encore paufiner la doc et tester un peu, mais la structure complète est là (et gère toutes les réponses spécifiées dans l'API violet). voilà le lien du téléchargement de l'archive (qui contient également la documentation Rdoc générée) : (lien mort)http://www.kaworu.ch/public/libastag-r20.tar.gz. n'hésitez pas à faire des remarque sur la doc, le code, ou les concepts etc ! Enjoy ! (je m'attaque aux Requêtes maintenant)
Dernière édition par le Ven 23 Nov 2007 - 14:25, édité 1 fois | |
| | | kaworu Lapin nain
Localisation : genève Nbr de messages : 8 Carottes : 6214
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Ven 23 Nov 2007 - 14:23 | |
| Salut ! voilà, le module Response à été paufiné et rendu plus accessible : LIENS MORTS la doc online => http://www.kaworu.ch/public/libastag/lib/violet/doc/ les fichiers => http://www.kaworu.ch/public/libastag/lib/violet/response.rb http://www.kaworu.ch/public/libastag/lib/violet/helpers.rb
Enjoy !
Dernière édition par le Dim 9 Déc 2007 - 13:32, édité 1 fois | |
| | | jbx028 Gold Nabz
Localisation : Dans le sept huit Nabaztag : Rosie (v1), NoFutur Tag/tag (v2), et Nabaztag mon Karotz..... Nbr de messages : 677 Carottes : 7132
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Ven 23 Nov 2007 - 14:36 | |
| Je compte m'investir un peu plus dans ruby. Je pourrais commencer par utiliser ton wrapper dans une petite application rail (je dois au préalable, terminer mon service web .NET de reconnaissance vocal/AIML)
Quoi qu'il en soit, bravo pour cette réalisation. | |
| | | kaworu Lapin nain
Localisation : genève Nbr de messages : 8 Carottes : 6214
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Dim 9 Déc 2007 - 13:30 | |
| Bonjour ! Le projet avance doucement mais sûrement ! libastag est maintenant un projet hébergé sur rubyforge, on peut donc l'installer de manière "traditionel" pour les paquets Ruby : - Code:
-
gem install libastag --remote
Voici le lien du projet : http://rubyforge.org/projects/libastag/ le lien vers la doc Rdoc de la lib : http://libastag.rubyforge.org/ La version 0.0.1 n'est pas encore complète, elle donne un support complet et testé des réponses du serveur (VioletAPI::Response), complet mais pas encore bien testé des requêtes de type action, et "en cours de développement" (pas documenté, pas testé) des requêtes de type TTS et mouvement d'oreilles. Questions, remarques etc sont les bienvenues ! Bonne journée. | |
| | | kaworu Lapin nain
Localisation : genève Nbr de messages : 8 Carottes : 6214
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Mer 12 Déc 2007 - 18:53 | |
| Bonjour ! Je continue tranquillement à developper les requêtes. En ce moment je suis en plein travail sur les Chorégraphies. Les chorégraphies sont des descriptions assez simple, la difficulté est de traduire des phrases simples comme "bouge l'oreille droite en avant de 10 degrés" en "0,motor,0,10,0,0". les paramètres d'une fonction (même nommés avec un hash) serait dur à utiliser : - Code:
-
# avec un array Choregraphy.new (0, Choregraphy::MOTOR, Choregraphy::Ears::LEFT, Choregraphy.degrees(10), Choregraphy::Ears::Forward)
# avec un Hash Choregraphy.new( :time => 0, :action => :motor, :ear => :left, :angle => 10, :direction => :forward )
Pouerk. Tout ça est peu lisible, et en plus, il n'y pas une choregraphie, mais seulement un mouvement. J'ai décidé de créer un DSL (Domain Specific Language) pour les chorégraphie. C'est à dire de faire un "mini langage" de description de chorégraphie (tout ça dans Ruby, histoire de pouvoir profiter de tous les outils habituels). Pour l'instant (et pour vous mettre l'eau à la bouche) ça donne ça : - Code:
-
Request::Choregraphy.new do
at time 0 do set all leds off end at time 0.1 do set bottom led to green set left led to blue set right led to rgb(10,20,0) set top led to 1,2,3 end at time 1 do move right ear forward of degrees 10 move left ear backward of degrees 100 end
at time 2 do set all leds to white move both ears forward of degrees 10 end end
et ça donne : - Code:
-
=> #<Request::Choregraphy:0x2b6ee836daf8 @time=20, @code=[#<Proc:0x00002b6ee836ec78@(irb):6>], @chor=["0,led,3,0,0,0", "0,led,2,0,0,0", "0,led,4,0,0,0", "0,led,0,0,0,0", "0,led,1,0,0,0", "1,led,0,0,255,0", "1,led,1,0,0,255", "1,led,3,10,20,0", "1,led,4,1,2,3", "10,motor,0,10,0,0", "10,motor,1,100,0,1", "20,led,3,255,255,255", "20,led,2,255,255,255", "20,led,4,255,255,255", "20,led,0,255,255,255", "20,led,1,255,255,255", "20,motor,0,10,0,0", "20,motor,1,10,0,0"]>
on voit que dans la variable @chor, la choregraphy complète ! - Citation :
ouais, bof, et donc ?
Donc on peut facilement décrire des chorégraphies en s'appuyant sur Ruby, et ça, c'est fun. Un exemple ? voici un petit script, qui traduit votre nom en morse et l'affiche sur votre lapin (avec la led du nez, couleurs au hasard) : - Code:
-
#!/usr/bin/env ruby
require 'lib/violet/request/request.rb'
class String
MORSE_TABLE = {'a'=> %|.-|,'b'=> %|-...|,'c'=> %|-.-.|,'d'=> %|-..|,'e'=> %|.|,'f'=> %|..-.|,'g'=> %|--.|,'h'=> %|....|,'i'=> %|..|,'j'=> %|.---|,'k'=> %|-.-|,'l'=> %|.-..|,'m'=> %|--|,'n'=> %|-.|,'o'=> %|---|,'p'=> %|.--.|,'q'=> %|--.-|,'r'=> %|.-.|,'s'=> %|...|,'t'=> %|-|,'u'=> %|..-|,'v'=> %|...-|,'w'=> %|.--|,'x'=> %|-..-|,'y'=> %|-.--|,'z'=> %|--..|,'0'=> %|-----|,'1'=> %|.----|,'2'=> %|..---|,'3'=> %|...--|,'4'=> %|....-|,'5'=> %|.....|,'6'=> %|-....|,'7'=> %|--...|,'8'=> %|---..|,'9'=> %|----.| }
# "translate" a String into Morse code def to_morse self.downcase.scan(/./).collect do |c| MORSE_TABLE[c] end.join end end
# time in sec of a dot . DOT_TIME = 0.1 # time in sec of a dash - (usually 3*DOT_TIME) DASH_TIME = 3 * DOT_TIME # time in sec of space between morses . or - SPACE_TIME = DOT_TIME
# get user's name and convert it in morse code print "what's your name ? " morse = gets.chomp.to_morse
c = Request::Choregraphy.new do # initialize the timer timer = 0
# each dot or dash morse.scan(/./).each do |m| # choose the good duration time time_to_display = if m == '.' then DOT_TIME else DASH_TIME end # choose colors at random :) random_colors = [rand(255), rand(255), rand(255)]
at time timer set top led to random_colors
at time (timer + time_to_display) set top led off
timer = timer + time_to_display + SPACE_TIME end end
puts c.inspect
pouf ! la description de la chorégraphie prend 10 lignes de code, et on a pourtant fait un truc assez compliqué. voilà ce que ça peut donner : - Code:
-
what's your name ? alex #<Request::Choregraphy:0x2b972a689358 @chor=["0,led,4,215,202,16", "1,led,4,0,0,0", "2,led,4,46,31,226", "5,led,4,0,0,0", "6,led,4,249,228,37", "7,led,4,0,0,0", "8,led,4,116,163,89", "11,led,4,0,0,0", "12,led,4,180,143,104", "13,led,4,0,0,0", "14,led,4,161,137,61", "15,led,4,0,0,0", "16,led,4,180,103,57", "17,led,4,0,0,0", "18,led,4,84,229,201", "21,led,4,0,0,0", "22,led,4,120,65,102", "23,led,4,0,0,0", "24,led,4,182,240,63", "25,led,4,0,0,0", "26,led,4,220,80,139", "29,led,4,0,0,0"], @code=[#<Proc:0x00002b9727f51330@morse.rb:31>], @time=29>
J'ai pas encore vérifié ni testé ce code, c'est en developpement Donc ça va arriver bientôt, si vous avez des sugestions/questions, n'hésitez pas ! Bonne fin de journée. | |
| | | kaworu Lapin nain
Localisation : genève Nbr de messages : 8 Carottes : 6214
| Sujet: Re: libastag : Une interface Ruby à l'API Violet Mer 9 Jan 2008 - 14:06 | |
| Bonjour ! Après les fêtes et toussa, voilà la nouvelle release de libastag ! la version 0.0.2 contient un module Request complet, et le fichier morse.rb dans le dossier examples. maintenant l'API Violet est 100% exploitable via l'API Ruby !
Il reste encore à coder l'interface de haut niveau (la version 0.0.2 n'est pas encore tout à fait utilisable en l'état), et certains trucs sympa comme une base de donnée des IDmessage de la Library.
le lien de l'annonce de la version 0.0.2 : http://rubyforge.org/forum/forum.php?forum_id=20579 le lien du projet : http://rubyforge.org/projects/libastag/ le lien vers la documentation : http://libastag.rubyforge.org/
remarques, questions, propositions bienvenu !
Bonne journée. | |
| | | Contenu sponsorisé
| Sujet: Re: libastag : Une interface Ruby à l'API Violet | |
| |
| | | | libastag : Une interface Ruby à l'API Violet | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |