Queste pagine inesgnano come incominciare ad utilizzare Aseba anche se non si ha un robot fisico. Se avete Thymio II, si rimanda alla pagina specifica.
Aseba challenge (immagine a destra) è un modno simulato dove i robot controllati da Aseba competono per il cibo. Potete utilizzarlo come terreno di gioco per esplorare la scrittura di script Aseba o come un gioco educativo per imparare ed insegnare la programmazione.
Per iniziare dovete lanciare Aseba challenge. Se Aseba non è ancora installato, seguite le istruzioni di installazione. Una volta che challenge è partito, dovete fare click su "Aggiungi un nuovo robot", e scegliere un nome. Se siete un gruppo potete aggiungere un robot per ciascun giocatore. Potete rimuovere tutti i robot facendo click su "rimuovi tutti i robot". Potete nascondere i bottoni selezionando "Auto nascondi"': i bottoni verranno mostrati solo quando il puntatore del mouse sarà nelle vicinanze. Potete fare in modo che la telecamera si muova automaticamente selezionando "Auto camera". Se muovete la telecamera manualmente i controlli sono i seguenti:
Challenge mostra il punteggio di ciascun robot su un tabellone traslucido appeso sull'arena. L'obiettivo è rimanere vivi raccogliendo energia. Per tanto che un robot è vivo, il suo punteggio aumenta; quando muore viene dimezzato. Quattro soregenti di colore blu forniscono energia ai robot che si avvicinano. quando la sorgente è esaurita, diventa rossa e non fornisce più energia. Ogni tanto la sorgente sparisce nel terreno e i robots non possono più utilizzarla fintanto che non riappaia.
Una volta che Aseba challenge è in esecuzione, dovete avviare Aseba studio per programmare i robot. Per ciascun robot dovete eseguire una istanza di studio, che può essere eseguita su qualsiasi computer. All'avvio studio propone di connettersi ad un target Aseba (Immagine a destra). Se avete lanciato challenge sul vostro computer e aggiunto un robot, se non diversamente specificato e quindi per difetto studio si collegherà a questo. Se challenge è in esecuzione su un altro computer o vi sono più robot nell'arena, specificare il computer in host e il robot in port. Uno schermo traslucido al di sopra dell'arena in challenge mostra le porte corrispondenti ai vari robot.
Una volta che studio sia in esecuzione (immagine a destra), potete modificare il programma del robot nell'area centrale di studio. In quest'area vi è un editor di programma che verifica e compila in tempo reale il codice, verificando se la sintassi del codice è corretta o no. Potete apprendere di più su studio selezionando la voce di menu Help->Studio. La voce di menu Help->Language fornisce una documentazione dettagliata del linguaggio di programmazione Aseba.
Per programmare un robot prima di tutto dovete comprendere come funziona. Un robot interagisce con il mondo eseguendo un loop: percepisce lo stato del mondo circostante attraverso i suoi sensori, prende delle decisioni per mezzo del computer che vi è a bordo ed esegue delle azioni attraverso gli attuatori; queste azioni modificano lo stato del mondo e il robot percepisce questo nuovo stato quando legge nuovamente i sensori.
In challenge, programmate un robot e-puck simulato. Questo robot ha 8 sensori di prossimità intorno al suo corpo e una semplice telecamera di 3 pixels puntata in avanti, con un angolo di apertura di 20° gradi per pixel. Potete leggere questi valori e anche sceglier la velocità delle ruote:
file svg originale, vista di e-puck
Ora scriviamo il vostro primo programma di controllo per robot. Nell'editor di testo al centro della finestra di studio scrivete le seguenti linee:
wheel_left_speed = 5
wheel_right_speed = -5
Per interagire con il mondo circostante con continuità, il robot deve eseguire uno script periodicamente. Questo si ottiene con la direttiva onevent timer. Per esempio usando un sensore di prossimità frontale possiamo fissare la velocità delle ruote rispetto alla distanza dell'oggetto di fronte al robot:
onevent timer
wheel_left_speed = dist[0] - 6
wheel_right_speed = dist[0] - 6
Mantenere una distanza di sicurezza da un oggetto che vi sta davanti è una buona norma, ma ora il robot non si muove più in nessun modo. Per far sì che il robot se ne vada a spasso nell'arena, dobbiamo comprendere come si muove.
Il robot e-puck simulato in challenge è un esempio di robot con ruote differenziali. Questo tipo di robot modifica la propria direzione variando in modo differente la velocità delle ruote destra e sinistra. Se ciascuna ruota ha la stessa velocità in avanti, il robot va dritto, altrimenti sterza dal lato della ruota che gira più adagio. Se le ruote girano in direzione opposta con la stessa velocità il robot gira su se stesso. I caterpillar industriali usano la stessa modalità di movimento, utlizzando dei cingoli.
Scriviamo ora un breve pezzo di codice che fa in modo che il robot eviti gli ostacoli e poi prosegua avanti:
onevent timer
wheel_left_speed = dist[1] - 6
wheel_right_speed = dist[6] - 6
I programmi di controllo che abbiamo visto finora collegano direttamente il valore del sensore alla velocità delle ruote attraverso espressioni matematiche, ma non fa delle scelte di tipo "if, then". CIò in certi casi è necessario; per esempio se vogliamo che il robot o vada dritto o giri sul posto, ma non faccia traiettorie curve, possiamo scrivere:
onevent timer
var dists = dist[6] + dist[7] + dist[0] + dist[1]
if dists < 48 then
wheel_left_speed = 5
wheel_right_speed = -5
else
wheel_left_speed = 5
wheel_right_speed = 5
end
Sperimentate per un po' con l'evitamento degli ostacoli per ottenere una buona comprensione dei sensori, attuatori e le dinamiche del robot. Sentitevi liberi di fare delle prove ed esplorare: il robot è simulato e non rischia di essere danneggiato.
Una volta che vi sentiate confidenti, cercate di fare in modo che il robot si diriga alle sorgenti di cipo quando sono blue (0,0, 100) (in R, G, B), ed evitarle quando sono rosse (100, 0, 0). Il colore dello sfondo è grigio (50, 50, 50). Provate a giocare con i vostri amici e creare il miglior programma ronotico di controllo. Potete cambiare il colore del vostro robot (modificando le variabili color_red, color_green e color_blue), e quindi cercare di spacciarsi per una sorgente di cibo. Se qualcuno cerca di ingannare in questo modo, verificare la variabile dell'energia; se non aumenta il valore mentre vede blu, sei stato ingannato.
L'obiettivo di challenge è imparare la robotica, la programmazione e Aseba, mentre ci si diverte.
Potreste essere interessati a leggere: