{"id":13,"date":"2014-10-26T22:26:13","date_gmt":"2014-10-26T21:26:13","guid":{"rendered":"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/?p=13"},"modified":"2021-01-10T21:00:28","modified_gmt":"2021-01-10T20:00:28","slug":"wirobo-il-robot-beam-programmabiile","status":"publish","type":"post","link":"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wirobo-il-robot-beam-programmabiile\/","title":{"rendered":"WIROBO &#8211; il robot beam programmabile"},"content":{"rendered":"<h4>Introduzione<\/h4>\n<p>WIROBO \u00e8 l&#8217;acronimo di Wired Robot. Nella sua &#8220;dinastia robotica&#8221; \u00e8 il figlio di Dobby e nipote di Hulk. E&#8217; apparso in pubblico a Ottobre 2014 alla Maker Faire di Roma nel gruppo di stand di Officine Robotiche. Officine Robotiche \u00e8 un gruppo di appassionati di robotica amatoriale a ivello nazionale. Maggiori dettagli li trovate al sito di <a title=\"officine robotiche\" href=\"http:\/\/www.officinerobotiche.it\" target=\"_blank\" rel=\"noopener\">officinerobotiche.it<\/a><\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/IMG_20141003_095448.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-463 size-large\" src=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/IMG_20141003_095448-1024x768.jpg\" alt=\"wirobo 2014\" width=\"980\" height=\"735\" srcset=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/IMG_20141003_095448-1024x768.jpg 1024w, http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/IMG_20141003_095448-300x225.jpg 300w, http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/IMG_20141003_095448-768x576.jpg 768w\" sizes=\"(max-width: 980px) 100vw, 980px\" \/><\/a><em><strong>&#8220;Wirobo alla MFR 2014 insieme al nonno Hulk e al fratellino digitale Bluice&#8221;<\/strong><\/em><\/p>\n<p>Wirobo \u00e8 un robot autonomo progettato con i componenti della robotica b.e.a.m. che convenzionalmente vengono chiamati &#8220;neuroni&#8221;. Questi &#8220;neuroni&#8221; trasportano impulsi che propagandosi da neurone a neurone e da neurone a motore, producono il movimento del robot. Questa propagazione \u00e8 fissa e continua, tranne quando viene deviata dal suo percorso da uno o pi\u00f9 sensori.<\/p>\n<p>Wirobo, al contrario dei suoi fratelli b.e.a.m.\u00a0 interpreta la filosofia b.e.a.m. che produce robot non programmabili, in modo tale da poterli programmare pur non avendo al suo interno processori di qualsiasi tipo. La programmazione avviene collegando tra di loro i &#8220;neuroni&#8221; per mezzo di collegamenti mobili che chiameremo convenzionalmente &#8220;sinapsi&#8221; e la cui disposizione \u00e8 prodotta dalla compilazione di un programma scritto in un linguaggio pseudo-Basic. Il compilatore per fare questo si chiama <a href=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/sygen-exe\/\" target=\"_blank\" rel=\"noopener\">SyGen<\/a> ed \u00e8 scritto in Basic Microsoft.<\/p>\n<p>Vediamo come \u00e8 fatto WIROBO:<\/p>\n<p><a href=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/IMG_20141005_175523.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-109\" src=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/IMG_20141005_175523-768x1024.jpg\" alt=\"Wirobo, robot beam programmabile - IMG_20141005_175523\" width=\"320\" height=\"427\" srcset=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/IMG_20141005_175523-768x1024.jpg 768w, http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/IMG_20141005_175523-225x300.jpg 225w, http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/IMG_20141005_175523.jpg 1944w\" sizes=\"(max-width: 320px) 100vw, 320px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h4><a name=\"__RefHeading__194_1887509275\"><\/a> Teoria del funzionamento<\/h4>\n<p>Come in ogni essere \u201cvivente\u201d la capacit\u00e0 di sopravvivenza \u00e8 data dalla possibilit\u00e0 di poter interagire con l&#8217;ambiente circostante attraverso organi di senso e organi mot\u00f2ri. Gli organi di senso percepiscono l&#8217;ambiente (esterocettori <a href=\"http:\/\/it.wikipedia.org\/wiki\/Organi_di_senso\" target=\"_blank\" rel=\"noopener\">http:\/\/it.wikipedia.org\/wiki\/Organi_di_senso<\/a>) o le proprie condizioni interne (propriocettori <a href=\"http:\/\/it.wikipedia.org\/wiki\/Propriocettore\" target=\"_blank\" rel=\"noopener\">http:\/\/it.wikipedia.org\/wiki\/Propriocettore<\/a>) mentre gli organi motorii permettono lo spostamento per il raggiungimento dello scopo; principalmente bisogni primari come l&#8217;alimentazione, la sopravvivenza in ambienti ostili e poi tutti gli altri.<\/p>\n<p>Anche Wirobo non fa eccezione. Anche lui ha organi di senso sia esterocettori (bumper) sia propriocettori (tilt) e organi motorii, in questo caso fatti da motoriduttori con ruote data la semplicit\u00e0 di attuazione rispetto ad eventuali zampe. Nel mezzo ci sono due layer che permettono l&#8217;elaborazione degli stimoli che partendo dai sensori, raggiungono le ruote.<\/p>\n<p align=\"center\">\u00a0<a href=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/fig1-layer.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-100\" src=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/fig1-layer.png\" alt=\"fig1-layer\" width=\"1190\" height=\"204\" srcset=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/fig1-layer.png 1190w, http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/fig1-layer-300x51.png 300w, http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/fig1-layer-1024x175.png 1024w\" sizes=\"(max-width: 1190px) 100vw, 1190px\" \/><\/a> Fig. 1 \u2013 Layer<\/p>\n<p>Questi due strati sono formati da quelli che nella tecnologia b.e.a.m. vengono chiamati neuroni Nu (neural) e il segnale che li attraversa \u00e8 formato da 1 o 0 pur non essendo propriamente un segnale digitale dato che alternativamente si trasla da segnale digitale a segnale analogico e viceversa.<\/p>\n<p>Il trasferimento dei segnali (stimoli) avviene quindi in modo asincrono a differenza della logica digitale classica.<\/p>\n<p>A questo punto vengono spontanee due domande:<\/p>\n<ol>\n<li>in che modo un impulso proveniente da un sensore si trasforma in azione?<\/li>\n<li>con quale logica un determinato stimolo diventa una precisa e ponderata azione?<\/li>\n<\/ol>\n<p>Innanzitutto descriviamo la logica del robot che \u00e8 fatta a strati, cinque per l&#8217;esattezza e sono i seguenti:<\/p>\n<ol>\n<li>strato organi \u201csensori\u201d<\/li>\n<li>strato neuroni Nu (layer 1)<\/li>\n<li>matrice sinaptica (connection layer)<\/li>\n<li>strato delle funzioni (layer 2)<\/li>\n<li>strato organi di movimento e attuatori<\/li>\n<\/ol>\n<p>Lo strato su cui si fonda tutto \u00e8 il quarto, quello cio\u00e8 che opportunamente comandato determina il comportamento del robot insieme alla matrice sinaptica.<\/p>\n<p>Il quarto strato infatti \u00e8 formato da una serie di moduli a cui corrispondono una o pi\u00f9 funzioni precise che si trasformano in azione. Questo \u00e8 lo strato che risponde alla prima domanda.<\/p>\n<p>I moduli delle funzioni sono 6 in totale, tre per organo motorio ma possono essere integrati con altre funzioni a piacere. Le tre funzioni base sono:<\/p>\n<ol>\n<li>inversione motore sx\/dx (rotazione)<\/li>\n<li>retromarcia + inversione motore sx\/dx<\/li>\n<li>stop della retromarcia<\/li>\n<\/ol>\n<p align=\"center\">\u00a0 <a href=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/funzioni.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-101\" src=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/funzioni.png\" alt=\"funzioni\" width=\"1228\" height=\"259\" srcset=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/funzioni.png 1228w, http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/funzioni-300x63.png 300w, http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/funzioni-1024x215.png 1024w\" sizes=\"(max-width: 1228px) 100vw, 1228px\" \/><\/a>Fig. 2 \u2013 Funzioni semplici e funzioni concatenate<\/p>\n<p>Queste tre funzioni sono il minimo vitale per l&#8217;azione motoria del robot e la combinazione di queste permette la navigazione cieca del robot. Perch\u00e9 cieca? Perch\u00e9 in questa versione sono disponibili solo sensori a corto raggio che non permettono una visione di insieme dell&#8217;ambiente circostante che al momento non \u00e8 il nostro scopo primario.<\/p>\n<p>&nbsp;<\/p>\n<p align=\"center\"><a href=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/mod-func.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-102\" src=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/mod-func.png\" alt=\"mod-func\" width=\"466\" height=\"541\" srcset=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/mod-func.png 466w, http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/mod-func-258x300.png 258w\" sizes=\"(max-width: 466px) 100vw, 466px\" \/><\/a>Fig. 3 \u2013 Modulo funzioni<\/p>\n<p>Poi ci sono altri tre strati che qui vediamo:<\/p>\n<p><strong>Nel primo strato<\/strong> ci sono sensori di vario tipo come switch, sensori ottici, tilt, ecc. Tutti danno in uscita un segnale logico che pu\u00f2 essere 0 o 1 a seconda che vengano attivati oppure no. A parte il tilt, tutti i sensori sono di tipo esterocettivo. Il tilt invece sentendo in qualche modo la posizione del robot nello spazio se pur in modo molto grezzo (ribaltamento) \u00e8 un sensore propriocettivo.<\/p>\n<p><strong>Il secondo strato<\/strong> \u00e8 formato da \u201cneuroni Nu\u201d e serve come condizionatore del segnale quando questo viene da un sensore (vedremo che ce ne \u00e8 un altro tipo) dato che a volte come negli switch questo livello logico \u00e8 \u201csporco\u201d. E&#8217; formato cio\u00e8 da una serie di microimpulsi che precedono o seguono l&#8217;impulso vero. Questo perch\u00e9 il contatto tra le lamelle dello switch non \u00e8 perfetto a causa delle inevitabili vibrazioni che ci sono all&#8217;atto dell&#8217;azionamento.<\/p>\n<p><strong>Il terzo strato<\/strong> chiamato anche \u201cmatrice sinaptica\u201d \u00e8 quello che permette la creazione di un determinato comportamento (behaviour) del robot associando e\/o combinando gli stimoli provenienti dai sensori alle risposte determinate dai moduli delle funzioni del quarto strato. Per capire meglio come funziona potremmo fare delle analogie con le macchine di Valentino Braitenberg descritte nel suo libro di \u201cPsicologia sintetica\u201d. In breve, associando ad uno stimolo una reazione positiva il robot tende a inseguire la fonte degli stimoli mentre associando allo stimolo una reazione negativa il robot tende ad allontanarsi dalla fonte dello stimolo.<\/p>\n<p>In questo modo cambiando semplicemente delle connessioni possiamo creare un line follower o un predatore che si avventa sull&#8217;obiettivo o un robot da labirinto e tanti altri comportamenti. Tanti di pi\u00f9 quanto di pi\u00f9 sono le funzioni impiantate nel quarto strato e quante di pi\u00f9 sono i collegamenti (sinapsi) nel terzo strato.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/matrix.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-107\" src=\"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-content\/uploads\/2014\/10\/matrix.gif\" alt=\"matrix\" width=\"1508\" height=\"800\" \/><\/a><\/p>\n<p align=\"center\">Fig. 4 \u2013 Matrice sinaptica<\/p>\n<p>&nbsp;<\/p>\n<h4>Alcuni piccoli chiarimenti<\/h4>\n<p>Siamo arrivati fin qui con la descrizione del progetto, adesso rimane da fare una domanda:<\/p>\n<p>perch\u00e9 programmare via hardware dato che questo ne aumenta la complessit\u00e0 di costruzione e ne limita lo sviluppo futuro a causa degli elevati costi e dimensioni fisiche enormi che questo implica?<\/p>\n<p>La risposta non \u00e8 unica ma affonda le radici nelle discussioni sorte negli anni novanta nelle mailing list beam: un robot beam pu\u00f2 essere programmabile?<\/p>\n<p>Le risposte classiche erano queste.<\/p>\n<ul>\n<li>\u201cNo, non pu\u00f2\u201d<\/li>\n<li>\u201cSi, se ci metti un layer superiore fatto con un microcontrollore\u201d<\/li>\n<\/ul>\n<p>A me queste risposte non piacevano perch\u00e9 non le ritenevo sufficientemente approfondite nell&#8217;analisi, anche perch\u00e9 prendevano ad esempio solo i circuiti storici come il microcore e il bicore. Non tenevano in considerazione le \u201cchains\u201d che si trovavano nello spider di Mark tilden che gi\u00e0 loro danno la visione della programmazione cablata, ma principalmente non tenevano in considerazione (secondo me) la possibilit\u00e0 di \u201cinterpretare\u201d alcuni aspetti della filosofia b.e.a.m. e cio\u00e8 di parallelizzare il percorso dei segnali oltre che serializzarli e usare questi per comandare dei \u201cmoduli\u201d che svolgessero delle funzioni semplici.<\/p>\n<p>A questo punto, restava solo da mettere in pratica il tutto e ho tirato fuori nel 2003 il robot da minisumo \u201cHulk\u201d con i suoi 8 neuroni differenziati per funzione. Minisumo che ha anche vinto negli anni passati diversi trofei nelle gare scolastiche che si svolgevano tra Roma e Pisa.<\/p>\n<p>Ho scoperto successivamente che l&#8217;idea non era poi cos\u00ec campata in aria perch\u00e9 funzionava un po come descritto in alcuni capitoli de \u201cLa societ\u00e0 della mente\u201d di Marvin Minsky.<\/p>\n<p>Nella programmabilit\u00e0 invece si possono intravedere le connessioni delle macchine descritte ne \u201cI veicoli pensanti\u201d di Valentino Braitenberg. Libri scoperti troppo tardi, un po&#8217; vecchiotti ma che consiglio da leggere. Cos\u00ec come consiglio di leggere i libri di Rodney Brooks di cui si trovano alcune parti in rete, anche se non ho avuto ancora modo di sfogliarli.<\/p>\n<p>&nbsp;<\/p>\n<p>Nei prossimi articoli entreremo pi\u00f9 in dettaglio nella descrizione dei circuiti e della programmazione sinaptica.<\/p>\n<hr \/>\n","protected":false},"excerpt":{"rendered":"<p>Introduzione WIROBO \u00e8 l&#8217;acronimo di Wired Robot. Nella sua &#8220;dinastia robotica&#8221; \u00e8 il figlio di Dobby e nipote di Hulk. E&#8217; apparso in pubblico a Ottobre 2014 alla Maker Faire di Roma nel gruppo di stand di Officine Robotiche. Officine Robotiche \u00e8 un gruppo di appassionati di robotica amatoriale a&#8230;<\/p>\n","protected":false},"author":1,"featured_media":14,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20,6,5],"tags":[10,7,11],"_links":{"self":[{"href":"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-json\/wp\/v2\/posts\/13"}],"collection":[{"href":"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-json\/wp\/v2\/comments?post=13"}],"version-history":[{"count":33,"href":"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-json\/wp\/v2\/posts\/13\/revisions"}],"predecessor-version":[{"id":941,"href":"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-json\/wp\/v2\/posts\/13\/revisions\/941"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-json\/wp\/v2\/media\/14"}],"wp:attachment":[{"href":"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-json\/wp\/v2\/media?parent=13"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-json\/wp\/v2\/categories?post=13"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.officinecibernetiche.net\/ocnet\/wordpress\/wp-json\/wp\/v2\/tags?post=13"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}