Hur till spår din Robot med OpenCV (21 / 28 steg)
Steg 21: OpenCV: dags att flytta!
192 | #/ / / Flytta Bot ///#Don't börja flytta tills saker och ting ready.if iFrame > = 160: tranx = 2 tranx = 4 tranx = 2 tranx = 4 |
Det är där jag behöver hjälp killar. Min roterande kod har en bugg, så om du hittar det och komma med en rättelse skickar jag dig ett pris. Jag vet inte? En lint boll? Det skulle förmodligen vara en av min vänstra över kretskort, eller någon del av maskinvaran jag hackat tillsammans.
Men för nu, låt oss ta en titt.
Idén är som:
Koden är tänkt för att gå enligt följande:
om target1 = True then: MoveForward() elif target2 = sant då: TurnRight() elif target3 = sant då: TurnLeft()
Och för det mesta som händer, men ibland det är stum och vänder vänster när det ska rätt. Inte säker vad jag gör fel. Hej, att "du och mig kompis, fram till slutet" är en tvåvägskommunikation. : P
Låt oss gå igenom det
195: Vi vill se till att vi är djupt försjunken i spårning robot innan vi börjar flytta den mot målet.
198: Vi jämför intHeadingDeg, som är robotens rubrik vinkel, med targetDegs, som är vinkeln mellan roboten och målet. Men vi gör detta + eller - 30º. Detta innebär att roboten inte har att ha dess rubrik vinkel exakt samma som vinkeln till målet det. Det behöver bara vara cirka pekar i rätt riktning.
199: Rörelsen koden för roboten att gå framåt är 3, så här, med tanke på roboten är ungefärligt på väg i rätt riktning, berättar vi roboten att gå framåt. Detta händer genom att läsa 3 i den variabla tranx, som överförs till roboten på linjen 307. När den här koden blir överförs till min robot, berättar Arduino koden på linje 137 funktionen Forward(); till brand.
202: Om vår robot inte är på väg i rätt riktning, sedan vilken väg ska han vända?
203-232: Fortfarande felsökning här. Jag är ledsen killar. Jag kan berätta här koden fungerar "Ok." Men när jag är klar med denna tutorial, jag ska gå tillbaka och fokusera på att göra det slå perfekt. Tyvärr, denna kod tog mig två dagar till höger, men denna handledning har tagit alltför många dagar.
Dock inom varje om uttalanden som vi har två varierande uppdrag: tranx = X och motorDuration = 10. Tranx berättar roboten vilken riktning för att flytta och motorDuration berättar det hur lång tid att flytta sätt (detta är ännu inte utnyttjades i min kod).
Uppdatering: fast roterande koden med följande. Fungerar bra nu :)
1 | # Inte börja flytta tills saker och ting ready.if iFrame > = 160: om shortestAngle > 180: |