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.

collocato sulle pinze del <strong>robot</strong> . Il passo successivo consiste nel creare delle istanze delle action, <strong>di</strong><br />

cui si è parlato anche prima.<br />

ArActionStallRecover recoverAct;<br />

ArActionBumpers bumpAct;<br />

ArActionAvoidFront avoidFront;<br />

ArActionConstantVelocity constantVelocityAct("Constant Velocity", 1000);<br />

Ne viene creata <strong>un</strong>a per evitare gli ostacoli <strong>di</strong> fronte (“AvoidFront”) , per reagire a situazioni <strong>di</strong><br />

stallo delle ruote (“recoverAct”), per reagire a imput provenienti dai paraurti (“bumpAct”) e per la<br />

velocità (“ConstantVelocityAct”). Quest'ultima parte del programma è stata mo<strong>di</strong>ficata in quanto,<br />

dopo varie prove, si è visto che è sufficiente <strong>un</strong>a sola istanza della classe atta ad evitare gli ostacoli<br />

frontali. Per “AvoidFront” si potrebbero anche specificare la <strong>di</strong>stanza che deve avere l’ostacolo<br />

affinché possa essere considerato tale, la velocità che deve avere il <strong>robot</strong> durante l’azione e infine<br />

l’angolo <strong>di</strong> rotazione per evitare l’ostacolo. Non è però necessario fare queste operazione, in<br />

quanto i parametri che vengono caricati <strong>di</strong> default sono già f<strong>un</strong>zionanti. Si è poi constatato che<br />

anche l’istanza “avoidSide” della classe atta ad evitare gli ostacoli laterali risulta superflua. Dopo<br />

aver inizializzato la libreria Aria, viene creato poi il connettore al <strong>robot</strong>. A <strong>di</strong>fferenza <strong>di</strong> quanto<br />

accadeva nella versione precedente, nella quale si utilizzava la classe simpleConnector, ora verrà<br />

utilizzata <strong>un</strong>'altra classe chiamata <strong>robot</strong>Connector, in quanto compatibile con il connettore al <strong>laser</strong><br />

che viene creato subito dopo avere instanziato la classe ArLaserConnector. E’ necessario, infatti,<br />

passare <strong>un</strong> oggetto della classe ArRobotConnector e non della classe simpleConnector alla classe<br />

ArLaserConnector come parametro attuale al momento dell’instanziazione. Infatti è proprio la<br />

classe ArRobotConnector che si occupa dell’elaborazione dei parametri passati dalla linea <strong>di</strong><br />

comando. Le righe <strong>di</strong> co<strong>di</strong>ce successive permettono al <strong>robot</strong> <strong>di</strong> ricevere dati <strong>di</strong> rilevamento sia dai<br />

sonar, sia dai paraurti. Questo grazie alla creazione <strong>di</strong> <strong>un</strong> oggetto “ArSonarDevice” e <strong>di</strong> <strong>un</strong>o<br />

“ArBumpers” e invocando poi il metodo “addRangeDevice” passandogli come parametro il loro<br />

in<strong>di</strong>rizzo. Non serve aggi<strong>un</strong>gere il <strong>laser</strong> come device in quanto viene fatto in automatico<br />

<strong>di</strong>rettamente alla connessione. Da notare, anche, che è stata creata l’istanza della classe<br />

16

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

Saved successfully!

Ooh no, something went wrong!