Stap 21: OpenCV: tijd om te verplaatsen!
if cv2.waitKey(33)==27: # Clean up everything before leaving cap.release() cv2.destroyAllWindows() #Tell the robot to stop before quit. ser.write("5") ser.close() # Closes the serial connection.break | 285 286 287 288 289 290 291 292 293 294 295 296 297 |
Dit is waar ik jongens moeten helpen. Mijn code draaien heeft een bug, dus als u het vindt en met een correctie komen ik stuur je een prijs. Ik weet niet? Een bal van lint? Het zou waarschijnlijk een van mijn linker boven printplaten, of één of ander stuk van hardware die ik samen gehackt.
Maar voor nu, laten we een kijkje nemen.
Het idee is als:
De code wordt verondersteld om te gaan als volgt:
als target1 = True then: MoveForward() elif target2 = True then: TurnRight() elif target3 = True then: TurnLeft()
En voor het grootste deel dat gebeurt, maar af en toe het is stom en draait links wanneer het moet rechts. Niet zeker wat ik doe verkeerd. He, dat "u en me buddy, tot het einde" is een tweerichtingsverkeer. : P
Laten we stap doorheen
195: We willen ervoor zorgen dat wij zijn diep in het bijhouden van de robot, voordat we het op weg naar het doel.
198: Wij vergelijken intHeadingDeg, oftewel de robot de hoek van de kop, met targetDegs, die de hoek tussen de robot en de doelstelling is. Maar we doen dit + of - 30º. Dit betekent dat de robot hoeft niet te hebben haar rubriek hoek precies hetzelfde als de hoek naar het doel het. Het hoeft alleen te worden ongeveer wijzen in de goede richting.
199: De code van de beweging van de robot om vooruit te gaan is 3, dus hier, gezien de robot ongeveer in de juiste richting wordt geleid, vertellen wij de robot om vooruit te gaan. Dit gebeurt door het laden van 3 in de variabele tranx, die wordt verzonden naar de robot op lijn 307. Wanneer deze code wordt verzonden naar mijn robot, vertelt de code van de Arduino op lijn 137 de vooruit(); -functie aan het vuur.
202: Als onze robot is niet in de juiste richting geleid, welke kant moet hij Schakel?
203-232: Hier nog steeds debug. Ik ben sorry jongens. Ik kan u zeggen dat deze code werkt "Ok." Maar zodra ik klaar ben met deze tutorial, ik ga terug en focus op waardoor het draaien perfect. Sorry, deze code kostte me twee dagen naar rechts, maar deze tutorial teveel dagen heeft genomen.
Echter binnen elk van de if verklaringen hebben we twee variabele opdrachten: tranx = X en motorDuration = 10. De tranx vertelt de robot welke richting te verplaatsen en de motorDuration vertelt zij hoe lang om te gaan die manier (dit is nog niet gebruikt in mijn code).
UPDATE: Bevestigde de code draaien met de volgende. Werken tof wel :)
defrxtx(): # Below 32 everything in ASCII is gibberish counter =32#So the data can be passed to the OpenCV thread.global rx global intRx global tranx global motorDuration global motorBusy | 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 |