12.06.2013 Views

"Applicazione di un laser range scanner a un robot mobile", 2010

"Applicazione di un laser range scanner a un robot mobile", 2010

"Applicazione di un laser range scanner a un robot mobile", 2010

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

packet.doubleToBuf(0);<br />

client.requestOnce("ratioDrive", &packet);<br />

“Interactive map”: viene aperta <strong>un</strong>a nuova pagina web in cui è raffigurata la mappa del<br />

laboratorio con evidenziati i vari Goals. Cliccando su <strong>un</strong>o <strong>di</strong> questi ultimi, il <strong>robot</strong> si<br />

posizionerà su <strong>di</strong> esso. Questo grazie all’invocazione <strong>di</strong> <strong>un</strong>a CGI che, a sua volta, invoca il<br />

programma client relativo a quel goal, come descritto precedentemente.<br />

“Stop the <strong>robot</strong>”: il <strong>robot</strong> si ferma. Questo avviene grazie all’invocazione da parte della<br />

relativa CGI (“stop.cgi”) <strong>di</strong> <strong>un</strong> programma client che contiene la riga <strong>di</strong> co<strong>di</strong>ce<br />

“client.requestOnce("stop");”, comando che permette al server <strong>di</strong> bloccare le ruote. Segue<br />

poi l’uccisione <strong>di</strong> eventuali altri programmi client attivi, me<strong>di</strong>ante il comando “killall -9”<br />

seguito dal nome del programma. Nell’appen<strong>di</strong>ce 8 è riportata la CGI relativa a questa<br />

modalità<br />

“Park the <strong>robot</strong>”: il <strong>robot</strong> si posiziona prima sul goal “0”, compie <strong>un</strong>a rotazione <strong>di</strong> 180 gra<strong>di</strong><br />

e poi rientra in stazione in retromarcia. Questo sempre grazie all’invocazione da parte della<br />

relativa CGI (“parkRobot.cgi”) del programma client per il goal “0” e del successivo<br />

programma per far compiere al <strong>robot</strong> <strong>un</strong>a rotazione <strong>di</strong> 180 gra<strong>di</strong> e per far rientrare il <strong>robot</strong><br />

in retromarcia.<br />

“Emergency stop”: il <strong>robot</strong> interrompe qual<strong>un</strong>que attività. Vengono <strong>di</strong>sattivati tutti i<br />

programmi in esecuzione, sia client, sia server, sempre me<strong>di</strong>ante il comando “killall -9”.<br />

Durante l’invocazione <strong>di</strong> tutte le CGI, quin<strong>di</strong>, la struttura ricorrente dei programmi invocati vede<br />

sempre <strong>un</strong> programma server (“arnlServer”) che ha il compito fondamentale <strong>di</strong> tenere registrati i<br />

dati <strong>di</strong> localizzazione (dove si trova il <strong>robot</strong> all’interno della stanza) e <strong>di</strong> inviare i coman<strong>di</strong> meccanici<br />

alle ruote motrici del <strong>robot</strong> me<strong>di</strong>ante la porta USB, e <strong>un</strong> programma client che ha invece il compito<br />

37

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!