"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
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