Arduino Powered autonoma fordon (8 / 12 steg)
Steg 8: Kompass navigering
GPS fungerar bra för att ge exakta lokaliseringsuppgifter, men som detta projekt fungerar är för liten för att tillhandahålla korrekt rubrik information (bilen kan utföra en 360 graders sväng inom en radie av ca 6 fötter, som är mindre än typiska noggrannheten i GPS).
Jag utnyttjade en digital magnetometer (som jag hänvisar till i koden som "kompassen" genom tekniskt det är inte en kompass). "Kompassen" ger en super snabb avläsning av aktuella rubriken fordon.
Med vårt nuvarande läge från GPS och våra nuvarande rubrik från kompassen, beräknar vi kursen till vår destination och vilken väg att vända (vänster/höger) för att fånga upp Kursens mål.
Observera att på grund av begränsningar i manöverorganet möjligheten av denna billiga RC bil, fanns det ingen proportionell styrning och inget sätt att använda mer sofistikerade PID logik. Istället gjorde jag en fattig mans tillvägagångssätt: Jag satte en konfigurerbar "rubriken tolerans" på +/-10 grader. Vilket innebär om våra önskad rubrik var 180 grader, någon kurs från 170 till 190 var acceptabelt att programmet (Obs: Jag spelade med detta och trimmad den... ca 8 grader tycktes fungera bäst). Detta förhindrade konstant styrning korrigeringar på kort sikt. På lång sikt, problemet var självkorrigerande: "kursen till waypoint" är inte statiskt, det ständigt omberäknas, så om våra faktiska rubrik är avstängd från rubriken mål, som vi fortsätter framåt en ny mål rubrik beräknas och kommer så småningom faller utanför styrning toleransen, vilket resulterar i en sväng mot målsökväg.
Magnetometer är mycket känslig för elektriska störningar, så ursprungligen jag monterat kompassen på en mini skärbräda så långt från DC motorer som möjligt för att undvika de största bovarna störningar. Tyvärr, var det fortfarande för mycket störningar, vilket leder till felaktiga och slumpmässiga kompass behandlingen. Jag slutade upp med att montera magnetometer på polack sitter ca 10" framför bilen; Det verkade fungera bra.