Existen dos pasos especiales principales para la técnica utilizada por la mayoría de los controladores de impresora 3D de código abierto:
- Divida cada segmento de gcode lineal en muchos subsegmentos muy pequeños ("Segmentación")
- Use alguna trigonometría básica o el teorema de Pitágoras para vincular la posición del extrusor a la altura del carro para cada una de las tres torres ("Cinemática inversa") para encontrar la posición objetivo para cada segmento pequeño
La cinemática inversa es sorprendentemente simple. Se construye un triángulo virtual de 90 grados a partir de dos longitudes conocidas para resolver la tercera longitud desconocida:
- La longitud fija del brazo delta es la hipotenusa del triángulo.
- La distancia horizontal entre las juntas de la columna y las juntas del efector final se calcula a partir de las coordenadas XY de la boquilla y la posición fija de la columna, para determinar la longitud del lado inferior del triángulo
- La longitud del lado superior del triángulo se calcula a partir de los dos anteriores a través del teorema de Pitágoras.
- La longitud del lado superior se agrega a la altura Z de la boquilla para obtener la altura del carro necesaria
Creo que la mejor referencia de código abierto aquí es el documento de Rostock Kinematics de Steve Grave, rev3 disponible para descargar aquí: https://groups.google.com/d/msg/deltabot/V6ATBdT43eU/jEORG_l3dTEJ
Algunas fotos relevantes:
Estos cálculos de cinemática inversa se realizan para cada carro para obtener una posición objetivo de "espacio de carro", y esto se realiza para cada subsegmento de ruta.
Los resultados de estos pasos se pueden volver a insertar en las técnicas de interpolación de ruta lineal estándar para la impresora, en las que dispara los pasos en las proporciones necesarias y a las velocidades necesarias para producir el movimiento en línea recta deseado y el perfil de aceleración / velocidad. (Cómo se hace ESO es una pregunta diferente).
El efecto neto es que la impresora se moverá a través de una serie de pequeños movimientos de carro "lineales" (lineal que significa velocidad constante * con respecto al tiempo) que se aproximan colectivamente a los movimientos curvos (posición cuadrática con respecto al tiempo) necesarios para producir un movimiento efector final en línea recta.
* (La velocidad constante antes de la desaceleración de la aceleración se aplica para obedecer las restricciones dinámicas, de todos modos. De nuevo, ese es el tema de una pregunta diferente).
La segmentación es muy similar al proceso de usar un polígono para aproximar un círculo. Si las facetas son lo suficientemente pequeñas, el polígono es una buena aproximación. Las tasas de segmentación más altas producen menos errores de seguimiento de ruta. La principal diferencia conceptual entre dibujar arcos circulares y rutas de movimiento Delta es que el llamado "arco facetado" con segmentación Delta se construye en coordenadas altura-tiempo en lugar de las coordenadas X-vs-Y que usarías para dibujar un círculo en la pantalla de una computadora.
Este sistema se utiliza en gran parte porque el soporte para impresoras de estilo Delta se atornilló originalmente en planificadores de movimiento basados en GRBL que se escribieron exclusivamente para rutas de movimiento en línea recta en impresoras cartesianas. Fue una modificación relativamente mínima a la base de código existente en comparación con la implementación de la interpolación de ruta cuadrática completa.
Las técnicas han evolucionado a lo largo de los años. Y a menudo se utilizan enfoques alternativos: por ejemplo, la bifurcación dc42 de RepRapFirmware realiza el seguimiento exacto de la ruta sin segmentación, recalculando el tiempo adecuado para el siguiente paso después de cada paso . Esto es funcionalmente equivalente a aproximar un círculo con un recuento de facetas de polígono tan alto que cada píxel en la pantalla tiene su propia faceta . Por lo tanto, es exactamente tan preciso como lo permite la resolución de posicionamiento de los motores. La desventaja es que esta técnica libre de segmentación es bastante intensiva en el procesador, por lo que solo funciona en controladores relativamente rápidos, no en el antiguo Atmega AVR de 8 bits que alimenta a la mayoría de las impresoras de consumo / afición existentes en la actualidad.
Otras técnicas son posibles. La literatura académica de control de robótica paralela es un mundo completamente diferente de técnicas matemáticas y complejidad para producir algoritmos de control generalizados que funcionan para una amplia gama de mecanismos de robot. La versión que utilizamos en impresoras 3D de código abierto es bastante simple y específica de la aplicación en comparación.