12
Mestrado em Engenharia Mecânica 58|79 7. A linguagem robCOMM © 7.1. Fundamentos As linguagens de programação, tal como as linguagens humanas, são definidas através de um conjunto de regras morfológicas, que determinam a sua estrutura, e semânticas que determinam o significado. São utilizadas para facilitar a comunicação homem-máquina, a manipulação de dados e a explicitação de algoritmos. O objectivo deste trabalho passa, também, por desenvolver uma forma de controlar o comportamento do dispositivo robótico utilizado. Pretendeu-se criar uma linguagem cujo conjunto de regras pudesse definir comportamentos do equipamento, tornando possível o seu controlo a partir de dispositivos remotos. Assim, a implementação do robCOMM, enquanto servidor, implicou também o desenvolvimento de uma linguagem que implementasse os serviços concebidos e possibilitasse a interacção de dispositivos remotos. Foi, então, desenvolvida a robCOMM language, linguagem de implementação do servidor robCOMM [ Tabela 4 ]. MOVTOCPOS Movimento cartesiano MOVTOJPOS Movimento em junta GETCRCPOS Posição actual do TCP GETCRJPOS Configuração actual das juntas CHECKCPOS Verifica posições cartesianas CHECKJPOS Verifica configurações de junta GETDIRKIN Calcula cinemática directa GETREVKIN Calcula cinemática inversa GETREG Obtêm valores de registos SETREG Escreve em registos SETPATH Compõe um caminho MOVTHPTH Move ao longo de um caminho LISTTPP Obtêm a lista de programas TP RUNTPP Executa programas TP GETDIO Devolve o estado de I/O digitais GETAIO Devolve o estado de I/O analógicas SETDIO Actua I/O digitais SETAIO Actua I/O analógicas SETTOOLFRM Especifica uma Tool frame SETUSERFRM Especifica um User frame SETLSPEED Especifica velocidade linear MOTIONSTOP Para o movimento STOPSERV Termina o servidor Tabela 4 – Resumo de intruções robCOMM

7. A linguagem robCOMM - LAR Welcome - Roboticslars.mec.ua.pt/public/LAR Projects/Perception/2014... · facilitar a comunicação homem-máquina, a manipulação de dados ... dependendo

Embed Size (px)

Citation preview

Page 1: 7. A linguagem robCOMM - LAR Welcome - Roboticslars.mec.ua.pt/public/LAR Projects/Perception/2014... · facilitar a comunicação homem-máquina, a manipulação de dados ... dependendo

Mestrado em Engenharia Mecânica

58|79

7. A linguagem robCOMM©

7.1. Fundamentos

As linguagens de programação, tal como as linguagens humanas, são definidas através de um conjunto de regras morfológicas, que determinam a sua estrutura, e semânticas que determinam o significado. São utilizadas para facilitar a comunicação homem-máquina, a manipulação de dados e a explicitação de algoritmos.

O objectivo deste trabalho passa, também, por desenvolver uma forma de controlar o comportamento do dispositivo robótico utilizado. Pretendeu-se criar uma linguagem cujo conjunto de regras pudesse definir comportamentos do equipamento, tornando possível o seu controlo a partir de dispositivos remotos. Assim, a implementação do robCOMM, enquanto servidor, implicou também o desenvolvimento de uma linguagem que implementasse os serviços concebidos e possibilitasse a interacção de dispositivos remotos.

Foi, então, desenvolvida a robCOMM language, linguagem de implementação do servidor robCOMM [ Tabela 4 ].

MOVTOCPOS Movimento cartesiano MOVTOJPOS Movimento em junta GETCRCPOS Posição actual do TCP GETCRJPOS Configuração actual das juntas CHECKCPOS Verifica posições cartesianas CHECKJPOS Verifica configurações de junta GETDIRKIN Calcula cinemática directa GETREVKIN Calcula cinemática inversa GETREG Obtêm valores de registos SETREG Escreve em registos SETPATH Compõe um caminho MOVTHPTH Move ao longo de um caminho LISTTPP Obtêm a lista de programas TP RUNTPP Executa programas TP GETDIO Devolve o estado de I/O digitais GETAIO Devolve o estado de I/O analógicas SETDIO Actua I/O digitais SETAIO Actua I/O analógicas SETTOOLFRM Especifica uma Tool frame SETUSERFRM Especifica um User frame SETLSPEED Especifica velocidade linear MOTIONSTOP Para o movimento STOPSERV Termina o servidor

Tabela 4 – Resumo de intruções robCOMM

Page 2: 7. A linguagem robCOMM - LAR Welcome - Roboticslars.mec.ua.pt/public/LAR Projects/Perception/2014... · facilitar a comunicação homem-máquina, a manipulação de dados ... dependendo

Mestrado em Engenharia Mecânica

59|79

7.2. Instruções disponíveis

7.2.1. MOVTOCPOS e MOVTOJPOS

Sempre que se pensa num manipulador, pensa-se em movimento, fazendo do conjunto de instruções disponíveis, estas como as instruções mais emblemáticas deste trabalho.

Permitem instruir o servidor a efectuar movimentos de tipo variado

Figura 48 – Movimento em junta [6] Figura 49 – Movimento linear [6]

Figura 50 – Composição de ponto cartesiano [6]

Page 3: 7. A linguagem robCOMM - LAR Welcome - Roboticslars.mec.ua.pt/public/LAR Projects/Perception/2014... · facilitar a comunicação homem-máquina, a manipulação de dados ... dependendo

Mestrado em Engenharia Mecânica

60|79

Figura 51 – Configuração [6]

Figura 52 – Redundâncias [6]

Figura 53 – Composição de configuração de juntas [6]

Page 4: 7. A linguagem robCOMM - LAR Welcome - Roboticslars.mec.ua.pt/public/LAR Projects/Perception/2014... · facilitar a comunicação homem-máquina, a manipulação de dados ... dependendo

Mestrado em Engenharia Mecânica

61|79

Figura 54 – Diagrama de acelerações [6]

Page 5: 7. A linguagem robCOMM - LAR Welcome - Roboticslars.mec.ua.pt/public/LAR Projects/Perception/2014... · facilitar a comunicação homem-máquina, a manipulação de dados ... dependendo

Mestrado em Engenharia Mecânica

62|79

7.2.2. GETCRCPOS e GETCRJPOS Estes serviços permitem obter a posição actual do TCP do manipulador quer em coordenadas cartesianas, GETCRCPOS, quer em posição angulares de junta, GETCRJPOS.

Figura 55 – Ecran TP com posição de juntas [6] Figura 56 – Ecran TP com posição cartesiana [6]

Figura 57 – Posição actual do TCP [6]

De salientar que as coordenadas cartesianas são relativas ao sistema de coordenadas base do manipulador muito embora seja possível configurar o servidor de modo as coordenadas cartesianas sejam relativas a qualquer outro sistema de coordenadas.

� ��������� �� ������ �����

� �

� �

� ������� ��� ������ �����

� 5�6�7�. ����� �� �����%���� ����� �������

��������

��������� )2�)0�)1�)�

)��)��)��

�� ��������������

�� �&���� �

�������

Tabela 5 – �� ����#� ����$�%�� ������$�&�� � Tabela 6 – Parâmetros ���$�%�� ������$�&�� � Para estes comandos não existem argumentos de entrada e o dado de saída é uma cadeia de texto com os valores numéricos da posição actual.

Page 6: 7. A linguagem robCOMM - LAR Welcome - Roboticslars.mec.ua.pt/public/LAR Projects/Perception/2014... · facilitar a comunicação homem-máquina, a manipulação de dados ... dependendo

Mestrado em Engenharia Mecânica

63|79

7.2.3. CHECKCPOS e CHECKJPOS Este serviço implementa a validação de posições ou configurações de juntas sobre o volume de trabalho do manipulador.

Figura 58 – Exemplo de volume de trabalho de um manipulador industrial [6] Esta validação é efectuada sempre que se executa um comando de movimento individual, MOVTOCPOS ou MOVTOJPOS, mas não se o comando de movimento for um movimento composto através de um caminho, MOVTHPTH. Assim, dependendo do objectivo ou da necessidade de garantir que uma dada posição destino está dentro do volume de trabalho e é alcançável pelo manipulador, é importante executar este serviço fornecendo as coordenadas cartesianas e orientações da posição a testar, CHECKCPOS, ou a configuração de juntas, CHECKJPOS. De salientar que a configuração utilizada para o calculo é a configuração actual do manipulador, ou seja, dever-se-á mover previamente o robot para o quadrante da configuração sobre a qual se pretende testar a validade de uma dada posição cartesiana ou configuração de juntas.

� ��������� �� ������ �����

�5�6�7�

�� �����%���� �����

��!���/�%���*����

�. �����

8 �������������

�� �������!���/�%���

*����

� )2�)0�)1�)�)��)�� $��/������������

&���� ���!���/�%���

*����

� ������� ��� ������ �����

� $9:$;$�8 �� <��������� �������=�8 ;���> 8 ;�?�

� �������5�6�7�. ������

� �������)2�)0�)1�)�)��)��

� $9:$;)�8 �� <��������� �������=�8 ;���> 8 ;�?�

Tabela 7 – �� �������%'�%($�� ��%'�%()�� � Tabela 8 – ����� ���� �%'�%($�� ���%'�%()�� �

Page 7: 7. A linguagem robCOMM - LAR Welcome - Roboticslars.mec.ua.pt/public/LAR Projects/Perception/2014... · facilitar a comunicação homem-máquina, a manipulação de dados ... dependendo

Mestrado em Engenharia Mecânica

64|79

7.2.4. GETDIRKIN e GETREVKIN Estes serviços permitem obter as soluções de cinemática directa para uma dada configuração de juntas ou de cinemática inversa para uma dada posição cartesiana [ Figura 59 ].

Figura 59 – Cinemática directa e inversa [14]

� ��������� �� ������ �����

5�6�7�. �����

�� �������

�����������

%���� ������

*����

� )2�)0�)1�)�)��)�� $��/������������

&���� �

*����

� ������� ��� ������ �����

������� �)2�)0�)1�)�)���

������ �5�6�7�. ������

� @:���*;�> � �� �����%���� ����� �������

�� @:�*:<;�> � $��/������������

&���� �

�������

Tabela 9 – �� ����#� �������(����������!(��� Tabela 10 – ����� ���� �������(����������!(���

7.2.5. GETREG Este serviço permite obter os valores de registos. É possível obter os valores de registos de posição e de registos numéricos mediante a especificação do tipo e número do registo cujos dados se pretende obter.

� ��������� �� ������ �����

� ����,��� ������������ �����

�A����

*����

� �������+� > �� ����������� ���

���A����

*����

� ������� ��� ������ �����

��������,����������+�

� @:�*:@� <������������ ��� �������

Tabela 11 – �� ����������*��� Tabela 12 – ����� ���� ����*���

7.2.6. SETREG

Page 8: 7. A linguagem robCOMM - LAR Welcome - Roboticslars.mec.ua.pt/public/LAR Projects/Perception/2014... · facilitar a comunicação homem-máquina, a manipulação de dados ... dependendo

Mestrado em Engenharia Mecânica

65|79

Este serviço permite atribuir valores a registos. É possível atribuir valores a registos de posição e registos numéricos mediante a especificação do tipo e número do registo cujos dados se pretende obter.

� ��������� �� ������ �����

� ������ > �� ������������ ��

������+�%�����

�������

� ������� ��� ������ �����

� B������ B� ������������� � � �������

��������

��� ����������� *C>��� ����� � �������

Tabela 13 – �� ����#� ��� ������������ Tabela 14 – ����� ���� ��� ������������

7.2.7. SETPATH e MOVTHPTH Estes serviços permitem configurar um dado caminho, ie trajectória, através de um conjunto de nodos, ie pontos de passagem, e, posteriormente, mover o TCP do manipulador através desse mesmo caminho.

Figura 60 – Instrução movThPth Relativamente ao SETPATH, é possível especificar a posição cartesiana e respectivas orientações de cada nodo mas é de notar que a configuração utilizada ao longo do movimento é a configuração do manipulador na altura da execução do movimento. Quanto á instrução MOVTHPTH, é possível especificar a velocidade a utilizar para o movimento através do caminho. Este valor deve ser considerado em mm/s com o máximo de 2000 mm/s e é de notar que passa a ser utilizado como o valor de velocidade utilizado para quaisquer tipos de movimentos seguintes.

� ��������� �� ������ �����

�5�6�7�

�� �����%���� �����

��!���/�%���*����

�. �����

8 �������������

�� �������!���/�%���

*����

����� �5�6�7�. ������

���� �� ����'������

� ���'������ <���%������ *����

Page 9: 7. A linguagem robCOMM - LAR Welcome - Roboticslars.mec.ua.pt/public/LAR Projects/Perception/2014... · facilitar a comunicação homem-máquina, a manipulação de dados ... dependendo

Mestrado em Engenharia Mecânica

66|79

� ������� ��� ������ �����

� �:����9 � ����� � �������

� 4 8 <�9��9 � ����� �� �������

Tabela 15 – �� ������� �����'���� �!�'��'� Tabela 16 – ����� ���� � �����'���� �!�'��'�

7.2.8. LISTTPP e RUNTPP Estes serviços permitem obter uma lista dos programas TP disponíveis no sistema de ficheiros do controlador e executar um qualquer programa.

� ��������� �� ������ �����

� ������ > �� ������������ ��

������+�%�����

�������

� ������� ��� ������ �����

� B������ B� ������������� � � �������

��������

��� ����������� *C>��� ����� � �������

Tabela 17 – �� ����#� ��� ������������ Tabela 18 – ����� ���� ��� ������������

O comando LISTTP, devolve a lista de programas disponível e não dispõe de qualquer argumento de entrada. Quanto ao comando RUNTP, o único parâmetro de entrada é o nome do programa TP que se pretende executar. Devolverá o estado de execução do comando como OK se tiver sido possível executar o programa solicitado e como NOK se o programa não existir ou não estiver disponível. É possível configurar o servidor de modo a executar este comando de modo síncrono, em que a resposta só é devolvida após a completa execução do programa TP, ou de modo assíncrono, em que a resposta é devolvida logo depois do programa ter sido iniciado.

7.2.9. GETDIO e GETAIO Estes serviços permitem obter o estado ou o valor analógico de entradas digitais ou analógicas respectivamente.

� ��������� �� ������ �����

� ����� ��������8 � ��������

� ������� �� ������ �����

� @:���8 � : ������������� �������=�2�D�?�

�����������

����������� @:���8 � <���������E��%�� �������=�D�F �2DDDD�?�

Tabela 19 – �� ����#� �������������� ��� Tabela 20 ������� ���� �������������� ���

O único parâmetro de entrada é o identificador da entrada de que se pretende obter o respectivo estado ou valor enquanto que o dado de saída é um estado digital se se tratar de uma entrada digital mas, relativamente a entradas analógicas, esta funcionalidade utiliza uma razão proporcional com a resolução de 1/10000 para especificar o respectivo valor. A real amplitude do

Page 10: 7. A linguagem robCOMM - LAR Welcome - Roboticslars.mec.ua.pt/public/LAR Projects/Perception/2014... · facilitar a comunicação homem-máquina, a manipulação de dados ... dependendo

Mestrado em Engenharia Mecânica

67|79

valor dependerá da forma como a entrada em questão se encontre configurada mas pretendeu-se que esta questão não fosse tornada transparente ao utilizador remoto que não precisará de conhecer a configuração do hardware para poder obter um valor analógico num intervalo conhecido.

7.2.10. SETDIO e SETAIO Estes serviços permitem atribuir um estado ou um valor analógico a saídas digitais ou analógicas respectivamente.

� ��������� �� ������ �����

� ����� ��������8 � ��������

� ��G���� : ������������� 2���D�

� ��<��� <���������E��%�� ��������=D�F �2DDDD?�

� ������� �� ������ �����

� �:���8 � ����� � ������

��������������G����

��������������<���

� �:���8 � ����� � �������=8 ;�>8 ;?�

Tabela 21 – �� ����#� � �������� ��� ��� Tabela 22 – P���� ���� � �������� ��� ���

Os argumentos são o identificador da saída e o estado digital ou valor analógico a impor enquanto que o retorno é o estado de execução do comando. Conforme a configuração do servidor, retornará OK ou NOK consoante a operação tenha sido realizada com ou sem sucesso. De notar que se se tratar de uma saída analógica, esta funcionalidade utiliza uma razão proporcional com a resolução de 1/10000 para especificar o respectivo valor. A real amplitude do valor dependerá da forma como a saída em questão se encontre configurada mas pretendeu-se que esta questão não fosse tornada transparente ao utilizador remoto que não precisará de conhecer a configuração do hardware para poder impor um valor analógico num intervalo conhecido.

7.2.11. SETTOOLFRM Este serviço permite configurar o TCP do manipulador. Esta é uma funcionalidade essencial na operação de manipuladores industriais e um parâmetro de importância crucial pois é sobre este ponto que as cinemáticas são calculadas e todos os pontos referenciados.

Page 11: 7. A linguagem robCOMM - LAR Welcome - Roboticslars.mec.ua.pt/public/LAR Projects/Perception/2014... · facilitar a comunicação homem-máquina, a manipulação de dados ... dependendo

Mestrado em Engenharia Mecânica

68|79

Figura 61 – Instrução setToolFrm [6] Figura 62 – TCP - Tool Center Point [6]

� ��������� �� ������ �����

� ������� ������/����� ����� ��������

5�6�7�

8 // ���%���� �����

���/����� �����

������!�� ��������

�$�D�

*����

. �����

8 �������������

/����� �����

������!�� ��������

� ��� �����

%��������� �

3 �����

*����

� ������� �� ������ �����

�����������������5�6�7�. ������

� �:�H�8 8 B�*4 � ����� � �������

��������1���� ������� ��������� � ��������������� ���� � �������� ��� ���

7.2.12. SETSPEED Este serviço permite especificar a velocidade para movimentos simples, lineares ou de junta. O valor de velocidade especificado é valido até ser sobrescrito por este mesmo comando e será sempre atribuído um valor por defeito reduzido da inicialização da aplicação. Em movimentos de tipo linear, o valor deve ser considerado em mm/s com o máximo de 2000 mm/s enquanto que em movimento de junta, o valor de velocidade é calculado como uma razão proporcional com a resolução de 1/2000 entre o valor atribuído e o valor máximo atingível.

� ��������� �� ������ �����

� ����� <���%������ *����

� ������� �� ������ ���������� � �����

� �:���::�� ����� � �������

������������� ������� �������� ���������������� ���� � ��������

Page 12: 7. A linguagem robCOMM - LAR Welcome - Roboticslars.mec.ua.pt/public/LAR Projects/Perception/2014... · facilitar a comunicação homem-máquina, a manipulação de dados ... dependendo

Mestrado em Engenharia Mecânica

69|79

7.2.13. STOPSERV Este serviço permite terminar de forma unilateral e definitiva a aplicação servidora, não existindo qualquer possibilidade de recuperar sem que seja utilizada a consola de programação.

� ��������� �� ������ �����

�� �

� ������� �� ������ �������������

� ��8 ��:*<� ����� � �������

������������� ������� ������!� �������� ������� ���� � ������!�