progetti

Come costruire un robot - Evitare gli ostacoli

Arduino Robot evita ostacoli (Novembre 2018).

Anonim

Come costruire un robot - Evitare gli ostacoli


Quinta parte di una serie di articoli sulla costruzione di un robot in grado di seguire linee o muri ed evitare ostacoli!

articoli Correlati

Come costruire un robot:

Parte 1: Design e Schematic

Parte 2: Progettazione PCB

Parte 3: test dell'hardware

Parte 4: Line Follower

Parte 6: Robot a muro

Panoramica

Ho pensato che sarebbe stato semplice creare un robot che fosse facile da assemblare con un singolo saldatore ed era anche conveniente. Ho creato i seguenti requisiti per il mio robot:

  • Molti kit sono costosi, quindi deve essere relativamente economico.
  • Deve essere facilmente assemblato senza attrezzature speciali.
  • Deve essere facilmente programmabile senza un IDE o programmatore complicato.
  • Deve essere abbastanza potente per espandibilità.
  • Dovrebbe scappare da una semplice fonte di energia.
  • Dovrebbe essere in grado di seguire una linea o un muro ed evitare ostacoli.

In questo articolo, parlerò di come programmare il robot per evitare gli ostacoli.

Evitare gli ostacoli

L'approccio che prenderò è se vengono rilevati ostacoli nel percorso del robot, il robot eseguirà il backup e tenterà una nuova direzione. Ciò consente al robot di esplorare aree senza rimanere bloccati o danneggiarsi. Il sensore utilizzato in questo robot fornisce solo un'uscita binaria. In altre parole, qualcosa o è nel modo o non lo è. Il sensore ha anche un angolo di ricezione piuttosto ampio, pertanto è possibile rilevare anche oggetti leggermente spostati lateralmente. Ciò limita la complessità dell'algoritmo che può essere utilizzato. Se avessi un sensore che potrebbe effettivamente misurare la distanza di un oggetto in modo affidabile, potresti calcolare se hai abbastanza raggio di sterzata per toglierti di mezzo senza andare indietro.

L'algoritmo che ho deciso dirà al robot di eseguire il backup per 1 secondo se viene rilevato un ostacolo. Girerà quindi a sinistra o a destra nel tentativo di evitare l'ostacolo. Girando a sinistra oa destra, continua a controllare gli ostacoli sulla strada. Se rileva ostacoli, smetterà di girare e ripeterà il ciclo di inversione / virata fino a quando non sarà libero dall'ostacolo.

Programmazione

Lo schizzo seguente esegue la logica:

  1. Avviare il driver del robot e attendere 5 secondi. Questo ti dà il tempo di mettere il robot dove lo vuoi prima che inizi a muoversi.
  2. Andare avanti
  3. Se il sensore centrale è attivato, si inverte per 1 secondo.
  4. Scegli casualmente a sinistra oa destra.
  5. Girare per un massimo di 1 secondo finché il sensore centrale non è attivato.
  6. Se il sensore centrale è attivato, andare al punto 3.
  7. Se il sensore non è attivato, andare al passaggio 2.

 #include "robot.h" void setup() { Serial.begin(38400); Serial.println("Boot"); rbt_init(); delay(5000); rbt_move(FWD, 100); } uint16_t lleft, lmid, lright; boolean wleft, wmid, wright; uint16_t avoid_count=0; void loop() { rbt_sns(&lleft, &lmid, &lright, &wleft, &wmid, &wright); /*reverse if something is in the way and try to change direction*/ if(wmid) { rbt_move(REV, 100); delay(1000); /*choose a direction at random to avoid an obstacle*/ if(random(10)>5) { rbt_move(LEFT, 100); avoid_count=1000; while(avoid_count){ delay(1); rbt_sns(&lleft, &lmid, &lright, &wleft, &wmid, &wright); if(wmid) break; } } else { rbt_move(RIGHT, 100); avoid_count=1000; while(avoid_count){ avoid_count--; rbt_sns(&lleft, &lmid, &lright, &wleft, &wmid, &wright); if(wmid) break; } } rbt_move(FWD, 100); } } 

Evitare gli ostacoli!

Conclusione

In questo articolo ho mostrato come utilizzare un sensore per evitare l'ostacolo con un robot. Evitare l'ostacolo è importante nei veicoli autonomi per evitare di danneggiare l'ambiente o il robot stesso. Un'aggiunta importante a questo robot sarebbe i sensori nella parte posteriore per evitare gli ostacoli quando si è in retromarcia. Nel prossimo articolo, farò seguire il muro sfruttando il sensore laterale!

Articolo successivo in serie: Come costruire un robot a muro

Scarica il codice