"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
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
“Start wandering”: il <strong>robot</strong> esegue <strong>un</strong>a modalità <strong>di</strong> navigazione analoga a quella del<br />
programma “Caramelle” <strong>di</strong> cui si è parlato nel primo capitolo. Siccome questa modalità si<br />
può invocare sia all’inizio, sia durante i movimenti del <strong>robot</strong>, nella relativa CGI<br />
(“wander.cgi”) c’è prima <strong>un</strong> tentativo <strong>di</strong> invocazione del programma client “wander”, che<br />
invia il comando “client.requestOnce("wander");” al server (se è già attivo); in caso<br />
contrario viene invocata <strong>un</strong>a versione del programma “arnlServer” già pre<strong>di</strong>sposta per<br />
quella modalità (è stata infatti aggi<strong>un</strong>ta la riga <strong>di</strong> co<strong>di</strong>ce “modeWander.activate();” in<br />
fondo al programma). Dopo <strong>un</strong> certo numero <strong>di</strong> secon<strong>di</strong> (scan<strong>di</strong>ti con il comando “sleep”)<br />
la CGI fa rientrare il <strong>robot</strong> nella stazione <strong>di</strong> ricarica. Questo me<strong>di</strong>ante l’invocazione del<br />
client che invia l’input al server <strong>di</strong> raggi<strong>un</strong>gere il goal “0” e la successiva invocazione del<br />
programma che fa compiere al <strong>robot</strong> <strong>un</strong>a rotazione <strong>di</strong> 180 gra<strong>di</strong> e che fa entrare il <strong>robot</strong><br />
nella stazione in retromarcia. Nell’appen<strong>di</strong>ce 7 è riportata la CGI relativa a questa modalità.<br />
“Drive the <strong>robot</strong> using command buttons”: il <strong>robot</strong> può essere pilotato me<strong>di</strong>ante i pulsanti<br />
del riquadro <strong>di</strong> sfondo rosa. Viene invocato <strong>un</strong> programma server già pre<strong>di</strong>sposto alla<br />
modalità “drive” (grazie alla riga <strong>di</strong> co<strong>di</strong>ce aggi<strong>un</strong>ta “modeRatioDrive.activate();”).<br />
Dopo<strong>di</strong>chè è possibile schiacciare i pulsanti <strong>di</strong> guida: avanti, in<strong>di</strong>etro, destra, sinistra. Viene<br />
quin<strong>di</strong> invocato il programma client relativo, molto simile nella struttura agli altri, tranne<br />
che per le righe <strong>di</strong> co<strong>di</strong>ce <strong>di</strong> base che permettono la creazione <strong>di</strong> <strong>un</strong> pacchetto da inviare<br />
poi al server. Dentro <strong>di</strong> esso dovranno esserci le velocità desiderate da imprimere al<br />
movimento delle ruote. Nel caso del client per mandare avanti il <strong>robot</strong>, il co<strong>di</strong>ce necessario<br />
è il seguente:<br />
ArNetPacket packet;<br />
packet.doubleToBuf(100);<br />
packet.doubleToBuf(0);<br />
packet.doubleToBuf(50); // use half of the <strong>robot</strong>'s maximum.<br />
36