Negli ultimi giorni mi sono dilettato con il linguaggio di programmazione più “esoterico” e minimale che esista, il Brainfuck. Ho creato un piccolo IDE in Javascript che gira su Firefox e Safari con le seguenti caratteristiche:
interprete di Brainfuck
debugger con play/pause/stop/step-by-step
inserimento di breakpoint
numerosi programmi già pronti di esempio
esecuzione in pseudo-thread che non blocca il browser in caso di cicli infiniti
L’obiettivo è quello di realizzare un robot mobile controllato a comando vocale, cioè un robot in grado di muoversi in ambienti domestici comandato tramite parole o brevi frasi pronunciate da una persona. Questo comporta la realizzazione di un software distribuito (su più processori) in modo che un calcolatore possa registrare delle parole o frasi pronunciate da una persona e occuparsi del movimento mentre un secondo calcolatore effettua il riconoscimento vocale sulla registrazione e invia il risultato testuale alla prima macchina. Il software deve occuparsi di tutte le fasi: la registrazione della voce, il riconoscimento delle parole, del comando, il controllo a basso livello dei motori e di un sonar per rilevare la distanza del robot dagli ostacoli.
L’idea è di equipaggiare il robot con due ruote motrici e un sonar, collegati ad una scheda ARM con un sistema Linux che serve a coordinare tutto. La scheda ARM deve essere autosufficiente per quanto riguarda la registrazione dei comandi vocali, il controllo dei motori, del sonar e un minimo di logica per evitare di scontrare il robot sugli ostacoli, mentre solamente la fase di riconoscimento vocale viene assegnata a un sistema esterno Windows per il riconoscimento vocale.
Per l’esame di Cartografia e Sistemi Informativi Territoriali (GIS) mi è capitato di realizzare un programmino che effettua la trasformazioni di coordinate dal sistema WGS84 al sistema UTM chiamato anche Gauss (coordinate geodetiche), compatibile con la cartografia ufficiale italiana IGM (Istituto Geografico Militare) in coordinate cartesiane (kilometriche). La trasformazione avviene per punti fissati oppure dinamicamente per il punto in cui viene posizionato il cursore in Google Maps.
Ho corretto un errore che ultimamente il programma di conversione dava, a causa di un cambiamente che Google ha fatto alle sue API.
Ora la conversione funziona correttamente, inoltre ho anche aggiunto la funzionalità per inserire manualmente delle coordinate. Grazie a Marco e Umberto per la segnalazione.