artigo a função tan2
DESCRIPTION
Artigo a Função Tan2TRANSCRIPT
![Page 1: Artigo a Função Tan2](https://reader036.vdocuments.pub/reader036/viewer/2022081814/5695d2321a28ab9b02997c25/html5/thumbnails/1.jpg)
HOME NOTÍCIAS ARTIGOS EDIÇÕES
DOWNLOADS APRESENTAÇÃO
CONTATO EDUCAÇÃO
Anuncie Assine Registre-se
Buscar... Buscar...
ENTRAR
27 /06/13 -
11:26
Tweetar 0 0
Artigos
A Função ATAN2
Em Robótica, bem como em outros sistemas dinâmicos, é comum o uso de funções trigonométricas nos
programas de controle para os cálculos de Cinemática. Mas uma função muito útil não costuma ser
abordada nos cursos técnicos e, até mesmo, nos cursos de Engenharia. Trata-se da função arco tangente de
dois argumentos, ou simplesmente, ATan2
Para mostrar a importância da função ATan2 será usado um simples modelo composto apenas por um elo e
uma junta rotativa, ou seja, com apenas um grau de liberdade (GDL ou DOF – Degree of Freedom). No
modelo que está apresentado na figura 1 nota-se que o braço, de comprimento R, gira em torno da origem
do sistema de coordenadas do plano XY . Os cálculos que serão apresentados posteriormente irão
considerar R=1.
F.1 – Modelo com 1 grau de liberdade rotativo.
O ponto de interesse é a extremidade livre que, dependendo do ângulo, alcança diferentes coordenadas (x ,
y ). O cálculo da cinemática direta é triv ial e está apresentado no quadro 1. Dado um valor de obtém-se os
respectivos valores de x e y . Deve-se considerar que neste caso as coordenadas que podem ser atingidas
estão restritas a uma circunferência.
![Page 2: Artigo a Função Tan2](https://reader036.vdocuments.pub/reader036/viewer/2022081814/5695d2321a28ab9b02997c25/html5/thumbnails/2.jpg)
Q.1 – Equações da cinemática direta.
Cinem ática Inversa
O objetivo da cinemática inversa é obter o ângulo a partir da coordenada (x , y ). Nesta situação é comum a
utilização da função arco tangente, ou simplesmente ATan, como mostra o quadro 2.
Q.2 – Equação da cinemática inversa.
Infelizmente, com esta equação, só serão obtidos resultados válidos quando x > 0, gerando valores de
na faixa de -90º à 90º (não incluindo estes valores). A figura 2 mostra dois exemplos onde o cálculo irá
falhar. O primeiro caso gera um erro matemático dev ido a ocorrência de uma div isão por zero. O segundo
caso mostra um ângulo de 115º que, quando calculado, apresenta-se como sendo -65º.
![Page 3: Artigo a Função Tan2](https://reader036.vdocuments.pub/reader036/viewer/2022081814/5695d2321a28ab9b02997c25/html5/thumbnails/3.jpg)
F.2 – Exemplos de falhas no uso de ATan.
Fica claro que só é possível obter o valor correto do ângulo se o braço estiver no primeiro, ou no quarto
quadrante do circulo trigonométrico, e não esteja totalmente na vertical.
Uma alternativa para contornar esta situação é utilizar, por exemplo, a função arco co-seno, como mostra
o quadro 3, onde . Essa abordagem foi utilizada no equacionamento exibido no artigo "Conhecendo o
Robô SCARA" (edição nº 13, página 36, quadro 2).
Q.3 – Equação da cinemática inversa alternativa.
Insistindo no Arco da T angente
![Page 4: Artigo a Função Tan2](https://reader036.vdocuments.pub/reader036/viewer/2022081814/5695d2321a28ab9b02997c25/html5/thumbnails/4.jpg)
Com uma análise um pouco mais atenta nos resultados de = ATan(y /x), nota-se que uma posição no
segundo quadrante será calculada como se estivesse no quarto quadrante. De forma similar, se a posição
real for no terceiro quadrante a resposta será apresentada como sendo de um ângulo do primeiro
quadrante. Sabendo-se destes fatos é possível elaborar um algoritmo que tome os dev idos cuidados em
cada caso. O quadro 4 apresenta uma sugestão de algoritmo.
Ler x e y
Se x>0 então Ângulo=ATan(y /x)
Se x=0 então
Caso y >0 faça Ângulo=90º
Caso y <0 faça Ângulo=-90º
Caso y =0 faça Ângulo=ERRO
Se x<0 então
Caso y ≥0 faça Ângulo=ATan(y /x)+180º
Caso y <0 faça Ângulo=ATan(y /x)-180º
Imprime Ângulo
Q.4 – Algoritmo para cinemática inversa.
O algoritmo apresentado pode ser adaptado em qualquer linguagem de programação. O ideal é criar uma
função que receba os valores de x e y e retorne o valor do ângulo. As linguagens costumam calcular
ângulos em radianos e isso obriga a transformar os valores do algoritmo que estão em graus (para
simplificar o entendimento). A tabela 1 compara os valores obtidos com as funções citadas e os valores
em vermelho indicam que o resultado obtido está errado.
T.1 – Comparação dos resultados das funções ATan e ATan2.
A Função AT AN2
Conhecendo as aplicações do algoritmo citado, alguns desenvolvedores já fornecem a função arco
tangente de dois argumentos em suas linguagens. Por exemplo, o Microsoft Excel possui a função ATan2
implementada, bem como versões de Pascal e C.
O uso da função fornecida pelo desenvolvedor da linguagem permite a execução dos cálculos de forma
mais rápida. No controle de máquinas são executados centenas ou milhares de cálculos por segundo e
qualquer economia de tempo sempre é muito bem v inda. Apenas a título de comparação pode-se imaginar
que a expressão do Quadro 3 é composta por 6 etapas de cálculo:
Cálculo 1 : quadrado de x x2;
Cálculo 2: quadrado de y y 2;
Cálculo 3: soma dos resultados do Cálculo 1 e Cálculo 2 x2+y 2;
Cálculo 4: raiz quadrada do resultado do Cálculo 3 ;
Cálculo 5: div isão de x pelo resultado do Cálculo 4 ;
Cálculo 6: arco co-seno do resultado do Cálculo 5 ;
Mas deve-se ter uma atenção especial ao usar a função ATan2, uma vez que parece não haver uma
padronização referente à ordem dos parâmetros. Pode-se encontrar ATan2(x, y ) e também ATan2(y , x) e
dessa forma a consulta ao help ou à documentação é imprescindível.
T ratam ento de Erro
Quando uma função pode gerar um erro, é extremamente importante que o programa tome as dev idas
precauções para que tal erro não venha a ocorrer. Resultados imprev isíveis podem ser obtidos no caso de
um programa de controle de um robô ou outro equipamento travar dev ido a um erro. Pode tratar-se
simplesmente do congelamento dos movimentos, sem maiores danos ou, numa hipótese menos favorável,
iniciar uma seqüência de movimentos desgovernados com alta probabilidade de danos materiais e
![Page 5: Artigo a Função Tan2](https://reader036.vdocuments.pub/reader036/viewer/2022081814/5695d2321a28ab9b02997c25/html5/thumbnails/5.jpg)
Copyright © 2013 Editora Saber Ltda. Todos os direitos reservados.
Rua Jacinto José de Araújo, 315 - Tatuapé - CEP: 03087-020 - São Paulo - SP - Brasil
Tel.: +55 11 2095-5333 - Horário de Expediente: 08:30 às 17:30 - (segunda à sexta-feira)
humanos.
No exemplo apresentado, com apenas um grau de liberdade, não há como ocorrer a situação de x=0 e y =0
simultaneamente. Nesse caso, é interessante verificar essa situação antes de passar os valores para a
função ATan2 e paralisar, com segurança, a execução do programa e do equipamento.
Mas há situações onde as prov idências a serem tomadas são outras. Observe o esquema apresentado pela
figura 3 que ilustra um robô com dois graus de liberdade. Este robô pode atingir o centro se os dois elos
do braço tiverem o mesmo comprimento (L1=L2). Pode, por exemplo, tratar-se de um equipamento para
ser fixado no teto do local de operação e que tem como área de trabalho um círculo completo, como
mostra a figura 4.
F.3 – Esquema de braço com dois graus de liberdade.
F.4 – Robô com braço de dois graus de liberdade.
Para um equipamento com esta configuração há infinitas soluções quando x=0 e y =0. Nesta posição, tem-
se o ângulo 2=180º e o ângulo 1=qualquer. Uma estratégia seria mover 1 para uma posição fixa pré-
determinada. Uma opção melhor é não mover 1 quando a meta for x=0 e y =0, ou seja, L1 ficará estático
enquanto apenas L2 executa seu movimento.
Conclusão
O objetivo deste artigo foi apresentar a função ATan2 que permite desenvolver programas de controle com
menos linhas de programação. As vantagens são a diminuição de erros lógicos e execução mais rápida do
programa. Para o caso da linguagem utilizada não possuir a função ATan2 o artigo mostra alternativas,
como a função ACos ou o uso do algoritmo apresentado, baseado na função ATan.
Referências
Craig, J. J., Introduction to Robotics – Mechanics & Control, Addison-Wesley Publishing Company , 1955.
Help do Microsoft Excel.
*Originalmente publicado na rev ista Mecatrônica Atual - Nº17 - Set/04