Paso 21: OpenCV: tiempo para mudarse!
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 |
Esto es donde necesito ayuda chicos. Mi código de giro tiene un bug, por lo que si parece y llegar a una corrección te mandaré un premio. ¿No sé? ¿Una bola de pelusa? Probablemente sería uno de mi izquierda sobre placas de circuito, o alguna pieza de hardware que hackeado.
Pero por ahora, vamos a echar un vistazo.
La idea es como:
El código se supone que va como sigue:
si target1 = True entonces: MoveForward() elif target2 = True entonces: TurnRight() elif target3 = True then: TurnLeft()
Y en su mayor parte que sucede, pero de vez en cuando se es tonto y gira a la izquierda cuando debe a la derecha. No estoy seguro de lo que estoy haciendo mal. Hey, que "tu y yo amigo, hasta el final" es una calle de doble sentido. : P
Vamos a paso a través de él
195: Queremos para asegurarse de que estamos en el robot de seguimiento antes de empezar a avanzar hacia el objetivo.
198: Comparar intHeadingDeg, que es ángulo de partida del robot, con targetDegs, que es el ángulo entre el robot y el destino. Pero hacer esto + o - 30 º. Esto significa que el robot no tiene que tienen su título ángulo exactamente el mismo como el ángulo de la meta. Sólo necesitará aproximadamente estar apuntando en la dirección correcta.
199: El código de movimiento al robot a avanzar es 3, así que aquí, dado el robot va aproximadamente en la dirección correcta, decimos al robot a avanzar. Esto sucede por la carga de 3 en la variable tranx, que se transmite al robot en la línea 307. Cuando este código es transmitido a mi robot, el código de Arduino en línea 137 dice la función Forward(); al fuego.
202: ¿Si nuestro robot no está dirigido en la dirección correcta, qué debe él girar?
203-232: De depuración todavía aquí. Yo soy lo siento chicos. Puedo decirle que este código funciona "Bien". Pero una vez que he terminado con este tutorial, voy volver y centrarnos haciéndolo girar perfecto. Lo sentimos, este código me llevó dos días a la derecha, pero este tutorial ha tomado muchos días.
Sin embargo, dentro de cada if declaraciones tenemos dos asignaciones de variables: tranx = X y motorDuration = 10. La tranx dice el robot que dirección para moverse y el motorDuration le dice cuánto mover esa forma (no se utiliza en mi código).
ACTUALIZACIÓN: Corregido el código del giro con el siguiente. Funciona muy bien ahora :)
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 |