Paso 11: Crear una simulación
Soy una persona muy visual, por lo que una vez que necesitaba ver en tres dimensiones, recurrí al tratamiento para ayudarme a ver el brazo y ejecutar el procesa matemáticas para calcular las formas el brazo necesario asumir para pintar el lienzo. El simulador hace dos cosas: calcular las coordenadas de nuestro objetivo lona puntos y determinan qué ángulos son válidos para el brazo llegar a esos puntos (que son valores definidos, podemos enviar a los motores a asumir la forma deseada).
Definición de la lona
En realidad, el lienzo es un límite fijo en un plano. Necesitamos definir puntos fijos dentro de ese límite, por lo que podemos llegar a un total finito de puntos para pintar. Puesto que la imagen que reciba de la cámara es de 80 por 60 píxeles, vamos restricción nuestra área objetivo a 60 por 60 puntos espaciados 3 milímetros para un total de 3600 posibles dianas para la punta del pincel. Aunque hay muchos puntos, sólo tenemos que calcular 60 coordenadas para cada eje. ¿Por qué? Las "filas" en nuestro lienzo zona compartir el mismo X y Y valores, pero tienen diferentes valores de Z. Las "columnas" en nuestra área de lona todas tienen el mismo valor de Z, pero los diferentes valores XY. Con todo esto en mente, podemos determinar todos los puntos de posible objetivo con sólo 60 valores por coordenadas. Los detalles exactos de este son más claramente explican mi bosquejo de procesamiento.
Aprender a mover
Ahora que tenemos una matriz definida de lona puntos, ¿cómo podemos pasar el brazo de tal manera que llegue a esos puntos? Esto es donde el compromiso de elegir cinemática adelante nos deja con más trabajo que tendría IK. Ya que sabemos la localización del punto, realmente sólo necesita moverse exactamente el brazo hasta el punto, no precisamente. Esto se reduce a aceptar una pequeña cantidad de error en términos de Dónde está la punta de pincel y donde el objetivo real es. A través de todas las configuraciones posibles del brazo dado una resolución angular set, podemos comprobar al ver la distancia entre nuestro pincel y punto de mira es por debajo de cierto umbral, si es así, entonces estamos lo suficientemente cercanas para decir que el robot realmente está llegando a su meta. Aunque en última instancia, a mover el brazo en las mediciones de celdas, esto es demasiado fino una resolución para probar el brazo ya que el número de ecuaciones de punto flotante sería de los millones es decir, demasiado trabajo para el equipo. A fin de acelerar las cosas para configurar la simulación para iniciar en un enlodado grado de resolución (por ejemplo aumenta 10 grados), y aunque corrió todas las configuraciones posibles, prueba las distancias a cada paso. Ciclismo a pesar de que todos los puntos, si un partido se encuentra en la presente resolución, luego los valores para los ángulos motor se almacenan para ese punto de coordenadas (0 a 3599). Cada ángulo del motor está limitada en base a limitaciones físicas y razones estilísticas (fije que el brazo hace una forma cóncava con respecto a la lona). Si se encuentra ninguna coincidencia en la resolución angular determinada, Incrementaremos nuestra resolución (disminuir los pasos angulares) y luego recorrer los puntos otra vez, pero sólo prueba formas de puntos que ya no han sido marcados como que han encontrado en las resoluciones más bajas. Incluso con una resolución modesta y una distancia aceptable para destino de 1,4 milímetros, 3600 puntos probados tomar demasiado largo, por lo que se establecieron en una nueva resolución de 24 por 24 puntos centrado dentro de nuestra red de lona anterior, para un total de 576 formas de brazo deseado. Después de dejar la simulación correr durante una hora y media, completa y salidas a un archivo .txt que contiene el punto flotante valores para los ángulos todos formateados como un Arduino estilo dos matriz bidimensional. Este .txt se puede formatear ahora como un archivo de encabezado que puede incluirse en el dibujo de Galileo.