Difference between revisions of "Talk:E2GoHome"

From AIRWiki
Jump to: navigation, search
Line 22: Line 22:
  
 
Lo scopo di questo comportamento è quello di determinare se la persona che è stata ingaggiata stia effettivamente seguendo il Robot.
 
Lo scopo di questo comportamento è quello di determinare se la persona che è stata ingaggiata stia effettivamente seguendo il Robot.
Il controllo viene attivato sulla base di due variabili: il tempo trascorso dall'ultimo controllo, e il numero di persone rilevate nel campo visivo(Si considera che un numero elevato di persone aumenti le probabilità che il robot perda il contatto con la persona).  
+
Il comportamento viene attivato sulla base di due variabili: il tempo trascorso dall'ultimo controllo, e il numero di persone rilevate nel campo visivo(Si considera che un numero elevato di persone aumenti le probabilità che il robot perda il contatto con la persona).  
  
 
Una possibile sequenza di movimenti potrebbe essere:
 
Una possibile sequenza di movimenti potrebbe essere:
 
   
 
   
* Completo stop delle ruote.  
+
* Ridurre la velocità fino al completo stop delle ruote.  
 
* Rotazione del collo fin quando non viene rilevata una persona.
 
* Rotazione del collo fin quando non viene rilevata una persona.
 
* Centrare il volto della persona e controllare se è la persona ingaggiata. (Controllare come viene effettuato il controllo su openni-kinect):
 
* Centrare il volto della persona e controllare se è la persona ingaggiata. (Controllare come viene effettuato il controllo su openni-kinect):
 
** Se la persona è la stessa il collo torna alla posizione iniziale e riprende la navigazione
 
** Se la persona è la stessa il collo torna alla posizione iniziale e riprende la navigazione
*** Se la distanza rilevata dalla persona supera una certa soglia si può utilizzare una variabile interna per forzare il comportamento[[E2GoHome#Wait|Wait]].
+
*** Se la distanza rilevata dalla persona supera una certa soglia si deve attivare il comportamento[[E2GoHome#Wait|Wait]].
 
** Se la persona non è la stessa torna al punto 3 finchè non viene effettuato un giro completo di 360°. Se La persona non viene rilevata allora deve essere attivato il comportamento [[E2GoHome#RecoverUser|RecoverUser]].
 
** Se la persona non è la stessa torna al punto 3 finchè non viene effettuato un giro completo di 360°. Se La persona non viene rilevata allora deve essere attivato il comportamento [[E2GoHome#RecoverUser|RecoverUser]].
  
Line 38: Line 38:
  
 
Questo comportamento ha l'obbiettivo di aspettare la persona nel caso la distanza dall'utente sia maggiore di una certa soglia.
 
Questo comportamento ha l'obbiettivo di aspettare la persona nel caso la distanza dall'utente sia maggiore di una certa soglia.
Può essere attivato mediante l'ausilio del sonar e dell'ultima posizione rilevata della persona, o nel caso in cui durante il comportamento [[E2GoHome#UserFollowing|UserFollowing]] sia stata rilevata una distanza eccessiva.
+
Può essere attivato mediante l'ausilio del sonar e dell'ultima posizione rilevata della persona, o nel caso in cui durante il comportamento [[E2GoHome#UserFollowing|UserFollowing]] sia stata rilevata una distanza eccessiva. Inoltre il robot sta seguendo una traiettoria che lo riporti a "casa".
  
Le azioni che il robot deve effettuare possono essere di 2 tipi. Nel caso il robot sia in movimento, la velocità può essere modificata in proporzione alla distanza dalla persona. Nel caso invece il robot sia già fermo a seguito del comportamento [[E2GoHome#UserFollowing|UserFollowing]] allora E-2? rimane fermo
+
Le azioni che il robot deve effettuare possono essere di 2 tipi. Nel caso il robot sia in movimento, la velocità può essere modificata proporzionalmente alla distanza dalla persona per ridurre quest'ultima. Nel caso invece il robot sia già fermo a seguito del comportamento [[E2GoHome#UserFollowing|UserFollowing]] allora E-2? rimane fermo
  
 
Da info, il sonar percepisce min e max distanze comprese tra [0-6]m
 
Da info, il sonar percepisce min e max distanze comprese tra [0-6]m
Line 46: Line 46:
 
===RecoverUser===
 
===RecoverUser===
  
Se non è stata rilevata la persona che si sta accompagnando durante l'ultimo controllo, viene attivato questo comportamento che ha lo scopo di cercare la persona a ritroso seguendo la traiettoria seguita fino a quel momento. E' quindi necessario che il robot tenga traccia degli spostamenti eseguiti per poter effettuare una ricerca. Inoltre è necessario che il robot si fermi in determinati punti via ruotando il collo per cercare la persona in più direzioni(180° ?).  
+
Se non è stata rilevata la persona che si sta accompagnando durante l'ultimo controllo e si sta seguendo una traiettoria che porta il robot a "casa", viene attivato questo comportamento che ha lo scopo di cercare la persona a ritroso seguendo la traiettoria seguita fino a quel momento. E' quindi necessario che il robot tenga traccia degli spostamenti eseguiti per poter effettuare una ricerca. Inoltre è necessario che il robot si fermi in determinati punti via ruotando il collo per cercare la persona in più direzioni(180° ?).
  
 
===AvoidObstacles===
 
===AvoidObstacles===

Revision as of 11:41, 16 May 2013

Comportamenti

  • GoHome: Se viene rilevata una persona interessata, il comportamento si occupa di riportare il robot a casa.
  • UserFollowing: Se il robot sta tornando verso casa, controlla che l'utente lo stia effettivamente seguendo. Il robot effettua l'azione sulla base del tempo dall'ultimo controllo e in base al numero di persone presenti nel campo visivo.
  • Wait: Se la distanza della persona è maggiore di X E-2 si ferma per aspettarla
  • RecoverUser: Se E-2 perde il contatto con la persona per un tempo X torna sui suoi passi per cercare la persona
  • AvoidObstacle: Comportamento che ha lo scopo di evitare gli ostacoli durante gli spostamenti del robot.
  • KeepUserConnection: Se l'utente sta seguendo il robot e c'è ancora molta distanza da "casa" il robot intrattiene l'utente per mantenere una connessione.

GoHome

Il robot fa affidamento su un altro modulo che valuta l'interesse della persona. Se viene mostrato interesse il robot calcola la traiettoria migliore per tornare a "casa" e inizia a seguire la traiettoria creata. Vedi Navigazione.

UserFollowing

Lo scopo di questo comportamento è quello di determinare se la persona che è stata ingaggiata stia effettivamente seguendo il Robot. Il comportamento viene attivato sulla base di due variabili: il tempo trascorso dall'ultimo controllo, e il numero di persone rilevate nel campo visivo(Si considera che un numero elevato di persone aumenti le probabilità che il robot perda il contatto con la persona).

Una possibile sequenza di movimenti potrebbe essere:

  • Ridurre la velocità fino al completo stop delle ruote.
  • Rotazione del collo fin quando non viene rilevata una persona.
  • Centrare il volto della persona e controllare se è la persona ingaggiata. (Controllare come viene effettuato il controllo su openni-kinect):
    • Se la persona è la stessa il collo torna alla posizione iniziale e riprende la navigazione
      • Se la distanza rilevata dalla persona supera una certa soglia si deve attivare il comportamentoWait.
    • Se la persona non è la stessa torna al punto 3 finchè non viene effettuato un giro completo di 360°. Se La persona non viene rilevata allora deve essere attivato il comportamento RecoverUser.

In aggiunta al controllo visivo può essere usato il sonar per ridurre le iterazioni di controllo. Se ad esempio l'ultimo controllo rileva che la persona è alla destra di E-2?, allora fintanto che viene rilevata una presenza alla destra del robot non è necessario effettuare il controllo, o comunque viene ridotto il numero di controlli.

Wait

Questo comportamento ha l'obbiettivo di aspettare la persona nel caso la distanza dall'utente sia maggiore di una certa soglia. Può essere attivato mediante l'ausilio del sonar e dell'ultima posizione rilevata della persona, o nel caso in cui durante il comportamento UserFollowing sia stata rilevata una distanza eccessiva. Inoltre il robot sta seguendo una traiettoria che lo riporti a "casa".

Le azioni che il robot deve effettuare possono essere di 2 tipi. Nel caso il robot sia in movimento, la velocità può essere modificata proporzionalmente alla distanza dalla persona per ridurre quest'ultima. Nel caso invece il robot sia già fermo a seguito del comportamento UserFollowing allora E-2? rimane fermo

Da info, il sonar percepisce min e max distanze comprese tra [0-6]m

RecoverUser

Se non è stata rilevata la persona che si sta accompagnando durante l'ultimo controllo e si sta seguendo una traiettoria che porta il robot a "casa", viene attivato questo comportamento che ha lo scopo di cercare la persona a ritroso seguendo la traiettoria seguita fino a quel momento. E' quindi necessario che il robot tenga traccia degli spostamenti eseguiti per poter effettuare una ricerca. Inoltre è necessario che il robot si fermi in determinati punti via ruotando il collo per cercare la persona in più direzioni(180° ?).

AvoidObstacles

Lo scopo di questo comportamento è quello di evitare gli ostacoli. Le variabili che ne determinano l'attivazione sono la distanza dagli oggetti e la loro posizione, mediante l'utilizzo del sonar. Ad es. Se è presente un ostacolo frontalmente e il robot sta proseguendo in quella direzione allora è necessario cambiare traiettoria. Si possono presentare 2 tipi di ostacoli, fissi o mobili. Nel caso di oggetti fissi, non ci sono particolari problemi, mentre nel secondo caso si potrebbe valutare la direzione del movimento dell'oggetto con l'ausilio del kinect per determinare la direzione dell'oggetto, mediante confronto tra frame.

KeepUserConnection

Se il robot sta seguendo una traiettoria che lo riporta a casa, e viene determinata la presenza della persona con l'ausilio del sonar e dell'ultima posizione rilevata, (ad es. destra, sinistra), E-2? inizia un interazione con la persona parlando di progetti o altro per tentare di mantenere alto l'interesse della persona che si sta accompagnando.

Navigazione