Hur till spår din Robot med OpenCV (6 / 28 steg)
Steg 6: Dot Muncher: Compass kod
Nej. I stället jag vill fokusera på Justera kompass rubriken från ett värde respektive True North, vad vi vill ha den att tänka är Norden, i vårt fall, vad är toppen av skärmen. Denna process tar lite medverkan, eftersom siffrorna måste ställas in manuellt och med en liten guesstimation.
104 | om (iComp > = 30) { int adjHeading = 0; Serial.println(adjHeading); Delay(10); För seriella stabilitet. |
Så, jag fick min kompass modul ligger platt som möjligt och sedan skruvas det på min robot. Detta hjälper till att försäkra din få en full 360º och kommer att hålla dig från att behöva kalibrera om vad vi skulle vilja kalla norr varje gång kompass modulen blir utslagen på plats.
106-114: Dessa moduler och Arduino biblioteket är båda konstruerade för att ha 0 ° vara norr, men vi vill att våra egna norr, videospel norr. Vilket är precis vad linjerna 106-114 är på väg. Jag hittade 80º är vilket värde min robot läste när han var på väg mot toppen av skärmen. Jag var tvungen att hitta ett sätt att justera detta för att ge mig den behandlingen 0 °. Jag slutade med denna enkla kod att snurra kompassen.
Jag var tvungen att dela upp justeringarna i två sektioner för matten bo enkelt. Fodrar 109-111 handtag kartläggning 0-79º på 280-0 °, att göra roboten tycker 0-79º är 280-0 °. 112-114 linjer gör samma sak för 80-360º, konverteras till 0-279º.
Ärligt talat, har jag vissa rumsliga-retardation, så jag har svårt att tänka igenom detta, jag vet bara att det fungerar. Så, om du har problem jag ska svara på e-post och Skypes och vi kan arbeta igenom det tillsammans. Och, om du vill skicka en bättre förklaring, jag ska lägga upp det och se till att ge dig kredit.
Vet, min redneck lösning var att ändra orientering på kameran. Pfft. alltför lätt.
Går vidare,
116: Skickar robotens rubrik till PC.
117: iComp är en variabel som tillåter oss att avgöra när du ska börja skicka data till PC. Vi vill inte att skicka data till datorn innan den är färdig eller innan roboten är varmkörd, vi skulle ta itu med dålig avläsningar.
118: Detta är en försening som gör att vi inte bogging ner den seriella linjen, eftersom varje gång vi kallar Serial.println("whatever") både datorn och roboten att ta vissa bearbetningen förmåga att hantera den. Kort sagt, är det för att se till att roboten inte talar datorns öra off.