Crea sito

Olimpiadi di Robotica

SoccerNNERDD

SoccerNNERDD (Soccer Neural Network Emulator Realtime-vision embeDDed system) è un progetto che nasce dall’idea di realizzare un sistema in cui robot possano svolgere uno sport in modo autonomo, emulando il comportamento umano. Il sistema è dotato di un monitoraggio real-time della plancia di gioco, effettuato tramite una telecamera posta sul “campo di gioco”. Ogni singolo PBot (Player-roBot) è un piccolo robot-car dotato di microcontrollore Arduino con connessione seriale a mini-computer Raspberry-Pi. Ogni PBot comunica via wifi con un computer centralizzato denominato MCGame (Master Computer Game). L’MCGame invia ai PBot un messaggio a intervalli di tempo regolari contenente la descrizione del campo di gioco (posizione dei singoli PBot in campo e posizione della palla). Tali informazioni vengono estratte dall’MCGame attraverso un sistema di visione artificiale realizzato in C++ su O.S. linux (utilizzando la libreria OpenCV). I singoli PBot, sulla base dello “stato di gioco”, effettuano in autonomo spostamenti sulla plancia, tramite algoritmi neurali. Infatti, su ogni PBot è in esecuzione una rete neurale di tipo feed-forward, addestrata tramite pattern-recognition, realizzata in C++ su O.S. linux e memorizzata nella SD-card del Raspberry-Pi.

Attività in preparazione alle olimpiadi di robotica

  1. Realizzazione del prototipo del PBot.

    1. Assemblaggio PBot con sensore ultrasonico e algoritmo di riconoscimento delle pareti della plancia di gioco (il PBot deve evitare la collisione)

    2. Raspberry: installazione del O.S. Raspbian (preparazione SD-Card, test del sistema con connessione HDMI a monitor);

    3. Raspberry: connessione SSH con computer Linux (wireless);

    4. Connessione PBot-Raspberry via seriale (realizzare un programma installato su Raspberry che consenta di inviare comandi da seriale al modulo Arduino presente sulla plancia del PBot);

    5. Connessione PBot-MCGame (realizzare un sistema server/client in C++);

    6. System-integration (integrando il codice realizzato negli step precedenti, dal computer MCGame inviare comandi al Raspberry attivo sul PBot, che via seriale invia i comandi all’Arduino presente sulla plancia del PBot, che attiva i motori ed effettua spostamenti)

    7. HTML5:

      • interfaccia grafica che rappresenti un pannello comandi per il pilotaggio wireless del PBot da lanciare in esecuzione sull’MCGame o su uno smartphone per testare la movimentazione wireless del PBot. [CONOSCENZE: HTML5; DIFFICOLTÀ: MEDIUM/HIGH];

      • interfaccia grafica che rappresenti il campo da gioco (soccer table) e i giocatori in campo (singoli PBot). Una telecamera connessa all’MCGame preleva un frame, ad intervalli costanti di tempo. Il frame viene convertito in immagine statica ed analizzato da un software di image-processing, che estrae la posizione dei singoli PBot sul campo (i PBot in gioco vengono evidenziati da una forma geometrica di un prefissato colore). Al termine, il software estrae un vettore contenente le coordinate dei vari PBot in campo. Partendo da tali coordinate l’interfaccia HTML crea la plancia e pone i PBot nelle posizioni indicate dal vettore. ESEMPIO v = [5, 8, 12, 5, 3, 5, 10, 15]:
        • posizione portiere squadra rossa: 5, 8 (x, y);
        • posizione giocatore squadra rossa: 12, 5;
        • posizione portiere squadra verde: 3, 5;
        • posizione giocatore squadra verde: 10, 15.

 

Connessione PBot-Raspberry via seriale

Dopo aver installato raspbian su Raspberry PI, copiare le cartelle contenente il codice sorgente e compilare. Si tratta di programmi in C++ che creano un server TCP o WebSockets. Appena un client invia richieste secondo la seguente sintassi:

command|u (PBot: on-move);

command|d (PBot: back-move);

command|l (PBot: left-move);

command|r (PBot: right-move);

command|s (PBot: stop);

command|k (PBot: kick);

il server invia su seriale l’ultimo carattere del comando, determinando lo spostamento del PBot. Chiaramente il Raspberry Pi deve essere montato sulla plancia del PBot e connesso, attraverso la porta USB al controller MCore (si tratta di un Arduino a tutti gli effetti). Attraverso un’opportuna programmazione in Arduino, va letto il carattere da seriale e movimentati i motori del PBot, in base al comando ricevuto. Per quanto riguarda il client, può trattarsi di:

  • client TCP su PC linux/windows;
  • client Android (un prototipo che emula un controller è già disponibile);
  • client HTML5  (un prototipo basilare è già disponibile).

Camera Detection Sotware – Capture Image

Il sistema prevede un monitoraggio delle fasi di gioco attraverso una serie di riprese tramite web-cam montata sulla plancia di gioco. Attualmente, il programma (compilato per architettura x86) utilizza le librerie OpenCV. Dopo aver connesso via USB la web-cam, lanciare da riga di comando, dal proprio PC:

./soccerNERDOpenCVCapture

In corrispondenza del file binario creare la cartella frames dove memorizzare i frames della web-cam (il software assegna ad ogni frame un file name incrementale numerico all’interno del folder frames). Successivamente, avviare il programma. In tal modo è possibile registrare le sessioni di gioco.

Powered by WordPress. Designed by WooThemes