Autonoma vägg kramas Arduino fordon (4 / 7 steg)
Steg 4: Algoritmen:: del 2
Möter en mur är den svåraste uppgiften i programmet.
Lösningen... svänga höger 90 grader att fortsätta. Tja, helst 90 grader, men det är högst osannolikt att du står inför direkt huvud på väggen. Chanserna är du står inför i en liten vinkel. Så hur du pivoterar rätt mängd?
Om du hade hjulet kodare eller bättre fortfarande en inbyggd kompass, kan du mäta vinkeln. Men detta projekt är utformad att fungera med bara angivna komponenter. Så måste problemet lösas med bara två sensorer, som inte är 100% tillförlitliga, särskilt nära ett objekt.
En lösning kan vara att "tid" hur länge ditt fordon tar att göra en 90 graders pivot, och använda den. Men när batterierna blir svagare, kommer att din hastighet sönderfalla, öka den tid som krävs för att utföra den önskade pivot. Jag hittade en tidsinställd lösning att inte vara tillräckligt exakta.
Jag experimenterat med ett antal algoritmer som hade olika nivåer av framgång och komplexitet. Här är den som jag så småningom bosatte sig på... lätt att förstå, och tillräckligt tillförlitlig för att arbeta konsekvent.
I grund och botten fordonet stannar, läser på flera vinklar för högsta reflekterade ljuset från IR-sensor, gör en liten pivot och upprepar processen tills den högsta behandlingen är under en förutbestämd gräns.
Lösningen är "lätt", som i "ta det lugnt!". Du kommer att notera i videon att jag avsiktligt har kodat den för att "ta sin tid". Algoritmen felar på sidan av försiktighet. Du kan spela med det att påskynda det om du vill. Kom bara ihåg, olyckor ökar med hastigheten :) När jag skriver detta, har min lilla Rover gått runt och runt en snäv förpackade i kursen i 60 minuter utan min inblandning, bevisar konsekvens av algoritmen.
Om man tittar på de avlästa värdena på TM1638, det vänstra värdet representerar mot IR-sensorn (reflekterade ljus läsning), medan det högra värdet kommer från front monterad ultraljud.