Você 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 com robôs inclui diferentes aplicações de remoção de material, como fresagem, 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 manufatura 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 com robôs. Alguns desses exemplos incluem o uso de um plug-in para mostrar como gerar A trajetória da ferramenta CAM. No entanto, você 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 com robôs, como Mastercam, MecSoft/RhinoCAM, Inventor, FeatureCAM ou Fusion 360.
Este exemplo o ajudará a entender os fundamentos da Usinagem com robôs no RoboDK e como converter um trabalho de Usinagem com robôs de 3 eixos em uma simulação de Usinagem com robôs e em um programa de robôs.
Saiba mais sobre esse exemplo de Usinagem com robôs.
Este exemplo o ajudará a entender como você pode configurar as definições de usinagem com robô no RoboDK e como converter um trabalho de usinagem com robô de 5 eixos em uma simulação de usinagem com 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 com 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. A trajetória da ferramenta de corte do robô é definida 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 com robôs e o Add-in RoboDK para Mastercam. 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 pick and place.
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 com robô. A célula de usinagem com robô deve ter pelo menos um robô, uma ferramenta (EOAT) e um frame 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 com 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 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 Tipo ➔ Ferramenta.
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 frame de referência:
a.Selecione a estrutura da base do robô (denominada KUKA KR210 R2700 Base).
b.Selecione Programa ➔
c.Clique duas vezes na referência e insira as coordenadas:
XYZABC = [1500,1000,500,0,0,0] (mm-deg)
d.Renomeie o novo frame de referência para Milling Reference, digitando um novo nome ou selecionando F2.
4-Add-in o objeto que você usará para a usinagem com robô (opcional):
a.Selecione Arquivo ➔
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 frame de referência ativo. Ao selecionar e atualizar a ferramenta e o frame 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. Você verá o TCP se mover ao longo do eixo.
b.(opcional) Você 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 com robô no RoboDK com um arquivo NC gerado por um software CAM (como o código G ou APT):
1.Selecione Utilitários➔
Uma nova janela será exibida, como mostra a imagem.
2.Selecione Selecionar arquivo NC na seção Seleção de trajetória
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 com robô para Machining Settings clicando com o botão direito do mouse no novo item da árvore e selecionando Renomear (F2).
Selecione o robô, o frame de referência e a ferramenta na seção superior esquerda do menu, conforme mostrado na imagem a seguir. A trajetória da ferramenta deve ser exibida em verde com relação ao sistema de coordenadas correto.
A trajetória da ferramenta de usinagem é exibida em verde e as normais do caminho são mostradas em vetores brancos. Desmarque Trajetória visível para ocultar a trajetória da ferramenta.
você pode selecionar Atualizar para ver se consegue criar um programa de Usinagem com robôs com as configurações padrão. Se o programa tiver sido gerado com sucesso, você verá uma marca de seleção verde. Você pode então selecionar Simular ou clicar duas vezes no programa gerado para ver o início da simulação.
Se você vir uma cruz vermelha com uma mensagem de aviso, isso significa que o programa de usinagem com robô não é viável. Talvez você 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 com robô.
A Seleção de trajetória permite que você 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 Projeto de Seguimento de Curva.
É possível importar curvas como uma lista de coordenadas no RoboDK.
●Selecionar pontos: Um ou mais pontos, conforme descrito na seção Projeto de Seguimento 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 Eventos de Programa 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.
Você 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 com 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 curva em mm.
Se você estiver usando arquivos G-code ou NCI, os códigos M customizados serão acionados por padrão como chamadas de função para M_RunCode (o código M é passado como parâmetro). Você 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, você pode usar o valor %1 para representar a ID da ferramenta fornecida pelo software CAM. Se você 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).
Você pode personalizar os movimentos de aproximação e retração no canto superior direito do menu de usinagem com robô. Por padrão, o RoboDK adiciona movimentos de aproximação e retração de 100 mm ao longo da normal.
Selecione Adicionar 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. Você também pode combinar vários movimentos de aproximação/retração selecionando o botão Adicionar.
Selecione 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 da trajetória 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, você 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 você 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 A trajetória 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 fresagem, 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 a trajetória 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 a trajetória 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 frame de referência ou ser mais permissivo com a rotação Z da ferramenta. O frame 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 posições de eixo iniciais preferidas. 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 Atualizar para recalcular o programa.
Selecione Atualizar 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, você verá um novo programa na estação chamado Usinagem.
Clique duas vezes no programa
Clique com o botão direito do mouse no programa e selecione Gerar programa de robô (F6) para gerar o programa do robô. Para obter mais informações sobre a geração de programas, consulte a seção Programa.
Você 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 Orientação da ferramenta segue a trajetória no menu suspenso Selecionar algoritmo para recalcular a trajetória de ferramenta preferida. 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 manufatura 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 Robô segurando o objeto no menu suspenso Selecionar algoritmo para posicionar corretamente A trajetória 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 do RoboDK para o Autodesk Fusion.
Você 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 seguimento 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 Utilitários ➔ Projeto de Seguimento de Curva para abrir as configurações de seguimento de curva. Essas configurações são as mesmas de um projeto de usinagem com robô, a única diferença é que a Seleção de trajetória é predefinida como Selecionar curva.
2.Clique no botão 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 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.você pode selecionar Atualizar para ver se consegue criar um programa de robô com as configurações padrão. Se o programa tiver sido gerado com sucesso, você verá uma marca de seleção verde. Você pode então selecionar 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 com robô.
As curvas podem ser extraídas das características dos objetos 3D importados para o RoboDK, selecionando Ferramentas ➔ Criar curvas.
Um painel aparecerá no lado esquerdo da janela do RoboDK. Você poderá extrair curvas enquanto esse painel estiver ativo e a opção "Auto extract curves" estiver ativada.
Você 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 " Passo de inclinação (graus)" no painel 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 você a modificar as curvas mesmo depois de extraí-las. Se quiser simplesmente modificar a normal, você pode fazer isso acessando Ferramentas ➔ Modificar curvas. Esse recurso permitirá que Você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 Gerador de padrões de superfície
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 Utilitários➔ Importar Curva. 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.
Você 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 Utilitários➔ Projeto de Seguimento de Pontos para abrir as configurações de seguimento de ponto. Essas configurações são as mesmas de um projeto de usinagem com robô, a única diferença é que a Seleção de trajetória é predefinida como Selecionar pontos.
Selecione 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 Selecionar próximo.
Clique com o botão direito do mouse na tela e selecione 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 Utilitários➔ Importar pontos. 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 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 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 de usinagem com robôs. 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 é 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 Utilitários➔ Projeto de Impressão 3D 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 Eventos de programa 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 Você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