Paso 13: Software: planificación del movimiento
Con nuestra tabla de valores angulares y nuestros datos de píxeles de la cámara, ahora es tiempo para pintar! ¿Cómo debe moverse aunque el brazo? A pesar de que los servos son relativamente rápidos, simplemente apoyándolos en la siguiente forma deseada produciría demasiado abrupto de un movimiento. Resolver esto requiere interpolación entre los puntos de dos destino a una velocidad fijada. Organicé la secuencia de movimiento en una serie de formas y acciones almacenadas en una matriz que me refiero a como la cola del movimiento. Aquí es cómo la cola se configura:
después de procesar la foto, cargar una secuencia de formas (juego de 4 ángulos) para mover el brazo en posición vertical
el camino para llegar a la paleta de carga
los caminos para volver a la posición vertical de la carga
ciclo a través de la matriz de la imagen
Verifique si un pixel es claro u oscuro
Si un píxel es oscuro entonces cargar la forma correspondiente (la matriz de salida del proceso de bosquejo) en la cola
carga de una forma igual a los ángulos, pero la inclinación del ángulo del codo atrás un poco (para que no arrastre el brazo entre los píxeles al interpolar)
Si treinta formas hayan sido cargados en la cola (15 Prensas del pincel al lienzo y 15 veces se incline hacia atrás)
cargar la secuencia de la ruta de acceso para recuperar más pintura y volver a una postura de espalda muy inclinada (interpolación de la posición vertical también arrastra aunque puntos)
una vez completo el ciclo, la secuencia de la ruta de acceso para "ir a dormir" de la carga en la taza de agua
Ejecución
Una vez que la cola está llena, tendremos que ejecutarlo. Esta fase consiste en recorrer la lista hasta llegar a un valor vacío y luego volviendo a pulsar un botón de comprobación. Cada paso mientras recorre la cola interpola entre las formas, que es tiene un movimiento más fluido.
Interpolación
Para alisar el movimiento entre las formas, a interpolar entre los dos ángulos en 1,0 pasos y tiempos variables por Junta, para que las juntas todas llegan en la forma deseada al mismo tiempo. Para ello, en primer lugar a calcular que el cambio entre los dos ángulos para cada empalme (deltaTheta por junta). Después de encontrar todos los valores de deltaTheta a ordenarlos para encontrar el más grande. Entonces el deltaTheta más grande se multiplican por la cantidad mínima de tiempo que el motor puede viajar un grado (este es el paso mínimo que instalaremos). Esto ajustará el tiempo total que el motor que tiene que moverse más, no se mueve de cualquier más rápido que puede viajar un grado por grado, mientras que los motores que tienen valores más bajos de la deltaTheta, se actualizará por un grado mucho menor, puesto que su recorrido total es tan pequeña. Calcular el tiempo basado en el cambio angular más grande también significa que el brazo se mueve no más lento que si se ha creado un tiempo fijo, ya que el cambio entre las formas puede ser muy pequeño. La plena aplicación de la función de interpolación es muy comentado en mi bosquejo de Galileo.