O RoboDK é um simulador voltado para aplicações de robôs industriais. Isso significa que os programas de robôs podem ser criados, simulados e gerados off-line para um braço de robô e um controlador de robô específicos. Em outras palavras, o RoboDK é um software para programação off-line.
Para criar programas de robôs, é necessário selecionar um robô, carregar as ferramentas do robô e usar um ou mais recursos de CAD para criar programas, adicionando pontos ou usando ferramentas específicas (como a conversão de programas CNC em programas de robôs).
Uma extensa biblioteca de robôs industriais está disponível. Os robôs industriais são modelados no RoboDK da mesma forma que se comportam usando controladores específicos do fornecedor, incluindo limites de eixo, senso de movimento e vinculação de eixo.

Esta seção mostra como os programas do robô podem ser criados, simulados e gerados para um controlador de robô específico usando a interface gráfica do usuário (GUI) do RoboDK.
Programação off-line (ou programação fora da linha) significa programar robôs fora do ambiente de produção. A programação off-line elimina o tempo de inatividade da produção causado pela programação no chão de fábrica (programação usando a botoeira de ensino).
A simulação e a programação off-line permitem estudar vários cenários de uma célula de robô antes de configurar a célula de produção. Os erros comumente cometidos no projeto de uma célula de trabalho podem ser previstos a tempo.
A programação off-line é a melhor maneira de maximizar o retorno sobre o investimento em sistemas de robôs e requer ferramentas de simulação adequadas. O tempo para a adoção de novos programas pode ser reduzido de semanas para um único dia, permitindo a robotização da produção de curto prazo.
Uma simulação pode ser realizada adicionando uma sequência de instruções em um programa. Cada instrução representa um código específico para um controlador específico; no entanto, o RoboDK oferece uma interface gráfica do usuário (GUI) para criar facilmente programas de robôs, de forma genérica, sem a necessidade de escrever código.
O código específico de um controlador de robô será gerado automaticamente quando o programa for gerado. Para criar um novo programa vazio usando a interface gráfica do usuário do RoboDK:
1.Selecione Programa ➔
Como alternativa, selecione o botão correspondente na barra de ferramentas.
2.Selecione Ferramentas ➔ Renomear item... (F2) para renomear o programa
Essa ação criará um programa vazio e permitirá adicionar novas instruções clicando com o botão direito do mouse no programa ou selecionando uma instrução no menu Programa. A próxima seção Instruções do programa fornece mais informações sobre como adicionar instruções.

É possível adicionar novas instruções clicando com o botão direito do mouse em um programa ou no menu Programa, conforme mostrado na seção anterior.
Esta seção descreve as instruções suportadas pela interface gráfica do usuário do RoboDK para a programação off-line do robô.
Selecione Programa ➔
A menos que um ponto seja selecionado antes de adicionar a instrução, a instrução de movimento criará um novo ponto e eles serão vinculados. Se o ponto for movido, o movimento também será modificado.
Se essa for a primeira instrução adicionada ao programa, mais duas instruções serão adicionadas antes da instrução de movimento: uma seleção de frame de referência e uma seleção de frame de ferramenta. Isso garantirá que, quando o programa chegar à instrução de movimento, o robô esteja usando os mesmos frames de referência e de ferramenta usados para criar esse novo ponto.

Selecione Programa ➔
A menos que um ponto seja selecionado antes de adicionar a instrução, a instrução de movimento criará um novo ponto e eles serão vinculados. Se o ponto for movido, o movimento também será modificado.
Os movimentos joint e os movimentos lineares se comportam da mesma forma e podem ser facilmente alternados de um tipo para o outro.
Da mesma forma que a instrução Movimento Joint, se essa for a primeira instrução adicionada a um programa, mais duas instruções serão adicionadas antes da instrução de movimento: uma seleção de Frame de Referência e uma seleção de Frame de Ferramenta.
Ao contrário dos movimentos joint, os movimentos lineares são sensíveis às singularidades do robô e aos limites dos eixos. Por exemplo, os robôs de 6 eixos não podem atravessar uma singularidade após um movimento linear. A imagem a seguir mostra um exemplo que diz que o eixo 5 está muito próximo de uma singularidade (0 graus). [...] Em vez disso, considere um movimento Joint. Como mostrado na imagem a seguir.

Se um movimento linear não for estritamente necessário, clique com o botão direito do mouse na instrução de movimento e altere-a para Movimento Joint.

Como alternativa, o ponto, o TCP ou a posição do frame de referência devem ser modificados para evitar a singularidade.
Selecione Programa ➔
O frame de referência é uma variável também conhecida como Work Object (robôs ABB), UFRAME (robôs Fanuc), FRAME (para robôs Motoman) ou $BASE (para robôs KUKA).

Selecione Programa ➔
A estrutura de referência é uma variável também conhecida como ToolData (robôs ABB), UTOOL (robôs Fanuc), TOOL (para robôs Motoman) ou $TOOL (para robôs KUKA).

Selecione Programa ➔
A menos que dois pontos sejam selecionados antes de adicionar a instrução, a instrução de movimento não criará novos pontos. É necessário adicionar mais dois pontos separadamente e vinculá-los a partir da instrução de movimento circular, conforme mostrado na próxima imagem.

O caminho circular é um arco criado a partir do ponto em que o robô está localizado, passando pelo primeiro ponto circular (Ponto vinculado 1) e terminando no ponto final (Ponto vinculado 2).
Selecione Program ➔
Ative os casos correspondentes para impor uma velocidade e/ou aceleração específica no programa. A velocidade do robô é aplicada a partir do momento em que essa instrução é executada.
A velocidade do robô também pode ser alterada no menu de parâmetros do robô: Clique duas vezes no robô e, em seguida, selecione parâmetros.

Selecione Programa ➔

Selecione Programa➔

Selecione Programa ➔
Por padrão, essa é uma chamada de bloqueio para um programa específico. Entretanto, é possível alternar para Inserir Cógido para inserir um código específico no local dessa instrução. Isso pode ser útil para um aplicativo específico e um controlador específico.


Mudar de Chamada de Programa para Iniciar Tópico para provocar uma chamada sem bloqueio para um subprograma. Nesse caso, o controlador iniciará um novo thread. Essa opção só está disponível para determinados controladores e só funciona para operações específicas.
Selecione Programa ➔
O Nome de I/O pode ser um número ou um valor de texto se for uma variável nomeada. O Valor de I/O pode ser um número (0 para Falso e 1 para Verdadeiro) ou um valor de texto se for um estado nomeado.

Defina Aguardar por Entrada Digital para interromper a execução do programa até que uma entrada específica mude para um valor específico. Além disso, a maioria dos controladores de robôs suporta um atraso de tempo limite para gerar um erro se o tempo de espera exceder um valor específico. Marque a opção Timeout (ms) para ativar esse recurso.

A alteração das entradas e saídas digitais simuladas criará novas variáveis de estação. Para verificar o estado dessas variáveis, você pode clicar com o botão direito do mouse na estação e selecionar Parâmetros da estação. Também é possível ler ou modificar essas variáveis por meio da API.
Selecione Programa ➔
Sem uma instrução de arredondamento, o robô atingirá a velocidade de 0 no final de cada movimento (a menos que o próximo movimento seja tangente ao movimento anterior). Isso provocará altas acelerações e mudanças rápidas de velocidade para garantir a melhor precisão para cada movimento.
Esse valor também é conhecido como Blending radius (Universal Robots), ZoneData (robôs ABB), CNT/FINE (robôs Fanuc), Cornering (robôs Mecademic) ou $APO.CDIS/$APO.CPTP/Advance (robôs KUKA).

Alguns controladores exigem a definição desse valor como uma porcentagem; por exemplo, em um controlador Fanuc, se você quiser fornecer o comando CNT5, deve inserir o valor 5.
Você também pode especificar o parâmetro de arredondamento na janela Eventos de Programase estiver gerando seus programas para usinagem com robôs, impressão 3D ou seguimento de curva/ponto.

Os testes de precisão de trajetória do RoboDK podem permitir uma melhor compreensão dos efeitos de diferentes estratégias de arredondamento.
Selecione Programa ➔
Os eventos de simulação que usam a interface gráfica do usuário permitem que você:
●Anexar ou desanexar objetos às ferramentas do robô
●mostrar ou ocultar objetos ou ferramentas
●alterar a posição de objetos e frames de referência

Por exemplo, se o robô se mover para um local específico para pegar um objeto, podemos configurar um evento Anexar objeto para mover esse objeto junto com o robô. Então, depois que o robô tiver se movido e estiver pronto para deixar os objetos, podemos configurar um evento Desanexar objeto para deixar quaisquer objetos que a ferramenta tenha pegado.

O evento de simulação de anexar objeto permite anexar um objeto a uma ferramenta para simular uma ação de captura (pick).
Quando a ação de anexar um objeto a uma ferramenta é acionada, o objeto mais próximo da ferramenta selecionada será anexado. Uma tolerância padrão de 200 mm é usada para ignorar quaisquer objetos mais distantes do que essa distância.

Se você não especificar uma tolerância de distância, o valor padrão global será usado (você pode alterar o padrão global em FerramentasOpçõesDistância máxima para anexar um objeto a uma ferramenta de robô). Além disso, por padrão, a distância é verificada a partir do local do TCP até a referência do objeto. Como alternativa, é possível usar a distância entre o TCP e a geometria do objeto selecionando Verificar a menor distância entre o TCP e a forma do objeto.
O evento de simulação de desanexar objeto permite desanexar um objeto de uma ferramenta para outro objeto ou sistema de coordenadas.
Você deve escolher a ferramenta da qual os objetos devem ser desanexados e o sistema de coordenadas ou objeto ao qual os objetos devem ser anexados em seguida.
O evento de simulação de desanexar objeto permite simular uma operação de soltar/colocar em uma aplicação de pick and place (executando a ação oposta ao evento de anexar).
Por exemplo, se o robô se move até um local específico para pegar um objeto, podemos configurar um evento Anexar objeto para mover esse objeto junto com o robô. Depois que o robô tiver se movido e estiver pronto para soltar os objetos capturados, você pode acionar um evento Desanexar objeto para deixar quaisquer objetos que a ferramenta do robô tenha capturado.

O evento de mostrar objetos ou ferramentas permite tornar um ou mais objetos, ferramentas ou robôs visíveis dentro do ambiente de simulação.
Você pode selecionar um ou mais itens mantendo pressionada a tecla Ctrl.

O evento de ocultar objetos ou ferramentas permite tornar um ou mais objetos ou ferramentas invisíveis dentro da simulação.
Você pode selecionar um ou mais itens mantendo pressionada a tecla Ctrl.

A opção Definir posição do objeto (absoluta) permite atualizar a posição de cada objeto selecionado quando essa ação é acionada. A referência pai à qual cada item está anexado não é modificada. Somente a posição de cada objeto é atualizada.
Você pode selecionar um ou mais itens mantendo pressionada a tecla Ctrl. A posição atual do item é registrada quando você pressiona OK.

A opção Definir posição do objeto (relativa) permite atualizar a posição e o pai de cada objeto selecionado quando essa ação é acionada. A referência pai à qual cada item está anexado também é modificada, e a posição de cada objeto também é atualizada.
Você pode selecionar um ou mais itens mantendo pressionada a tecla Ctrl. A posição atual do item e do item pai ao qual ele está anexado é registrada quando você pressiona OK.
A diferença entre essa instrução e a instrução de posição absoluta é que essa instrução também atualiza o item pai ao qual cada objeto está anexado.

O evento de definir as juntas para a posição inicial (home) aciona o robô ou mecanismo selecionado para se mover imediatamente para suas posições de junta "home" definidas (o movimento não é simulado ao longo do tempo).
Isso é útil quando você precisa redefinir uma simulação e posicionar as esteiras na posição inicial.
Você pode selecionar um ou mais itens mantendo pressionada a tecla Ctrl.

O evento de mover esteira simula o deslocamento da esteira por uma distância específica, simulando o efeito do movimento ao longo do tempo.
Isso é útil quando você precisa simular um incremento específico para processar um objeto na esteira depois que ela se move por uma distância específica.

A instrução Criar objeto permite simular um alimentador (feeder) criando um novo objeto no ambiente de simulação.
Você deve selecionar o objeto modelo a ser criado e a referência pai à qual os itens devem ser anexados.
Essa ação é útil para criar novos objetos em uma esteira.

A instrução Excluir objetos remove objetos do ambiente de simulação.
Você deve selecionar um objeto modelo que deseja excluir. Qualquer objeto que corresponda ao nome e à geometria do mesmo objeto é excluído quando essa ação é acionada. O objeto modelo selecionado e quaisquer objetos bloqueados não são removidos.
Essa instrução ajuda a limpar uma simulação que foi concluída e na qual você tem muitos objetos que foram criados pela instrução Criar objeto.

A instrução Aguardar objeto espera que um objeto entre em contato com outro objeto para acionar uma ação específica.
Esse evento é útil quando você deseja acionar uma ação com base no contato entre objetos. É comum colocar essa instrução sozinha em um programa em execução em loop, que executa uma ação específica quando um objeto entra em contato com um sensor.

As ações que você pode executar quando um objeto entra em contato com o sensor são as seguintes:
1.Parar um robô: você deve selecionar o robô ou mecanismo que deve parar.
2.Excluir um objeto: o objeto deve ser removido da estação.
3.Aguardar apenas o objeto (por exemplo, você pode acionar um robô para pegar um objeto).
4.Mover um objeto para outro sistema de coordenadas. Por exemplo, para transferir um objeto de uma esteira para outra.

Clique duas vezes no programa 
Alternativamente:
1.Clique com o botão direito do mouse no programa
2.Selecione Executar
Uma barra de simulação aparecerá na parte inferior se o programa for clicado duas vezes. É possível deslizar a simulação para movê-la para frente ou para trás usando a barra de simulação.


Por padrão, o RoboDK simula 5 vezes mais rápido do que o tempo real. Isso significa que, se um programa levar 30 segundos para ser executado, ele será simulado em 30/5=6 segundos. Acelerar a simulação aumenta essa proporção para 100. As velocidades de simulação normal e rápida podem ser alteradas no menu Ferramentas ➔ Opções ➔Movimento.


Quando você tiver um programa pronto para ser exportado para o robô, poderá gerar o arquivo de programa exigido pelo controlador do robô.
Siga estas etapas para gerar um programa de robô:
1.Clique com o botão direito do mouse em um programa.
2.Selecione Gerar Programa de Robô (F6).
Em seguida, você verá o programa do robô exibido em um editor de texto.

Por padrão, os programas do robô são salvos na pasta Documentos (C:/Users/Your Name/Documentos/RoboDK/Programs/). Você pode alterar essa pasta selecionando Ferramentas ➔ Opções, selecione a guia Programa e clique em Definir ao lado da pasta Programas do robô.
Como alternativa, você também pode clicar com o botão direito do mouse em um programa e selecionar Gerar Programa de Robô em ... (Shift+F6) para gerar o programa especificando o local onde gostaria de salvá-lo.
É possível transferir um programa do computador diretamente para o robô. Essa opção geralmente envia o programa para o robô por meio do protocolo FTP ou de outros protocolos específicos, como o uso de mensagens de soquete ou conexão serial. Primeiro, é necessário inserir as configurações de IP e FTP do robô no menu de conexão do robô:
1.Clique com o botão direito do mouse em um robô.
2.Selecione Conectar ao robô... Uma janela será exibida à esquerda.
3.Digite o IP do robô.
4.Selecione Mais opções para inserir as configurações de FTP e as credenciais de FTP (se necessário)

Depois que as configurações de rede tiverem sido fornecidas e o robô estiver conectado corretamente, siga estas etapas para transferir o programa para o robô diretamente do RoboDK:
1.Clique com o botão direito do mouse em um programa.
2.Selecione Enviar programa para o robô (Ctrl+F6).
Uma janela pop-up exibirá o status (sucesso ou falha).
A conversão da simulação do RoboDK em um programa de robô específico é feita por um Pós-processador. O pós-processador define como os programas do robô devem ser gerados para um robô específico. Cada robô tem um pós-processador específico/default por padrão no RoboDK.
Para selecionar um pós-processador específico para um robô:
1.Clique com o botão direito do mouse em um robô ou programa.
2.Selecione Selecionar Pós-processador.
3.Escolha um pós-processador na lista.
4.Selecione OK.


A alteração foi aplicada e o programa pode ser gerado novamente para ver o resultado.
Os pós-processadores do RoboDK oferecem total flexibilidade para gerar programas de robôs para requisitos específicos. O RoboDK oferece pós-processadores para a maioria das marcas de robôs. Os pós-processadores podem ser facilmente criados ou modificados. Para obter mais informações sobre pós-processadores, consulte a seção dedicada aos pós-processadores.
Você pode personalizar a forma de gerar programas para o seu robô.
Siga estas etapas para ver as configurações de geração de programas:
1.Selecione Ferramentas ➔ Opções.
2.Selecione a guia Programa.

Esse menu permite que você personalize a geração de programas, como, por exemplo
1.Dividir os movimentos joint em etapas menores.
2.Dividir os movimentos lineares em etapas menores.
3.Converter movimentos circulares em pequenos movimentos lineares.
4.Dividir grandes programas de robôs em subprogramas.
5.Especifique o local padrão para salvar os programas do robô.
6.Especifique o editor de texto padrão para os programas do robô.
Você pode converter facilmente momentos circulares em pequenos movimentos lineares ao gerar programas para o seu robô. Isso é útil se o seu controlador não suportar movimentos em arco.
Siga estas etapas para gerar arcos como pequenos movimentos lineares:
1.Selecione Ferramentas ➔ Opções.
2.Selecione a guia Programa.
3.Selecione Evitar arcos.
4.Especifique o tamanho máximo do arco (mm), que define o tamanho dos movimentos lineares ao longo do arco.

Programas grandes de robôs podem exceder as limitações do controlador do robô. As limitações do controlador podem ser o tamanho do arquivo ou o número de linhas por programa. Por exemplo, um programa de robô feito para usinagem com robôs ou impressão 3D pode ter milhares de linhas de código.
Nesse caso, é melhor dividir um programa tão longo em subprogramas menores, incluindo um programa principal que execute os subprogramas.
Siga estas etapas para dividir automaticamente um programa longo:
1.Selecione Ferramentas ➔ Opções ➔ Programa.
2.Marque Limitar o número máximo de linhas por programa e forneça o número máximo desejado de linhas por programa a serem geradas por arquivo.

Quando você gera um programa que chama um subprograma, o RoboDK criará automaticamente uma instrução para chamar esse subprograma. Por outro lado, você pode personalizar a saída do programa para incorporar subprogramas diretamente no programa principal e evitar chamadas de programas.
Siga estas etapas para colocar subprogramas em linha e evitar chamar programas off-line:
1.Selecione Ferramentas ➔ Opções.
2.Selecione a guia Programa.
3.Marque a opção Subprogramas em linha.
A partir de agora, quando você gerar programas que contenham subprogramas, obterá o conteúdo desses subprogramas diretamente no primeiro programa/principal.

Os pós-processadores e os drivers de robôs usam métodos diferentes para movimentar os robôs. Enquanto um pós-processador permite que você gere programas off-line, um driver permite que você se comunique em tempo real com o robô.
Um pós-processador é usado para programação off-line e é responsável por converter o programa do robô RoboDK na linguagem de programação nativa do controlador do robô associado. Por exemplo, o pós-processador ABB gera arquivos .mod para controladores IRC5. O pós-processador também inclui o upload do programa para o controlador do robô, geralmente por FTP. As seguintes funcionalidades de um programa são tratadas pelo pós-processador:
1.Gerar programa do robô
2.Gerar o programa do robô como...
3.Enviar programa para o robô
4.Partida no robô (em combinação com o motorista)

Um driver de robô permite o controle remoto do seu robô a partir do seu computador usando o RoboDK. Isso permite que você execute as instruções do programa do RoboDK no controlador do robô em tempo real. Isso inclui a capacidade de chamar programas remotos no controlador. Por exemplo, o driver ABB envia comandos de movimento por meio de comunicação de soquete. As seguintes funcionalidades são tratadas pelo driver:
1.Ative a opção Executar no Robô e, em seguida, clique duas vezes para executar o programa no robô usando o driver.
2.Iniciar no Robô (em combinação com o pós-processador)
