Existem duas etapas especiais principais para a técnica usada pela maioria dos controladores de impressora 3D de código aberto:
- Divida cada segmento gcode linear em vários subsegmentos muito pequenos ("Segmentação")
- Use alguma trigonometria básica ou o teorema de Pitágoras para vincular a posição da extrusora à altura do carro de cada uma das três torres ("cinemática inversa") para encontrar a posição de destino para cada pequeno segmento
A cinemática inversa é surpreendentemente simples. Um triângulo virtual de 90 graus é construído a partir de dois comprimentos conhecidos para resolver o terceiro comprimento desconhecido:
- O comprimento fixo do braço delta é a hipotenusa do triângulo
- A distância horizontal entre as juntas da coluna e as juntas efetoras é calculada a partir das coordenadas XY do bico e da posição fixa da coluna, para determinar o comprimento do lado inferior do triângulo
- O comprimento do lado superior do triângulo é calculado a partir dos dois anteriores através do teorema de Pitágoras
- O comprimento do lado superior é adicionado à altura do bico Z para obter a altura necessária do carro
Acho que a melhor referência de código aberto aqui é o documento Rostock Kinematics de Steve Grave, rev3, disponível para download aqui: https://groups.google.com/d/msg/deltabot/V6ATBdT43eU/jEORG_l3dTEJ
Algumas fotos relevantes:
Esses cálculos cinemáticos inversos são realizados para cada carro para obter uma posição de destino "espaço do carro", e isso é realizado para cada sub-segmento de caminho.
Os resultados dessas etapas podem ser reinseridos novamente nas técnicas de interpolação de caminho linear padrão para a impressora, nas quais são executadas etapas nas proporções necessárias e nas taxas necessárias para produzir o movimento linear desejado e o perfil de aceleração / velocidade desejado. (Como isso é feito é uma pergunta diferente.)
O efeito final é que a impressora se moverá através de uma série de pequenos movimentos "lineares" do carro (linear significa constante * velocidade em relação ao tempo) que aproximam coletivamente os movimentos curvados necessários (posição quadrática em relação ao tempo) necessários para produzir um movimento efetor final em linha reta.
* ( A velocidade constante antes da desaceleração da aceleração é aplicada a fim de obedecer às restrições da dinâmica. De novo, esse é o assunto de uma pergunta diferente.)
A segmentação é muito semelhante ao processo de usar um polígono para aproximar um círculo. Se as facetas forem pequenas o suficiente, o polígono é uma boa aproximação. Taxas de segmentação mais altas produzem menos erros de acompanhamento de caminho. A principal diferença conceitual entre desenhar arcos circulares e caminhos de movimento Delta é que o chamado "arco facetado" com Segmentação Delta é construído em coordenadas altura-tempo em vez das coordenadas X-Y-Y que você usaria para desenhar um círculo na tela do computador.
Esse sistema é usado em grande parte porque o suporte para impressoras do estilo Delta foi originalmente fixado em planejadores de movimento baseados em GRBL, que foram escritos exclusivamente para caminhos de movimento lineares em impressoras cartesianas. Foi uma modificação relativamente mínima na base de código existente em comparação à implementação da interpolação de caminho quadrático completo.
Técnicas evoluíram ao longo dos anos. E abordagens alternativas são frequentemente usadas: por exemplo, o fork do dc42 do RepRapFirmware executa o caminho exato sem segmentação, recalculando o tempo adequado para a próxima etapa após cada etapa . Isso é funcionalmente equivalente a aproximar um círculo com uma contagem de facetas de polígono tão alta que cada pixel na tela obtém sua própria faceta . Portanto, é exatamente tão preciso quanto a resolução de posicionamento dos motores permite. A desvantagem é que essa técnica sem segmentação é bastante intensiva em processador, portanto, funciona apenas em controladores relativamente rápidos, e não no AVR Atmega de 8 bits mais antigo, que hoje alimenta a maioria das impressoras amadores / amadores existentes.
Outras técnicas são possíveis. A literatura acadêmica de controle de robótica paralela é um mundo totalmente diferente de técnicas matemáticas e complexidade, a fim de produzir algoritmos de controle generalizados que funcionam para uma ampla gama de mecanismos de robôs. A versão que usamos em impressoras 3D de código aberto é bastante simples e específica de aplicativo em comparação.