O senhor pode usar os robôs industriais como uma máquina-ferramenta (CNC de 3 ou 5 eixos). Para alcançar os mesmos resultados das máquinas CNC, os robôs industriais requerem um software avançado de programação off-line, como o RoboDK, para converter programas de máquinas em programas de robôs. O RoboDK suporta a conversão de programas de máquinas como APT, código G, ACL, TAP ou NCI em simulações de robôs e programas de robôs.
A usinagem robótica inclui diferentes aplicações de remoção de material, como fresamento, perfuração, chanfro e rebarbação, normalmente realizadas por máquinas-ferramentas automatizadas (CNC).
As dimensões da peça são definidas por meio de um software de projeto assistido por computador (CAD) e, em seguida, traduzidas em programas de fabricação (como o código G) por um software de fabricação assistida por computador (CAM). Os programas de fabricação podem então ser convertidos em programas de robôs usando as ferramentas de programação off-line do RoboDK.
Eixos adicionais, como uma plataforma giratória e/ou um trilho linear, podem ser criados e sincronizados com o robô para ampliar o espaço de trabalho.
Esta seção mostra alguns exemplos que envolvem a usinagem de robôs. Alguns desses exemplos incluem o uso de um plug-in para mostrar como gerar o caminho da ferramenta CAM. No entanto, o senhor pode carregar qualquer caminho de ferramenta genérico de 5 eixos no RoboDK, como arquivos APT, NC ou código G.
Saiba mais sobre projetos de exemplo na seção de exemplos.
Visite a seção CAM Add-Ins da nossa documentação para obter mais exemplos de projetos de usinagem de robôs, como Mastercam, MecSoft/RhinoCAM, Inventor, FeatureCAM ou Fusion 360.
Este exemplo o ajudará a entender os fundamentos da usinagem de robôs no RoboDK e como converter um trabalho de usinagem de robôs de 3 eixos em uma simulação de usinagem de robôs e em um programa de robôs.
Saiba mais sobre esse exemplo de usinagem de robôs.
Este exemplo o ajudará a entender como o senhor pode configurar as definições de usinagem do robô no RoboDK e como converter um trabalho de usinagem de robô de 5 eixos em uma simulação de usinagem de robô e em um programa de robô.
Esse exemplo também o ajudará a criar movimentos seguros de aproximação/retração entre diferentes operações de trabalho de usinagem.
Saiba mais sobre esse exemplo.
Este exemplo mostra como usar um robô KUKA com 3 eixos externos adicionais para usinagem de robôs. A célula inclui um braço de robô de 6 eixos, um trilho de um eixo e uma mesa giratória de 2 eixos.
Mais informações estão disponíveis na seção de exemplos do RhinoCAM. A integração entre o RhinoCAM e o RoboDK carrega automaticamente os arquivos APT do RhinoCAM para o RoboDK.
Este exemplo mostra como usar um robô Yaskawa/Motoman em uma aplicação de corte a laser. O caminho da ferramenta de corte do robô é definido usando o RoboDK Add-in para o Autodesk Fusion.
Saiba mais sobre esse exemplo de corte a laser.
Este exemplo mostra como usar um robô Yaskawa/Motoman para usinagem de robôs e o Add-in para MastercamRoboDK . O RoboDK suporta o carregamento automático de arquivos NCI ou NC gerados pelo Mastercam.
Visite o :FCAMExample3x para obter mais informações.
Saiba mais sobre esse exemplo de usinagem de moldes.
Este exemplo mostra como usar um robô ABB para rebarbação. Esse exemplo inclui uma operação de coleta e colocação.
Saiba mais sobre esse exemplo de rebarbação de plástico.
Este exemplo mostra como usar um robô KUKA para polimento.
Saiba mais sobre esse exemplo de rebarbação de plástico.
Esta seção mostra como preparar um projeto simples do RoboDK, off-line, para a usinagem do robô . A célula de usinagem do robô deve ter pelo menos um robô, uma ferramenta (EOAT) e um quadro de referência (também conhecido como sistema de coordenadas, referência de peça ou datum). Para obter mais informações sobre a construção de uma nova estação no RoboDK, consulte a seção de introdução.
As etapas a seguir mostram como preparar uma configuração de usinagem de robô com um robô KUKA KR210 e um fuso de fresagem Teknomotor (esse exemplo está disponível na biblioteca como Sample-New-Project.rdk).
1-Selecione um robô:
a.Selecione File (Arquivo)➔
b.Use os filtros para encontrar seu robô por marca, carga útil, ...
Por exemplo, selecione o KUKA KR210 R2700 (210 kg de carga útil, 2,7 m de alcance).
c.Selecione Download e o robô deverá aparecer automaticamente na tela principal.
2-Selecione uma ferramenta:
a.Na mesma biblioteca on-line, selecione Reset para remover os filtros e filtrar por Type➔ Tool.
b.Selecione Download para carregar uma ferramenta Spindle, como o spindle ATC71-C-LN da Teknomotor.
c.O fuso será automaticamente acoplado ao robô.
d.Feche a janela Biblioteca on-line.
3-Add-in um quadro de referência:
a.Selecione a estrutura da base do robô (denominada KUKA KR210 R2700 Base).
b.Selecione Program➔
c.Clique duas vezes na referência e insira as coordenadas:
XYZABC = [1500,1000,500,0,0,0] (mm-deg)
d.Renomeie o novo quadro de referência para Milling Reference, digitando um novo nome ou selecionando F2.
4-Add-in o objeto que o senhor usará para a usinagem do robô (opcional):
a.Selecione File➔
b.Selecione um objeto chamado Object Chess Rook.sld na biblioteca do RoboDK:
C:/RoboDK/Library
c.Arraste e solte o objeto na Referência de Fresagem se ele não tiver sido colocado lá automaticamente (dentro da árvore de estações)
5-Clique duas vezes no robô para ver o painel do robô (opcional). O painel do robô exibe a ferramenta ativa e o quadro de referência ativo. Ao selecionar e atualizar a ferramenta e o quadro de referência, devemos ver as mesmas coordenadas visíveis no controlador do robô. Por padrão, o fuso do Teknomotor tem o TCP na raiz do suporte da ferramenta. A ferramenta (TCP) terá um determinado comprimento. Neste exemplo, atualizaremos o TCP para representar o comprimento do cortador da ferramenta:
a.Atualize a coordenada X da ferramenta (TCP) para 375 mm. O senhor verá o TCP se mover ao longo do eixo.
b.(opcional) o senhor também pode criar uma segunda ferramenta e definir um TCP relativo em relação à primeira, adicionando uma translação ao longo do eixo Z.
c.Feche a janela do painel do robô.
Siga estas etapas para configurar um novo projeto de usinagem de robô no RoboDK com um arquivo NC gerado por um software CAM (como o código G ou APT):
1.Selecione Utilities➔
Uma nova janela será exibida, como mostra a imagem.
2.Selecione Select NC file (Selecionar arquivo NC) na seção Path input (Entrada de caminho)
3.Forneça um arquivo NC, como o arquivo de usinagem APT a seguir:
C:/RoboDK/Library/Example-02.e-Robot Machining Chess Rook.apt
4.Renomeie o projeto de usinagem do robô para Machining Settings clicando com o botão direito do mouse no novo item da árvore e selecionando Rename (F2).
Selecione o robô, o quadro de referência e a ferramenta na seção superior esquerda do menu, conforme mostrado na imagem a seguir. O caminho da ferramenta deve ser exibido em verde com relação ao sistema de coordenadas correto.
O caminho da ferramenta de usinagem é exibido em verde e as normais do caminho são mostradas em vetores brancos. Desmarque Visible toolpath para ocultar o caminho da ferramenta.
O senhor pode selecionar Update para ver se consegue criar um programa de usinagem de robôs com as configurações padrão. Se o programa tiver sido gerado com sucesso, o senhor verá uma marca de seleção verde. O senhor pode então selecionar Simulate (Simular) ou clicar duas vezes no programa gerado para ver o início da simulação.
Se o senhor vir uma cruz vermelha com uma mensagem de aviso, isso significa que o programa de usinagem do robô não é viável. Talvez o senhor tenha que alterar algumas configurações, como a orientação da ferramenta, os parâmetros de otimização, o ponto inicial ou a localização da peça.
As seções a seguir fornecem mais informações sobre como personalizar as configurações de usinagem do robô.
A entrada de caminho permite que o senhor selecione diferentes maneiras de fornecer um caminho de ferramenta.
●Selecione o arquivo NC: Como um arquivo NC (obtido do software CAM), conforme descrito nesta seção.
●Selecione a curva: Como uma ou mais curvas, conforme descrito na seção Curve Follow Project.
É possível importar curvas como uma lista de coordenadas no RoboDK.
●Selecionar pontos: Um ou mais pontos, conforme descrito na seção Projeto de acompanhamento de pontos.
É possível importar pontos como uma lista de coordenadas no RoboDK.
●Objeto de impressão 3D: Como um objeto para impressão 3D. Um fatiador é usado para converter a geometria em um caminho de ferramenta
Selecione Program Events para exibir eventos especiais que precisam ser levados em conta ao gerar programas de robôs. Isso inclui acionar uma troca de ferramenta, definir a velocidade do fuso em RPM ou acionar programas específicos no início ou no fim do programa.
O senhor pode especificar um valor de arredondamento nos eventos do programa. Isso criará automaticamente uma instrução de arredondamento no início do programa e ajudará a tornar os programas de usinagem do robô mais suaves, evitando que o robô trema. Por exemplo, em um robô ABB, isso definirá o valor ZoneData em mm, em um robô Fanuc, isso definirá o valor CNT como uma porcentagem e, nos controladores Universal Robots, definirá o valor de mistura em mm.
Se o senhor estiver usando arquivos G-code ou NCI, os códigos M personalizados serão acionados por padrão como chamadas de função para M_RunCode (o código M é passado como parâmetro). O senhor pode remover as chamadas M personalizadas excluindo a chamada para M_RunCode.
Mova o cursor do mouse sobre o campo correspondente para obter mais informações sobre como personalizar cada seção.
Por exemplo, ao alterar a ferramenta, o senhor pode usar o valor %1 para representar a ID da ferramenta fornecida pelo software CAM. Se o senhor preferir acionar funções estáticas em vez de passar argumentos, pode substituir SetTool(%1) por SetTool%1. Ao usar a ferramenta 2, isso geraria SetTool2 em vez de SetTool(2).
O senhor pode personalizar os movimentos de aproximação e retração no canto superior direito do menu de usinagem do robô. Por padrão, o RoboDK adiciona movimentos de aproximação e retração de 100 mm ao longo da normal.
Selecione Add-in para adicionar um movimento de retração adicional. O caminho verde será atualizado de acordo. É possível selecionar entre mover-se ao longo de um eixo específico, fornecer coordenadas, ter uma aproximação em arco, etc. O senhor também pode combinar vários movimentos de aproximação/retração selecionando o botão Add.
Selecione Remove (Remover) para remover um movimento específico de aproximação ou retração.
O desvio do caminho para a ferramenta permite alterar a orientação preferencial da ferramenta ao longo do caminho da ferramenta. Essa opção é usada principalmente para girar a ferramenta em torno do eixo Z do TCP. Isso permite lidar com o 6º sexto grau de liberdade em torno do eixo da ferramenta. São oferecidas várias opções, dependendo do aplicativo e de seus requisitos. Por exemplo, o senhor pode optar por minimizar a orientação da ferramenta ou seguir a orientação da ferramenta ao longo do caminho.
Como um robô de 6 eixos é usado para seguir um programa de fabricação CNC de 3 ou 5 eixos, temos um grau adicional de liberdade a ser definido. Esse grau de liberdade geralmente é a rotação em torno do eixo Z do TCP. Esse grau de liberdade adicional é especialmente útil para evitar singularidades, limites de juntas, colisões ou problemas de acessibilidade.
Por padrão, o caminho para o deslocamento da ferramenta exibe uma transformação rotz(0). Isso significa que o senhor pode adicionar uma rotação adicional em torno do eixo Z da ferramenta. Esse valor pode ser modificado para estabelecer a orientação preferencial da ferramenta, modificando a orientação em torno do eixo Z do TCP ou em combinação com outros eixos. A orientação preferencial é a orientação que o robô tentará manter ao seguir o caminho da ferramenta.
Por padrão, o RoboDK usa o algoritmo de mudança mínima de orientação da ferramenta. Isso significa que a orientação da ferramenta é mantida o mais constante possível ao longo do percurso da ferramenta. Em geral, essa opção é adequada para operações de fresamento, pois minimiza os movimentos das juntas do robô. Como alternativa, outros algoritmos/métodos estão disponíveis, como a orientação da ferramenta seguindo o caminho da ferramenta (útil para aplicações de corte, em que a lâmina precisa permanecer tangente ao longo do caminho), ou o robô segurando o objeto se o caminho da ferramenta precisar ser seguido anexado à ferramenta do robô (por exemplo, para aplicações de distribuição ou polimento, também conhecidas como configurações de TCP remoto).
Dada uma orientação preferencial da ferramenta, o robô pode ter certa liberdade para girar em torno do eixo Z da ferramenta. Isso permite que o robô resolva o programa evitando as singularidades do robô, os limites das juntas e garantindo que todos os pontos sejam alcançáveis. Por padrão, o RoboDK permite que a ferramenta gire até +/-180 graus em torno do eixo TCP em incrementos de 20 graus.
Recomenda-se restringir essa rotação dependendo do aplicativo. Por exemplo, é possível inserir +/-90 graus para restringir a rotação permitida pela metade. Diminuir esse parâmetro também reduzirá o tempo de processamento para obter o programa.
Se alguns pontos do caminho não puderem ser alcançados, é recomendável girar o quadro de referência ou ser mais permissivo com a rotação Z da ferramenta. O quadro de referência pode ser movido mantendo-se pressionada a tecla Alt e arrastando o sistema de coordenadas para melhor ajustar a peça dentro do espaço de trabalho do robô.
O RoboDK seleciona automaticamente a configuração inicial que está mais próxima das articulações iniciais preferidas (Preferred joints for the start point). A partir desse ponto, o robô seguirá movimentos lineares, de modo que a configuração do robô não será alterada.
Um menu suspenso exibirá todas as soluções possíveis para iniciar o programa. Se necessário, selecione a configuração preferida da junta do robô e selecione Update para recalcular o programa.
Selecione Update para gerar o programa do robô de acordo com as configurações fornecidas. Uma marca de seleção verde será exibida se o programa puder ser criado com sucesso. Em seguida, o senhor verá um novo programa na estação chamado Machining (Usinagem).
Clique duas vezes no programa
Clique com o botão direito do mouse no programa e selecione Generate robot program (F6) para gerar o programa do robô. Para obter mais informações sobre a geração de programas, consulte a seção Programa.
O senhor pode definir o algoritmo para manter a orientação da ferramenta constante ao longo do caminho. Esse comportamento pode ser útil para aplicações de corte ou soldagem, por exemplo.
Selecione A orientação da ferramenta segue o caminho no menu suspenso Selecionar algoritmo para recalcular o caminho da ferramenta preferido. As outras configurações são as mesmas de um projeto de usinagem com uma orientação de ferramenta constante.
É possível programar um robô quando ele segura o objeto/caminho de ferramenta com a ferramenta com o robô enquanto a operação de fabricação ocorre. Isso é útil para aplicações de distribuição de cola ou polimento, por exemplo. Esse tipo de programação de robôs também é conhecido como TCP remoto.
Selecione o objeto Robot holds no menu suspenso Select algorithm (Selecionar algoritmo) para posicionar corretamente o caminho da ferramenta na referência TCP. As outras configurações são as mesmas de um projeto de usinagem com uma orientação constante da ferramenta.
Mais informações estão disponíveis na seção Add-in dopara o Autodesk Fusion RoboDK .
O senhor pode fazer com que um robô siga curvas no espaço 3D usando um Projeto de Seguimento de Curvas (CFP). As curvas no RoboDK podem ser selecionadas a partir das bordas do objeto ou importadas como uma lista de pontos em arquivos CSV. Um projeto de acompanhamento de curvas é útil para algumas operações de fabricação, como soldagem, rebarbação, polimento ou pintura por robôs, por exemplo.
Para trabalhar com um CFP, siga este procedimento:
1.Clique em Utilities➔ Curve Follow Project para abrir as configurações de acompanhamento de curva. Essas configurações são as mesmas de um projeto de usinagem de robô, a única diferença é que a entrada Path é predefinida como Select curve (Selecionar curva).
2.Clique no botão Select curve (Selecionar curva) para selecionar a(s) curva(s) na tela.
3.Selecione as curvas com um clique esquerdo do mouse. Selecionar a mesma curva duas vezes trocará a direção do movimento. Além disso, clicar com o botão direito do mouse em uma curva previamente selecionada permite trocar o sentido do movimento ou desmarcar uma curva previamente selecionada.
Clique com o botão direito do mouse na janela 3D e selecione Done (Concluído) ou pressione a tecla Esc para voltar ao menu de configurações. O caminho verde exibirá o movimento do robô em relação ao objeto.
4.O senhor pode selecionar Update para ver se consegue criar um programa de robô com as configurações padrão. Se o programa tiver sido gerado com sucesso, o senhor verá uma marca de seleção verde. O senhor pode então selecionar Simulate (Simular) ou clicar duas vezes no programa gerado para ver o início da simulação.
Opções adicionais estão disponíveis no canto superior direito das configurações, como a velocidade da ferramenta e se os movimentos de aproximação/retração devem ser aplicados a cada curva. As configurações padrão são mostradas na imagem a seguir:
O programa pode ser ainda mais personalizado e otimizado usando os mesmos recursos mostrados na seção de usinagem do robô.
As curvas podem ser extraídas das características dos objetos 3D importados para o RoboDK, selecionando Tools➔ Create Curves.
Um painel aparecerá no lado esquerdo da janela do RoboDK. O senhor poderá extrair curvas enquanto esse painel estiver ativo e a opção "Auto extract curves" estiver ativada.
O senhor pode passar o cursor sobre o objeto 3D do qual deseja extrair a curva. Uma linha azul fina e clara aparecerá para representar a curva. As setas brancas em diferentes pontos representam a normal da curva, ou seja, a direção da qual a ferramenta se aproximará.
É possível alterar a orientação das normais da curva (direção de aproximação) deslocando levemente o mouse na vertical ou na horizontal. O tamanho padrão do passo é de 15 graus e é controlado pela opção "Tilt step (deg)" (Passo de inclinação (graus)) no painel Create Curve (Criar curva).
Quando tiver identificado a curva correta, clique nela sem deslocar o mouse. Repita o procedimento até selecionar todas as curvas que deseja usar em um projeto Curve Follow.
O RoboDK inclui diferentes ferramentas para ajudar o senhor a modificar as curvas mesmo depois de extraí-las. Se quiser simplesmente modificar a normal, o senhor pode fazer isso acessando Tools➔ Modify Curves. Esse recurso permitirá que o senhor altere as normais de qualquer curva criada anteriormente.
O RoboDK pode criar ou obter curvas de uma variedade de fontes. A lista a seguir mostra exemplos de ferramentas que criarão uma curva que pode ser usada em um projeto Curve Follow:
a.Extrair características de um objeto 3D importado para o RoboDK.
b.Importar um CSV arquivo contendo a curva.
c.Importar uma curva usando um plug-in CAD/CAM.
d.Importar curvas de um arquivo SVG ou DXF.
e.Usando o aplicativo Surface Pattern Generator
f.Uso da API do RoboDK para integração com aplicativos externos.
g.Usando uma sonda manual, como o RoboDK TwinTrack
As curvas podem ser importadas no RoboDK a partir de um arquivo CSV ou de um arquivo de texto, selecionando Utilities➔ Import Curve. Um novo item aparecerá na estação mostrando a curva como um objeto.
O arquivo pode ser um arquivo de texto com as coordenadas 3D de cada ponto da curva. Opcionalmente, a orientação do eixo Z da ferramenta pode ser fornecida como um vetor i,j,k. Todas as coordenadas devem ser relativas ao sistema de coordenadas da peça.
Opcionalmente, as curvas existentes de um objeto podem ser exportadas como um arquivo CSV (clique com o botão direito do mouse em uma curva e, em seguida, selecione Exportar curva), modificadas e reimportadas no RoboDK.
Mais informações e exemplos sobre como personalizar a importação de arquivos CSV ou TXT como curvas ou pontos estão disponíveis na seção de exemplos da API do RoboDK.
O senhor pode simular facilmente um robô para seguir pontos com o RoboDK. Os pontos no RoboDK podem ser extraídos de objetos, curvas ou importados como uma lista de pontos em arquivos CSV. Essa opção é útil para aplicações de soldagem por pontos ou perfuração, por exemplo. O vídeo a seguir mostra um exemplo de configuração de um aplicativo de solda por pontos: assista ao vídeo.
Selecione Utilities➔ Point Follow Project para abrir as configurações de seguimento de ponto. Essas configurações são as mesmas de um projeto de usinagem de robô, a única diferença é que a entrada de caminho é predefinida como Select points (Selecionar pontos).
Selecione Select points (Selecionar pontos) para selecionar o(s) ponto(s) na tela.
Selecione os pontos com um clique esquerdo do mouse. Selecionar o mesmo ponto duas vezes mudará a direção da aproximação. Além disso, clicar com o botão direito do mouse em um ponto permite selecionar os pontos seguintes, selecionando Select next (Selecionar próximo).
Clique com o botão direito do mouse na tela e selecione Done (Concluído) ou pressione a tecla Esc para voltar ao menu de configurações. O caminho verde exibirá o movimento do robô em relação ao objeto.
Algumas opções adicionais estão disponíveis no canto superior direito das configurações, como a velocidade da ferramenta e a distância de aproximação. As configurações padrão são mostradas na próxima imagem:
Uma lista de pontos pode ser importada de um arquivo de texto ou de um arquivo CSV, selecionando Utilities➔ Import Points. Um novo item aparecerá na estação mostrando os pontos como um objeto.
O arquivo pode ser um arquivo de texto com as coordenadas 3D de cada ponto da curva. Opcionalmente, a orientação do eixo Z da ferramenta pode ser fornecida como um vetor i,j,k.
Opcionalmente, as curvas existentes de um objeto podem ser convertidas em pontos clicando com o botão direito do mouse em uma curva e, em seguida, selecionando Extract curve points (Extrair pontos de curva).
A manufatura aditiva (ou impressão 3D) é o processo de fabricação de objetos sólidos tridimensionais a partir de um arquivo digital. Os braços de robôs industriais podem ser usados como uma impressora 3D de 3 ou 5 eixos com o RoboDK. O vídeo a seguir mostra uma visão geral de como configurar a impressão 3D com o RoboDK off-line: assista ao vídeo.
A impressão 3D com robôs é possível de uma das seguintes maneiras:
●Converta diretamente programas de código G (arquivo NC) em programas de robô com o RoboDK, como mostrado no projeto Robot Machining. A taxa de fluxo de material (diretriz E da extrusora) é calculada corretamente para cada movimento e pode ser integrada ao programa gerado como um evento de programa. O código G é um tipo de arquivo NC suportado pelo RoboDK e também é um formato suportado por muitas impressoras 3D. A maioria dos softwares de fatiamento pode gerar o código G a partir de um arquivo STL.
●Selecione Utilities➔ 3D Print Project para abrir as configurações de impressão 3D.
Por padrão, o RoboDK traduz a diretiva E como uma chamada de programa para um programa chamado Extruder e passa o valor E como um parâmetro. Selecione Program Events para alterar esse comportamento.
O valor da extrusora (E) representa a quantidade de material que precisa ser extrudado antes de cada movimento. Esse valor pode ser usado para acionar a alimentação da extrusora do robô, levando em conta a velocidade do robô e a distância entre os pontos.
Como alternativa, é possível calcular a alimentação da extrusora usando um pós-processador e gerar o código apropriado de acordo. A seção a seguir apresenta um exemplo.
Esta seção mostra como modificar um pós-processador de robô para calcular a velocidade da extrusora antes de executar uma instrução de movimento para impressão 3D. Como alternativa, essas operações podem ser feitas no controlador do robô com a chamada do programa Extruder (comando padrão para acionar a extrusora).
Ao personalizar um pós-processador de robô, é possível facilitar a integração de uma extrusora para impressão 3D antes de enviar o programa para o robô. Para realizar essa tarefa, precisamos fazer alguns cálculos e gerar um código personalizado quando o programa for gerado no pós-processador do robô.
A primeira etapa é interceptar as chamadas da extrusora e ler os novos valores da extrusora (valores E) dentro da seção RunCode no pós-processador. A seção a seguir processa todas as chamadas de programa geradas para um programa:
def RunCode(self, code, is_function_call= False):
if is_function_call:
Se code.startswith("Extruder("):
# Interceptar o comando da extrusora.
# se a chamada do programa for Extruder(123.56)
# extraímos o número como uma string
# e convertê-lo em um número
self.PRINT_E_NEW= float(code[9:-1])
# Pular a geração da chamada do programa
retorno
E mais:
self.addline(code + "()")
E mais:
# Código do programa de saída
self.addline(code)
O valor da extrusora (length/E) é salvo como a variável PRINT_E_NEW no pós-processador do robô.
Precisamos acionar uma chamada de função chamada new_move a cada nova instrução de movimento linear. Podemos adicionar essa chamada no início do comando MoveL:
def MoveL(self, pose, joints, conf_RLF= None):
"""Add-in a linear movement"""
# Manuseio da impressão 3D Integração da extrusora
self.new_move(pose)
...
Também devemos adicionar as seguintes variáveis no cabeçalho do pós-processador para calcular os incrementos da extrusora:
# Parâmetros de configuração da extrusora de impressão 3D:
PRINT_E_AO= 5 # ID da saída analógica para comandar o fluxo da extrusora
PRINT_SPEED_2_SIGNAL= 0.10 # Proporção para converter velocidade/fluxo em um sinal de saída analógico
PRINT_FLOW_MAX_SIGNAL= 24 # Sinal máximo a ser fornecido à extrusora
PRINT_ACCEL_MMSS= -1 # Aceleração, -1 pressupõe velocidade constante se usarmos arredondamento/mistura
# Parâmetros internos de impressão 3D
PRINT_POSE_LAST= None # Última pose impressa
PRINT_E_LAST= 0 # Comprimento da última extrusora
PRINT_E_NEW= None # Novo comprimento da extrusora
PRINT_LAST_SIGNAL= None # Último sinal da extrusora
Por fim, precisamos definir um novo procedimento que gerará comandos apropriados de alimentação da extrusora de acordo com a distância entre os movimentos, a velocidade e a aceleração do robô. Isso pressupõe que o avanço da extrusora seja acionado por uma saída analógica específica ou por uma chamada de programa personalizada.
Precisamos adicionar o seguinte código antes da definição do programa def MoveL.
def calculate_time(self, distance, Vmax, Amax=-1):
"""Calcule o tempo para percorrer uma distância com a aceleração máxima e a velocidade máxima V"""
se Amax< 0:
# Assumir velocidade constante (o parâmetro de suavização/arredondamento apropriado deve ser definido)
Ttot= distância/Vmax
E mais:
# Suponha que aceleramos e desaceleramos
tacc= Vmax/Amax;
Xacc= 0,5*Amax*tacc*tacc;
Se a distância<= 2*Xacc:
# Vmax não é atingido
tacc= sqrt(distance/Amax)
Ttot= tacc*2
E mais:
# Vmax é atingido
Xvmax= distância - 2*Xacc
Tvmax= Xvmax/Vmax
Ttot= 2*tacc+ Tvmax
retornar Ttot
def new_move(self, new_pose):
"""Implementar a ação na extrusora para impressão 3D, se aplicável"""
se self.PRINT_E_NEW for None ou new_pose for None:
retorno
# Pule o primeiro movimento e lembre-se da pose
se self.PRINT_POSE_LAST for None:
self.PRINT_POSE_LAST= new_pose
retorno
# Calcular o aumento de material para o próximo movimento
add_material= self.PRINT_E_NEW - self.PRINT_E_LAST
self.PRINT_E_LAST= self.PRINT_E_NEW
# Calcular a velocidade do robô e o sinal da extrusora
extruder_signal= 0
se add_material> 0:
distance_mm= norm(subs3(self.PRINT_POSE_LAST.Pos(), new_pose.Pos()))
# Calcular o tempo de movimento em segundos
time_s= self.calculate_time(distance_mm, self.SPEED_MMS, self.PRINT_ACCEL_MMSS)
# Evite a divisão por 0
se time_s> 0:
# Isso pode parecer redundante, mas permite que o senhor leve em conta as acelerações e podemos aplicar pequenos ajustes de velocidade
speed_mms= distance_mm / time_s
# Calcular a velocidade da extrusora em RPM*Ratio (PRINT_SPEED_2_SIGNAL)
extruder_signal= speed_mms * self.PRINT_SPEED_2_SIGNAL
# Verifique se o sinal está dentro dos valores aceitos
extruder_signal= max(0,min(self.PRINT_FLOW_MAX_SIGNAL, extruder_signal))
# Atualizar a velocidade da extrusora quando necessário
se self.PRINT_LAST_SIGNAL for None ou abs(extruder_signal - self.PRINT_LAST_SIGNAL)> 1e-6:
self.PRINT_LAST_SIGNAL= extruder_signal
# Use a função setDO integrada para definir uma saída analógica
self.setDO(self.PRINT_E_AO, "%.3f" % extruder_signal)
# Como alternativa, provoque uma chamada de programa e cuide da integração com o controlador do robô
#self.addline('ExtruderSpeed(%.3f)' % extruder_signal)
# Lembre-se da última pose
self.PRINT_POSE_LAST= new_pose