Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouJónatas Marroquim Capistrano Alterado mais de 9 anos atrás
1
DESENVOLVIMENTO DE UM MANIPULADOR COM DOIS GRAUS DE LIBERDADE CONTROLADO REMOTAMENTE VIA INTERNET Por Alberto José Alvares Luiz Sérgio Jordão Romariz Júnior GRACO - Grupo de Automação e Controle - Engenharia Mecânica - UnB http://www.graco.unb.br/robwebcam alvares@graco.unb.br & luiz@graco.unb.br
2
Teleopera Introdução - Teleoperação ä Algumas Vantagens do Controle Remoto - Teleopera: ä Algumas Vantagens do Controle Remoto - Teleoperação: ä Mover objetos a distância; ä Otimizar o uso de transportes, materiais e pessoas; ä Atuar em ambientes perigosos; ä Minimizar os custos. ä Exemplos de Aplicações na Internet - TeleRobotics: ä Telerobot (Un. Western Australia - http://telerobot.mech.uwa.edu.au ); ä Bradford Robotic Telescope Observatory; ä WebRobot - RobWebLink (http://www.graco.unb.br); ä Observação do tempo nos EUA.
3
Teleopera http://telerobot.mech.uwa.edu.au Teleoperação - Exemplo http://telerobot.mech.uwa.edu.au
4
DESENVOLVIMENTO DE UM MANIPULADOR COM DOIS GRAUS DE LIBERDADE CONTROLADO REMOTAMENTE VIA INTERNET Por Alberto José Alvares Luiz Sérgio Jordão Romariz Júnior GRACO - Grupo de Automação e Controle - Engenharia Mecânica - UnB http://www.graco.unb.br/robwebcam alvares@graco.unb.br & luiz@graco.unb.br
5
Teleopera Introdução - Teleoperação ä Algumas Vantagens do Controle Remoto - Teleopera: ä Algumas Vantagens do Controle Remoto - Teleoperação: ä Mover objetos a distância; ä Otimizar o uso de transportes, materiais e pessoas; ä Atuar em ambientes perigosos; ä Minimizar os custos. ä Exemplos de Aplicações na Internet - TeleRobotics: ä Telerobot (Un. Western Australia - http://telerobot.mech.uwa.edu.au ); ä Bradford Robotic Telescope Observatory; ä WebRobot - RobWebLink (http://www.graco.unb.br); ä Observação do tempo nos EUA.
6
Teleopera http://telerobot.mech.uwa.edu.au Teleoperação - Exemplo http://telerobot.mech.uwa.edu.au
7
Teleopera http://webrobot.graco.unb.br Teleoperação - Exemplo http://webrobot.graco.unb.br
8
Arquitetura do Sistema ä ä Concepção e implementação de um sistema para controlar remotamente um manipulador com 2 graus de liberdade; ä ä Via de controle: Internet; ä ä Posiciona uma câmera de vídeo para adquirir imagens e vídeo “on-line”; ä ä Sistema RobWebCam - Robotic Web Camera.
9
Arquitetura do Sistema
10
Internet - TCP/IP ä ä Internet e Linguagens de programação ä TCP/IP; ä HTML; ä CGI; ä JAVA. ä Teleoperação
11
Projeto RobWebCam ä Considerações de Projeto ä Arquitetura aberta e de baixo custo; ä Manipulador com 2 GDL; ä Manipulador deverá suportar a câmera de vídeo (SunVideo ou QuickCam); ä 90º - vertical, 180º - horizontal; ä Acionamento por motores de passo.
12
Projeto RobWebCam ä Manipulador ä ä Requisitos Funcionais e Topologias;
13
Projeto RobWebCam ä ä Dimensionamento da Estrutura;
14
Projeto RobWebCam ä ä Dimensionamento dos Motores de Passo;
15
Projeto RobWebCam ä Alimentação dos Motores ä Transformador; ä Fonte de Tensão; ä Drive de Potência.
17
Projeto RobWebCam
18
ä Sistema Operacional LINUX: ä Multiusuário e multitarefa; ä Arquitetura cliente/servidor; ä Protocolo TCP/IP (Internet); ä Servidor de câmera de vídeo já disponível; ä Ter documentação de fácil acesso; ä Sistema aberto e de baixo custo; ä Facilidade para acessar a porta paralela e serial; ä Tem uma boa variedade de compiladores e outros tipos de programas que rodam em sua plataforma do tipo PC, Sparc, Alpha, entre outras.
19
Projeto RobWebCam ä Captura de Vídeo e Imagem ä Driver WebCam para Servidor WWW: Tecnologia Serverpush - Netscape; ä Câmera SunVideo - Frame Grabber (http://serpens.enm.unb.br); ä Câmera QuickCam - Connectix (http://omega.enm.unb.br). ä Programas voltados para Internet ä CGI - Common Gateway Interface (C++); ä Java; ä HTML e Servidor WWW.
20
Projeto RobWebCam
22
Programa Interfac.c ä #include ä #include ä /* class Interface versao para Linux / Unix. A classe Interface prove uma base de comunicacao para a classe Motor ä controlar um motor de passo ligado a porta paralela. Esta implementacao utiliza o comando "open", e pode ser usada para acesso ä a porta paralela sem acesso de ROOT. */ ä class Interface { private:intporta; ä public:Interface ();// construtor ä ~Interface ();// destrutor ä void send (int n); ä void waiting (int t); }; ä Interface :: Interface () ä // Construtor abre o acesso a porta paralela do computador ä {porta = open ("/dev/lp1",O_WRONLY|O_NONBLOCK,0); ä if (porta < 0) { ä printf ("Porta nao disponivel!\n"); ä exit (0); }} ä Interface :: ~Interface () ä // Destrutor que fecha o acesso a porta paralela do computador ä { close (porta); } ä void Interface :: send (int n) ä // Envia o inteiro n para a porta paralela ä { ä char cbuf = (char) n; int ibuf; ä if (write (porta,&cbuf,1) != 1) { ä printf ("Erro na porta."); ä exit (0); }} ä void Interface :: waiting (int t) ä // Faz uma interrupcao de t milisegundos no sistema ä {usleep (t*1000); }
23
Programa Motor.c ä #include "c:\prog\tourino\interfac.cpp" ä // Classe que define o objeto motor. Utiliza a classe Interface (interfac.cpp). espera-se que nao seja mudada para a versao Linux. ä int motor1_s [4] = {0x01,0x02,0x04,0x08}, ä motor2_s [4] = {0x10,0x20,0x40,0x80}, ä motor1_d [4] = {0x09,0x03,0x06,0x0C}, ä motor2_d [4] = {0x90,0x30,0x60,0xC0}; ä class Motor { ä private: ä intnumero,intervalo, tipo_excitacao, excitacao [4], ultima_excitacao; ä floatprecisao; ä public: ä voidset (int n);// define o motor usado ä void precision (float p);// define a precisao do motor ä void delay (int tempo);// define o intervalo entre passos ä void turn (int angle);// gira angulo ä voidwait (int time);// espera tempo excitado ä voidsstep (void);// define excitacao simples ä voiddstep (void);// define excitacao dupla ä void off (void);// desliga a excitacao do motor }; ä void Motor :: set (int n) ä {numero = n;if (tipo_excitacao) dstep (); else sstep (); } ä void Motor :: sstep (void) ä {if (numero == 0) { excitacao [0] = motor1_s [0] | motor2_s [0]; ä excitacao [1] = motor1_s [1] | motor2_s [1]; ä excitacao [2] = motor1_s [2] | motor2_s [2]; ä excitacao [3] = motor1_s [3] | motor2_s [3]; } ä if (numero == 1) { excitacao [0] = motor1_s [0]; ä excitacao [1] = motor1_s [1]; ä excitacao [2] = motor1_s [2]; ä excitacao [3] = motor1_s [3]; } ä if (numero == 2) { ä
24
Programa CGI ä #include ä #include ä #include "interfac.C" ä #include "motor.C" ä #include ä #include ä char nome[80] = "teste.mot"; ä void Le_comanda (void) ä { int inteiro; float real; ä FILE *arquivo; char comando[5],parametro [5]; class Motor M; ä if ((arquivo = fopen (nome,"rt")) == NULL) { puts ("Arquivo nao existe."); exit (0); } ä while (fscanf (arquivo,"%s",&comando) > 0) { ä if (strcmp (comando,"S") == 0) { ä fscanf (arquivo,"%s",¶metro); ä inteiro = atoi (parametro); M.set (inteiro); } ä if (strcmp (comando,"P") == 0) { ä fscanf (arquivo,"%s",¶metro); ä real = atof (parametro); M.precision (real); } ä if (strcmp (comando,"D") == 0) { ä fscanf (arquivo,"%s",¶metro); ä inteiro = atoi (parametro); M.delay (inteiro);} ä if (strcmp (comando,"T") == 0) { ä fscanf (arquivo,"%s",¶metro); ä inteiro = atoi (parametro); M.turn (inteiro);} ä if (strcmp (comando,"W") == 0) { ä fscanf (arquivo,"%s",¶metro); ä inteiro = atoi (parametro); ä M.wait (inteiro); } ä if (strcmp (comando,"SS") == 0) M.sstep (); ä if (strcmp (comando,"DS") == 0) M.dstep (); ä if (strcmp (comando,"O") == 0) M.off ();} ä fclose (arquivo); } int main (int argc,char *argv []) { ä printf("Content-type: text/plain \n\n"); ä Le_comanda (); }
28
Avaliação do Sistema ä Testes de Velocidade; ä Testes de Acionamento Remoto; ä Na UnB; ä Fora da Rede da UnB. ä Otimizações; ä Funcionamento por Um Ano; ä Sistema em Processo de Patenteamento.
29
Conclusão ä Inédito no Brasil; ä Apto as Aplicações Propostas; ä Atendeu aos Requisitos Iniciais; ä Possibilidade de Otimizações; ä Várias Aplicações Possíveis; ä Objetivos Alcançados; ä RobWebLink - Controle de Rôbo ABB com 6GL.
30
Teleopera http://webrobot.graco.unb.br Teleoperação - Exemplo http://webrobot.graco.unb.br
31
Arquitetura do Sistema ä ä Concepção e implementação de um sistema para controlar remotamente um manipulador com 2 graus de liberdade; ä ä Via de controle: Internet; ä ä Posiciona uma câmera de vídeo para adquirir imagens e vídeo “on-line”; ä ä Sistema RobWebCam - Robotic Web Camera.
32
Arquitetura do Sistema
33
Internet - TCP/IP ä ä Internet e Linguagens de programação ä TCP/IP; ä HTML; ä CGI; ä JAVA. ä Teleoperação
34
Projeto RobWebCam ä Considerações de Projeto ä Arquitetura aberta e de baixo custo; ä Manipulador com 2 GDL; ä Manipulador deverá suportar a câmera de vídeo (SunVideo ou QuickCam); ä 90º - vertical, 180º - horizontal; ä Acionamento por motores de passo.
35
Projeto RobWebCam ä Manipulador ä ä Requisitos Funcionais e Topologias;
36
Projeto RobWebCam ä ä Dimensionamento da Estrutura;
37
Projeto RobWebCam ä ä Dimensionamento dos Motores de Passo;
38
Projeto RobWebCam ä Alimentação dos Motores ä Transformador; ä Fonte de Tensão; ä Drive de Potência.
40
Projeto RobWebCam
41
ä Sistema Operacional LINUX: ä Multiusuário e multitarefa; ä Arquitetura cliente/servidor; ä Protocolo TCP/IP (Internet); ä Servidor de câmera de vídeo já disponível; ä Ter documentação de fácil acesso; ä Sistema aberto e de baixo custo; ä Facilidade para acessar a porta paralela e serial; ä Tem uma boa variedade de compiladores e outros tipos de programas que rodam em sua plataforma do tipo PC, Sparc, Alpha, entre outras.
42
Projeto RobWebCam ä Captura de Vídeo e Imagem ä Driver WebCam para Servidor WWW: Tecnologia Serverpush - Netscape; ä Câmera SunVideo - Frame Grabber (http://serpens.enm.unb.br); ä Câmera QuickCam - Connectix (http://omega.enm.unb.br). ä Programas voltados para Internet ä CGI - Common Gateway Interface (C++); ä Java; ä HTML e Servidor WWW.
43
Projeto RobWebCam
45
Programa Interfac.c ä #include ä #include ä /* class Interface versao para Linux / Unix. A classe Interface prove uma base de comunicacao para a classe Motor ä controlar um motor de passo ligado a porta paralela. Esta implementacao utiliza o comando "open", e pode ser usada para acesso ä a porta paralela sem acesso de ROOT. */ ä class Interface { private:intporta; ä public:Interface ();// construtor ä ~Interface ();// destrutor ä void send (int n); ä void waiting (int t); }; ä Interface :: Interface () ä // Construtor abre o acesso a porta paralela do computador ä {porta = open ("/dev/lp1",O_WRONLY|O_NONBLOCK,0); ä if (porta < 0) { ä printf ("Porta nao disponivel!\n"); ä exit (0); }} ä Interface :: ~Interface () ä // Destrutor que fecha o acesso a porta paralela do computador ä { close (porta); } ä void Interface :: send (int n) ä // Envia o inteiro n para a porta paralela ä { ä char cbuf = (char) n; int ibuf; ä if (write (porta,&cbuf,1) != 1) { ä printf ("Erro na porta."); ä exit (0); }} ä void Interface :: waiting (int t) ä // Faz uma interrupcao de t milisegundos no sistema ä {usleep (t*1000); }
46
Programa Motor.c ä #include "c:\prog\tourino\interfac.cpp" ä // Classe que define o objeto motor. Utiliza a classe Interface (interfac.cpp). espera-se que nao seja mudada para a versao Linux. ä int motor1_s [4] = {0x01,0x02,0x04,0x08}, ä motor2_s [4] = {0x10,0x20,0x40,0x80}, ä motor1_d [4] = {0x09,0x03,0x06,0x0C}, ä motor2_d [4] = {0x90,0x30,0x60,0xC0}; ä class Motor { ä private: ä intnumero,intervalo, tipo_excitacao, excitacao [4], ultima_excitacao; ä floatprecisao; ä public: ä voidset (int n);// define o motor usado ä void precision (float p);// define a precisao do motor ä void delay (int tempo);// define o intervalo entre passos ä void turn (int angle);// gira angulo ä voidwait (int time);// espera tempo excitado ä voidsstep (void);// define excitacao simples ä voiddstep (void);// define excitacao dupla ä void off (void);// desliga a excitacao do motor }; ä void Motor :: set (int n) ä {numero = n;if (tipo_excitacao) dstep (); else sstep (); } ä void Motor :: sstep (void) ä {if (numero == 0) { excitacao [0] = motor1_s [0] | motor2_s [0]; ä excitacao [1] = motor1_s [1] | motor2_s [1]; ä excitacao [2] = motor1_s [2] | motor2_s [2]; ä excitacao [3] = motor1_s [3] | motor2_s [3]; } ä if (numero == 1) { excitacao [0] = motor1_s [0]; ä excitacao [1] = motor1_s [1]; ä excitacao [2] = motor1_s [2]; ä excitacao [3] = motor1_s [3]; } ä if (numero == 2) { ä
47
Programa CGI ä #include ä #include ä #include "interfac.C" ä #include "motor.C" ä #include ä #include ä char nome[80] = "teste.mot"; ä void Le_comanda (void) ä { int inteiro; float real; ä FILE *arquivo; char comando[5],parametro [5]; class Motor M; ä if ((arquivo = fopen (nome,"rt")) == NULL) { puts ("Arquivo nao existe."); exit (0); } ä while (fscanf (arquivo,"%s",&comando) > 0) { ä if (strcmp (comando,"S") == 0) { ä fscanf (arquivo,"%s",¶metro); ä inteiro = atoi (parametro); M.set (inteiro); } ä if (strcmp (comando,"P") == 0) { ä fscanf (arquivo,"%s",¶metro); ä real = atof (parametro); M.precision (real); } ä if (strcmp (comando,"D") == 0) { ä fscanf (arquivo,"%s",¶metro); ä inteiro = atoi (parametro); M.delay (inteiro);} ä if (strcmp (comando,"T") == 0) { ä fscanf (arquivo,"%s",¶metro); ä inteiro = atoi (parametro); M.turn (inteiro);} ä if (strcmp (comando,"W") == 0) { ä fscanf (arquivo,"%s",¶metro); ä inteiro = atoi (parametro); ä M.wait (inteiro); } ä if (strcmp (comando,"SS") == 0) M.sstep (); ä if (strcmp (comando,"DS") == 0) M.dstep (); ä if (strcmp (comando,"O") == 0) M.off ();} ä fclose (arquivo); } int main (int argc,char *argv []) { ä printf("Content-type: text/plain \n\n"); ä Le_comanda (); }
51
Avaliação do Sistema ä Testes de Velocidade; ä Testes de Acionamento Remoto; ä Na UnB; ä Fora da Rede da UnB. ä Otimizações; ä Funcionamento por Um Ano; ä Sistema em Processo de Patenteamento.
52
Conclusão ä Inédito no Brasil; ä Apto as Aplicações Propostas; ä Atendeu aos Requisitos Iniciais; ä Possibilidade de Otimizações; ä Várias Aplicações Possíveis; ä Objetivos Alcançados; ä RobWebLink - Controle de Rôbo ABB com 6GL.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.