{"id":1777,"date":"2011-08-08T18:35:28","date_gmt":"2011-08-08T16:35:28","guid":{"rendered":"http:\/\/www.alphak.net\/news\/?p=1777"},"modified":"2017-05-15T20:51:38","modified_gmt":"2017-05-15T18:51:38","slug":"youba-release-du-back-end-pour-robot-youpi","status":"publish","type":"post","link":"https:\/\/www.alphak.net\/news\/2011\/08\/youba-release-du-back-end-pour-robot-youpi\/","title":{"rendered":"Youba : release du back-end pour robot Youpi"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1778\" title=\"youba\" src=\"http:\/\/cdn.alphak.net\/news\/wp-content\/uploads\/sites\/2\/2011\/08\/youba-web.png\" alt=\"Youba Logo\" width=\"192\" height=\"132\" \/><\/p>\n<p>Une bonne nouvelle pour ceux qui attendaient d\u00e9sesp\u00e9r\u00e9ment un outil pour contr\u00f4ler leur robot Youpi : je me suis bott\u00e9 le cul ces derniers jours, j&rsquo;ai pu terminer la r\u00e9alisation de mon back-end, le tester avec le robot, et m\u00eame appr\u00e9cier le r\u00e9sultat en g\u00e9n\u00e9rant un sc\u00e9nario de mouvements pour le robot en quelques secondes !<\/p>\n<p>Le nom de cette merveille : <strong>Youba<\/strong> (pour YOUpi BAck-end), un petit programme de 500 lignes \u00e9crit en Python. Pour rappel, ce programme a \u00e9t\u00e9 r\u00e9alis\u00e9 dans le contexte suivant :<\/p>\n<ul>\n<li><strong>Ind\u00e9pendance du front-end :<\/strong> le programme se contente d&rsquo;attente ses ordres sur un port TCP. Les instructions en questions peuvent \u00eatre envoy\u00e9es par n&rsquo;importe quel front-end (un terminal, un script, une page web, un programme analysant les commandes d&rsquo;un joystick, tout ce que vous voulez).<\/li>\n<li><strong>Bufferisation<\/strong> : les ordres peuvent \u00eatre envoy\u00e9s en temps r\u00e9el ou \u00e0 l&rsquo;avance.<\/li>\n<li><strong>Portabilit\u00e9 :<\/strong> au moins dans la mesure du possible. 99% du code est ind\u00e9pendant de la plate forme. Les 1% restants concernent l&rsquo;envoi de donn\u00e9es sur le port parall\u00e8le, que je n&rsquo;ai pas su r\u00e9aliser de mani\u00e8re totalement portable \u00e0 l&rsquo;heure actuelle. Les syst\u00e8mes Linux et Windows sont support\u00e9s.<\/li>\n<\/ul>\n<div id=\"attachment_1779\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/cdn.alphak.net\/news\/wp-content\/uploads\/sites\/2\/2011\/08\/youba-workbench.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1779\" class=\"size-medium wp-image-1779\" title=\"Le workbench pour tester le back-end Youba\" src=\"http:\/\/cdn.alphak.net\/news\/wp-content\/uploads\/sites\/2\/2011\/08\/youba-workbench-300x259.jpg\" alt=\"Le workbench pour tester le back-end Youba\" width=\"300\" height=\"259\" srcset=\"https:\/\/cdn.alphak.net\/wp-content\/uploads\/sites\/2\/2011\/08\/youba-workbench-300x259.jpg 300w, https:\/\/cdn.alphak.net\/wp-content\/uploads\/sites\/2\/2011\/08\/youba-workbench-768x664.jpg 768w, https:\/\/cdn.alphak.net\/wp-content\/uploads\/sites\/2\/2011\/08\/youba-workbench-889x768.jpg 889w, https:\/\/cdn.alphak.net\/wp-content\/uploads\/sites\/2\/2011\/08\/youba-workbench.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1779\" class=\"wp-caption-text\">Mon plan de travail : un PC, le robot, le c\u00e2ble de connexion ad\u00e9quat, et un objet \u00e0 saisir.<\/p><\/div>\n<p>Le plan de travail qui m&rsquo;a permis de valider mes tests se pr\u00e9sente comme ceci : un PC avec une distrib Linux (Linux Mint dans ce cas), le robot, le <a title=\"On a retrouv\u00e9 le prototype du T-800 !\" href=\"http:\/\/www.alphak.net\/news\/2009\/05\/on-a-retrouve-le-prototype-du-t-800\/\">c\u00e2ble de connexion parall\u00e8le<\/a> fabriqu\u00e9 lors des \u00e9tapes pr\u00e9c\u00e9dentes, et le tube en plastique d&rsquo;un m\u00e9dicament g\u00e9n\u00e9rique quelconque pr\u00e9alablement lest\u00e9 avec des contrepoids de touches de piano (j&rsquo;ai pris ce que j&rsquo;avais sous la main). Sur le PC, deux terminaux sont ouverts : \u00e0 gauche le programme Youba qui \u00e9coute sur son socket et \u00e0 droite le terminal d&rsquo;envoi des instructions par netcat.<\/p>\n<p>Les r\u00e9sultats des tests ont \u00e9t\u00e9 au del\u00e0 de mes esp\u00e9rances :<\/p>\n<ul>\n<li>Fonctionnellement, le back-end rempli correctement son r\u00f4le, enquille les ordres et envoie leur traduction au robot.<\/li>\n<li>Le mouvement sur plusieurs axes en simultan\u00e9 est possible. Cela peut paraitre anodin mais ce n&rsquo;\u00e9tait pas forc\u00e9ment \u00e9vident \u00e0 concevoir.<\/li>\n<li>Les mouvements sur chaque axe sont r\u00e9alis\u00e9s \u00e0 une vitesse plut\u00f4t raisonnable. J&rsquo;avais peur que le robot soit trop lent \u00e0 r\u00e9agir apr\u00e8s avoir constat\u00e9 des probl\u00e8mes de mise en sommeil trop longue lors des essais avec mon programme <a title=\"Youpi, testons les moteurs !\" href=\"http:\/\/www.alphak.net\/news\/2009\/12\/youpi-testons-les-moteurs\/\">Robotest<\/a>. J&rsquo;ai quand m\u00eame r\u00e9ussi \u00e0 minorer ce probl\u00e8me en revoyant compl\u00e8tement la gestion des intervalles d&rsquo;envoi d&rsquo;octets sur le port parall\u00e8le.<\/li>\n<li>La pr\u00e9cision sur les axes est au rendez-vous, et la pince dispose de suffisamment de pression pour tenir des objets cylindriques.<\/li>\n<\/ul>\n<p>Et enfin, l&rsquo;utilisation du back-end, gr\u00e2ce \u00e0 la commande \u00ab\u00a0I!!\u00a0\u00bb qui affiche l&rsquo;\u00e9tat des compteurs de demi-pas, permet de \u00ab\u00a0cartographier\u00a0\u00bb les d\u00e9placements sur chaque axe de mani\u00e8re tr\u00e8s pr\u00e9cise et d&rsquo;utiliser ces informations pour <strong>scripter des sc\u00e9narios<\/strong> tr\u00e8s rapidement, d\u00e8s qu&rsquo;on connait un minimum la syntaxe attendue. J&rsquo;ai r\u00e9alis\u00e9 le mien en moins de 5 minutes, c&rsquo;est celui que j&rsquo;utilise dans mon terminal de droite. Voici le script utilis\u00e9 pour ordonner au robot de chopper mon tube cylindrique et de le d\u00e9poser quelques centim\u00e8tres plus loin :<\/p>\n<pre class=\"prettyprint\">#!&#47;bin&#47;bash\r\nfunction sendyoupi {\r\n\techo &#34;$1&#34; | nc localhost 12080\r\n}\r\n\r\n# Positionner le bras au-dessus du tube\r\nsendyoupi &#39;C!W!0,R,H,750,1|1,L,H,999,1|2,R,H,4332,1|3,L,H,7334,1|5,R,H,2000,1&#39;\r\n# Serrer la pince\r\nsendyoupi &#39;A!W!5,L,D,80,1&#39;\r\n# Lever le bras\r\nsendyoupi &#39;A!W!1,R,D,30,1&#39;\r\n# Tourner la base de 60\u00b0\r\nsendyoupi &#39;A!W!0,L,D,60,1&#39;\r\n# Baisser le bras\r\nsendyoupi &#39;A!W!1,L,D,30,1&#39;\r\n# Desserrer la pince\r\nsendyoupi &#39;A!W!5,R,D,80,1&#39;\r\n# Revenir en position de d\u00e9part\r\nsendyoupi &#39;A!W!A,I,S,1,1&#39;<\/pre>\n<p>Et le r\u00e9sultat du script en images :<\/p>\n<div style=\"width: 640px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-1777-1\" width=\"640\" height=\"480\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"http:\/\/cdn.alphak.net\/videos\/03-Youba.mp4?_=1\" \/><a href=\"http:\/\/cdn.alphak.net\/videos\/03-Youba.mp4\">http:\/\/cdn.alphak.net\/videos\/03-Youba.mp4<\/a><\/video><\/div>\n<p><strong>Attention, quelques conseils pour ceux qui souhaitent utiliser Youba :<\/strong><\/p>\n<p>Avant tout, il y a un fichier README.txt \u00e0 la racine du projet. Si je me suis cass\u00e9 la t\u00eate \u00e0 l&rsquo;\u00e9crire, c&rsquo;est qu&rsquo;il contient des tas d&rsquo;informations int\u00e9ressantes \u00e0 respecter pour que tout puisse fonctionner. Donc, lisez-le. V\u00e9rifiez en particulier que le port parall\u00e8le est activ\u00e9 dans le BIOS, de pr\u00e9f\u00e9rence en mode EPP, que son driver est bien charg\u00e9 par le syst\u00e8me d&rsquo;exploitation, et que vous avez correctement configur\u00e9 son n\u00b0 d&rsquo;I\/O dans le fichier de configuration. Si le robot ne r\u00e9pond pas aux ordres donn\u00e9s, lancez Robotest (disponible en page de t\u00e9l\u00e9chargements) pour vous assurer que la partie mat\u00e9rielle fonctionne \u00e0 minima. D&rsquo;autre part, je n&rsquo;ai pas eu l&rsquo;occasion de tester l&rsquo;int\u00e9gralit\u00e9 du programme avec Windows (les 50% des 1% qui ne sont pas portables), j&rsquo;ai bon espoir que cela fonctionne mais on ne sait jamais. Enfin, je rappelle que je ne r\u00e9ponds en g\u00e9n\u00e9ral pas aux questions par mail car je pr\u00e9f\u00e8re qu&rsquo;elles soient abord\u00e9es en commentaires afin que tous les int\u00e9ress\u00e9s puissent avoir acc\u00e8s aux r\u00e9ponses.<\/p>\n<p>Voila, il est maintenant temps de d\u00e9voiler o\u00f9 il est possible de t\u00e9l\u00e9charger Youba : c&rsquo;est sur la <a title=\"T\u00e9l\u00e9chargements\" href=\"http:\/\/www.alphak.net\/news\/telechargements\/\">page de t\u00e9l\u00e9chargements<\/a> !<\/p>\n<p>Une derni\u00e8re chose : je serai content de savoir si vous utilisez ce back-end, ce que vous en pensez, quel front-end vous utilisez, et surtout si vous avez de bonnes id\u00e9es quand \u00e0 l&rsquo;utilisation du robot Youpi.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Une bonne nouvelle pour ceux qui attendaient d\u00e9sesp\u00e9r\u00e9ment un outil pour contr\u00f4ler leur robot Youpi : je me suis bott\u00e9 le cul ces derniers jours, j&rsquo;ai pu terminer la r\u00e9alisation de mon back-end, le tester avec le robot, et m\u00eame appr\u00e9cier le r\u00e9sultat en g\u00e9n\u00e9rant un sc\u00e9nario de mouvements pour le robot en quelques secondes !<\/p>\n<p>Le nom de cette merveille : <strong>Youba<\/strong> (pour YOUpi BAck-end), un petit programme de 500 lignes \u00e9crit en Python. Pour rappel, ce programme a \u00e9t\u00e9 r\u00e9alis\u00e9 dans le contexte suivant :<\/p>\n<ul>\n<li><strong>Ind\u00e9pendance du front-end :<\/strong> le programme se contente d&rsquo;attente ses ordres sur un port TCP. Les instructions en questions peuvent \u00eatre envoy\u00e9es par n&rsquo;importe quel front-end (un terminal, un script, une page web, un programme analysant les commandes d&rsquo;un joystick, tout ce que vous voulez).<\/li>\n<p><\/strong><\/p>\n\t<div class=\"post-teaser-block\">\r\n\t\t<div class=\"teaserHellip\">\r\n\t\t\t<span class=\"teaserLeft\">[<\/span><span class=\"teaserCenter\">&hellip;<\/span><span class=\"teaserRight\">]<\/span>\r\n\t\t<\/div>\r\n\t\t<div class=\"teaserText\">\r\n\t\t\t<a href=\"https:\/\/www.alphak.net\/news\/2011\/08\/youba-release-du-back-end-pour-robot-youpi\/\" title=\"Youba : release du back-end pour robot Youpi\" rel=\"bookmark\"><span class=\"teaserlink\">Lire la suite de l'article&nbsp;<i class=\"fa fa-chevron-right\"><\/i><\/span><\/a>\r\n\t\t<\/div>\r\n\t\t<a class=\"teaserLink\" href=\"https:\/\/www.alphak.net\/news\/2011\/08\/youba-release-du-back-end-pour-robot-youpi\/\" title=\"Youba : release du back-end pour robot Youpi\" rel=\"bookmark\"><\/a>\r\n\t<\/div>\r\n","protected":false},"author":1,"featured_media":1779,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[142],"tags":[238,211,343,212,143,237,280,144],"class_list":["post-1777","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bricolage","tag-automate","tag-backend","tag-code","tag-python","tag-robot","tag-script","tag-video","tag-youpi"],"_links":{"self":[{"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/posts\/1777"}],"collection":[{"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/comments?post=1777"}],"version-history":[{"count":7,"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/posts\/1777\/revisions"}],"predecessor-version":[{"id":3107,"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/posts\/1777\/revisions\/3107"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/media\/1779"}],"wp:attachment":[{"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/media?parent=1777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/categories?post=1777"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alphak.net\/news\/wp-json\/wp\/v2\/tags?post=1777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}