Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistema de Controle de Braço Mecânico Automatizado - João Paulo de Lima Sa
Sistema de Controle de Braço Mecânico Automatizado - João Paulo de Lima Sa
BELÉM-PA
2008
INSTITUTO DE ESTUDOS SUPERIORES DA AMAZÔNIA
CURSO DE ENGENHARIA DA COMPUTAÇÃO
DATA: ____/____/____
CONCEITO: ______
______________________________________,
Prof. Msc. Márcio Nazareno de Araújo Moscoso
Orientador – IESAM
__________________________________________________
Prof.
Avaliador - IESAM
BELÉM-PA
2008
AGRADECIMENTO
Agradeço à Deus por ter me iluminado e dado força para a realização e conclusão
deste trabalho.
Sou muito grato ao meu orientador Prof. Dr. Márcio Nazareno de Araújo Moscoso
pela orientação, esforço, apoio, incentivo e principalmente paciência.
Ao Prof. Dr Dionne Cavalcante Monteiro que foi o nosso primeiro orientador, que nos
ajudo a consolidar todas as idéias de nosso projeto.
Ao Aldo José de Oliveira Barbosa, que me deu bastante apoio nos momentos inicias
deste trabalho pelas discussões e dicas sobre o trabalho.
E à todas as pessoas que contribuíram direta ou indiretamente para a realização deste
trabalho.
RESUMO
This project consists in building a robotic arm and a control software that is intended
to help in hazardous work. The system consists of an articulated robotic arm with three de-
grees of freedom, rotary joints, drive straight by dc motors with reduction, a clamshell with
two fingers and a program in Java, where the user will control the arm. The approach used in
designing the software will build on the concept of kinematic motion.
1 INTRODUÇÃO
1.1 OBJETIVOS
Objetivo geral
Utilizar um software de computador para controlar um manipulador robótico
articulado, 3 graus de liberdade, com juntas do tipo rotacional e no seu órgão terminal será
utilizado uma garra para que possa pegar pequenos objetos.
Objetivos específicos
• Construir o braço robótico utilizando peças em acrílico e alumínio.
• Implementar um sistema de software para o controle do posicionamento do manipulador.
• Testar seus movimentos.
1.2 JUSTIFICATIVA
O objetivo de se substituir o ser humano em tarefas em que ele não poderia realizar, por
causa de suas próprias limitações físicas, ou por envolverem condições desagradáveis ou
extremas. Devido a essa necessidade que o no projeto consiste na construção de um braço
robótico controlado pelo PC usando porta serial para esse controle.
A utilização do braço robótico contribui em vários fatores como:
10
Fatores técnicos:
Fatores econômicos:
Fatores sociológicos:
2 ROBÓTICA
2.1 INTRODUÇÃO
Muitos anos atrás, os robôs faziam parte apenas da ficção científica, fruto da
imaginação do homem. No início dos anos 60, os primeiros robôs começaram a ser usadas
com o objetivo de substituir o homem em tarefas que ele não podia realizar por envolverem
condições desagradáveis, tipicamente contendo altos níveis de: calor; ruído; gases tóxicos;
esforço físico extremo; trabalhos monótonos, "chatos".
Nos últimos 20 anos, as tendências que garantem a evolução dos robôs são: o
constante aumento dos níveis salariais dos empregados; o extraordinário avanço tecnológico
no ramo de computadores, que induz à redução dos preços do robô e uma significativa
melhoria em seu desempenho.
A palavra robô (“robot”) tem origem da palavra tcheca robotnik, que significa servo.
O termo robô foi utilizado inicialmente por Karel Capek em 1923, nesta época a idéia de um
"homem mecânico" parecia vir de alguma obra de ficção. (SALANT ,90)
O grande escritor americano de ficção científica Isaac Asimov estabeleceu quatro leis
muito simples para a robótica:
1ª lei: "Um robô não pode ferir um ser humano ou, permanecendo passivo, deixar um ser
humano exposto ao perigo".
2ª lei: "O robô deve obedecer às ordens dadas pelos seres humanos, exceto se tais ordens
estiverem em contradição com a primeira lei".
3ª lei: "Um robô deve proteger sua existência na medida em que essa proteção não estiver em
contradição com a primeira e a segunda lei".
4ª lei: "Um robô não pode causar mal à humanidade nem permitir que ela própria o faça".
A quarta e última lei foi escrita por Asimov em 1984. (SALANT ,90)
A idéia de se construir robôs começou a tomar força no início do século XX com a
necessidade de aumentar a produtividade e melhorar a qualidade dos produtos. É nesta época
que o robô industrial encontrou suas primeiras aplicações.
Atualmente devido aos inúmeros recursos que os sistemas de microcomputadores, os
atuadores e os sensores nos oferece, a robótica atravessa uma época de contínuo crescimento
que permitirá, em um curto espaço de tempo, o desenvolvimento de robôs inteligentes
fazendo assim com que a ficção do homem antigo torne-se a realidade do homem atual.
12
O braço robótico (GROOVER, 1988) é composto pelo braço e pulso. O braço consiste de
elementos denominados elos unidos por juntas de movimento relativo, onde são acoplados os
acionadores para realizarem estes movimentos individualmente, dotados de capacidade
sensorial, e instruídos por um sistema de controle. O braço é fixado à base por um lado e ao
punho pelo outro. O punho consiste de várias juntas próximas entre si, que permitem a
orientação do órgão terminal nas posições que correspondem à tarefa a ser realizada. Na
extremidade do punho existe um órgão terminal (mão ou ferramenta) destinada a realizar a
tarefa exigida pela aplicação. A Figura 1 mostra esquematicamente uma seqüência de elos e
juntas de um braço robótico. Nos braços reais, a identificação dos elos e juntas nem sempre é
fácil, em virtude da estrutura e de peças que cobrem as juntas para protegê-las no ambiente de
trabalho.
13
2.4 JUNTAS
As juntas utilizada em nosso trabalho é do tipo rotacional. Onde sua função é descritas
a seguir, e na Figura 4 podem ser visualizadas.
• A junta rotacional: Gira em torno de uma linha imaginaria estacionaria chamada de
eixo de rotação. Ela gira como uma cadeira giratória e abrem e fecham como uma dobradiça;
14
Robôs industriais adotam com freqüência soluções que tornam o reconhecimento das
juntas mais complexo. De fato, dependendo da forma com que os elos são construídos numa
representação esquemática, a nomenclatura do braço pode ser ambígua. A Figura 6 ilustra um
mesmo manipulador representado de duas formas distintas. A movimentação e igual em
ambos os esquemas. Este braço poderia ser denominado, indistintamente, de TVR ou VRR.
Para tornar a identificação única deve-se buscar uma geometria onde os elos sejam
formados por, no maximo, dois segmentos lineares. Neste caso, a configuração VRR seria a
correta.
15
Vertical transversal (Pitch ou arfagem): movimento vertical do punho para cima ou para baixo
Rotacional transversal (Yaw ou guinada): movimento do punho horizontalmente para a
esquerda ou para a direita.
Radial transversal (Roll ou rolamento): movimento de aproximação ou afastamento do punho
A configuração física dos robôs (GROOVER, 1988) esta relacionada com os tipos de
juntas que ele possui. Cada configuração pode ser representada por um esquema de notação
de letras, como visto anteriormente. Considera-se primeiro os graus de liberdade mais
próximos da base, ou seja, as juntas do corpo, do braço e posteriormente do punho. A notação
de juntas rotativas, prismáticas e de torção.
Como visto anteriormente, um braço mecânico e formado pela base, braço e punho. O
braço e ligado a base e esta e fixada ao chão, a parede ou ao teto. E o braço que efetua os
movimentos e posiciona o punho. O punho e dotado de movimentos destinados a orientar
(apontar) o órgão terminal. O órgão terminal executa a ação, mas não faz parte da anatomia
do braço robótico, pois depende da aplicação a ser exercida pelo braço. A movimentação do
braço e a orientação do punho são realizadas por juntas, que são articulações providas de
motores. Em resumo, a base sustenta o corpo, que movimenta o braço, que posiciona o punho,
que orienta o órgão terminal, que executa a ação. Em geral utilizam-se 3 juntas para o braço e
de 2 a 3 juntas para o punho. Os elos do braço são de grande tamanho, para permitir um longo
alcance. Por outro lado, os elos do punho são pequenos, e, as vezes, de comprimento nulo,
para que o órgão terminal desloque-se o mínimo possível durante a orientação do punho.
Adota-se uma nomenclatura para os manipuladores com base nos tipos de juntas utilizadas na
cadeia de elos, que parte da base em direção ao órgão terminal. Assim um manipulador TRR
teria a primeira junta (da base) torcional, e as duas seguintes seriam rotacionais. O punho
17
segue a mesma notação, porem separa-se o corpo do punho por dois pontos “:”, por exemplo,
TRR:RR. As configurações típicas para o braço e o punho de robôs industriais são
apresentadas nas Tabelas 1 e 2. A Figura 9 mostra a configuração de um punho TRT. Os
braços industriais mais comuns descritos nas seções seguintes.
Tabela 1:
Esquema de notação para designar configurações de robôs
Tabela 2:
Esquema de notação para designar configurações do pulso
facilmente a seqüência natural formada por elo-junta, da base ate o punho. Nos braços de
cadeia parcialmente fechada o atuador da terceira junta efetua o movimento desta por meio de
elos e articulações não motorizadas adicionais.
Onde no projeto foi utilizado a Garra de dois dedos conforme descrição abaixo:
A garra de dois dedos, como pode ser visualizada na figura 11, é um modelo simples e
com movimentos paralelos ou rotacionais. Este modelo de garra proporciona pouca
versatilidade na manipulação dos objetos, pois existe limitação na abertura dos dedos. Desta
forma a dimensão dos objetos não pode exceder esta abertura.
19
2.6.1 Servo-motores
do braço robótico, os limites dos movimentos das juntas e o tamanho dos componentes do
corpo, braço e pulso. Por exemplo, o volume de trabalho de um braço esférico (TRL) seria,
teoricamente, o volume da esfera cujo raio é o comprimento do braço esticado. Braços
robóticos possuem volumes que dependem, é claro, da geometria e dos limites impostos ao
movimento por motivos estruturais ou de controle. Na maior parte deles, o volume é
altamente dependente de detalhes construtivos e raramente aparenta ou aproxima-se do
volume teórico. Por exemplo, o volume de um manipulador cilíndrico deveria ser um cilindro,
como mostrado na Figura 12, mas em geral não é. Em resumo, o volume de trabalho de um
manipulador depende, basicamente, da configuração do braço, dos comprimentos dos elos
(braço e punho) e de limites e restrições construtivas à movimentação das juntas.
Os volumes, alcances ou áreas de trabalho devem ser expressos sem a presença do órgão
terminal, já que este pode alterar significativamente tais valores, dependendo da aplicação.
software. Pode-se ainda aplicar uma solução mista, em que a parte mais leve do software fica
no microcontrolador e a parte de maior processamento fica no computador pessoal.
O sistema de hardware pode constituir, por exemplo, de motores de passos, cabos,
dispositivo de entrada, sensores e amplificadores de potencia. Um dos fatores mais
importantes e a utilização de sensores, pois podem ser dispositivos de um sistema de malha
fechada, ou seja, consiste em verificar o estado atual do dispositivo a ser controlado e
comparar essa medida com um valor predefinido. Esta comparação resultara num erro, ao
qual o sistema de controle fará os ajustes necessários para que o erro seja reduzido a zero. Um
esquema simples de malha fechada e apresentado em diagrama de blocos na Figura 15.
Onde pretendemos adotar esse tipo de sistema de controle em nosso projeto
futuramente, pois ira otimizar seu funcionamento.
causados por cada uma das juntas. A junta J2 provoca um erro semelhante ao causado por um
braço de uma única junta, visto anteriormente, de tal forma que.
Se _θ1 for também pequeno, então se pode projetar o vetor v em ambas as direções.
Para se obter:
Onde r e a distancia que vai do eixo de rotação da junta J1 ate a extremidade do braço. Porem
percebe-se que r senθ1 = y e que r cosθ1 = x. Alem disso, tem-se, da cinemática direta deste
braço, que x = a1 cosθ1 + a2 cos(θ1 + θ2), e que y = a1 senθ1 + a2 sen(θ1 + θ2). Logo a
precisão cartesiana total fica:
Onde iremos adotar esse tipo de precisão futuramente em nosso trabalha, para otimizar
a precisão dos movimentos.
25
3 METODOLOGIA
3.3 O ACIONAMENTO
O robô é acionado por 3 (três) servo-motores, da pittman gm9x14. Os servo-motores
são dispositivos que integram um motor CC, com uma caixa de engrenagens para redução. O
sinal de referência para o servo-motor é fornecida pelo circuito em ponte H onde será feito a
inversão da corrente,sendo controlado através do PIC 16F628A.
3.3.1 Circuito
Ponte H
Tabela 4
RA7 PIN_A7 Ponte
RA6 PIN_A6 H_1
RB6 PIN_B6 Ponte
RB7 PIN_B7 H_2
RB4 PIN_B4 Ponte
RB5 PIN_B5 H_3
RB0 PIN_B0 Ponte
RB3 PIN_B3 H_4 Figura 26: Motor
Programa
No programa foi utilizado muitas Funções, que é uma técnica de programação que
29
3.4.1 Circuito
MAX 232
O programa tem a opção de listar as portas que estão abertas e disponíveis para o uso,
a tela de inserção dos comandos e o botão de enviar os dados, como mostra a figura 29, o
codigo fonte serialcom.java e serialcomleitura.java esta anexado no final da documento.
3.6 RESULTADOS
4 CONCLUSÃO
Sobre o braço robótico, podemos dizer que sua parte “estrutural” atende a proposta
desejada desde o começo do trabalho, juntamente com o software ( interface ) e o sistema de
controle do mesmo.
Com base nisso o Projeto do braço mecânico foi concluído no tempo previsto,
podendo ser trabalhado e melhorado muito mais.
Dificuldades Encontradas
No decorrer deste trabalho, foram encontradas algumas dificuldades:
• H
ouve certa dificuldade em compreender o modelo cinemático principalmente pela
complexidade do calculo.
• trabalho em acrílico, por ser caro e não dispor de recursos necessários.
• A
montagem do braço, devido a difícil adaptação do motor nas juntas e ao seu peso.
REFERÊNCIA
BIANCHI, Reinaldo. Robótica. Centro Universitário da FEI. (2006). Apostila disponível em:
<http://www.fei.edu.br/~rbianchi/robotica/>.Acesso 10 abr 2008.
GOZZI, Giuliano. Curso Automação Industrial. Faatesp (2006). Apostila disponível em:
<http://www.faatesp.edu.br/publicacoes.asp?PagePosition=1&search=cnc&mode=allwords>.
Acesso 7 abr 2008.
(FU,88) Fu, K. S. Robotics: Control, Sensing, Vision and Inteligence. New York: McGrall-
Hill, 1987.
34
ANEXOS
35
SERIALCOM.JAVA
package PacoteComunicacaoSerial;
import gnu.io.CommPortIdentifier;
import java.util.Enumeration;
public serialcom() {
listadeportas = CommPortIdentifier.getPortIdentifiers();
}
public String[] obterPortas()
{
return portas;
}
protected void listarPortas()
{
int i= 0;
portas = new String[10];
while(listadeportas.hasMoreElements())
{
CommPortIdentifier ips =
(CommPortIdentifier)listadeportas.nextElement();
portas[i] = ips.getName();
i++;
}
}
String temp;
boolean e = false;
while (listadeportas.hasMoreElements()) {
CommPortIdentifier ips =
(CommPortIdentifier)listadeportas.nextElement();
temp = ips.getName();
if (temp.equals(comp)== true)
{
e = true;
}
}
return e;
}
protected void ImprimePortas(){
for (int i = 0 ; i < portas.length ; i++){
if (portas[i] !=null){
System.out.print(portas[i] + " ");
}
}
System.out.println(" ");
}
}
SERIALCOMLEITURA.JAVA
package PacoteComunicacaoSerial;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
37
Escrita = true;
Leitura = false;
}
//habilita leitura de dados
public void HabilitarLeitura(){
Escrita = false;
Leitura = true;
}
//Obtém o ID da PORTA
public void ObterIdDaPorta(){
try {
cp = CommPortIdentifier.getPortIdentifier(Porta);
if ( cp == null ) {
System.out.println("A " + Porta + " nao existe!" );
System.out.println("ERRO!Abortando..." );
IDPortaOK = false;
System.exit(1);
}
IDPortaOK = true;
} catch (Exception e) {
System.out.println("Erro durante o procedimento. STATUS" + e );
IDPortaOK = false;
System.exit(1);
}
}
//Abre a comunicação da porta
public void AbrirPorta(){
try {
porta = (SerialPort)cp.open("serialcomleitura",timeout);
PortaOK = true;
System.out.println("Porta aberta com sucesso!");
//configurar parâmetros
porta.setSerialPortParams(baudrate,
SerialPort.DATABITS_8,
39
SerialPort.STOPBITS_2,
SerialPort.PARITY_NONE);
} catch (Exception e) {
PortaOK = false;
System.out.println("Erro ao abrir a porta! STATUS: " + e );
System.exit(1);
}
}
//função que envie um bit para a porta serial
public void EnviarUmaString(String msg){
if (Escrita==true) {
try {
saida = porta.getOutputStream();
System.out.println("FLUXO OK!");
} catch (Exception e) {
System.out.println("Erro.STATUS: " + e );
}
try {
System.out.println("Enviando um byte para " + Porta );
System.out.println("Enviando : " + msg );
saida.write(msg.getBytes());
Thread.sleep(100);
saida.flush();
} catch (Exception e) {
System.out.println("Houve um erro durante o envio. ");
System.out.println("STATUS: " + e );
System.exit(1);
}
} else {
System.exit(1);
}
}
//leitura de dados na serial
public void LerDados(){
40
if (Escrita == true){
try {
entrada = porta.getInputStream();
System.out.println("FLUXO OK!");
} catch (Exception e) {
System.out.println("Erro.STATUS: " + e );
System.exit(1);
}
try {
porta.addEventListener(this);
System.out.println("SUCESSO. Porta aguardando...");
} catch (Exception e) {
System.out.println("Erro ao criar listener: ");
System.out.println("STATUS: " + e);
System.exit(1);
}
porta.notifyOnDataAvailable(true);
try {
threadLeitura = new Thread(this);
threadLeitura.start();
} catch (Exception e) {
System.out.println("Erro ao iniciar leitura: " + e );
}
}
}