RACmotion - DEEC - Universidade de Coimbra

Transcrição

RACmotion - DEEC - Universidade de Coimbra
UNIVERSIDADE DE COIMBRA
FACULDADE DE CIÊNCIAS E TECNOLOGIA
DEPARTAMENTO DE ENGENHARIA ELECTROTÉCNICA E DE COMPUTADORES
RACmotion
Controlo da Trajectória de um Robô
Omnidireccional para a RoboCup SSL
Autores
João Rodrigues
Sérgio Brandão
Coimbra – Portugal
2005
UNIVERSIDADE DE COIMBRA
FACULDADE DE CIÊNCIAS E TECNOLOGIA
DEPARTAMENTO DE ENGENHARIA ELECTROTÉCNICA E DE COMPUTADORES
RACmotion
Controlo da Trajectória de um Robô
Omnidireccional para a RoboCup SSL
Autores
João Rodrigues
Sérgio Brandão
Orientadores
Eng.º Rui Rocha
Prof. Doutor Jorge Dias
Relatório de Projecto apresentado no âmbito
do curso de Licenciatura em Engenharia
Electrotécnica e de Computadores, ramo de
Automação e Robótica, no Departamento de
Engenharia Electrotécnica e de Computadores
da Faculdade de Ciências e Tecnologia da
Universidade de Coimbra.
Coimbra – Portugal
2005
“Tudo o que uma pessoa pode imaginar,
outras podem tornar real.”
(Júlio Verne, 1828 – 1905)
RACmotion – Robótica Académica de Coimbra
Página 1 de 119
Agradecimentos
Este espaço é dedicado àqueles que deram a sua contribuição para que este projecto fosse
realizado. A todos eles deixamos aqui o nosso sincero agradecimento.
Em primeiro lugar queremos agradecer ao Eng. Rui Rocha pela forma como orientou o nosso
projecto. As notas dominantes da sua orientação, a utilidade das suas recomendações e a cordialidade
com que sempre nos recebeu foram fundamentais para a realização deste projecto. Estamos gratos pela
sua ajuda e também pela liberdade de acção que nos permitiu, a qual foi decisiva para que o mesmo
contribuísse para o nosso desenvolvimento pessoal.
Em segundo lugar, queremos agradecer ao Prof. Doutor Jorge Dias pela disponibilidade
concedida, pelas dicas oportunas e por todo o incentivo prestado ao longo do desenvolvimento deste
projecto.
Gostaríamos ainda de agradecer ao Eng. Jorge Lobo, pela cooperação prestada e pela
orientação sempre fundamental concedida no laboratório, que se mostrou elementar para o progresso
do trabalho que nos propusemos a realizar.
Deixamos também aqui uma palavra de agradecimento aos elementos da RAC, pela forma
como nos ajudaram e por nos terem transmitido algum conhecimento e interesse pelo desenvolvimento
do nosso projecto.
São também dignos de uma nota de apreço os nossos colegas de curso que nos ajudaram na
força e no espírito de trabalho, que nos acompanharam sempre nos trabalhos da RAC. A todos eles o
nosso obrigado.
RACmotion – Robótica Académica de Coimbra
Página 2 de 119
Resumo
Este projecto tem como principal objectivo o desenvolvimento de um sistema de controlo para o
movimento de um robô omnidireccional. O controlador a desenvolver será utilizado nos robôs da
RAC – Robótica Académica de Coimbra (equipa de futebol robótico do DEEC) que irá participar em
competições oficiais da RoboCup SSL (Small Size League). Contudo, outros trabalhos foram
desenvolvidos e implementados de modo a melhorar e complementar os objectivos da RAC. O
RACmotion foi um projecto ambicioso no que diz respeito à inserção do Futebol Robótico no DEEC.
Para que este Projecto alcançasse os seus objectivos, foi necessário planear, implementar, desenvolver
e inovar!
Este relatório de projecto descreve toda a arquitectura da RAC ligada ao controlo do movimento
do robô. São abordados tópicos de inteligência artificial, visão computacional, robótica, simulação,
comunicação, processamento distribuído e engenharia de software. Este relatório de projecto introduz
ao leitor o mundo do Futebol Robótico, analisando o estado da arte e a situação em Portugal num
contexto mundial. Os problemas referentes ao futebol robótico são também introduzidos. É apresentada
a arquitectura do sistema, especificando todos os seus módulos e abordando as suas principais
características. A implementação e desenvolvimento de algumas aplicações são relatadas em detalhe,
inclusive com algumas descrições de algoritmos e fórmulas utilizadas. Este documento relata todas as
fases do Projecto RACmotion, desde o projecto de engenharia à implementação e construção do robô.
Os testes e resultados são também analisados permitindo assim tirar diversas conclusões e
perspectivas de desenvolvimento.
RACmotion – Robótica Académica de Coimbra
Página 3 de 119
Índice
AGRADECIMENTOS ....................................................................................................................................2
RESUMO ..................................................................................................................................................3
ÍNDICE .....................................................................................................................................................4
ÍNDICE DE FIGURAS....................................................................................................................................7
ÍNDICE DE TABELAS ...................................................................................................................................9
INTRODUÇÃO ..........................................................................................................................................10
1.
FUTEBOL R OBÓTICO .....................................................................................................................11
2.
PROBLEMAS EMERGENTES AO FUTEBOL ROBÓTICO .........................................................................18
3.
RACMOTION ................................................................................................................................24
4.
ARQUITECTURA DE CONTROLO DA RAC .........................................................................................27
5.
ESTRUTURA DO ROBÔ ...................................................................................................................32
6.
HARDWARE ..................................................................................................................................38
7.
MODELO CINEMÁTICO ...................................................................................................................43
8.
O SIMULADOR RACBOT ................................................................................................................47
9.
CALIBRAÇÃO ...............................................................................................................................57
10.
SISTEMA DE CONTROLO ................................................................................................................61
11.
TESTES E RESULTADOS ................................................................................................................94
CONCLUSÃO.........................................................................................................................................102
REFERÊNCIAS E BIBLIOGRAFIA ...............................................................................................................104
ANEXO 1 ..............................................................................................................................................106
DIÁRIO AS BEIRAS
21 MARÇO 2005.................................................................................................107
DIÁRIO AS BEIRAS
1 MAIO 2005 ......................................................................................................108
DIÁRIO DE COIMBRA
1 MAIO 2005....................................................................................................109
ANEXO 2 ..............................................................................................................................................110
ARTIGO ROBÓTICA2005
OMNIDIRECTIONAL DRIVE MODELLING AND R OBOT C ONSTRUCTION .................111
ANEXO 3 ..............................................................................................................................................117
CÓDIGO F ONTE DAS APLICAÇÕES DESENVOLVIDAS..................................................................................118
ANOTAÇÕES .........................................................................................................................................119
RACmotion – Robótica Académica de Coimbra
Página 4 de 119
Sumário
AGRADECIMENTOS ....................................................................................................................................2
RESUMO ..................................................................................................................................................3
ÍNDICE .....................................................................................................................................................4
ÍNDICE DE FIGURAS....................................................................................................................................7
ÍNDICE DE TABELAS ...................................................................................................................................9
INTRODUÇÃO ..........................................................................................................................................10
1.
FUTEBOL R OBÓTICO .....................................................................................................................11
1.1. Histórico sobre Futebol Robótico.............................................................................................11
1.2. Organizações Internacionais ...................................................................................................12
1.2.1. Fira..................................................................................................................................................... 12
1.2.2. RoboCup ............................................................................................................................................ 13
1.3.
1.4.
1.5.
1.6.
Ligas de Competição...............................................................................................................14
RAC – Robótica Académica de Coimbra .................................................................................15
Futebol Robótico em Portugal .................................................................................................16
Estado da Arte ........................................................................................................................16
2.
PROBLEMAS EMERGENTES AO FUTEBOL ROBÓTICO .........................................................................18
2.1. Inteligência Artificial ................................................................................................................19
2.2. Visão Computacional ..............................................................................................................19
2.2.1. Visão Global .......................................................................................................................................20
2.2.2. Visão Local......................................................................................................................................... 20
2.3.
2.4.
2.5.
3.
3.1.
3.2.
3.3.
4.
4.1.
4.2.
4.3.
4.4.
5.
5.1.
5.2.
5.3.
6.
6.1.
6.2.
6.3.
6.4.
7.
7.1.
7.2.
7.3.
7.4.
8.
8.1.
8.2.
8.3.
Tolerância a Falhas.................................................................................................................22
Engenharia de Software..........................................................................................................22
Processamento Distribuído .....................................................................................................23
RACMOTION ................................................................................................................................24
Objectivos...............................................................................................................................24
Motivação ...............................................................................................................................24
Promoção e Divulgação ..........................................................................................................25
ARQUITECTURA DE CONTROLO DA RAC .........................................................................................27
Descrição................................................................................................................................27
Aplicação em Robôs com Diferentes Níveis de Autonomia......................................................30
Ferramentas de Desenvolvimento ...........................................................................................30
Divisão de Tarefas de Desenvolvimento..................................................................................30
ESTRUTURA DO ROBÔ ...................................................................................................................32
Plataforma ..............................................................................................................................32
Evolução .................................................................................................................................33
Protótipo .................................................................................................................................36
HARDWARE ..................................................................................................................................38
PC/104....................................................................................................................................38
Comunicação ..........................................................................................................................41
Motores e Caixas de Desmultiplicação ....................................................................................41
Baterias ..................................................................................................................................42
MODELO CINEMÁTICO ...................................................................................................................43
Modelo Cinemático RACbot ....................................................................................................43
Cinemática Inversa .................................................................................................................45
Cinemática Directa..................................................................................................................45
Modelos alternativos ...............................................................................................................46
O SIMULADOR RACBOT ................................................................................................................47
Motivação ...............................................................................................................................47
MATLAB Simulink ...................................................................................................................47
Implementação .......................................................................................................................48
8.3.1. Diagrama de Controlo .........................................................................................................................48
8.3.2. Visualização ....................................................................................................................................... 50
8.3.3. Testes e Resultados ........................................................................................................................... 52
RACmotion – Robótica Académica de Coimbra
Página 5 de 119
8.3.4. Conclusões.........................................................................................................................................56
9.
CALIBRAÇÃO ...............................................................................................................................57
9.1. Motivação ...............................................................................................................................57
9.2. Assumpções ...........................................................................................................................57
9.3. Procedimento de Calibração ...................................................................................................57
9.4. Testes em Simulação..............................................................................................................59
9.5. Conclusões .............................................................................................................................60
10.
SISTEMA DE CONTROLO ................................................................................................................61
10.1.
Sistema Operativo ...............................................................................................................61
10.1.1. Características Pretendidas...............................................................................................................61
10.1.2. Analise de Candidatos....................................................................................................................... 62
10.1.3. Sistema Operativo de Desenvolvimento e Teste ................................................................................ 64
10.1.4. Sistema Operativo da Plataforma ......................................................................................................65
10.1.5. Processo de Arranque do Sistema..................................................................................................... 67
10.2.
Sistema de Comunicações ..................................................................................................67
10.2.1. Protocolo IEEE 802.11b .................................................................................................................... 69
10.2.2. Protocolo TCP/IP .............................................................................................................................. 72
10.2.3. Protocolo de Comunicação RACprotocol ........................................................................................... 74
10.2.4. Driver do Dispositivo Wireless ........................................................................................................... 80
10.2.5. Configuração da Rede Sem Fios ....................................................................................................... 81
10.3.
Funções de I/O na Placa MESA 4i65 ...................................................................................82
10.3.1. Características do Firmware softDMC................................................................................................82
10.3.2. Calibração do Controlador PID .......................................................................................................... 83
10.3.3. Implementação do softDMC Loader...................................................................................................84
10.4.
Controlador de Movimento...................................................................................................85
10.4.1. Arquitectura do Controlador............................................................................................................... 86
11.
TESTES E RESULTADOS ................................................................................................................94
11.1.
Competições e Eventos .......................................................................................................94
11.2.
Testes e Ensaios .................................................................................................................94
11.2.1. Arranque e Movimento do Robô ........................................................................................................ 95
11.2.2. Execução de Trajectórias .................................................................................................................. 98
11.2.3. Procedimento de Calibração............................................................................................................ 100
11.2.4. Controlo de Disparo e Carga do Kicker ............................................................................................ 100
11.2.5. Conclusões..................................................................................................................................... 100
11.3.
Perspectivas de Desenvolvimento Futuro ..........................................................................101
CONCLUSÃO.........................................................................................................................................102
REFERÊNCIAS E BIBLIOGRAFIA ...............................................................................................................104
ANEXO 1 ..............................................................................................................................................106
DIÁRIO AS BEIRAS
21 MARÇO 2005.................................................................................................107
DIÁRIO AS BEIRAS
1 MAIO 2005 ......................................................................................................108
DIÁRIO DE COIMBRA
1 MAIO 2005....................................................................................................109
ANEXO 2 ..............................................................................................................................................110
ARTIGO ROBÓTICA2005
OMNIDIRECTIONAL DRIVE MODELLING AND R OBOT C ONSTRUCTION .................111
ANEXO 3 ..............................................................................................................................................117
CÓDIGO F ONTE DAS APLICAÇÕES DESENVOLVIDAS..................................................................................118
ANOTAÇÕES .........................................................................................................................................119
RACmotion – Robótica Académica de Coimbra
Página 6 de 119
Índice de figuras
Figura 1.1.1 – RoboCup 2004 Lisboa. ......................................................................................................................................11
Figura 1.2.1.1 – FIRA Cup 2004 Corea. ...................................................................................................................................12
Figura 1.2.2.1 – ASIMO Honda, RoboCup 2003 Pádua. ............................................................................................................13
Figura 1.2.2.2 – RoboCup 2004 Lisboa. ...................................................................................................................................14
Figura 1.3.1 – Ligas de Competição, RoboCup 2004 Lisboa. .....................................................................................................15
Figura 1.4.1 – RAC - Robótica Académica de Coimbra. ............................................................................................................15
Figura 1.5.1 – Festival Nacional de Robótica 2005....................................................................................................................16
Figura 1.6.1 – RoboCup SSL (Small Size League). ...................................................................................................................17
Figura 2.1 – Robocup: Sony Legged Robot League e Humanoid League. ..................................................................................18
Figura 2.1.1 – Sistema computacional de IA utilizado na Robocup99 para SSL. .........................................................................19
Figura 2.2.1 – Marcações coloridas utilizadas pela RAC............................................................................................................19
Figura 2.2.1.2 – Sistema computacional de IA utilizado na Robocup99 para SSL........................................................................20
Figura 2.2.2.1 – Sistema de Visão Local utilizado em diversos robôs destinados ao Futebol Robótico. ........................................21
Figura 3.3.1 – Sessão de palestras do Atelier Robótica. ............................................................................................................25
Figura 3.3.2 – Atelier laboratorial, demonstração RAC. .............................................................................................................26
Figura 3.3.3 – Páginas WEB do Atelier e projecto RACmotion. ..................................................................................................26
Figura 4.1.1 – Diagrama global da arquitectura de controlo. ......................................................................................................27
Figura 4.1.2 – Diagrama de sequência para a actualização de WM............................................................................................28
Figura 4.1.3 – Diagrama da arquitectura do agente robótico......................................................................................................28
Figura 4.1.4 – Exemplo de diagrama de sequência para as acções ao nível táctico do robô ........................................................29
Figura 4.1.5 – Exemplo de diagrama de sequência para a execução de uma acção básica.........................................................29
Figura 4.1.6 – Exemplos de informação e de acções de controlo ...............................................................................................29
Figura 5.1.1 – Estrutura do RACbot. ........................................................................................................................................32
Figura 5.1.2 – Plataforma em alumínio do RACbot....................................................................................................................33
Figura 5.2.1 – Fixação do PC na plataforma base do RACbot....................................................................................................33
Figura 5.2.2 – Fixação do disco FUJITSU na plataforma base do RACbot..................................................................................33
Figura 5.2.3 – Chapa de apoio de ligações ao RACbot..............................................................................................................34
Figura 5.2.4 – Extensão de ligação à fonte de alimentação da bancada. ....................................................................................34
Figura 5.2.5 – Inserção das baterias no RACbot. ......................................................................................................................35
Figura 5.2.6 – Rodas omnidireccionais adoptadas no RACbot. ..................................................................................................35
Figura 5.2.7 – Roda plástica e roda acrílica. .............................................................................................................................35
Figura 5.2.8 – Montagem do protótipo da RAC. ........................................................................................................................36
Figura 5.3.1 – Protótipo RACbot. .............................................................................................................................................37
Figura 6.1.1 – Módulos do PC/104 no RACbot..........................................................................................................................38
Figura 6.1.2 – Placa M570 da SECO para PC/104. ...................................................................................................................39
Figura 6.1.3 – Placa de programação I/O 4I65 da MESA para PC/104. ......................................................................................39
Figura 6.1.4 – Placa H-Bridge de 4 canais para ligação à placa 4I65..........................................................................................40
Figura 6.1.5 – Fonte de Alimentação V104 da TRI-M para PC/104.............................................................................................40
Figura 6.1.6 – Adaptador Compact Flash IDE CFADPT-CS da MESA para PC/104. ...................................................................40
Figura 6.2.1 – Adaptador Wireless USB da Edimax EW-7117U. ................................................................................................41
Figura 6.3.1 – Micro-motor DC de 12V série SR da Faulhaber. ..................................................................................................41
Figura 6.3.2 – Caixa de desmultiplicação para motores série SR da Faulhaber...........................................................................42
Figura 6.4.1 – Packs de baterias utilizadas no protótipo RACbot................................................................................................42
Figura 7.1.1 – Modelo Cinemático do RACbot. .........................................................................................................................43
Figura 7.1.2 – Desfasamento da roda....................................................................................................................................44
Figura 7.4.1 – Diversos tipos de robôs utilizados em Futebol Robótico. ......................................................................................46
Figura 8.2.1 – MATLAB - Simulink. ..........................................................................................................................................47
Figura 8.3.1 – Fase de implementação do Simulador RACbot. ..................................................................................................48
Figura 8.3.1.2 – Diagrama de Controlo do Simulador RACbot....................................................................................................49
Figura 8.3.2.1 – Simulação da trajectória do robô, set-point [7 1 1 0.5, 10 3 1 0, 12 6 1 -0.5, 11 9 1 0, 9 10 1 0.5].........................50
Figura 8.3.2.2 – Velocidade dos três motores segundo o set-point anterior.................................................................................50
Figura 8.3.2.3 – Variação dos parâmetros vx, vy e segundo o set-point anterior. ......................................................................51
Figura 8.3.2.4 – Orientação do robô ao longo do tempo segundo o set-point anterior. .................................................................51
Figura 8.3.2.5 – Animação vectorial efectuada pelo Simulador RACbot......................................................................................52
Figura 8.3.2.6 – Animação efectuada ao Simulador RACbot. .....................................................................................................52
Figura 8.3.3.1 – Rotação do referencial do robô em . ..............................................................................................................53
Figura 8.3.3.2 – Rotação do referencial do robô em utilizada na simulação..............................................................................53
Figura 8.3.3.3 – Simulação do movimento do robô, set-point [10 10 1 0.05, 10 0 1 0, 20 0 1 -0.1, 20 10 1 0]. ...............................54
Figura 8.3.3.4 – Simulação do movimento do robô, set-point [7 1 1 0.5, 10 3 1 0, 12 6 1 -0.5, 11 9 1 0, 9 10 1 0.5]. ......................54
Figura 8.3.3.5 – Simulação do movimento do robô, set-point [0.6 0 1 0, 0.6 0.4 1 0, 0 0.4 1 0, 0 0.2 1 0]. .....................................55
Figura 8.3.3.6 – Variação dos parâmetros vx, vy e bem como a variação das velocidades dos três motores. .............................55
Figura 9.1.1 – Desfasamento da roda....................................................................................................................................57
Figura 9.3.1 – Dependência entre desfasamentos em relação a uma determinada trajectória. .....................................................58
Figura 9.4.1 – Alterações efectuadas no simulador para simular o processo de calibração. .........................................................59
Figura 9.4.2 – Procedimento de calibração utilizando o simulador RACbot. ................................................................................60
Figura 10.1.3.1 – Sistema de desenvolvimento e teste. .............................................................................................................65
Figura 10.2.1.1 – Router wireless 802.11b................................................................................................................................69
Figura 10.2.1.2 – Sobreposição de canais no protocolo 802.11b................................................................................................71
Figura 10.2.3.1 – Nível inferior da arquitectura de controlo da RAC...........................................................................................74
Figura 10.2.5.1 – Configuração da rede sem fios. .....................................................................................................................81
Figura 10.3.1 – MESA 4i65......................................................................................................................................................82
Figura 10.3.2.1 – Interface gráfica de calibração DMCtune. ....................................................................................................... 83
Figura 10.3.3.1 – Fase de arranque no sistem a de desenvolvimento..........................................................................................84
Figura 10.4.1.1 – Arquitectura geral da aplicação de controlo ....................................................................................................86
Figura 10.4.1.2 – Diagrama de actividade da aplicação global ...................................................................................................87
RACmotion – Robótica Académica de Coimbra
Página 7 de 119
Figura 10.4.1.3 – Diagrama de actividade do processo 1...........................................................................................................88
Figura 10.4.1.4 – Diagrama de actividade do processo 2...........................................................................................................90
Figura 10.4.1.5 – Diagrama de actividade do controlo por comandos de velocidade ...................................................................91
Figura 10.4.1.6 – Diagrama de actividade do sistema de polling dos dados da câmara ...............................................................91
Figura 10.4.1.7 – Diagrama de actividade do controlo de trajectórias .........................................................................................92
Figura 10.4.1.8 – Diagrama de actividade do controlador de rotação..........................................................................................93
Figura 10.4.1.9 – Diagrama de actividade do controlador de carga do kicker ..............................................................................93
Figura 11.1.1 – Robótica 2005. ................................................................................................................................................94
Figura 11.2.1.1 – Testes de movimento efectuados ao robô (varias direcções num raio de 1.2m). ...............................................95
Figura 11.2.1.2 – Posição final do robô após a introdução do set-point C [0.6 1.03923 0.1 0].......................................................96
Figura 11.2.1.3 – Testes de movimento efectuados ao robô para os set-points H e L (vmed=1m/s)................................................96
Figura 11.2.1.4 – Testes de movimento efectuados ao robô para os set-points B e C (vmed=1m/s). ..............................................97
Figura 11.2.1.5 – Frente de ataque do robô. .............................................................................................................................98
Figura 11.2.2.1 – Execução de trajectórias. ..............................................................................................................................98
Figura 11.2.2.2 – Execução de trajectórias. ..............................................................................................................................99
Figura 11.2.2.3 – Trajectória utilizada nos testes efectuados ao robô .........................................................................................99
Figura 11.2.2.4 – Trajectória efectuada pelo robô ...................................................................................................................100
RACmotion – Robótica Académica de Coimbra
Página 8 de 119
Índice de tabelas
Tabela 10.1.4.1 – Ferram entas de sistema presentes em initrd..................................................................................................66
Tabela 10.2.1 – Pilha protocolar da plataforma RAC. ................................................................................................................69
Tabela 10.2.1.1 – Canais 802.11 e a sua disponibilidade em vários países. ...............................................................................71
Tabela 10.2.2.1 – Cabeçalho de um pacote IPv4. .....................................................................................................................73
Tabela 10.2.2.2 – Cabeçalho de um pacote TCP. .....................................................................................................................73
Tabela 10.2.3.2.1 – Estrutura da mensagem. ...........................................................................................................................74
Tabela 10.2.3.2.1.1.1 – Mensagem OpenSess. ........................................................................................................................75
Tabela 10.2.3.2.1.2.1 – Mensagem SessQuit. ..........................................................................................................................75
Tabela 10.2.3.2.1.2.2 – Condições de erro da mensagem SessQuit...........................................................................................76
Tabela 10.2.3.2.2.1.1 – Mensagem GiveState. .........................................................................................................................76
Tabela 10.2.3.2.2.2.1 – Mensagem SetVelocity. .......................................................................................................................76
Tabela 10.2.3.2.2.3.1 – Mensagem KickBall. ............................................................................................................................77
Tabela 10.2.3.2.2.4.1 – Mensagem Setdribbling. ......................................................................................................................77
Tabela 10.2.3.2.2.5.1 – Mensagem Halt. ..................................................................................................................................77
Tabela 10.2.3.2.2.6.1 – Mensagem SetTrajectory. ....................................................................................................................78
Tabela 10.2.3.2.2.7.1 – Mensagem SetParms. .........................................................................................................................78
Tabela 10.2.3.2.2.8.1 – Mensagem Position. ............................................................................................................................79
Tabela 10.2.3.2.3.1.1 – Mensagem State. ................................................................................................................................79
Tabela 10.2.3.2.3.2.1 – Mensagem GivePosition. .....................................................................................................................80
Tabela 10.3.3.1 – Funções implementadas para o carregador Linux ..........................................................................................85
Tabela 10.4.1.1 – Classificação dos comandos de controlo ....................................................................................................... 89
Tabela 10.4.1.2 – Influencia dos comandos nos controladores ..................................................................................................89
Tabela 11.2.1.1 – Conjunto de pontos utilizados no ensaio do movimento do robô......................................................................95
Tabela 11.2.1.2 – Cálculo da média das distancias das varias amostras aos pontos B e C..........................................................97
Tabela 11.2.2.1 – Conjunto de pontos utilizados no ensaio de uma trajectória do robô. ...............................................................99
RACmotion – Robótica Académica de Coimbra
Página 9 de 119
Introdução
O Futebol Robótico é um desafio para a Inteligência Artificial e Robótica em geral. No mundo
inteiro, o Futebol Robótico exerce um fascínio inexplicável sobre as pessoas. Um jogo de Futebol
Robótico pode ser visto como uma plataforma para incentivar o desenvolvimento tecnológico e o
desenvolvimento de conceitos científicos de diversas áreas do conhecimento humano. Para que uma
equipa de robôs efectivamente realize uma partida de futebol, diversas tecnologias e áreas do saber
devem ser desenvolvidas e integradas, como a Robótica, Inteligência Artificial, Visão Computacional,
Sistema de Comunicação e Processamento em Tempo Real, entre outras. Assim, um jogo de Futebol
Robótico constitui uma tentativa de estimular o desenvolvimento da Robótica Inteligente, fornecendo um
sistema dinâmico complexo, onde uma ampla gama de tecnologias pode ser integrada e testada.
O presente Projecto é intitulado RACmotion, um Projecto que tem como principal objectivo o
controlo da trajectória do movimento de um robô omnidireccional. O controlador a desenvolver será
utilizado nos robôs da RAC - Robótica Académica de Coimbra (equipa de futebol robótico do
DEEC) - que irá participar em competições oficiais da RoboCup SSL (Small-Size League).
O capítulo 1 apresenta o Futebol Robótico, descreve-o como um problema padronizado e
analisa o Estado da Arte. No capítulo 2 é introduzido todo um conjunto de problemas emergentes ao
Futebol Robótico. O RACmotion é introduzido no capítulo 3, onde são definidos os seus objectivos, bem
como, as suas motivações, promoções e divulgações. A arquitectura do sistema é descrita no capítulo 4.
Segue-se o capítulo 5 que descreve a plataforma do robô adoptada pela equipa da RAC, explicando a
sua evolução e alguns detalhes do seu desenvolvimento. O capítulo 6 aborda questões de hardware,
bem como, alguns componentes usados no robô. O capítulo 7 introduz os modelos cinemáticos
adoptados. De seguida, é apresentado no capítulo 8 o desenvolvimento do Simulador RACbot,
explicando o seu funcionamento e alguns dos seus objectivos, alguns testes e conclusões também são
descritos. A questão da calibração do robô é abordada no capítulo 9. A implementação do Sistema de
Controlo é descrita no capítulo 10. Finalmente, o capítulo 11 apresenta testes feitos ao sistema,
relatando alguns resultados obtidos. O relatório é finalizado com a apresentação das conclusões. Os
anexos são ilustrados no final.
RACmotion – Robótica Académica de Coimbra
Página 10 de 119
1. Futebol Robótico
Esta secção introduz o universo do Futebol Robótico. Primeiro, é apresentado o histórico sobre
o tema. A seguir, são identificadas as principais entidades mundiais que o organizam e promovem.
Posteriormente, é feita uma análise sobre o Futebol Robótico em Portugal, identificando algumas das
principais equipas, universidades, organizações e eventos existentes no país. Finalmente, o capítulo
termina com uma análise do estado da arte.
1.1. Histórico sobre Futebol Robótico
A ideia de robôs jogarem futebol foi mencionada, pela primeira vez, num artigo de 1992,
intitulado “On Seeing Robots” [MACKWORTH, 1993]. Neste artigo, o investigador descreve o uso do
Futebol Robótico para testar um sistema de visão robótica e desenvolver algoritmos de planeamento de
trajectórias e controlo de movimento. Nos três anos seguintes, a ideia foi-se popularizando e
amadurecendo no meio académico.
Em 1995, um grupo de investigadores japoneses da Osaka University [OSAKA] e do Sony
Computer Science Lab [SONYCSLAB], propõem utilizar o futebol robótico como novo problema-padrão
para a pesquisa na Inteligência Artificial e na Robótica. O anúncio é feito num artigo, “RoboCup: The
Robot World Cup Initiative” [KITANO, 1995], publicado na International Joint Conference on Artificial
Intelligence (IJCAI) de 1995. A IJCAI [IJCAI] é uma das principais conferências internacionais para
investigadores de Inteligência Artificial, que tem vindo a ser realizada a cada dois anos desde 1969.
Simultaneamente, o professor coreano Jong-Hwan Kim, do Korea Advanced Institute of Science and
Technology (KAIST) [KAIST], propõe a realização do Micro-Robot World Cup Soccer Tournament.
Finalmente, em 1996, foram realizados os primeiros campeonatos internacionais, na Corea e no
Japão. Desde então, equipas de futebol robótico surgiram em inúmeras universidades e centros de
investigação em todo o mundo. Actualmente, existem duas grandes federações que organizam e
promovem o Futebol Robótico: The RoboCup Federation (RoboCup) [ROBOCUP] e Federation of
International Robot-Soccer Association (FIRA) [FIRA]. Os seus objectivos são promover a pesquisa e o
desenvolvimento da inteligência artificial, robótica, visão computacional e muitas outras áreas do
conhecimento humano através do Futebol Robótico.
Figura 1.1.1 – RoboCup 2004 Lisboa.
Para atingir esse objectivo, tanto a FIRA como a RoboCup promovem, anualmente, competições
internacionais. Cada federação possui as suas próprias regras e categorias. Os robôs podem variar em
número, tamanho e forma. Algumas categorias incluem também robôs humanóides bípedes. O campo
de jogo e a bola podem ter tamanhos diferentes. De um modo geral, um jogo de futebol robótico
funciona da seguinte forma: deve existir um sistema de inteligência artificial para controlar os robôs; a
equipa também precisa de um sistema de visão para percepcionar o que está a ocorrer durante o jogo;
finalmente, existem os robôs propriamente ditos, que executam as acções determinadas pelo
controlador.
RACmotion – Robótica Académica de Coimbra
Página 11 de 119
A forma como estas três tarefas básicas podem ser desenvolvidas abrange uma ampla gama de
tópicos de pesquisa. Por exemplo, a Inteligência Artificial pode ser implementada utilizando Algoritmos
Genéticos, Redes Neurais ou Agentes Inteligentes [RUSSEL, 1995]. O Processamento de Imagens, por
sua vez, pode ser realizado através de diferentes métodos [GONZALEZ, 2002], tanto num sistema de
visão global, com a câmara colocada sobre o campo, como num sistema local, onde cada robô possui a
sua própria câmara. Finalmente, a concepção e construção dos robôs [VELOSO, 2000] envolve um
conhecimento substancial de Electrónica e Mecânica. Uma equipa de futebol robótico avançada
desenvolve investigação em diversas áreas, além daquelas que temos vindo a mencionar,
nomeadamente no sistema eléctrico dos robôs. O futebol de robótico pode então ser visto como uma
plataforma de pesquisa e desenvolvimento em diversas áreas, especialmente pela comunidade
académica.
1.2. Organizações Internacionais
A RoboCup e a FIRA são as duas maiores organizações internacionais que promovem o Futebol
Robótico. Estas federações realizam anualmente campeonatos mundiais, acompanhados de congressos
com publicações de artigos técnicos. De seguida a FIRA e RoboCup são apresentadas, analisando os
seus objectivos e dando uma visão geral sobre as suas categorias e regras de competição.
1.2.1. Fira
FIRA é a sigla de Federation of International Robot-soccer Association. Esta organização foi
estabelecida em 5 de Junho de 1997. O seu objectivo é “levar o espírito da ciência e da tecnologia ao
público em geral e à nova geração através do jogo de futebol robótico”. Nas palavras do idealizador e
criador da FIRA, o professor Jong-Hwan Kim, o futebol robótico pode ser visto como uma competição de
tecnologia robótica avançada, dentro de um espaço restrito. Ela oferece uma área desafiante para a
nova geração e para investigadores que trabalham com sistemas de robôs móveis autónomos.
Espera-se que, através destes eventos, se possa compreender melhor os conceitos científicos e os
avanços tecnológicos envolvidos. Os resultados das pesquisas desenvolvidas, irão ajudar certamente a
humanidade de diversas formas.
Figura 1.2.1.1 – FIRA Cup 2004 Corea.
A FIRA possui seis categorias, descritas a seguir. Maiores detalhes sobre as regras de cada
categoria podem ser encontrados em [FIRA].
•
•
•
HuroSot: Humanoid Robot World Cup Soccer Tournament. Utiliza robôs humanóides com duas
pernas. O tamanho máximo dos robôs é de 150 cm, pesando até 30 Kg.
KheperaSot: o jogo é disputado por duas equipas com apenas 1 robô cada. O robô é
totalmente autónomo, com sistema de visão local. O robô utilizado nesta categoria é o Khepera
[KTEAM], produzido por uma empresa suíça. A bola utilizada no jogo é uma bola de ténis
amarela. O tamanho do campo é de 130 cm x 90 cm.
MiroSot: Micro Robot World Cup Soccer Tournament. Nesta categoria, a partida é disputada por
duas equipas, cada uma composta por três robôs, sendo que um deles pode ser o guarda-
RACmotion – Robótica Académica de Coimbra
Página 12 de 119
•
•
•
redes. É permitido o uso de apenas um computador para controlar os robôs de uma equipa. De
acordo com as regras, o volume ocupado pelo robô não pode exceder um cubo de aresta igual a
7,5 cm. A bola utilizada na partida é uma bola de golfe laranja. O tamanho do campo é de
150 cm x 130 cm para a Small League e de 220 cm x 180 cm para a Middle League.
NaroSot: a partida é disputada por duas equipas, cada uma composta por cinco robôs, podendo
um deles ser o guarda-redes. É permitido apenas um computador para controlar cada equipa. O
tamanho máximo de cada robô é de 4 cm x 4 cm x 5,5 cm. É utilizada uma bola de ping-pong
laranja. O tamanho do campo é de 130 cm x 90 cm.
RoboSot: nesta categoria, a partida é disputada por duas equipas, cada uma composta por um
a três robôs. Um dos robôs pode ser o guarda-redes. Cada robô pode ser totalmente
independente ou semi-autónomo. O tamanho máximo dos robôs é de 20 cm x 20 cm x 40 cm. A
bola utilizada no jogo é uma bola de ténis amarela. O tamanho do campo é de 220 cm x 180 cm.
SimuroSot: categoria de simulação de Futebol Robótico. Composta por um servidor que simula
o ambiente do jogo de futebol (campo de jogo, robôs, bola, etc.) e por dois programas clientes
com as estratégias de jogo de cada equipa. A partida é visualizada numa tela gráfica. As
equipas podem criar as suas próprias estratégias e competir uns com os outros sem utilizar um
hardware específico. Os jogos podem ser disputados por equipas de 5 ou 11 jogadores cada.
1.2.2. RoboCup
A RoboCup é uma iniciativa internacional, promovida pela comunidade científica na área da
Robótica, que procura servir-se do futebol para desenvolver actividades de investigação na área da
Robótica Móvel Inteligente, bem como estimular o ensino da Robótica junto de jovens estudantes dos
níveis de ensino secundário e superior. Organiza regularmente competições internacionais
(campeonatos europeus e mundiais), promovendo assim a troca científica de ideias a nível mundial
[RAC].
Figura 1.2.2.1 – ASIMO Honda, RoboCup 2003 Pádua.
Para o desenvolvimento de uma equipa de futebol robótico é necessário um elevado conjunto
de tecnologias. Desta forma, a investigação em futebol robótico e a competição internacional
associada – RoboCup – atraíram a participação regular de algumas das melhores empresas,
laboratórios de investigação e universidades mundiais, incluindo a Sony, Honda, SGI, Philips, GMD e as
universidades de Carnegie Mellon, Cornell, Freiburg, Karlsruhe, UNSW, Tsinghua, entre outros.
A RoboCup traz consigo um objectivo bastante ambicioso: defrontar em 2050 uma equipa de
futebol humana. Trata-se de um objectivo difícil de atingir. Mas com a manifestação e desenvolvimento
de pequenas iniciativas como a RAC, estamos a lutar por uma comunidade tecnológica cada vez maior,
que leva a um acentuado crescimento do poder de inovação e da ciência.
RACmotion – Robótica Académica de Coimbra
Página 13 de 119
Figura 1.2.2.2 – RoboCup 2004 Lisboa.
A RoboCup possui três grandes ligas: RoboCupSoccer, RoboCupRescue e RoboCupJunior.
A RoboCupRescue envolve a aplicação de robôs em situações práticas. Cada ano é lançado um desafio
diferente, como por exemplo, o resgate de vítimas num cenário de destruição urbana causada por um
terramoto. Já a liga RoboCupJunior foi criada para públicos jovens e envolve competições com robôs
comerciais, que podem ser comprados prontos a usar. A RoboCupSoccer, por sua vez, possui cinco
categorias diferentes, descritas a seguir. Maiores detalhes sobre as regras de cada categoria e das
demais ligas pode ser encontrada em [ROBOCUP]. As categorias são:
•
•
•
•
•
Simulation League: Futebol de Robôs simulados.
Small Size Robot League (F-180): composta por duas equipas de até cinco robôs cada. Os
robôs utilizados nesta categoria devem caber dentro de um cilindro de 18 cm de diâmetro e
22,5 cm de altura. Podem ser completamente autónomos, ou podem ser controlados por um
computador central que utiliza uma rede de computadores para os controlar. O tamanho do
campo é de 490 cm x 340 cm. É utilizada uma bola de golfe cor-de-laranja.
Middle Size Robot League (F-2000): composta por duas equipas com o mínimo de 7 e, no
máximo, 11 jogadores, sendo um deles o guarda-redes. O tamanho de cada robô é tal que a
sua projecção no chão deve caber dentro de um quadrado de 50 cm de lado. O peso máximo de
cada robô é de 40 kg. O tamanho do campo é de 1200 cm x 800 cm.
Sony Legged Robot League: possui duas equipas, cada uma composta por 4 jogadores,
incluindo o guarda-redes. Os robôs utilizados são os “cãezinhos” AIBO da Sony [AIBO]. O jogo é
composto por dois tempos de 10 minutos cada.
Humanoid League: são utilizados robôs humanóides ou antropomórficos compostos por duas
pernas, dois braços, um tronco e uma cabeça. É utilizada uma bola de futebol oficial da
Federação Internacional de Futebol Associação (FIFA). O tamanho dos robôs e do campo varia
conforme as sub-categorias desta liga.
1.3. Ligas de Competição
Conforme foi descrito anteriormente, o futebol robótico inclui diversas ligas que se dividem em
dois tipos: ligas robóticas (robôs pequenos, médios, “cães” e humanóides) e a liga de simulação.
Cada liga tem um conjunto próprio de desafios de investigação, com ênfase em determinados
tópicos necessários para colocar uma equipa de robôs a disputar uma partida de futebol. A liga de robôs
pequenos da RoboCup (Small Size League) é a liga que abrange o nosso projecto. Trata-se de uma liga
que realça a dinâmica e a velocidade destes robôs devido à sua leve e compacta constituição. Para
além de limitados no tamanho (diâmetro máximo de 18 cm e altura máxima de 22,5 cm) possuem
também limitações na capacidade sensorial e de processamento, levando a comportarem-se como
simples actuadores no sistema de jogo em si. Com regras estabelecidas para cumprir, esta liga
caracteriza-se por gerar grande espectáculo entre os participantes e a competição em si, mas nunca
esquecendo o seu valor cientifico.
Para além de outras ligas de igual importância, que se conjugam entre si, como é o caso da liga
de simulação, devemos realçar que os desafios no domínio do futebol robótico são muito superiores aos
desafios colocados por alguns problemas standard da Inteligência Artificial, como o xadrez. No futebol
robótico o mundo é dinâmico, parcialmente inacessível aos robôs virtuais, contínuo, não determinístico,
multi-objectivo, parcialmente cooperativo e adverso.
RACmotion – Robótica Académica de Coimbra
Página 14 de 119
Figura 1.3.1 – Ligas de Competição, RoboCup 2004 Lisboa.
As diversas ligas da RoboCup foram projectadas de forma a contemplarem um conjunto elevado
de complexidades, mantendo o custo e a dimensão do problema acessível aos grupos de investigação
em Robótica e Inteligência Artificial.
Os problemas de investigação colocados pela RoboCup, cobrem uma vasta área nos domínios
da Robótica e IA. Incluem, entre outras, a coordenação, a cooperação e comunicação multi-agente, as
arquitecturas de agentes inteligentes, a aprendizagem, o planeamento em tempo-real, a decisão
estratégica e táctica, o comportamento reactivo, a visão, o processamento e análise de imagem, o
controlo, os sistemas de locomoção, os sistemas sensoriais, a fusão sensorial em tempo-real, a
navegação e o controlo robótico [RAC].
O desafio associado à RoboCup é estimulante do ponto de vista científico, colocando um vasto
conjunto de problemas aos investigadores das diversas áreas científicas mas, simultaneamente,
atraente para o público em geral e para os meios de comunicação social.
O sucesso duma competição como a RoboCup reside fundamentalmente no desenvolvimento
de metodologias de coordenação que lhes permitem trabalhar em conjunto de forma harmoniosa no
sentido de atingir os seus dois objectivos principais: marcar golos na baliza adversária e evitar sofrer
golos na sua baliza. A coordenação é desta forma uma das áreas de investigação essenciais no
contexto da RoboCup e um factor crucial para o sucesso de uma equipa nas competições internacionais
realizadas neste âmbito.
1.4. RAC
Robótica Académica de Coimbra
A RAC – Robótica Académica de Coimbra – é um projecto do Departamento de Engenharia
Electrotécnica e de Computadores [DEEC] da Faculdade de Ciências e Tecnologia da Universidade de
Coimbra [FCTUC], que envolve alunos, investigadores e docentes desta instituição. É apoiado pela
FCT – Fundação para a Ciência e Tecnologia [FCT], ao abrigo do projecto de investigação
POSI/ROBO/43890/2002. Tem como objectivo principal formar e desenvolver uma equipa de futebol
robótico dinâmica e competitiva, que possa representar o DEEC da FCTUC em competições da liga de
robôs pequenos da RoboCup (SSL – Small Size League) [RAC].
Figura 1.4.1 – RAC - Robótica Académica de Coimbra.
RACmotion – Robótica Académica de Coimbra
Página 15 de 119
O sucesso dum projecto como a RAC traz sempre alguns benefícios para a instituição que
abraça, bem como para o país em geral. Promovida por alunos, investigadores e docentes na área da
Robótica, procura servir-se do futebol para desenvolver actividades de investigação na área da Robótica
Móvel Inteligente, bem como estimular o ensino da Robótica junto de jovens estudantes.
1.5. Futebol Robótico em Portugal
O Futebol Robótico é uma novidade no mundo inteiro. Muitas das investigações estão ainda em
regime de iniciação e muitos avanços tecnológicos estarão para vir. Portugal não foge à regra e também
possui equipas de Futebol Robótico, organizando todos os anos eventos que visam mostrar e
apresentar algumas das tecnologias nesta área.
Paralelamente à RoboCup, o Festival Nacional de Robótica é já um marco importante no nosso
país. A primeira edição realizou-se em 2001 na cidade de Guimarães e, com o passar dos anos, tem
vindo a ganhar destaque. Trata-se de um encontro anual de estudantes, professores e investigadores
que visa o desenvolvimento da ciência e do conhecimento. Paralelamente à parte lúdica e competitiva,
existe sempre um encontro cientifico, aberto a participantes e investigadores através da publicação de
artigos. A Robótica é o tema principal, no entanto, a divulgação de outras áreas tem vindo a ser visível.
A arte e o espectáculo são vividos com grande entusiasmo através dos seus participantes.
A última edição, em 2005, decorreu em Coimbra, nas instalações do Departamento de
Engenharia Electrotécnica e de Computadores da Faculdade de Ciências e Tecnologia da Universidade
de Coimbra. A RAC, estando em fase de evolução e preparação para as competições, teve um
contributo importante na realização e promoção do evento. O objectivo era estimular o gosto pela
ciência e pela tecnologia junto das camadas jovens, através de um ambiente de competição e convívio.
Figura 1.5.1 – Festival Nacional de Robótica 2005.
São iniciativas que juntam centenas de estudantes e investigadores não só das principais
universidades portuguesas com actividades na área da robótica, como também as escolas secundárias
e profissionais de todo o país.
Em 2004, foi também realizada a RoboCup em Lisboa, que é a mais importante competição
internacional de Futebol Robótico. Portugal cresce assim nesta área tão importante que é a Robótica.
1.6. Estado da Arte
A evolução do Estado da Arte em Futebol Robótico pode ser observada anualmente, durante os
campeonatos mundiais da FIRA e da RoboCup. Ao fazer uma análise das competições, verifica-se que
as equipas pioneiras, que participaram nos primeiros jogos, são bem menos sofisticadas que as equipas
mais recentes, tanto em termos de software, como de hardware.
Analisando as equipas que participaram nas primeiras edições dos campeonatos mundiais,
constata-se que alguns dos primeiros robôs possuíam apenas mecanismos de locomoção. Não havia
RACmotion – Robótica Académica de Coimbra
Página 16 de 119
mecanismos de domínio sobre a bola ou de chuto. Muitas vezes a estratégia da equipa era
simplesmente amontoar os jogadores na área de defesa e empurrar a bola para o campo do adversário,
marcando golo, se possível. De um modo geral, o funcionamento dessas primeiras equipas era: o
sistema de reconhecimento de imagens enviava os dados referentes às posições dos robôs e da bola,
para um programa que calculava todos os caminhos possíveis para essa configuração de jogo. Esses
dados eram processadas num sistema central que, tomando decisões estratégicas determinava quais os
movimentos a realizar pelos robôs. A comunicação com os robôs era realizada remotamente.
Com o passar dos anos, os sistemas de visão computacional e a tomada de decisões
estratégicas começaram a ser incorporados nos robôs, transformando-os em verdadeiros jogadores
autónomos. As equipas mais recentes apresentam muitas inovações electromecânicas e estratégias de
controlo bem mais sofisticadas e eficientes. Um bom exemplo é a equipa Big Red da Cornell University
[CORNELL]. Esta equipa já foi várias vezes campeã na categoria de robôs pequenos (SSL – Small Size
League) da RoboCup. Os novos robôs desta equipa possuem um sistema de direcção construído com
uma combinação de três pares de rodas e uma frente de ataque com maior abertura [D’ANDREA, 2001].
Esse sistema proporciona uma grande liberdade de movimentos aos robôs, para além duma capacidade
de aceleração superior. O mecanismo de chuto dos robôs da Big Red também representa um grande
avanço do Estado da Arte. Esse novo mecanismo permite que o robô mantenha um domínio efectivo
sobre a bola e, também, viabiliza a realização de passes eficientes. Graças a essas inovações de
hardware, foi possível obter grandes avanços no software. As novas estratégias utilizam jogadores que
cooperam entre si, realmente formando uma equipa, ao invés de simplesmente cada jogador chutar
cegamente para marcar golo ou defender o seu campo. Assim, além de evitar colisões e encontrar
caminhos, o sistema de estratégia passa a manipular a partida de tal forma a criar situações favoráveis
para a vitória, através de dribles, passes e de posicionamento estratégico dos jogadores em campo.
Novos sistemas que analisam o comportamento da equipa adversária para tentar antecipar as suas
jogadas estão também a ser desenvolvidos.
Figura 1.6.1 – RoboCup SSL (Small Size League).
Finalmente, salienta-se que o objectivo das competições e, portanto, das equipas que participam
delas, não é vencer o jogo, mas sim desenvolver ciência e tecnologia. Os artigos publicados durante os
eventos promovidos pela FIRA e RoboCup servem como referência para que todas as equipas possam
desfrutar dos avanços obtidos, ajudando a elevar o estado da arte em Futebol Robótico. Afinal, quem
revela o segredo do seu sucesso, obriga-se a desenvolver algo ainda melhor para o próximo
campeonato. Atitudes como a da equipa Big Red, que compartilha os seus conhecimentos e
tecnologias, demonstram o espírito desportivo que existe por detrás do Futebol Robótico.
RACmotion – Robótica Académica de Coimbra
Página 17 de 119
2. Problemas emergentes ao Futebol Robótico
Os maiores avanços da Inteligência Artificial foram obtidos através da investigação em
problemas padronizados. Os jogos, de um modo geral, constituem um bom domínio para a exploração
da inteligência das máquinas. Talvez o melhor exemplo seja o jogo de Xadrez. Grandes nomes da
computação, como Alan Turing e Charles Babbage, conceberam programas para jogar xadrez. Ou seja,
a ideia de que computadores poderiam competir em jogos é tão antiga quanto os próprios
computadores. Assim, a investigação em jogos levou à descoberta de diversos algoritmos de busca
poderosos, que podem ser aplicados noutras áreas, além do jogo em si. No xadrez, por exemplo, podese aplicar o algoritmo minimax [RICH, 1988]. Este algoritmo gera uma árvore com os movimentos
possíveis e busca maximizar a possibilidade de vitória, ao mesmo tempo que minimiza as hipóteses do
adversário.
Figura 2.1 – Robocup: Sony Legged Robot League e Humanoid League.
Os jogos são interessantes para a investigação da Inteligência Artificial porque possuem regras
bem definidas, além de ser fácil medir o sucesso ou fracasso. Além disso, eles despertam um interesse
muito grande. O Futebol Robótico, por sua vez, exerce um fascínio inexplicável sobre as pessoas,
especialmente sobre o público jovem. Além de ser um desafio intelectual programar ou competir com a
máquina, ainda existe a interacção física com os robôs. Ao contrário do xadrez e outros jogos em que os
movimentos são realizados em jogadas, onde um jogador espera que o outro faça um movimento, o
Futebol Robótico acontece em tempo real. Adicionalmente, por abranger o mundo físico real, incorpora
toda a complexidade e problemas inerentes da realidade, sendo um sistema altamente dinâmico.
Portanto, ruído, sincronismo, desgaste, imprecisão, falhas físicas, entre outros factores, fazem parte da
equação.
Consequentemente, muitos dos algoritmos desenvolvidos para jogos são inúteis no Futebol
Robótico, apesar de serem extremamente eficientes para o xadrez e afins. Um jogo de Futebol Robótico
possui regras bem definidas. Basicamente, utilizam-se as mesmas regras de um jogo de futebol com
jogadores humanos, mas com algumas modificações referentes ao tamanho do campo, número de
jogadores, duração do jogo, etc. E, assim como nos demais jogos utilizados em IA, é fácil medir o
sucesso ou fracasso: ganha a equipa que marcar mais golos. Entretanto, ao contrário de jogos que
constituem apenas uma tarefa abstracta, o Futebol Robótico incorpora todas as dificuldades intrínsecas
da solução de problemas do mundo real.
São inúmeras as áreas de investigação e pesquisa que podem ser realizadas com o Futebol
Robótico. Devido ao grande número e diversidade das tecnologias envolvidas no desenvolvimento de
uma equipa de futebol robótico, são muitas as áreas que podem ser abordadas por um projecto de
pesquisa deste tipo. Nas secções seguintes, serão analisadas as áreas nas quais o Futebol Robótico
pode ser utilizado como uma plataforma de estudos e testes dentro da Ciência da Computação. Assim,
serão abordados problemas de Inteligência Artificial, Visão Computacional, Tolerância a Falhas,
Engenharia de Software e Processamento Distribuído.
RACmotion – Robótica Académica de Coimbra
Página 18 de 119
2.1. Inteligência Artificial
A Inteligência Artificial é utilizada na tomada de decisões estratégicas, definindo o
comportamento dos jogadores (robôs). Ela interpreta os dados fornecidos por sensores e é responsável
pelo controlo dos jogadores.
Figura 2.1.1 – Sistema computacional de IA utilizado na Robocup99 para SSL.
São muitas as áreas da IA que podem ser estudadas através do futebol robótico. Por exemplo,
como cada equipa possui vários jogadores independentes um do outro, pode-se considerar cada robô
como um agente e utilizar um sistema multiagentes [BARONE, 2003] para implementar o sistema de
inteligência artificial. Da mesma forma, pode-se considerar a equipa como uma população de indivíduos
e utilizar-se algoritmos genéticos [RUSSEL, 1995] para controlar os robôs. Uma vez que cada robô é
dotado de um poder de processamento embebido, pode-se implementar uma rede neural em cada robô.
Adicionalmente, cada robô possui sensores e actuadores sobre o meio, além de capacidade de
comunicação remota. Assim, é possível fazer com que o sistema de multiagentes seja cooperativo. A
rede neural, por sua vez, pode ser implementada num computador central, que controle o sistema como
um todo e envia comandos via rádio para os robôs.
2.2. Visão Computacional
Num sistema de futebol robótico, a visão computacional realiza o processamento de imagens. O
sistema deve realizar o reconhecimento do campo, da bola e dos jogadores das duas equipas
envolvidas numa partida. Cada robô possui uma cobertura de cor predominantemente preta, com
marcações coloridas que distinguem uma equipa da outra. Opcionalmente, cada robô pode possuir
marcações adicionais, para diferenciar um robô específico dos demais.
Figura 2.2.1 – Marcações coloridas utilizadas pela RAC.
RACmotion – Robótica Académica de Coimbra
Página 19 de 119
Basicamente, o reconhecimento de imagens funciona da seguinte maneira: uma imagem
estática é capturada através de uma câmara de vídeo; é realizado um reconhecimento de cores, para
identificar a cor da bola, cada uma das equipas e, opcionalmente, alguma cor de marcação adicional
para a diferenciação dos jogadores; finalmente, é executado um reconhecimento de formas, para
distinguir os robôs da bola e filtrar eventuais ruídos. Ou seja, o reconhecimento de imagens dá-se
através de dois passos básicos: diferenciação de cores e reconhecimento de formas. Assim, podem ser
utilizadas duas abordagens, descritas a seguir.
2.2.1. Visão Global
Na visão global, uma câmara é colocada a uma determinada altura sobre o campo de jogo. Esta
altura pode variar conforme a regra da competição específica e o tamanho do campo. Dessa forma, as
imagens capturadas por esta câmara possuem uma visão global da situação do campo. O vídeo é então
enviado para um computador central, que realiza o reconhecimento de imagens e envia essas
informações para todos os robôs ou, conforme a abordagem utilizada pela Inteligência Artificial, para um
programa central.
Figura 2.2.1.2 – Sistema computacional de IA utilizado na Robocup99 para SSL.
Neste tipo de visão, apesar de ocorrerem sempre eventuais ruídos na imagem capturada,
dificilmente um dos objectos a ser reconhecido estará obstruído ou ocultado por outro. Adicionalmente, o
plano imagem é paralelo ao plano onde a bola se move (campo de jogo), o que facilita o reconhecimento
de formas. Uma vez que não é necessário levar a profundidade de um objecto em consideração, podese dizer que o reconhecimento de formas é bidimensional (2D).
2.2.2. Visão Local
Neste sistema de visão, cada robô possui uma (ou mais) câmaras embebidas. Não existe uma
visão global directa da posição da bola e de todos os robôs. Existe antes um conjunto de visões
individuais da situação de jogo de cada robô. Obviamente, a partir destas informações, é possível
calcular a situação global do sistema. Entretanto, tal processamento é bastante sofisticado e as
dificuldades são enormes. Por exemplo, para realizar o reconhecimento da bola, além de diferenciar a
sua cor e reconhecer a sua forma, será necessário, ainda, considerar a sua proximidade em relação ao
robô. Conforme varia a distância entre a bola e robô, o tamanho com que a bola aparece na imagem
também será variado. O mesmo problema também ocorre para o reconhecimento dos robôs. Esta é
apenas uma das dificuldades encontradas num sistema de visão local que, muitas vezes, não existe
num sistema global.
RACmotion – Robótica Académica de Coimbra
Página 20 de 119
Figura 2.2.2.1 – Sistema de Visão Local utilizado em diversos robôs destinados ao Futebol Robótico.
Outra dificuldade é a determinação da posição exacta de cada objecto reconhecido. Quando a
visão é local, a bola e os demais jogadores identificados têm a sua posição reconhecida em relação ao
robô que capturou a imagem. Mas qual é a posição deste robô em questão? A sua posição pode ser
obtida, por exemplo, através de uma triangulação com as imagens reconhecidas pelos outros robôs da
sua equipa, num sistema ainda completamente distribuído e descentralizado, mas no qual todos os
robôs trocam informações entre si, para a obtenção da situação global do sistema. Entretanto, nada
garante que este robô aparecerá na imagem capturada pelos outros robôs da sua equipa. E, ainda que
apareça, o mesmo pode estar obstruído por outro robô ou parcialmente bloqueado, impedindo assim o
seu reconhecimento. Adicionalmente, a imagem capturada por um robô pode estar vazia, isto é, não
possuir nenhum objecto para ser reconhecido.
A determinação da posição exacta da bola e de cada robô pode ser obtida através do
seguimento de cada jogador. Para isso, cada robô deve ser equipado com sensores nas suas rodas ou
motores para que seja possível monitorizar o seu movimento e saber, num dado momento, o quanto o
robô em questão se deslocou. Mais uma vez, a variedade de tecnologias e integração entre as
diferentes áreas de estudo está presente.
Entretanto, é extremamente difícil realizar um rastreamento preciso. Como existe atrito e,
adicionalmente, ocorrem colisões entre os robôs, implementar um sistema de rastreamento local que
seja confiável, apenas com sensores nas rodas ou motores torna-se difícil. Mesmo que, utilizando outros
tipos de sensores, seja possível realizar o rastreamento dos robôs da equipa, o problema de localização
ainda persiste para os robôs da equipa adversária, uma vez que não são trocadas informações com os
mesmos.
Por todas estas razões, é muito mais difícil realizar o reconhecimento local de imagens, em
comparação com a abordagem global. E o aumento da dificuldade, ocasionado pela escassez de
informação, não se restringe ao sistema de Visão Computacional. Como não existe um reconhecimento
de imagens global da situação do jogo, a Inteligência Artificial terá que tomar as suas decisões
estratégicas baseadas em informações locais e possivelmente incompletas.
Entretanto, a visão local possui também algumas vantagens. Como não existe nenhum
computador central que processe a imagem global e envie as informações para os robôs, o sistema
pode ser completamente distribuído, não existindo nenhuma dependência centralizada, ou um ponto
único de falha. Dessa forma, outras áreas como Tolerância a Falhas e Processamento Distribuído
podem implementar sistemas muito mais robustos e eficientes.
Salienta-se que a visão computacional para o Futebol Robótico não precisa, necessariamente,
restringir-se à imagens capturadas por câmaras de vídeo. Pode-se utilizar uma variedade de outros
sensores ou ainda uma combinação de diversos sensores. Por exemplo, é possível utilizar a tecnologia
de sonares no futebol de robôs. O sonar emite uma sequência de ondas acústicas numa determinada
frequência; conforme essas ondas são reflectidas por um determinado objecto, é possível determinar a
sua posição e forma. Deste modo, a identificação de cada robô deixaria de depender do reconhecimento
de cores e passaria a reconhecer a sua forma, ou seja, envolveria um campo de estudo e pesquisa
completamente diferente. Da mesma forma, um sensor de calor poderia ser utilizado. Assim, o
reconhecimento de cada robô seria feito pela sua assinatura térmica, e não mais pela sua marcação em
cores. Caso algum desses sensores não seja muito adequado para uma determinada tarefa, pode-se
utilizar ambos, cada um executando a tarefa que realiza com maior eficiência.
RACmotion – Robótica Académica de Coimbra
Página 21 de 119
2.3. Tolerância a Falhas
O objectivo da Tolerância a Falhas não é evitar que as falhas ocorram mas, na ocorrência de
uma falha, esforçar-se ao máximo para que aquela não ocasione um erro. Assim, no Futebol Robótico,
um ambiente abundante em hardware e software potencialmente susceptíveis a falhas, a Tolerância a
Falhas pode aumentar a confiabilidade do sistema, podendo significar a diferença entre a vitória ou a
derrota!
O hardware, devido ao seu desgaste físico natural, ou decorrente do uso, pode falhar. Qualquer
peça de hardware possui uma vida útil. Adicionalmente, a utilização de materiais inadequados pode
ocasionar o seu mal funcionamento. E mesmo com componentes de boa qualidade, defeitos de
montagem ou fabricação podem vir a gerar mais falhas. Finalmente, o hardware ainda pode conter
falhas de projecto. Ou seja, o hardware é altamente propenso a falhas.
O software, por sua vez, existe numa realidade completamente diferente. Não existe desgaste
de software [PRADHAM, 1996]. Ao produzir várias “unidades” de um mesmo programa, não existirão
falhas de “fabricação”, como ocorre na reprodução do hardware. Quando uma cópia de um software cujo
original funciona se apresenta corrompida, o defeito está no suporte usado para o armazenar, não no
software. O software não sofre desgaste com o tempo.
Saliente-se que o software pode existir sem o hardware. De facto, cada vez mais se escreve
softwares muito antes que qualquer hardware computacional tenha sido construído. A Máquina de
Turing [TURING, 1936], idealizada por Alan Turing em 1936, é universalmente aceite e reconhecida
como a formalização de algoritmo [DIVERIO, 1999]. Ela é capaz de realizar qualquer função
computável, ou seja, o seu poder computacional é equivalente a qualquer computador moderno.
Softwares que solucionam diversos problemas foram escritos para esta máquina. Entretanto, a máquina
em si, nunca foi construída.
Quando um software apresenta algum defeito, o erro pode ter ocorrido em três situações
distintas: falha durante o projecto do software; falha durante a implementação do software; ou uma falha
de hardware que provocou uma falha no software.
Assim, no Futebol Robótico, diversas abordagens de Tolerância a Falhas podem ser exploradas
e testadas. Por exemplo, pode-se implementar mecanismos de hardware para aumentar a Tolerância a
Falhas dos robôs, como o uso de componentes redundantes que entrariam em operação apenas no
caso de falha de uma peça. Outra opção é a implementação de mecanismos de software para
compensar a falha de hardware: caso um dos motores do robô pare de funcionar, por exemplo, o
software deve ser capaz de controlar um robô com um motor a menos, levando em consideração
velocidade e habilidade de movimentação reduzidas. Finalmente, pode-se implementar mecanismos de
software para lidar com falhas do próprio software: caso um programa bloqueie, outra versão do
programa executando em paralelo assumiria as suas funções.
2.4. Engenharia de Software
Numa equipa de Futebol Robótico, na qual estão envolvidas várias áreas de conhecimento, a
correcta integração das tecnologias desenvolvidas nas diferentes especialidades num único sistema é
crítico para o funcionamento eficiente do conjunto. Devido à sua complexidade, o desenvolvimento e
implementação de um sistema de Futebol Robótico é dividido em módulos. Cada módulo fica
encarregado de solucionar uma parte específica do problema. Assim, temos os módulos de Inteligência
Artificial, Visão Computacional, Comunicação, etc, tantos quanto forem necessários para uma
abordagem completa do sistema.
Independentemente da implementação final do sistema, a Engenharia de Software é
responsável pela determinação do fluxo de dados entre os diversos módulos, possibilitando a
comunicação correcta entre as diferentes partes do sistema. O sistema final pode ser implementado por
um ou mais programadores, utilizando diferentes paradigmas de programação (Orientada a Objectos,
Programação Estruturada, Funcional, Lógica, etc.). O resultado, pode ser na forma de um único grande
programa executável, ou em vários programas menores comunicando entre si. A comunicação, por sua
vez, pode ocorrer através de uma rede, ou pode ser feita num único computador, através de funções do
sistema operativo. Inclusive, pode-se ter um conjunto de programas em que cada um executa num
sistema operativo diferente. Entretanto, com uma boa engenharia de software, torna-se desnecessário
RACmotion – Robótica Académica de Coimbra
Página 22 de 119
que o programador de um módulo entenda ou tenha que alterar o código de outro módulo para que seu
programa possa comunicar e funcionar com outro.
Portanto, o projecto do software de uma equipa de Futebol Robótico, constitui uma óptima
plataforma para o teste de diferentes metodologias da Engenharia de Software, ou mesmo, para o
desenvolvimento de novas abordagens. Afinal, o Futebol Robótico não envolve apenas a programação
de computadores convencionais, mas inclui todo um sistema de hardware e, software embebido.
2.5. Processamento Distribuído
No Futebol Robótico, os programas de inteligência artificial e visão computacional exigem muito
poder de processamento. Assim, quanto mais rápida for a CPU (Central Processing Unit), melhor o seu
desempenho. Entretanto, por mais potente que seja o processador, a execução desses dois programas
num mesmo computador terá um desempenho pior do que se cada sistema executasse num
computador separado, com toda a CPU disponível para cada programa. Assim, o Processamento
Distribuído é utilizado no Futebol Robótico para melhorar o desempenho do sistema, através da
execução de partes pesadas do sistema em computadores distintos.
RACmotion – Robótica Académica de Coimbra
Página 23 de 119
3. RACmotion
Este capitulo apresenta o RACmotion [RACMOTION], o nosso Projecto de Final de Licenciatura.
O RACmotion tem o objectivo de oferecer uma solução para o controlo da trajectória do movimento de
um robô omnidireccional, definindo toda a sua estrutura e finalidades. Inicialmente, são introduzidos os
seus principais objectivos e por fim é descrita a sua motivação, bem como, toda a promoção efectuada e
desenvolvida em seu redor e, da entidade que o abraça, a RAC.
3.1. Objectivos
O objectivo deste projecto, consiste no controlo da trajectória do movimento de um robô
omnidireccional. O controlador a desenvolver será utilizado nos robôs da RAC que irão participar
eventualmente em competições oficiais da RoboCup SSL (Small-Size League). Esta liga de competição
caracteriza-se pela grande dinâmica dos robôs, que são de reduzidas dimensões e limitados no peso,
para poderem ter grandes acelerações.
Cada robô da RAC dispõe de uma configuração mecânica constituída por três motores, que
torna possível o movimento omnidireccional, ou seja, o robô não tem que se virar antes de se deslocar
para um ponto no espaço. Especificada a trajectória, o controlador a desenvolver terá de controlar o
robô durante a execução do movimento, em tempo-real e em malha fechada, enviando comandos de
velocidade para o robô e usando o sinal do sensor de visão global para realimentar o controlo.
No âmbito deste trabalho, será também desenvolvido software para decompor cada comando de
velocidade enviado à camada operacional do robô em comandos individuais de velocidade para os três
motores de tracção. Será desenvolvido um modelo cinemático do robô omnidireccional, bem como o
procedimento de identificação e calibração dos respectivos parâmetros.
Inserido nos objectivos gerais do projecto RAC, podemos dizer que este trabalho terá valor e
importância acrescentada pois, em conjunto com outros projectos efectuados na área, poderá levar em
frente o crescimento dos objectivos da RAC, a formação e o desenvolvimento de uma equipa de futebol
robótico dinâmica e competitiva, que possa representar o DEEC em competições nacionais e
internacionais.
Finalmente, este projecto serve como trabalho final para a obtenção do grau de Licenciatura em
Engenharia Electrotécnica e de Computadores, através da conclusão do Projecto Final, cujo foco poderá
ser voltado exclusivamente para a área da Robótica.
3.2. Motivação
A utilização de robôs na automação industrial e em locais de difícil acesso por humanos (por
exemplo, na inspecção de tubulações) ou em situações perigosas (por exemplo, no desarme de bombas
e de minas terrestres) tem crescido rapidamente no âmbito mundial. Da mesma forma, a exploração
espacial também dependerá de unidades robóticas, capazes de operar de modo satisfatório nos
ambientes hostis de outros planetas. Os países que não dominarem o ciclo de projecto, construção e
operação de robôs autónomos estarão comprometendo fortemente sua capacidade de competição num
mercado globalizado, uma vez que tais equipamentos já são considerados essenciais em vários tipos de
actividades industriais. Por exemplo, a indústria automóvel tem utilizado de forma rotineira robôs de
soldadura e pintura, com os quais é possível a construção de complexas estruturas dos modernos
automóveis com baixo custo e alta qualidade.
Robôs autónomos que operam em equipa necessitam de um conjunto alargado de tecnologias
de diversas especialidades. Um robô verdadeiramente autónomo deve ser dotado de visão
computacional e/ou sensores, capazes de posicioná-lo num ambiente desconhecido, associado a um
programa de controlo capaz de actuar em situações de conflito. Adicionando-se o requisito de acção
cooperativa entre máquinas inteligentes, leva-se ainda à necessidade de se implementar sistemas de
comunicação entre os robôs e a divisão de tarefas.
O estudo da robótica autónoma multi-agente tem sido realizada com baixa intensidade em
Portugal. Entre os factores que limitam a actuação dos investigadores e alunos tem sido apontado o alto
RACmotion – Robótica Académica de Coimbra
Página 24 de 119
custo de montagem de um laboratório de robótica. Os robôs necessários para um laboratório de
pesquisa implicam investimentos elevados, inviáveis no cenário local. Por exemplo o robô Nomad,
tipicamente utilizado em actividades de investigação em diversos países, tem um custo superior a
USD$ 40 000,00.
Para além do fascínio pelo Futebol Robótico, uma das principais motivações para o
desenvolvimento deste projecto é a formação e o desenvolvimento da equipa de futebol robótico do
DEEC, iniciativa levada a cabo pela Robótica Académica de Coimbra – RAC. O objectivo preciso deste
projecto, definido pelo desenvolvimento de um controlador de trajectórias para um robô omnidireccional,
vai permitir o crescimento e desenvolvimento da ideia que muitos lutam e esperam ver realizada no
departamento. Teve também como motivação o desenvolvimento de metodologias de coordenação,
cooperação e seguimento de trajectórias, suficientemente genéricas para que possam vir a ser
aplicadas a curto-prazo a problemas ligados ao Futebol Robótico, principalmente no caso da equipa da
RAC.
O futebol robótico representa uma área que abrange diversos domínios e temas que se
interligam sempre com o avanço e desenvolvimento de novas tecnologias. Cada vez mais, é preciso
encarar o futuro com bons olhos, com vontade de o fazer evoluir, seguindo um rumo correcto, que nos
levará a um futuro melhor.
3.3. Promoção e Divulgação
Para além da natural motivação resultante da participação em grandes competições envolvendo
equipas de investigação científica, como a RoboCup e o Festival Nacional de Robótica, este projecto foi
sempre encarado com a motivação de ajuda aos objectivos da RAC, bem como na sua promoção local e
nacional.
A sua promoção deu-se, principalmente, ao nível da divulgação e no recrutamento de novos
elementos. Com isso, a organização do Atelier de Robótica durante o evento Robótica 2005 veio
melhorar a publicitação do projecto RAC. A ideia de organizar este atelier, constituído por uma pequena
sessão de palestras e um atelier laboratorial, partiu fundamentalmente da nossa constatação que esta
área da engenharia, apesar de fascinante, não atrai muito estudantes e eventuais interessados para o
trabalho de investigação e desenvolvimento (I&D). Sendo assim, e tendo em conta que nós
organizadores somos alunos finalistas que estamos a realizar projectos na área da Robótica, surgiu a
ideia de organizar um evento constituído por palestras e visitas de estudo a laboratórios de I&D, com o
objectivo de mostrar a todos o quanto esta área é fascinante.
Figura 3.3.1 – Sessão de palestras do Atelier Robótica.
Este tipo de promoção, procurou desmistificar a robótica como uma área não apenas ao alcance
dos países mais desenvolvidos tecnologicamente, como por exemplo os EUA, Japão e Alemanha, mas
também mostrando que num país pequeno como Portugal se pode fazer ciência robótica e contribuir
para o seu avanço tecnológico.
RACmotion – Robótica Académica de Coimbra
Página 25 de 119
Figura 3.3.2 – Atelier laboratorial, demonstração RAC.
Na área da engenharia, somos todos os dias confrontados com matemática, com física, com
computação, ou seja, tudo ciências aplicadas, descorando de certa forma o exercitar das nossas
aptidões relacionadas com os aspectos sociais e capacidades organizativas e humanistas. Ao realizar
esta actividade, e levando em conta o trabalho já desenvolvido, tivemos o desejo de aprender coisas
novas e diferentes, que habitualmente não estão incluídas no programa curricular do nosso curso, como
seja tão simplesmente elaborar uma carta/ofício de uma forma mais formal e séria, deixando de parte as
mensagens tipo telegrama que nos fomos habituando a escrever através do uso dos e-mails.
Como vivemos numa sociedade digital repleta de informação, foram também desenvolvidas
páginas WEB, de modo a facilitar a divulgação do Atelier bem como do projecto RACmotion. A
introdução dos conceitos e temas abordados, bem como a troca de ideias, tornam-se fundamentais
neste tipo de promoção de iniciativas.
Figura 3.3.3 – Páginas WEB do Atelier e projecto RACmotion.
⇒ Sessão de Palestras e Atelier Robótica:
http://alumni.deec.uc.pt/~brandao/robotica2005atelier
⇒ Projecto RACmotion:
http://alumni.deec.uc.pt/~brandao/racmotion
De um modo geral o “feedback” dado pelos participantes foi muito bom e algum desse
“feedback” ainda hoje é visível. Foi sempre nosso objectivo mostrar o trabalho da RAC no DEEC e
dinamizar mais uma vez o nosso departamento nesta área tão aliciante que é a Robótica. Com a
realização deste evento, tivemos uma enorme adesão no quadro de admissões à RAC por parte de
colegas do DEEC e até mesmo pessoas de fora que estiveram presentes no Atelier, o que veio provar
mais uma vez que este tipo de iniciativas são cada vez mais necessárias. É sempre bom contribuir para
este tipo de causas e para o desenvolvimento da investigação do nosso departamento e, por isso,
estamos gratos por termos conseguido alcançar os nossos objectivos.
Segue em anexo alguns relatos informativos de diversos órgãos de comunicação social que
apresentaram algumas das iniciativas desenvolvidas.
RACmotion – Robótica Académica de Coimbra
Página 26 de 119
4. Arquitectura de Controlo da RAC
A arquitectura de controlo da RAC foi projectada com o objectivo de controlar em tempo real
uma equipa de robôs jogadores de futebol, dando a maior autonomia de controlo possível aos robôs. A
arquitectura de controlo é distribuída, mas com um modelo de representação do mundo centralizado,
que une os dados dos sensores de todos os robôs. Para além disso, a arquitectura é modular, escalável
e suporta equipas da liga média (MSL) e da liga pequena (SSL) com diferentes níveis de autonomia de
controlo do robô [MARTINS].
4.1. Descrição
A figura 4.1.1 mostra o diagrama da arquitectura global da equipa. A arquitectura é composta
por um modelo centralizado de representação do mundo (WM - World Model). Este modelo é acedido
por um número de agentes robóticos (AGENT 1, …, AGENT n) e pelo interface de sensores globais
(GLBSENS).
(5)
MNT
HMNSVS
System Monitor
Human Supervisor
(4)
(7)
(6)
RFRINT
Referee Interface
(6)
UPDMOD
WM
(7)
NTFYEV
Notify Event
World
Model
(7)
QRYMOD
Query Model
Update Model
(8)
(9)
Supervision
Events
Queries
Sensory Fusion
Inter-Agent
(2)
AGENT 1
LD
Local
Data
(2)
AGENT n
STRCTR
LD
Strategic Control
Local
Data
TCTCTR
Tactic Control
STRCTR
Strategic Control
TCTCTR
Tactic Control
SENSPROC
OPRCTR
SENSPROC
OPRCTR
Sensory Processing
Operational Control
Sensory Processing
Operational Control
GLBSENS
SENS
ACT
SENS
ACT
Global Sensors
Sensors
Actuators
Sensors
Actuators
(1)
(1, 3)
(1, 3)
World
Figura 4.1.1 – Diagrama global da arquitectura de controlo.
O módulo WM é uma representação centralizada do mundo. Guarda informação importante
sobre o jogo, como por exemplo, a orientação e velocidade de todos os jogadores e da bola, do
resultado e situação do jogo. Esta informação é usada pelos robôs para tomar decisões usando
informação consistente do estado do jogo e comum a todos. Os módulos UPMOD e RFRINT são
processos que actualizam WM sempre que são detectadas alterações no ambiente de jogo. O módulo
UPDMOD implementa a fusão sensorial dos sensores a bordo dos robôs e dos sensores globais. A
figura 4.1.2 mostra um exemplo da sequência de eventos que actualiza o módulo WM desde que nova
informação esteja disponível. O módulo RFRINT recebe comandos do árbitro do jogo e actualiza o
estado do jogo em WM de acordo com a decisão tomada pelo árbitro (cantos, faltas, lançamentos,
golos, etc.). O módulo MNT implementa um interface gráfico de utilizador que permite ao supervisor da
equipa controlar os acontecimentos do jogo. O módulo HMNSVS permita ao supervisor humano afinar a
estratégia seguida pela equipa. Os módulos QRYMOD e NTFYEV permitem que WM esteja disponível
para todos os robôs. QRYMOD processa os pedidos sobre o estado de jogo e NTFYEV é um processo
RACmotion – Robótica Académica de Coimbra
Página 27 de 119
que notifica os robôs quando um determinado evento acontece (alterações em WM) para o qual os
robôs pediram para ser notificados [MARTINS].
GLBSENS
SENSPROC
Agent 1
SENSPROC
Agent 2
UPDMOD
WM
localization-estimate
localization-estimate
localization-estimate
update-robots-position
localization-estimate
localization-estimate
update-robots-position
localization-estimate
update-robots-position
Figura 4.1.2 – Diagrama de sequência para a actualização de WM
Os agentes robóticos são entidades de software que implementam a inteligência e a autonomia
de controlo dos robôs da equipa. A figura 4.1.3 mostra um diagrama de blocos detalhado da arquitectura
do agente.
Events
Queries
Sensory Fusion
Inter-Agent
(4)
(9.1) (8.1) (10.1)
STRCTR
Strategic Control
(9.2)
(11)
(8.2) (10.2)
TCTCTR
Tactic Control
(9.3)
(12)
(2)
(8.3)
OPRCTR
SENSPROC
Operational Control
Sensory Processing
LD
Local
Data
(13)
(2)
ACT
SENS
Actuators
Sensors
(3)
(1)
World
Figura 4.1.3 – Diagrama da arquitectura do agente robótico
Existem três módulos que controlam o robô ao nível estratégico, táctico e operacional: STRCTR,
TCTCTR e OPRCTR. O módulo SENSPROC processa a informação adquirida pelos sensores do robô.
Os módulos SENS e ACT fazem o interface directo com os sensores e actuadores do robô.
O módulo STRCTR coopera remotamente com os módulos STRCTR dos outros agentes
robóticos de maneira a seleccionar a melhor estratégia para a equipa de acordo com o estado actual de
WM. O módulo TCTCTRL realiza a mesma função que STRCTR mas ao nível táctico. Coopera
remotamente com os colegas de equipa de modo a aplicar a estratégia escolhida à táctica, atribuindo
funções de campo aos jogadores e coordenação de movimentos de jogo. A figura 4.1.4 mostra um
exemplo de um diagrama de sequência ao nível táctico numa situação onde foi aplicada uma estratégia
defensiva. O módulo OPRCTR implementa um conjunto de sequências de controlo (máquinas de estado
finitas) que são instanciadas ao nível táctico de modo a realizar acções básicas (por exemplo: driblar a
bola para uma posição). Cada acção básica é uma sequência de controlo em malha fechada usando
apenas os sensores e actuadores do robô, embora a informação global também possa ser usada. Cada
robô tem armazenado localmente um sub-modelo de WM construído a partir de dados adquiridos pelos
RACmotion – Robótica Académica de Coimbra
Página 28 de 119
sensores locais [MARTINS]. Estes dados são apropriados para o controlo operacional em tempo real do
robô. A figura 4.1.5 mostra um exemplo de um diagrama de sequência para uma acção básica.
STRCTR
Agent 1
STRCTR
Agent 2
TCTCTR
Agent 1
TCTCTR
Agent 2
QRYMOD
NTFYEV
OPRCTR
Agent 1
OPRCTR
Agent 2
defend
defend
robots-pose?
robots-pose?
robots-pose-is
robots-pose-is
bid-for-defender1-is
bid-for-defender1-is
follow-opponent-owning-ball
defend-goal
when-ball-enters-my-influence-area
ball-entered-in-influence-area
steal-ball-to-opponent
Figura 4.1.4 – Exemplo de diagrama de sequência para as acções ao nível táctico do robô
SENS
Agent i
SENSPROC
Agent i
QRYMOD
OPRCTR
Agent i
ACT
Agent i
encoder-readings
velocity
touching-ball?
yes-touching-ball
set-robot-velocity
Figura 4.1.5 – Exemplo de diagram a de sequência para a execução de uma acção básica
A figura 4.1.6 mostra exemplos da informação utilizada e das acções de controlo
desempenhadas pelos vários módulos da arquitectura de controlo da RAC.
Figura 4.1.6 – Exemplos de informação e de acções de controlo
RACmotion – Robótica Académica de Coimbra
Página 29 de 119
4.2. Aplicação em Robôs com Diferentes Níveis de Autonomia
A arquitectura projectada pode ser facilmente adaptada a diferentes níveis de autonomia dos
robôs. A RAC está particularmente interessada em dois casos: SSL (Small Size League) e MSL
(Medium Size League) da Robocup. Em ambos os casos, a atribuição de alguns módulos a recursos de
processamento computacional é fixo: os módulos SENS e ACT são sempre colocados nos robôs; os
módulos UPDMOD, RFRINT, MNT, HMNSVS, QRYMOD e NTFYEV são sempre colocados num
computador remoto. Se o uso dos recursos de comunicação ou o poder computacional dos robôs
tiverem de ser limitados a um mínimo, todos os módulos do agente, excepto SENS e ACT, podem ser
colocados num computador remoto. Por outro lado, se os módulos que definem a inteligência do robô
necessitarem de estar a bordo, então todos os módulos do agente necessitam de correr no robô.
Para a liga SSL existem muito poucos sensores a bordo dos robôs e está disponível um sensor
global muito poderoso – uma câmara colocada por cima do campo de jogo – que esta integrada com o
módulo WM através de GLOBALSENS. Como a maior parte da informação sensorial vem do sensor
global, a implementação do módulo UPDMOD é muito simples porque a fusão sensorial de diferentes
fontes é mínima. Por causa do poder computacional do robô ser reduzido, todos os processos, excepto
SENS e ACT, correm num computador remoto.
Para a liga MSL, os sensores globais são proibidos. Por isso, o módulo GLOBSENS não existe.
Como a capacidade sensorial está distribuída de maneira praticamente uniforme entre os robôs, o
processo UPDMOD é muito mais complexo do que no caso da SSL. Se os robôs possuírem um poder
computacional razoável, pode ser implementada a arquitectura mais distribuída e com maior autonomia.
A primeira implementação da arquitectura de controlo da RAC foi debruçada na plataforma para
a liga SSL, isto é, uma solução de controlo centralizado num computador remoto. Mais tarde, está
planeado construir uma plataforma para a MSL, onde se pretende implementar uma arquitectura
completamente distribuída.
Na secção seguinte, são identificadas as ferramentas de desenvolvimento de software para a
construção da plataforma, assim como a divisão de tarefas em equipas de desenvolvimento.
4.3. Ferramentas de Desenvolvimento
Tanto o computador PC remoto como os robôs vão correr o software de controlo em ambiente
Linux [LINUX], embora o software do robôs corram numa plataforma Linux minimalista.
As ferramentas de desenvolvimento são:
⇒ Compilador C para os programas do robô (GNU Compiler collection [GCC]);
⇒ Compilador C++ para os programas do computador PC remoto (GCC);
⇒ Ambos utilizam o protocolo TCP/IP como base da implementação do sistema de comunicação.
4.4. Divisão de Tarefas de Desenvolvimento
Esta secção dá uma perspectiva de como as tarefas de desenvolvimento, necessárias à
implementação da arquitectura de controlo da equipa SSL, foram divididas em grupos de trabalho.
⇒ T1 – Implementação dos módulos SENS e ACT: 2 pessoas – equipa de programação e
montagem do robô (Projecto RACmotion);
⇒ T2 – Implementação dos módulos GLBSENS, SENSPROC, RFRINT e UPDMOD: 2 pessoas –
equipa de actualização do modelo do mundo;
⇒ T3 – Implementação da base de dados do módulo WM e implementação dos módulos
QRYMOD, NTFYEV, MNT e HMNSVS: 2 pessoas – equipa WM;
RACmotion – Robótica Académica de Coimbra
Página 30 de 119
⇒ T4 – Implementação da base de dados local e dos módulos STRCTR, TCTCTR e OPRCTR: 2
pessoas – equipa de inteligência artificial.
Estas tarefas concorrentes necessitavam de ser precedidas por uma especificação exaustiva
das mensagens necessárias para implementar o fluxo de informação e controlo. A primeira tarefa de
cada equipa foi de contribuir para esta especificação. Existiram reuniões regulares entre as equipas de
desenvolvimento de software, e foi possível produzir um documento com a especificação completa
baseada na contribuição dos membros.
RACmotion – Robótica Académica de Coimbra
Página 31 de 119
5. Estrutura do robô
A estrutura dos robôs e a distribuição de componentes são fundamentais para o bom
desempenho e performance duma equipa de Futebol Robótico. É fundamental que os robôs se
encontrem equilibrados e com pouco peso de modo a executar sem dificuldades todas as demais
ordens que lhe são exigidas. A manutenção também é um factor importante em robótica, por isso, o
robô deve facilitar o manuseamento dos seus componentes e a sua substituição em situações
emergentes.
Numa primeira parte deste capítulo vamos abordar a escolha da plataforma para o robô, com
toda a distribuição dos componentes. O desenvolvimento do primeiro protótipo e de toda a equipa foi
levado ao cabo pelo projecto RACmotion, seguidamente é descrito a sua evolução. Por fim, é relatado o
estado actual do protótipo bem como a reprodução de toda a equipa.
5.1. Plataforma
A estrutura dos robôs da RAC garantem o movimento omnidireccional, ou seja, os robôs
conseguem rodar sobre si próprios e, simultaneamente, executar um movimento de translação (mudar
de posição). A escolha da RAC foi de construir um robô com três rodas, em que cada eixo da roda
encontra-se desfasado de 120º, para garantir mais facilmente o seu movimento omnidireccional
[RODRIGUES].
Conforme podemos observar na figura 5.1.1 a plataforma divide-se em dois níveis: num primeiro
nível são colocadas as baterias, juntamente com os três motores e os respectivos encoders do robô que
se encontram colineares com os eixos das rodas (desfasadas de 120º), num segundo nível é colocada
todo o hardware correspondente ao sistema de controlo e comunicação.
Figura 5.1.1 – Estrutura do RACbot.
A correcta disposição e configuração dos componentes no robô vai garantir o seu bom
manuseamento. Sendo uma, estrutura em evolução, será necessário que esta plataforma apresente
configurações para varias alternativas, dispondo assim de espaço para vários testes e ensaios relativos
ao posicionamento do hardware.
A estrutura mecânica do robô foi construída em alumínio, de modo a diminuir ao máximo a
influência do peso no seu movimento. Contudo, um estudo futuro da plataforma do robô torna-se
necessário de modo a analisar outro tipo de ligas ou materiais que eventualmente possam vir a ter
melhores prestações, bem como outras distribuições de modo a reduzir o alumínio necessário.
RACmotion – Robótica Académica de Coimbra
Página 32 de 119
Figura 5.1.2 – Plataforma em alumínio do RACbot.
5.2. Evolução
A evolução do primeiro protótipo para a equipa de Futebol Robótico da RAC teve diversas fases.
A junção de todo o hardware bem como a sua disposição e fixação na sua estrutura base foi levado
como objectivo pelo projecto RACmotion. A necessidade de ter uma base de ensaio e um protótipo
pronto a usar levou ao seu desenvolvimento.
v Fixação do PC na plataforma base do robô
Com base em algum material já concebido, e de acordo com o desejado, foi fixado o PC/104 na
plataforma base do robô. Foi elaborado um pequeno projecto com as localizações e dimensões dos
furos bem como de outros acessórios, optimizando assim o trabalho desenvolvido na oficina. O PC foi
colocado na posição original, apenas a placa 7I30 (4 Channel H-Bridge Motor Drive) foi colocada na
posição vertical com o apoio de uma chapa tipo L.
Shape:
A robot must fit inside a 180 mm diameter cylinder. If a team is using
the global vision system, each robot on that team must have height of 150 mm
or less. In all cases, a robot must have height less than 225 mm.
Figura 5.2.1 – Fixação do PC na plataforma base do RACbot.
Após a fixação do PC/104 ao corpo do robô, foram levantadas varias questões ligadas à
mecânica e à distribuição do hardware do robô. Após a adopção para testes de um disco rígido da
FUJITSU para portáteis de 40Gb foi necessária a construção de uma placa fixadora para fixar este no
corpo do robô, eventualmente a fixar por debaixo do PC/104 para evitar o aumento em altura.
Recorrendo novamente ao apoio da oficina foram construídas umas placas tipo L de fixação para o
disco, conforme mostra a figura.
Figura 5.2.2 – Fixação do disco FUJITSU na plataforma base do RACbot.
RACmotion – Robótica Académica de Coimbra
Página 33 de 119
De modo a facilitar as ligações ao robô (PS2, COM1, CRT, RJ45, USB,...), foi desenvolvida uma
chapa de apoio a ligações, conforme mostra a figura 5.2.3, melhorando assim a sua organização de
componentes e evitando eventuais danos ou destruição de alguns contactos no PC/104 causados por
ligações mal executadas.
Figura 5.2.3 – Chapa de apoio de ligações ao RACbot.
v Alimentação e testes em campo
Inicialmente, e também devido à indisponibilidade das baterias, os eventuais testes a ocorrer no
robô teriam ainda de suportar uma ligação (12V DC) a uma fonte de alimentação da bancada. Para
evitar um excessivo uso de cabos de alimentação para os diversos dispositivos utilizados foram
mudadas e adoptadas novas ligações de alimentação, recorrendo ao conversor já incorporado na fonte
do PC/104 (PC/104 Power Supply V104).
•
•
12V DC - 4 Channel H-Bridge Motor Drive;
5V DC - Disco rígido;
Posteriormente, foi desenvolvido uma extensão de ligação à fonte de alimentação da bancada
para iniciar os testes em campo, conforme mostra a figura 5.2.4.
Figura 5.2.4 – Extensão de ligação à fonte de alimentação da bancada.
v Inserção das baterias
A inserção das baterias veio trazer uma maior mobilidade ao protótipo, bem como um grande
avanço no seu desenvolvimento. Contudo, o seu elevado peso veio piorar o comportamento do robô. O
peso é um factor crucial em Futebol Robótico e no caso da RAC este factor é significativo. Em relação à
sua durabilidade, este pack de baterias veio trazer cerca de 30 min de actuação, o que se torna
favorável, uma vez que uma partida de Futebol Robótico tem duração de duas partes de 10 min, num
total de 20 min.
Periods of Play:
The match lasts two equal periods of 10 minutes, unless otherwise
mutually agreed between the referee and the two participating teams. Any
agreement to alter the periods of play (for examples, to reduce each half to
7 minutes because of a limited schedule) must be made before the start of
play and must comply with competition rules.
RACmotion – Robótica Académica de Coimbra
Página 34 de 119
Figura 5.2.5 – Inserção das baterias no RACbot.
Inicialmente, a limitação em corrente da fonte de alimentação usada veio trazer alguns
problemas, uma vez que o robô num arranque em carga exigia mais do que pode ser fornecido pela
fonte. Com a inserção das baterias, esse problema foi mitigado, no entanto, outros apareceram, tais
como o peso e o desequilíbrio do robô.
v Rodas omnidireccionais
Para garantir o movimento omnidireccional do robô, as rodas devem garantir tracção no
movimento perpendicular ao seu eixo e não devem apresentar atrito no movimento colinear com o seu
eixo. Para isso foram utilizadas rodas com a configuração apresentada na figura 5.2.6.
Figura 5.2.6 – Rodas omnidireccionais adoptadas no RACbot.
Inicialmente, foi testado outro tipo de rodas, rodas plásticas, conforme mostra a figura 5.2.7.
Apesar deste tipo de rodas possuir um raio menor, estas ocupam mais espaço na plataforma adoptada,
no entanto, são mais suaves no seu movimento. Rodas acrílicas também foram motivo de atenção, pois
apresentam maior tracção no campo de jogo devido aos seus anéis em metal, mas o seu elevado peso
inviabilizou o seu desenvolvimento. A escolha da RAC foi desenvolver as suas próprias rodas. Com a
motivação de outras equipas o design escolhido foi o que está ilustrado na figura 5.2.6.
Figura 5.2.7 – Roda plástica e roda acrílica.
RACmotion – Robótica Académica de Coimbra
Página 35 de 119
Outros testes foram executados, partindo das rodas adoptadas. A substituição dos anéis em
plástico por anéis em latão era uma mudança possível, mas a sua fricção com o resto da roda
inviabilizou a sua transformação.
v Outras modificações
Diversas modificações foram efectuadas de modo a melhorar o desempenho do robô, tais como,
a substituição do disco rígido por uma Compact Flash IDE CFADPT-CS da Mesa. O uso do disco rígido
torna-se inadequado para o Futebol Robótico, devido aos permanentes choques a que os robôs estão
sujeitos, no entanto, a sua substituição por uma Compact Flash induz a novas dificuldades, tais como a
minimização do Sistema Operativo. Assim, foi inserida numa posição lateral do PC/104 o adaptador
Compact Flash IDE, de modo a não ultrapassar os valores limites em altura.
Figura 5.2.8 – Montagem do protótipo da RAC.
Outras modificações, tais como a inserção do sistema de chuto (figura 5.2.8), foram efectuadas
juntamente com alguns testes e ensaios. Contudo, ainda se encontra em fase de conclusão. O sistema
de chuto foi implementado usando um solenoide standard, com algumas modificações, de modo a
encaixar dentro da caixa de chuto. Foi adaptado um circuito de Flash de uma câmara fotográfica
descartável, usando o seu circuito de bloqueio e o seu conversor de tensão para carregar um
condensador de alta voltagem e impulsionar uma descarga no acto de chuto.
5.3. Protótipo
O desenvolvimento de um protótipo torna-se sempre necessário e importante em qualquer
progresso tecnológico. É imprescindível possuir um modelo de testes de modo a executar diversos
ensaios, aperfeiçoando assim o desenvolvimento do robô bem como de todo o sistema global que o
rodeia. O desenvolvimento de um protótipo para a RAC foi sempre encarado como uma necessidade.
Durante o seu desenvolvimento e construção foram apresentadas diversas alternativas e soluções a
variados problemas emergentes, originando assim uma evolução coerente.
O estado actual do protótipo é o ilustrado na figura 5.3.1. A replicação para o desenvolvimento
da restante equipa já se iniciou e, neste momento, encontra-se em fase de finalização. O processo de
evolução do protótipo foi um processo alargado. O aparecimento de diversos problemas e dificuldades
veio atrasar um pouco a sua evolução, contudo os objectivos foram cumpridos. A estrutura base está
concluída e todo o hardware está em harmonia e funcionamento.
RACmotion – Robótica Académica de Coimbra
Página 36 de 119
Figura 5.3.1 – Protótipo RACbot.
O objectivo traçado para o Robótica 2005 veio ajudar no progresso da equipa de Futebol
Robótico da RAC. Um grande esforço foi demonstrado pelos seus elementos para assim apresentar
uma primeira versão da equipa, no entanto, muito trabalho falta concluir. A replicação pode-se mostrar
num processo relativamente rápido, no entanto, a ligação de todos os módulos requer sempre algum
trabalho.
RACmotion – Robótica Académica de Coimbra
Página 37 de 119
6. Hardware
Em termos de desenvolvimento, a aposta da RAC é de um progresso tecnológico numa
perspectiva de evolução, ou seja, pretendemos ter uma base capaz de suportar upgrades ao sistema
quer ao nível de hardware quer ao nível de software. Possuir unidades capazes de sustentar outro tipo
de tecnologia para desenvolvimento e investigação futura, plataformas com poder computacional e
potencial suficientes para uma evolução da equipa. É neste plano que se encaixa a escolha de um PC
embebido, baseado na arquitectura PC/104, a correr num sistema operativo linux.
6.1. PC/104
O nome de PC/104 [PC/104] surgiu do popular computador pessoal de secretária, inicialmente
desenvolvido pela IBM, chamado PC, e do seu número de pinos usados para conexão de periféricos e
placas em conjunto (total de 104 pinos). O PC/104 é muito mais pequeno que as placas ISA-Bus
encontradas nos PC’s normais e possui uma característica de encaixe próprio, que lhe permite uma
progressão e evolução do sistema. A alimentação e a transmissão de sinal são reduzidas, de modo a
cumprir as necessidades de um qualquer sistema embebido tradicional. O PC/104 é essencialmente um
PC. Permite-nos utilizar as mesmas ferramentas de desenvolvimento de software que um PC vulgar
utiliza, reduzindo assim o custo de investimento em novas ferramentas e reduzindo também a curva de
aprendizagem para os programadores e engenheiros de hardware.
Em termos de aplicação, os sistemas baseados em PC/104 aplicam-se em diversas áreas
distintas, no sector industrial, no sector automóvel, no sector médico, nos laboratórios de I&D, ou seja,
em qualquer dispositivo desde que o seu controlo possa ser feito por um computador programável. O
sistema PC/104 é um sistema pequeno com uma necessidade reduzida de alimentação, o que o torna
num sistema forte para aplicações onde normalmente não existe espaço para um PC normal. O design
do PC/104 é mais robusto que o de um PC normal e normalmente o seu preço é mais elevado que um
PC comercial, mas mais barato que uma rack de sistemas ISA-Bus.
Figura 6.1.1 – Módulos do PC/104 no RACbot.
A aplicação de sistemas baseados em PC/104 no futebol robótico permite uma abertura no
avanço tecnológico implementado. Contudo, tamanha tecnologia poderá influenciar no comportamento
do robô. Cada vez mais se recorre a hardware dedicado devido ao excesso de peso a bordo e
capacidade de processamento desnecessária. Porém, o avanço tecnológico só é possível e facilitado a
RACmotion – Robótica Académica de Coimbra
Página 38 de 119
quem possua uma base suficientemente configurável e possibilitada a evoluir. A escolha da RAC
baseia-se nessa perspectiva, e por isso, adoptou um sistema baseado em PC/104.
Quase todo o tipo periféricos estão disponíveis nos módulos do PC/104. Funções usuais tais
como: CPUs, portas I/O, controladores de vídeo já estão disponíveis no modulo principal, mas é sempre
possível progredir para outro tipo de necessidades, como por exemplo: receptores GPS, receptores e
emissores Wireless, etc.
O sistema do PC/104 adoptado é constituído por:
v Uma placa M570 [M570] da SECO com um processador Via Eden de 600Mhz e 512Mb de
SDRAM, que combina um poder gráfico possuindo um processador de aceleração gráfica VIA
ProSavage PN133T (Twister™ T) com outras capacidades de multimédia: portas áudio, portas
série, portas USB, porta paralela, porta Ethernet 10/100BaseT, interface EIDE (com
possibilidade de discos IDE Flash), controladores de rato e teclado, relógio em tempo real, e um
temporizador Watch Dog.
Figura 6.1.2 – Placa M570 da SECO para PC/104.
v Uma placa de programação I/O MESA 4I65 [MESA] específica para PC104-PLUS Bus. A 4I65
usa uma FPGA com duzentas mil portas lógicas da Xilinx, permitindo assim uma programação
baseada em VHDL/Verilog. O uso da FPGA possibilita a criação de quaisquer funções de I/O,
incluindo funções de micro-controlo. Possui também software de fábrica, que em conjunto com
outras placas, permite o controlo de servo motores (SoftDMC). Possuí 72 bits de I/O distribuídos
em 3 conectores de 50 pinos.
Figura 6.1.3 – Placa de programação I/O 4I65 da MESA para PC/104.
RACmotion – Robótica Académica de Coimbra
Página 39 de 119
v Uma placa H-Bridge de 4 canais de 3A e 34V, que interliga os encoders dos micro-motores DC
à placa de programação I/O MESA 4I65, permitindo assim um controlo de velocidade conforme
o desejado. Para isso, utiliza um conector de 50 pinos para ligar à 4I65 e 4 conectores AMP Mini
Mate-N-Lock para ligar aos encoders. Cada ligação destas pode ser limitada a 1 ou 3A por
hardware conforme o desejado e permite também a sua operação, quer em altas velocidades
quer em baixas velocidades [MESA].
Figura 6.1.4 – Placa H-Bridge de 4 canais para ligação à placa 4I65.
v Uma fonte de alimentação rectificadora V104 da TRI-M específica para veículos autónomos, que
usam um sistema baseado em PC/104. Tensão de entrada de 8 a 30V DC e saída de 5 ou 12V,
consumo 25W [V104].
Figura 6.1.5 – Fonte de Alimentação V104 da TRI-M para PC/104.
v Um adaptador Compact Flash IDE CFADPT-CS da MESA com conectores IDE para ligação na
CPU de 40 pinos de 2 mm ou 44 pinos de 1’’ que permite um suporte digital para um sistema
operativo (distribuição linux). Possui um LED indicador de actividade e uma patilha para ejecção
do cartão de memoria. É também possível alterar o estado do adaptador (master/slave) [MESA].
Figura 6.1.6 – Adaptador Compact Flash IDE CFADPT-CS da MESA para PC/104.
RACmotion – Robótica Académica de Coimbra
Página 40 de 119
6.2. Comunicação
O sistema de comunicações da plataforma da RAC utiliza uma rede de dados baseada no
modelo de referência de sete camadas do protocolo OSI. O protocolo IEEE 802.11b juntamente com o
dispositivo de comunicação wireless, implementam as duas primeiras camadas da pilha protocolar do
sistema de comunicação da plataforma da RAC (camada física e de ligação) .
Para comunicação entre o sistema central e os robôs usamos:
v Um adaptador wireless USB da Edimax EW-7117U [EDIMAX]. Este adaptador é normalizado
para sistemas que utilizam a norma IEEE 802.11b 2.4GHz, possuí uma taxa de transferência de
informação até 11Mbps, entre outras características [EDIMAX].
Figura 6.2.1 – Adaptador Wireless USB da Edimax EW-7117U.
6.3. Motores e Caixas de Desmultiplicação
O uso de micro-motores DC é já uma prática comum em Futebol Robótico, devido ao seu
reduzido peso e tamanho. O excesso de peso presente na estrutura do robô poderá influenciar o
comportamento do motores, bem como, no seu consumo. Em caso de esforço ou arranque do robô, este
factor é crucial. Contudo, as altas velocidades e binário prestados por estes tipos de motores poderão
mitigar alguns problemas.
No caso da RAC utilizamos para o protótipo RACbot:
v Três micro-motores DC de 12V da Faulhaber série 2224 012 SR. Estes motores possuem
tensão nominal de 12V, com consumos máximos na ordem dos 0.570A por motor. Em relação a
velocidades estes motores conseguem atingir 7800 RPM (em vazio). Consumos na ordem dos
4.05W [FAULHABER].
Figura 6.3.1 – Micro-motor DC de 12V série SR da Faulhaber.
RACmotion – Robótica Académica de Coimbra
Página 41 de 119
v As caixas de desmultiplicação que utilizamos para este tipo de motores são da série 23/1 da
Faulhaber, especialmente para combinações com motores da série 2224 da Faulhaber.
Figura 6.3.2 – Caixa de desmultiplicação para motores série SR da Faulhaber.
6.4. Baterias
A autonomia dos robôs em Futebol Robótico é fundamental, no entanto, este factor é o que mais
influência no peso do robôs.
O protótipo RACbot utiliza:
v Pilhas alcalinas Sony de NiMh de 1.5V para construção de packs de baterias. No nosso caso
são utilizados dois packs de 9V, ou seja, um total de 18V para alimentar todo o sistema do
RACbot. A aplicação dos respectivos packs garante uma autonomia ao sistema de cerca de
30 min, o suficiente para realizar uma partida de Futebol Robótico (10 min + 10 min).
Figura 6.4.1 – Packs de baterias utilizadas no protótipo RACbot.
RACmotion – Robótica Académica de Coimbra
Página 42 de 119
7. Modelo Cinemático
Após termos abordado no capítulo anterior diversas questões relacionadas com o robô, o
primeiro passo a fazer para desenvolver um controlador é determinar as suas equações de movimento.
Neste capítulo, vamos descrever o modelo cinemático adoptado, juntamente com os seus parâmetros.
Seguidamente vamos obter as expressões de Cinemática Inversa e Directa. Finalmente, vamos analisar
outros modelos alternativos utilizados em robôs para Futebol Robótico.
7.1. Modelo Cinemático RACbot
A escolha da RAC foi construir um robô omnidireccional de três rodas desfasadas entre si por
120º, para garantir mais facilmente o seu movimento omnidireccional. Com isso, o modelo cinemático
adoptado foi o seguinte:
Figura 7.1.1 – Modelo Cinemático do RACbot.
O nosso modelo considera dois tipos de referenciais: o referencial do robô, fixo no centro da
plataforma do robô e o referencial do mundo fixo no campo de jogo. A posição do robô é representada
por duas coordenadas de posição x, y e a rotação sobre o seu próprio eixo é representada pela
velocidade angular . As velocidades tangenciais das três rodas são dadas por v1, v2 e v3. O raio da
plataforma do robô é dado por R, enquanto que o raio das rodas é dado por r. As velocidades v1’, v2’ e
v3’ são as velocidades tangenciais das três rodas resultantes de possíveis desfasamentos. Os
desfasamentos das rodas, provocados por choques ou desalinhamentos de construção, são dados por
1, 2 e 3. Finalmente a velocidade linear do robô é dada pelo vector v, que contém duas componentes
vx e vy.
Os choques entre robôs ou desalinhamentos de construção são questões importantes. O
aparecimento deste tipo de fenómenos pode levar a um comportamento não desejado no robô e
comprometer toda a trajectória pretendida. Na figura 7.1.2, é ilustrado o modo como um desfasamento
pode ocorrer numa roda. No nosso modelo é apenas considerado o desfasamento ilustrado na figura
7.1.2-b), embora na realidade este desfasamento possa ocorrer de outra maneira, ou seja, em vez de
ocorrer ao nível da roda, o desfasamento pode ocorrer ao nível do eixo do motor, como podemos
observar na figura 7.1.2-c). Na realidade, os eixos dos RACbots são bem mais curtos e compactos do
que os que são representados na figura, permitindo assim anular este tipo de comportamento e ter uma
boa estabilidade.
RACmotion – Robótica Académica de Coimbra
Página 43 de 119
a)
b)
Figura 7.1.2 – Desfasamento
c)
da roda.
O modelo cinemático adoptado visa responder a todas as questões relacionadas com o
movimento do robô mediante a plataforma adoptada. Para isso, necessitamos de determinar as suas
equações de movimento, relacionando assim todos os parâmetros considerados.
Assim, analisando o modelo adoptado podemos dizer que as velocidades tangenciais das três
rodas são dadas por:
v1 = v x − ωR
1
v2 = − v x +
2
1
v3 = − v x −
2
3
v y − ωR
2
3
v y − ωR
2
em que v x e vy são as duas componentes da velocidade do robô segundo uma determinada orientação,
é a velocidade angular do robô (sobre o seu próprio eixo) e R é o raio da plataforma.
Introduzindo agora os desfasamentos das três rodas, parâmetros
vamos ter:
1,
2
e
3
respectivamente,
′
v1 = cos(α1 )v x − sin(α 1 )v y − cos(α 1 )ωR
π
π
′
v2 = − cos( + α 2 )vx + sin( + α 2 )v y − cos(α 2 )ωR
3
3
π
π
′
v3 = − cos( − α 3 )v x − sin( − α 3 )v y − cos(α 3 )ωR
3
3
Desta maneira podemos dizer que as velocidades rotacionais
dadas por:
w1 =
′
′
′
v1
v
v
, w2 = 2 , w3 = 3
r
r
r
1,
2
e
3
das três rodas são
,onde r é o raio das rodas.
RACmotion – Robótica Académica de Coimbra
Página 44 de 119
7.2. Cinemática Inversa
A Cinemática Inversa visa obter as velocidades rotacionais 1, 2 e 3 das três rodas do robô a
partir da entrada dos parâmetros da velocidade do robô, v, e da velocidade de rotação, .
Deste modo, organizando os termos das expressões das velocidades rotacionais
das três rodas, obtemos a seguinte expressão para a Cinemática Inversa:
v ′ 
 w1 
 w1 
v x 
 1 
 w  = 1 v ′  ⇔  w  = 1 M v 
 2 r  2 
 2 r  y
′
 w3 
 w3 
 ω 
v3 
1,
2
e
3
, onde M é dada por:


 cos(α 1 )
− sin(α 1 )
− cos(α 1 ) R 


π
π
M = − cos( + α 2 ) sin( + α 2 ) − cos(α 3 ) R 
3
3


π
 − cos( − α ) − sin( π − α ) − cos(α ) R 
3
3
3


3
3
7.3. Cinemática Directa
Implementar a Cinemática Directa de um robô significa, neste caso, determinar as relações que
exprimem a velocidade linear, v, e velocidade angular, , do robô, em função das velocidades
rotacionais das três rodas.
O cálculo da expressão da Cinemática Directa é dado por:
 w1 
v x 
1
rM −1  w2  = r M −1 M v y  ⇔
 
 
r
 w3 
 ω 
vx 
 w1 


−1 
⇔ v y  = rM  w2 
 ω 
 w3 
, onde M é dada de igual maneira por:


 cos(α 1 )
− sin(α 1 )
− cos(α 1 ) R 


π
π
M = − cos( + α 2 ) sin( + α 2 ) − cos(α 3 ) R 
3
3


 − cos( π − α ) − sin( π − α ) − cos(α ) R 
3
3
3


3
3
Estas expressões têm real importância, uma vez que vão ajudar no desenvolvimento do sistema
de controlo, bem como no diagrama de controlo do simulador para compreensão do movimento do robô.
RACmotion – Robótica Académica de Coimbra
Página 45 de 119
7.4. Modelos alternativos
O modelo seguido pela RAC visa facilitar o movimento omnidireccional do robô, uma vez que
possui os três eixos desfasados de 120º. No entanto, observamos que no futebol robótico existe sempre
uma frente de ataque no robô, aquela segundo a qual possuí maior binário, e consequentemente maior
velocidade/aceleração de movimento, normalmente corresponde à frente do robô onde se localiza o
sistema de chuto. Geralmente, a frente de ataque possui uma abertura entre eixos maior, colocando a
roda traseira como uma roda efeito de leme. Deste modo, conseguimos obter um maior binário de
arranque na frente de ataque, uma vez que as velocidades tangenciais das rodas não se anulam tanto
como na configuração com uma abertura menor. Diversos problemas abordam o Futebol Robótico, e a
velocidade/aceleração dos robôs são um deles.
Existem diversos tipos de modelos e configurações para robôs em Futebol Robótico, dezenas
de equipas desenvolvem as suas próprias ideias, contudo, apenas algumas podem saborear o sabor da
vitória. Existem robôs com duas, três e quatro rodas e, dentro de cada tipo, existem diversas
configurações. A figura seguinte exemplifica alguns casos.
Figura 7.4.1 – Diversos tipos de robôs utilizados em Futebol Robótico.
RACmotion – Robótica Académica de Coimbra
Página 46 de 119
8. O Simulador RACbot
No capítulo anterior, foram identificadas as equações referentes ao modelo cinemático. Este
capítulo descreve como estas equações foram utilizadas no Simulador RACbot de modo a simular o
comportamento do robô e o seu movimento omnidireccional. O Simulador RACbot foi programado em
MATLAB, em ambiente Simulink.
O Simulador RACbot é uma ferramenta versátil, que foi usada para estudar e desenvolver o
sistema de controlo de movimento. Este capítulo descreve como o Simulador funciona. É explicado
como a simulação é feita e como ela pode ser configurada. Também são apresentados alguns testes e
conclusões referentes a pesquisas e ensaios efectuados no simulador.
8.1. Motivação
Tanto a FIRA como a RoboCup possuem simuladores que são utilizados em competições
robóticas virtuais entre equipas. Cada equipa desenvolve o sistema de inteligência artificial que
implementa um interface standard para o simulador. No entanto, o Simulador RACbot não pretende ser
uma simulação de todo o jogo, trata-se apenas de uma ajuda laboratorial para o desenvolvimento de um
sistema de controlo para o robô. O Simulador tem como objectivo a simulação e compreensão dos
diversos tipos de movimento que o robô pode executar.
A necessidade de tal programa advém das dificuldades inerentes ao desenvolvimento de um
sistema de controlo que envolve tanto software como hardware: os robôs físicos consomem muito mais
tempo para entrar em operação quando comparados com um programa de Inteligência Artificial; também
existe a interrupção e espera para recarregar as baterias; e, é claro, o hardware também sofre
desgastes e pode danificar-se. Além disso, quando interage com o mundo físico, o sistema está sujeito a
ruídos e interferências. Um bom exemplo é o software de reconhecimento de Imagens: o programa
recebe os dados de uma câmara de vídeo colocada sobre o campo de jogo, detecta a posição dos robôs
e da bola e envia essa informação para o sistema de Inteligência Artificial. Sabemos que o desempenho
do módulo de reconhecimento de imagens é directamente influenciado pelas condições de iluminação
do ambiente. Portanto, se o reconhecimento de imagens não está a funcionar correctamente,
informações erradas poderão ser enviadas para o programa de Inteligência Artificial que, por sua vez,
vai aparentar estar a funcionar incorrectamente. Por essas razões, o Simulador RACbot torna-se muito
atractivo para o desenvolvimento do sistema de controlo.
No entanto, o nível de precisão e estabilidade dos dados gerados no simulador não podem ser
alcançados por nenhum sistema que interage com o mundo físico. Um robô real habita num ambiente
dinâmico, muito susceptível a falhas e erros de programação. O desenvolvimento do Simulador RACbot
vai ajudar na compreensão de alguns desses fenómenos e comportamentos indesejados.
8.2. MATLAB Simulink
MATLAB é uma linguagem de programação apropriada ao desenvolvimento de aplicações
científicas. Como o próprio nome sugere, o MATLAB é adequado para a implementação e teste de
soluções com facilidade e precisão, sem perder tempo com detalhes específicos de linguagem de
programação. Para isso, possui facilidades de computação, visualização e programação, dentro de um
ambiente amigável e de fácil aprendizagem.
Figura 8.2.1 – MATLAB - Simulink.
RACmotion – Robótica Académica de Coimbra
Página 47 de 119
Actualmente o MATLAB dispõe de uma biblioteca bastante abrangente de funções matemáticas,
geradores de gráficos e manipulação de dados que auxiliam muito o trabalho do programador. Possui
uma vasta colecção de bibliotecas denominadas toolboxes para áreas específicas como: equações
diferencias, estatística, processamento de imagem, processamento de sinal, etc. A linguagem e o
ambiente de programação MATLAB permitem ainda que, o programador possa escrever as suas
próprias bibliotecas para MATLAB.
O Simulink é uma extensão do MATLAB. É usado para simular sistemas dinâmicos, possuí uma
interface gráfica que, através do recurso a uma extensa biblioteca de funções, permite construir
facilmente diagramas de blocos representativos de sistemas para analise e projecto. Neste contexto, o
objectivo de desenvolver um simulador capaz de representar a trajectória do robô, perante uma
solicitação do utilizador, facilita a compreensão e o planeamento para o desenvolvimento dum sistema
de controlo adequado ao futebol robótico.
8.3. Implementação
A implementação do simulador, permite verificar rapidamente o comportamento do robô perante
um determinado conjunto de parâmetros. Contudo, o seu uso eficiente depende de uma série de
factores. Por exemplo, o modelo adoptado deve estar correcto e o tipo de teste a que ele se submete
deve ser coerente com o que se deseja comprovar, no entanto, existem limitações intrínsecas de
qualquer sistema de simulação que não podem ser evitadas.
Figura 8.3.1 – Fase de implementação do Simulador RACbot.
O simulador tem como principal vantagem a análise paralela que é feita quando este simula o
movimento do robô numa determinada trajectória, ou seja, pode ser observado o comportamento das
velocidades dos três motores, bem como o vector de entrada do modelo cinemático. A orientação do
robô, influenciada pela velocidade angular , também pode ser observada. Uma trajectória no simulador
é dividida em segmentos de recta. Cada segmento, ou set-point, é caracterizado por uma posição no
referencial do campo de jogo, por uma velocidade linear e por uma velocidade angular. O simulador
recebe um conjunto de set-points à entrada, que caracterizam o comportamento do robô ao longo da
trajectória.
Numa primeira versão o simulador funcionava apenas no interpretador de linha de comandos,
ou seja, era feita uma simulação do resultado das equações da cinemática para diferentes valores de
entrada. Nas versões posteriores foram desenvolvidos diagramas de blocos em ambiente Simulink para
representação do respectivo diagrama de controlo.
8.3.1. Diagrama de Controlo
Inicialmente foi desenvolvido um simulador capaz de demonstrar o movimento real do robô.
Embora não conseguisse corrigir o movimento, no caso em que o robô possuía velocidade angular
sobre o seu próprio eixo, conseguia demonstrar a influência dos desfasamento nas rodas. Nessa altura,
podemos tirar conclusões acerca da influência da rotação na trajectória e, de como ela influencia
bastante o movimento. Posteriormente, foi desenvolvido um diagrama de controlo capaz de corrigir esse
RACmotion – Robótica Académica de Coimbra
Página 48 de 119
fenómeno, ou seja, a trajectória omnidireccional segunda uma linha recta já era possível e sem qualquer
desvio, o problema foi portanto mitigado e a simulação foi conseguida.
Após várias alterações durante a fase de implementação, a versão final é ilustrada na figura
seguinte.
Figura 8.3.1.2 – Diagrama de Controlo do Simulador RACbot.
A sua constituição pode parecer algo complexa, no entanto, pode ser descrita da seguinte
forma:
•
A introdução dos parâmetros de entrada, ou seja, o conjunto de set-points que constituem uma
trajectória, é efectuada no primeiro bloco. O set-point corresponde ao conjunto de pontos (x, y)
por onde o robô vai passar, juntamente com a sua velocidade média, v, e velocidade angular, ,
a cumprir por esses mesmos pontos. A configuração do set-point utilizado é:
Exemplo: [10 10 1 0.05, 10 0 1 0, 20 0 1 -0.1, 20 10 1 0]
⇒ A trajectória vai ser a seguinte (o robô encontra-se na origem):
Ponto A
Ponto B
Ponto C
Ponto D
(10, 10)
(10, 0)
(20, 0)
(20, 10)
com v = 1 m/s e
com v = 1 m/s e
com v = 1 m/s e
com v = 1 m/s e
= 0.05 rad/s
= 0 rad/s
= - 0.1 rad/s
= 0 rad/s
•
O bloco seguinte faz a transformação do set-point para os parâmetros de entrada da cinemática
inversa, ou seja, realiza uma transformação em componentes vx e vy da velocidade linear, v, e
na componente de rotação sobre o eixo, representada pela velocidade angular . Essa
transformação é executada para todos os set-points.
•
As expressões de cinemática inversa obtidas no capítulo anterior, são utilizadas no bloco
seguinte para calcular as velocidades de rotação 1, 2 e 3 das três rodas do robô. São dados
importantes, pois, mostram a variação das velocidades dos motores ao longo do tempo de
acordo a trajectória pretendida.
•
Seguidamente é utilizado o bloco da cinemática directa, esta transforma as velocidades dos três
motores 1, 2 e 3 novamente nas componentes vx e vy da velocidade linear, v, e na
componente de rotação . Componentes que vão ser utilizadas no bloco seguinte para simular
o movimento do robô. Paralelamente a este bloco, existe um outro muito semelhante, a
diferença está nos parâmetros de desfasamento da cinemática, ou seja, num bloco o movimento
é ideal (os desfasamentos são nulos), no outro, o movimento é afectado pela introdução dos
parâmetros de desfasamento 1, 2 e 3.
RACmotion – Robótica Académica de Coimbra
Página 49 de 119
•
A representação do movimento é efectuada através do último bloco, que utiliza os parâmetros
de saída da cinemática directa para efectuar uma simulação gráfica da trajectória do robô. A
velocidade é integrada ao longo do tempo para obter a posição.
Com a ajuda das bibliotecas do MATLAB Simulink, é conseguida a simulação do movimento do
robô, segundo uma trajectória predefinida. A plataforma de programação do MATLAB permite assim
desenvolver uma aplicação harmoniosa e de fácil utilização. Podemos alterar facilmente o valor dos
parâmetros da cinemática, bem como, analisa-los em conjunto para melhor compreensão.
8.3.2. Visualização
A visualização da informação no Simulador RACbot pode ser feita de varias maneiras,
consoante a necessidade do utilizador. Após a introdução do set-point desejado, a simulação é realizada
durante o tempo de execução do robô na referida trajectória. Tal acontece, devido à utilização de um
contador interno do Simulink como base temporal, permitindo assim um maior realismo da simulação.
Por outro lado, a simulação também ocorre ao nível do diagrama de controlo, possibilitando
durante ou no final da simulação, analisar o estado de outras variáveis cinemáticas ao longo do tempo e
do espaço.
a) Trajectória ideal
b) Trajectória com desfasamentos
Figura 8.3.2.1 – Simulação da trajectória do robô, set-point [7 1 1 0.5, 10 3 1 0, 12 6 1 -0.5, 11 9 1 0, 9 10 1 0.5].
Na figura 8.3.2.1 é ilustrada a simulação da trajectória do robô segundo o set-point descrito,
quer no caso ideal, quer no caso de presença de desfasamentos. As linhas a azul na figura representam
a orientação do robô naquele ponto da trajectória. O comportamento das velocidades rotacionais 1, 2
e 3 das três rodas, ao longo do tempo, segundo o set-point introduzido é o ilustrado na figura 8.3.2.2.
Figura 8.3.2.2 – Velocidade dos três motores segundo o set-point anterior.
RACmotion – Robótica Académica de Coimbra
Página 50 de 119
Também é feita a visualização das componentes v x e vy da velocidade linear e a variação do
parâmetro
correspondente à velocidade angular, quer no caso ideal, quer no caso de presença de
desfasamentos. A possibilidade de visualização do comportamento dos três motores em termos de
velocidade, bem como, de outros parâmetros cinemáticos, ajuda-nos na análise da trajectória do robô e
no estudo de fenómenos que podem afectar o movimento.
a) Trajectória ideal
b) Trajectória com desfasamentos
Figura 8.3.2.3 – Variação dos parâmetros vx, vy e
segundo o set-point anterior.
O diagrama de controlo também nos possibilita a visualização e análise da orientação do robô
ao longo do tempo, quer no caso ideal, quer no caso de presença de desfasamentos.
a) Trajectória ideal
b) Trajectória com desfasamentos
Figura 8.3.2.4 – Orientação do robô ao longo do tempo segundo o set-point anterior.
A figura 8.3.2.4 ilustra a variação da orientação do robô ao longo do espaço percorrido de
acordo um set-point introduzido. Na figura 8.3.2.5-a) podemos analisar a trajectória ideal pretendida
(sem desfasamentos) juntamente com a variação do parâmetro . Na figura 8.3.2.5-b) podemos analisar
a mudança da trajectória e orientação do robô, com a introdução de um desfasamento numa roda.
RACmotion – Robótica Académica de Coimbra
Página 51 de 119
a) Trajectória ideal
b) Trajectória com desfasamentos
Figura 8.3.2.5 – Animação vectorial efectuada pelo Simulador RACbot.
Inicialmente, a aplicação gráfica da simulação era apenas de carácter vectorial, conforme ilustra
a figura 8.3.2.5. Posteriormente, desenvolveu-se uma animação de modo a tornar mais realista o
comportamento do robô.
Figura 8.3.2.6 – Animação efectuada ao Simulador RACbot.
Em relação à animação do simulador RACbot, foi efectuado um melhoramento no refresh da
aplicação que anima o comportamento do robô. Foram utilizadas ferramentas de rendering, tais como, o
OpenGL, que permitiram o melhoramento da animação. É possível introduzir, caso necessário, outros
conceitos e melhoramentos visuais, tais como, linhas de marcação de campo, balizas, obstáculos, etc.
8.3.3. Testes e Resultados
Com base no simulador desenvolvido, foram efectuados diversos testes, que levaram a uma
melhor compreensão do sistema de controlo e de todo o comportamento do robô durante o seu
movimento. De seguida são descritos e ilustrados alguns testes e ensaios correspondentes a variadas
trajectórias predefinidas.
A correcção do vector velocidade em função da velocidade angular, foi um problema testado.
Concluiu-se que, ao realizar um movimento de translação entre dois pontos, ao mesmo tempo que se
realiza um movimento de rotação sobre o centro de massa, é necessário corrigir o vector velocidade em
função da velocidade angular. O vector velocidade tem as componentes vx e v y no referencial do robô,
de modo que, se este rodar , temos de fazer uma rotação do referencial de forma a manter o vector
velocidade na mesma orientação.
RACmotion – Robótica Académica de Coimbra
Página 52 de 119
x ' = x cos α + y sin α
y ' = y cos α − x sin α
 x'  cos α
 y ' = − sin α
  
sin α   x 
cos α   y 
Figura 8.3.3.1 – Rotação do referencial do robô em .
Para que não ocorram desvios significativos, temos que corrigir o referencial em intervalos de
tempo reduzidos de acordo com a matriz de rotação. O parâmetro é o ângulo que o referencial roda
em função da velocidade angular dada.
O bloco da simulação também é afectado com esta correcção, como tal, temos que executar de
igual maneira uma rotação no referencial. Deste modo, o vector velocidade mantém a orientação
correcta. A matriz de rotação utilizada é dada por:
x2 = x1 cos α − y1 sin α
y2 = y1 cos α + x1 sin α
 x2  cos α
 y  =  sin α
 2 
Figura 8.3.3.2 – Rotação do referencial do robô em
− sin α   x1 
cos α   y1 
utilizada na simulação.
A simulação da trajectória era feita em relação a um referencial fixo do mundo, agora essa
simulação é feita em relação a um referencial móvel que é o robô. De modo a ilustrar a correcção do
vector velocidade, em função da velocidade angular do robô, são ilustradas as seguintes figuras que
demonstram o comportamento do robô nas varias trajectórias (ideal, real e com correcção).
a) Trajectória ideal
RACmotion – Robótica Académica de Coimbra
b) Trajectória real
Página 53 de 119
c) Trajectória real com correcção
d) Todas as Trajectórias
Figura 8.3.3.3 – Simulação do movimento do robô, set-point [10 10 1 0.05, 10 0 1 0, 20 0 1 -0.1, 20 10 1 0].
Conforme já vimos, os desfasamentos das rodas provocados por choques ou desalinhamentos
de construção são dados por 1, 2 e 3. De modo a compreender estes fenómenos foram realizados
alguns testes. As figuras seguintes ilustram algumas conclusões.
a) Trajectória ideal
b)Trajectória com desfasamentos
a) Trajectória ideal e Trajectória com desfasam entos
Figura 8.3.3.4 – Simulação do movimento do robô, set-point [7 1 1 0.5, 10 3 1 0, 12 6 1 -0.5, 11 9 1 0, 9 10 1 0.5].
Na figura 8.3.3.4 podemos observar como os desfasamentos mecânicos podem influenciar a
trajectória real do robô. Verifica-se que um pequeno desfasamento (1º a 5º graus) pode ter um impacto
muito significativo na trajectória. Se não existir um equilíbrio perfeito, o robô tem tendência a ganhar
velocidade de rotação sobre o seu centro, provocando um deslocamento progressivo na sua orientação.
Se não conhecermos a posição real do robô ao logo da trajectória, torna-se impossível estimar os
parâmetros correctamente.
RACmotion – Robótica Académica de Coimbra
Página 54 de 119
O problema da aceleração também foi testado, como sabemos o arranque do robô nunca será
instantâneo muito menos em carga, e quanto maior for o peso menos influente será a aceleração. Os
motores normalmente possuem uma rampa de aceleração e os robôs da RAC não fogem à regra. O
parâmetro da aceleração é colocado normalmente no máximo, no entanto, este factor pode levar a
alterações na trajectória do robô devido ao comportamento não linear dos três motores.
Foram efectuadas alterações no controlo de trajectórias do simulador passando a incluir um
parâmetro de aceleração com o objectivo de aproximar ainda mais o comportamento do simulador com
a realidade. Anteriormente, a simulação era realizada tendo em conta que o robô mudava
instantaneamente de velocidade no set-point seguinte. A partir de agora a velocidade é uma função
continua e por sua vez, a trajectória do robô é uma função diferenciável, ou seja, todas as mudanças de
direcção são curvas mais ou menos suaves de acordo com o valor da aceleração, como podemos ver
na figura 8.3.3.5. A figura 8.3.3.6 mostra as componentes da velocidade linear vx e vy bem como a
velocidade angular que neste caso é nula, também são representadas as velocidades angulares dos
motores afectadas também por este parâmetro. Podemos observar que todas as velocidades são
funções continuas e o declive das transições tem o valor do parâmetro aceleração.
Figura 8.3.3.5 – Simulação do movimento do robô, set-point [0.6 0 1 0, 0.6 0.4 1 0, 0 0.4 1 0, 0 0.2 1 0].
Figura 8.3.3.6 – Variação dos parâmetros vx, vy e
RACmotion – Robótica Académica de Coimbra
bem como a variação das velocidades dos três motores.
Página 55 de 119
8.3.4. Conclusões
Pela observação dos resultados das simulações anteriores verificamos que em condições ideais
o robô percorre a trajectória pretendida. O modelo converte os set-points em comandos de velocidade
ao longo do tempo. Os comandos de velocidade são posteriormente convertidos pela equação de
cinemática inversa nas velocidades angulares que são fornecidas aos motores. O bloco de simulação de
posição desenha a trajectória do robô tendo em conta os parâmetros físicos que foram implementados
no modelo.
Com a introdução dos parâmetros de desfasamento nas rodas verificamos que o
comportamento do robô é totalmente alterado, a necessidade da implementação de um sistema de
calibração torna-se evidente. O conhecimento destes parâmetros são de elevada importância, pois uma
vez conhecidos podem ser introduzidas correcções no sistema de controlo de modo a compensar os
comportamentos indesejados. No capítulo seguinte é abordada esta questão em mais detalhe.
No que diz respeito ao movimento omnidireccional, no simulador o robô comporta-se
correctamente, o que comprova a boa implementação da simulação e da cinemática. No entanto, no
mundo físico a realidade é outra. A presença de atritos, fricções e defeitos nas rodas bem como o
excesso de peso vai influenciar o comportamento do robô podendo este não executar o movimento
pretendido. Tratam-se de questões eminentes que requerem por vezes a alteração da estrutura da
plataforma e configuração. Mais à frente falaremos dos testes e resultados referentes ao sistema de
controlo implementado no robô na situação real, não simulada.
A aceleração dos motores é uma questão importante de simulação e estudo. Não foi feito
nenhum estudo teórico referente à dinâmica do robô, no entanto, através do simulador RACbot podemos
tirar como conclusão que a presença de um arranque não instantâneo dos motores do robô pode levar a
uma alteração da trajectória pretendida. No entanto pretende-se que o valor da aceleração seja o mais
alto possível de modo a simular um arranque imediato e desta forma evitar futuros problemas. O
comportamento em aceleração do robô é difícil de se estudar, devido ao facto de não podermos
desacoplar as rodas individualmente. A influência conjunta das três rodas interfere e dificulta o estudo
da dinâmica.
RACmotion – Robótica Académica de Coimbra
Página 56 de 119
9. Calibração
A inserção dos ângulos de desfasamento no modelo cinemático, introduz uma nova abordagem
na implementação do controlador de movimento. Torna-se necessário desenvolver um procedimento de
calibração de modo a conhecer estes parâmetros. Assim, o controlador ficará apto a corrigir desvios na
trajectória, provocados por eventuais desalinhamentos nos eixos. A correcção do movimento é realizada
introduzindo na matriz de cinemática inversa aproximações razoáveis para os parâmetros , conforme
foi analisado no capítulo 7.
9.1. Motivação
A introdução dos parâmetros de desfasamento
no modelo foi uma primeira tentativa de
conseguir melhorar o desempenho do controlador face aos previsíveis problemas de controlo. Como a
construção do protótipo decorreu em simultâneo com o projecto do controlador, não foi possível avaliar o
seu comportamento face a estes problemas. No entanto, a implementação do Simulador RACbot veio
facilitar este estudo. É de prever que surjam problemas em controlar o robô devido a desalinhamentos
mecânicos, ou às elevadas velocidades e acelerações da plataforma. Os dados de posição fornecidos
pela câmara são de importância fundamental para fechar a malha de controlo, no entanto, o fluxo de
dados e o seu atraso podem não ser suficientes para controlar em tempo real o movimento adequado do
robô.
O desenvolvimento deste procedimento de calibração visa tornar a plataforma mais controlável,
mas apenas pode ser visto como um primeiro passo no estudo da dinâmica do robô. Em função dos
testes efectuados sobre o modelo simples que é proposto, foram tiradas conclusões e orientações para
trabalho futuro.
Figura 9.1.1 – Desfasamento
da roda.
9.2. Assumpções
Dada a não linearidade das equações de cinemática inversa não é possível obter uma
expressão directa para 1, 2 e 3 (ângulos de desfasamento das rodas). Fazendo algumas
assumpções, foi desenvolvido um método iteractivo para calcular estes ângulos que causam desvios na
trajectória do robô. Foi assumido que: quando o movimento do robô é paralelo ao eixo de uma das
rodas, essa roda não desenvolve tracção, a sua influência no desvio da trajectória é pequena e pode ser
desprezada. Se se verificar que nestas condições este desfasamento não poderá ser desprezado, então
terá de se adaptar um género de patim ou base esférica à roda de modo a conseguir desacoplar este
desfasamento em relação aos outros dois.
9.3. Procedimento de Calibração
O procedimento de calibração é um procedimento iteractivo em três passos. Cada passo
introduz uma trajectória colinear a um dos eixos. O desvio provocado na trajectória devido aos
desfasamentos, pode ser corrigido através do ajuste dos parâmetros das restantes rodas, até que o
RACmotion – Robótica Académica de Coimbra
Página 57 de 119
robô realize um movimento em linha recta. No terceiro e último passo todos os ângulos de
desfasamento são ajustados em simultâneo, mantendo a mesma relação de magnitude e a mesma
relação entre eixos, dois a dois. Como consequência, cada eixo fica calibrado em relação aos outros
dois.
Na figura 9.3.1 pode-se observar a dependência entre desfasamentos em relação a uma
determinada trajectória. Por exemplo, ao ser injectada uma trajectória perpendicular à roda R1, ou seja,
velocidades simétricas para os motores 2 e 3 e velocidade nula para o motor 1, é possível que a
trajectória do robô não realize uma linha recta perpendicular à roda, mas sim uma curva.
Figura 9.3.1 – Dependência entre desfasamentos em relação a uma determinada trajectória.
Este comportamento é devido a existência de desfasamentos nas rodas. Se for colocado um
patim na roda 1 ou se for desprezado a existência de algum desfasamento nessa mesma roda, pode ser
tirada uma relação entre os desfasamentos nas rodas 2 e 3. Se a trajectória não se realizar em linha
recta perpendicularmente à roda R1 e se o robô começar a desviar-se para a direita, conclui-se que
2 + 3 < 0, se este for para a esquerda, então 2 + 3 > 0. Ao efectuar os ajustes nos parâmetros da
cinemática inversa é possível corrigir este comportamento para a situação desejada (linha recta
perpendicular à roda), inferindo assim os valores de 2 e 3.
Considerando outra trajectória, por exemplo, perpendicular à roda R3 a situação é semelhante,
apenas mudam os desfasamentos. É desprezado agora o parâmetro 3 e a analise é realizada em
relação aos outros desfasamentos. O processo torna-se assim repetitivo, terminando com um ajuste
final entre todos os desfasamentos em conjunto.
Este procedimento iteractivo de calibração pode ser descrito nos seguintes passos:
v 1º Passo - Injectar no robô uma trajectória perpendicular à roda R1, ou seja, velocidades
simétricas para os motores 2 e 3 e velocidade nula para o motor 1.
•
•
•
Observar a trajectória efectuada pelo robô.
Se este se deslocar em linha curva e não em linha recta, conforme o pretendido, variar o
parâmetro 2, aumentando ou diminuindo progressivamente de modo a corrigir essa
trajectória.
Após a correcção, o robô passa a deslocar-se em linha recta perpendicular à roda R1,
fica concluído o 1º passo.
Observação: De notar que o robô não deve variar a sua orientação durante o movimento.
RACmotion – Robótica Académica de Coimbra
Página 58 de 119
v 2º Passo - Injectar no robô uma trajectória perpendicular à roda R3, ou seja, velocidades
simétricas para os motores 1 e 2 e velocidade nula para o motor 3.
•
•
•
Observar a trajectória efectuada pelo robô.
Se este se deslocar em linha curva e não em linha recta conforme o pretendido, variar o
parâmetro 1, aumentando ou diminuindo progressivamente de modo a corrigir essa
trajectória.
Após a correcção, ou seja, o robô passa a deslocar-se em linha recta perpendicular à
roda R3, fica concluído o 2º passo.
v 3º Passo - Injectar no robô uma trajectória perpendicular à roda R2, ou seja, velocidades
simétricas para os motores 1 e 3 e velocidade nula para o motor 2.
•
•
Observar a trajectória efectuada pelo robô.
Se este se deslocar em linha curva e não em linha recta conforme o desejado, variar de
igual maneira e em conjunto todos os parâmetros 1, 2 e 3. No entanto, 2 terá que
possuir sinal contrário (por exemplo se aumentarmos 0,02 rad a 1 e 3, então 2 terá
que ser variado em –0,02 rad) de modo a manter a relação do desfasamento dois a
dois.
9.4. Testes em Simulação
Para validar o procedimento de calibração, numa primeira fase, foi utilizado o simulador RACbot.
Foram introduzidos parâmetros de desfasamento desconhecidos pelo controlador no bloco de
cinemática directa (bloco que implementa a simulação do movimento do robô), tais desfasamentos
resultam numa alteração significativa entre a trajectória real e a pretendida. Em seguida aplicou-se o
procedimento de calibração, tal como foi descrito anteriormente, fazendo variar os parâmetros na
matriz de cinemática inversa no bloco do controlador de movimento.
Figura 9.4.1 – Alterações efectuadas no simulador para simular o processo de calibração.
RACmotion – Robótica Académica de Coimbra
Página 59 de 119
Nas figuras seguintes é possível observar uma trajectória efectuada pelo robô simulado. Na
figura 9.4.2-a) é apresentada a trajectória ideal desejada. Na figura 9.4.2-b) é observada a trajectória
ideal (verde) e a trajectória real com desfasamentos desconhecidos (vermelho) realizada pelo robô. A
figura 9.4.2-c) representa a trajectória real do robô após a aplicação do procedimento de calibração e a
figura 9.4.2-d) mostra como a trajectória real coincide com a trajectória ideal após a calibração.
a) Trajectória ideal
b) Trajectória ideal e trajectória com desfasamentos reais
c) Trajectória com correcção nos desfasamentos
d) Trajectória com correcção e trajectória ideal
Figura 9.4.2 – Procedimento de calibração utilizando o simulador RACbot.
9.5. Conclusões
O procedimento de calibração obtém bons resultados quando aplicado no simulador do robô.
Após a aplicação do procedimento de calibração as diferenças entre a trajectória real e a ideal são
mínimas. As próximas etapas de desenvolvimento passam pela aplicação manual do procedimento ao
protótipo da plataforma para que a sua validação seja efectuada. Tais resultados serão apresentados no
capítulo 11. Se for verificada a validade do procedimento ao protótipo, as características da plataforma
permitem que o procedimento de calibração possa vir a ser implementado ao nível do controlador
central de maneira automática e sem intervenção humana.
Este procedimento pode ser considerado como o primeiro estudo sobre o comportamento
dinâmico da plataforma. A optimização das funções de controlo passam por tentar compreender as
diversas variáveis que afectam o movimento do robô. Particularmente, o estudo das forças provocadas
pela aceleração podem ser alvo de um estudo futuro.
RACmotion – Robótica Académica de Coimbra
Página 60 de 119
10. Sistema de Controlo
As características do hardware utilizado nos robôs da RAC (RACbots) são uma consequência
directa das funcionalidades que se pretendem implementar a curto e a médio prazo. Muitas destas
funcionalidades requerem a utilização de recursos consideráveis em termos de processamento e de
recursos do sistema. Para além do sistema de controlo de movimento e do sistema de comunicação
TCP/IP [IETF] sobre IEEE 802.11b [IEEE], é necessário que o hardware e o software da plataforma da
RAC tenha capacidade para suportar, futuramente, aplicações de processamento de visão e de
inteligência artificial.
Dada a complexidade dos algoritmos, o sistema operativo tem de suportar um ambiente de
desenvolvimento de alto nível, assim como bibliotecas de funções desenvolvidas por terceiros que são
imprescindíveis, por exemplo, nos algoritmos de visão e comunicação.
Neste capítulo são enumeradas as características pretendidas e as opções tomadas a nível da
escolha do sistema operativo, em seguida é feita uma descrição das particularidades do sistema de
desenvolvimento e do sistema de produção. É abordado o subsistema de comunicações e a sua
configuração. São analisadas as funcionalidades do controlador dos motores (softDMC) e o interface
com o sistema operativo através da placa MESA 4i65. Para finalizar, é feita uma descrição da
arquitectura e implementação do programa de controlo de movimento.
10.1. Sistema Operativo
Os requisitos definidos para os robôs da RAC em termos de funcionalidades, tornaram
impossível a implementação do sistema de controlo usando um simples microcontrolador programável.
Um dos objectivos é precisamente criar uma plataforma robusta, dotada de boa capacidade de
processamento e de um sistema de comunicações fiável. Por outro lado, a plataforma tem de permitir o
desenvolvimento de aplicações complexas. Devido a complexidade do hardware utilizado, foi necessário
seleccionar um sistema operativo que verificasse alguns requisitos essenciais.
Em informática, o sistema operativo (SO) é o software responsável pelo controlo directo e
gestão do hardware e das funções básicas de todo o sistema. Para além disso, disponibiliza os serviços
que permitem correr as aplicações.
O sistema operativo certifica-se de que as aplicações são capazes de utilizar a memória, os
dispositivos de entrada/saída (I/O) e o acesso ao sistema de ficheiros. Se existirem várias aplicações a
serem executadas, o SO faz o escalonamento dos processos, de modo a atribuir a todas as aplicações
o tempo de processador adequado à sua execução, impedido também que possam interferir entre si.
Geralmente, o sistema operativo é a primeira camada de software carregada na memória de um
computador quando este é ligado. Sendo a primeira camada, todo o software que é carregado
posteriormente, depende desta para lhe fornecer diversos serviços básicos comuns. Já que é assumido
que estes serviços básicos são fornecidos pelo SO, não existe a necessidade de voltar a implementa-los
ao nível da aplicação. A parte do código que implementa estes serviços é o chamado kernel do sistema
operativo. O kernel dos sistemas operativos evoluiu de bibliotecas de funções para programas que
controlam os recursos do sistema devido à necessidade de proteger e registar a utilização dos recursos.
10.1.1. Características Pretendidas
O hardware que foi adoptado para a plataforma do robô, como já foi referido no capitulo 5, é
basicamente um computador embebido compatível com os computadores pessoais (IBM-PC). Existem
vários sistemas operativos e versões que suportam os dispositivos que a plataforma utiliza. No entanto
nem todos cumprem os requisitos necessários, que são:
v Tem de ser compacto de modo a caber num dispositivo do tipo Flash-ROM;
v Tem de permitir o funcionamento directamente da RAM do PC-104 e de permitir a modificação
do processo de arranque do sistema;
v Necessita de suportar todos os dispositivos e periféricos adicionais utilizados na plataforma;
RACmotion – Robótica Académica de Coimbra
Página 61 de 119
v Tem de ser uma plataforma eficiente e robusta, capaz de fornecer ferramentas de
desenvolvimento avançadas;
v Necessita de possuir suporte para o desenvolvimento de aplicações de tempo-real;
Após a análise geral dos requisitos ficou claro que, apenas existiam duas alternativas para o
sistema operativo que à partida poderiam reunir grande parte dos requisitos: O Microsoft Windows [WIN]
e o GNU/Linux [LINUX]. Cada um destes, possui um grande número de características diferentes e que
necessitavam de ser estudadas com mais detalhe.
O Windows é uma gama de sistemas operativos para computadores pessoais e servidores. Foi
inicialmente introduzido pela Microsoft em 1985 acabando por dominar o mercado mundial com uma
quota estimada em 95% nos computadores de secretária. As versões recentes do Windows são
sistemas operativos completos e não necessitam de outros sistemas mais antigos (MS-DOS) para
funcionar. O Windows é um sistema proprietário com código fonte fechado. A empresa Microsoft é
detentora dos direitos de autor e controla a sua distribuição.
A quota de mercado que o Windows detém nos sistemas operativos para computadores
pessoais, fazem dele o sistema mais conhecido e para o qual existe maior probabilidade de obter drivers
para os dispositivos. No entanto, o Windows não possui os requisitos necessários. As suas
características são orientadas para o uso em computadores de secretária, têm um interface gráfico
pesado e desadequado para o que se pretende, não é suficientemente configurável para poder ser
instalado de maneira fácil numa memória flash e para concluir, não é suficientemente compacto para
caber numa partição de memória virtual.
O sistema operativo Linux é um dos exemplos mais conhecidos de software livre e de
desenvolvimento de código aberto, ao contrário de outros sistemas operativos mais importantes (como o
Windows ou o Mac OS [MAC], todo o seu código fonte está disponível ao público e pode ser usado,
modificado e distribuído por qualquer pessoa.
O termo Linux refere-se especificamente ao kernel Linux, mas o termo é normalmente usado
para descrever todos os sistemas operativos derivados do Unix [UNIX], que são baseados no kernel
Linux combinados com as ferramentas e bibliotecas do projecto GNU [GNU] da Free Software
Foundation [FSF]. As distribuições de Linux oferecem grandes quantidades de software para além do
sistema operativo, existem mais de 300 distribuições disponíveis.
Inicialmente, o Linux foi desenvolvido e utilizado por entusiastas. Desde essa altura, ganhou o
suporte de grandes empresas como a IBM, Hewlett-Packard e Novell para o uso em servidores e está a
começar a ganhar quota de mercado nos computadores de secretária. Os analistas atribuem o seu
sucesso ao facto de ser independente do vendedor, ao baixo custo, à sua segurança e fiabilidade.
O Linux foi originalmente desenvolvido para os microprocessadores Intel 386, mas agora
suporta uma variedade de arquitecturas. Tem sido empregue em aplicações que vão desde os
computadores pessoais até aos super computadores e sistemas embebidos como é o caso dos
telefones moveis e os gravadores de vídeo pessoais.
O suporte para alguns dispositivos novos ou menos vulgares continua a representar um
problema. Embora alguns fabricantes mais reputados disponibilizem drivers para Linux, alguns dos
drivers disponíveis têm sido desenvolvidos por voluntários depois do lançamento do produto.
Frequentemente este desenvolvimento é obtido a custa de engenharia inversa de algum tipo, pois certos
fabricantes continuam a manter um véu de segredo sobre as especificações de hardware e firmware dos
seus produtos.
Pelas características apresentadas o Linux mostrou-se como o sistema operativo ideal para ser
utilizado na plataforma da RAC. No entanto, foi necessário fazer uma análise mais profunda nas
distribuições que melhor se enquadravam com os requisitos, pois cada uma tinha objectivos e
particularidades diferentes.
10.1.2. Analise de Candidatos
Linux é predominantemente usado como parte integrante de uma distribuição de Linux
[DISTRO]. Estas, são compilações de aplicações feitas por indivíduos, equipas e organizações
profissionais. Incluem um qualquer número de software de sistema adicional assim como aplicações
RACmotion – Robótica Académica de Coimbra
Página 62 de 119
úteis para o utilizador final. Incluem normalmente um processo que permite ser instalado de maneira
fácil no computador. As distribuições são criadas com objectivos diferentes. Localização geográfica,
suporte a uma arquitectura especifica, suporte a aplicações de tempo real e sistemas embebidos são
alguns dos exemplos de aplicações do Linux. Muitas distribuições incluem apenas e deliberadamente
software livre.
Uma distribuição generalista inclui o kernel Linux, as bibliotecas e ferramentas do projecto GNU,
interfaces de linhas de comandos e literalmente milhares de pacotes de aplicações de software, desde
pacotes de produtividade para escritório, ambientes gráficos, compiladores, editores de texto e
ferramentas cientificas.
10.1.2.1.
Puppy Linux
O Puppy Linux [PUPPY] foi a primeira distribuição analisada. Esta distribuição tinha sido a
primeira inicialmente seleccionada para avaliação pelos membros da RAC, pois cumpria grande parte
dos requisitos. É uma distribuição baseada em live-CD, ou seja, o sistema reside num CD-ROM que
serve como dispositivo de arranque. É bastante compacta, fiável, fácil de usar e cheia de
funcionalidades. A distribuição é actualizada regularmente, tem bom suporte e boa documentação. Todo
o sistema operativo e aplicações correm a partir da RAM, fazendo com que o sistema seja muito rápido
e permitindo que o suporte digital de arranque (CD-ROM) seja removido após a inicialização do sistema
operativo. São incluídas aplicações como o Mozilla, AbiWord, SodiPodi, Gnumeric e Gaim. A distribuição
é independentemente desenvolvida a partir do zero. É considerada útil para funcionar em computadores
lentos ou mais antigos, como sistema de emergência e recuperação, como sistema de demonstração
do Linux ou como um sistema operativo completo e generalista. Para além do CD-ROM, o Puppy Linux
pode arrancar a partir de uma memória flash com interface USB.
Quando o sistema arranca todo o conteúdo armazenado no suporte digital é descomprimido
numa zona da memória RAM (a ramdisk). O computador necessita de ter pelo menos 128M de RAM
para que todo o Puppy Linux seja carregado na memória.
No entanto, a distribuição Puppy Linux apresenta algumas lacunas que são comuns a todas as
distribuições semelhantes. O sistema já vem todo construído, trazendo um conjunto de drivers mais
comuns. Por outro lado, o kernel do sistema operativo é uma versão alterada para satisfazer um
determinado objectivo. Para além disso, o criador da distribuição não disponibiliza, nem seria viável,
todo o ambiente de desenvolvimento, código fonte e a respectiva configuração que usou para construir a
distribuição.
A necessidade de compilar de raiz todo o sistema resulta da plataforma da RAC utilizar o
dispositivo de comunicação wireless USB EDIMAX LAN Adapter [EDIMAX]. Este dispositivo é baseado
no chip Zydas zd1201 [ZyDAS]. O fabricante não disponibiliza um driver para Linux, mas existe o código
fonte de um driver em desenvolvimento por terceiros que, para funcionar, necessita de ser compilado
para uma versão standard, não alterada, do Kernel Linux. Para além disso, o dispositivo não implementa
correctamente o protocolo de handshake do hub USB [USB] devido a uma interpretação diferente do
protocolo por parte do fabricante, o que torna necessário a aplicação de um patch e à recompilação do
kernel do sistema.
10.1.2.2.
Gentoo Linux
O Gentoo Linux [GENTOO] é uma distribuição Linux baptizada com um nome de uma espécie
de pinguim (pinguim Gentoo). Foi concebido para ser modular, portável e optimizado para o sistema
onde se pretende instalar. Isto é, construindo todas as ferramentas e utilitários a partir do código fonte,
embora, por conveniência, vários pacotes pré-compilados estão disponíveis para diversas arquitecturas.
O Gentoo consegue isto através do sistema Portage. O Gentoo é também muito apreciado pelos seus
fóruns de discussão e pela grande base de conhecimento que representam.
A distribuição pode ser instalada de várias maneiras. A maneira mais comum é usar o Live-CD
do Gentoo, mas também pode ser instalado a partir de uma instalação Linux existente. O computador
precisa de ser preparado para a instalação criando partições no disco rígido e instalando um sistema
base que corresponde a varias etapas possíveis. A instalação a partir do Live-CD permite uma maior
personalização e optimização do SO, enquanto que a instalação a partir de um Linux existente permite
uma instalação mais rápida.
RACmotion – Robótica Académica de Coimbra
Página 63 de 119
O sistema Portage funciona de maneira semelhante ao APT da distribuição Debian [DEBIAN]. É
um sistema de gestão e obtenção de pacotes de aplicações, possui uma base de dados com os pacotes
instalados localmente e com os disponíveis para download pela Internet. O Portage é escrito na
linguagem Python [PYTHON] e pode ser considerada a aplicação que define a distribuição. Embora o
sistema seja conhecido por Portage as suas funcionalidades são invocadas na linha de comandos pelo
comando emerge.
A instalação é realizada num ambiente chroot (processo que modifica a raiz do sistema para
outra localização) onde o sistema Portage do Gentoo é usado para instalar os pacotes fundamentais no
novo sistema. O Gentoo não tem um programa de instalação como muitas outras distribuições, o
utilizador segue uma série de passos descritos no Gentoo Handbook disponível na página e no CD do
Gentoo.
O Kernel necessita de ser configurado, e compilado durante o processo de instalação. O Gentoo
não dispõe de um Kernel pré-compilado. Em vez disso oferece vários códigos fonte do Kernel, muitos
deles com correcções e optimizações consoante os requisitos dos utilizadores. A configuração do Kernel
pode ser efectuada usando utilitários como o menuconfig ou o genkernel.
Depois do Kernel ser instalado, os ficheiros de configuração do sistema necessitam de ser
editados manualmente de modo a satisfazer as necessidades do utilizador. Isto inclui a tabela do
sistema de ficheiros, a configuração da rede e as personalizações do sistema. Muito importante é a
configuração do ficheiro especifico do Gentoo, o ficheiro make.conf em /etc/. Este contém propriedades
que controlam o processo de compilação dos pacotes de aplicações e é geralmente actualizado pelo
administrador do sistema quando os valores predefinidos necessitam de ser alterados. As propriedades
deste ficheiro são passadas para o compilador no processo de construção das ferramentas e aplicações
do sistema, garantido assim, ficheiros binários optimizados para a plataforma.
O Gentoo é criticado pelo seu longo processo de instalação, demorando vários dias a ser
instalado em sistemas mais lentos. O que levou a um debate sobre as virtudes das distribuições por
pacotes binários versus distribuições por pacotes de código fonte. Alguns defendem que os pacotes
binários são mais lentos e menos personalizáveis, enquanto outros respondem que muitos pacotes
demoram dias a compilar e são incompatíveis com as necessidades dos utilizadores que requerem uma
instalação rápida.
O estudo efectuado à distribuição Gentoo mostra que os requisitos propostos adequam-se
perfeitamente à plataforma da RAC. O sistema operativo a incorporar na plataforma necessita de ser
altamente adaptado e o Gentoo permite esse nível de adaptação.
Para construir o sistema da plataforma da RAC é utilizado um sistema operativo de
desenvolvimento e teste. Este serve para construir o sistema operativo da plataforma, mas também todo
o software de controlo de movimento e comunicação. Em seguida é abordado em detalhe cada um
destes sistemas.
10.1.3. Sistema Operativo de Desenvolvimento e Teste
A plataforma da RAC esta equipada com um dispositivo de armazenamento de dados Compact
Flash com 256 mega bytes. Este dispositivo é utilizado para armazenar o sistema operativo e todos os
programas de controlo de movimento e comunicação, este sistema é uma versão reduzida e
compactada do Gentoo Linux. Para que fosse possível desenvolver e testar facilmente os programas de
controlo foi necessário utilizar um sistema de apoio em tudo idêntico, mas com todas as ferramentas e
bibliotecas de programação. Estas ferramentas, nomeadamente o compilador, as bibliotecas de funções,
o código fonte dos programas de controlo e do sistema operativo da plataforma, ocupam bastante
espaço, pelo qual, houve a necessidade de utilizar um disco rígido acoplado à uma das plataformas. O
sistema de desenvolvimento permite ainda construir automaticamente uma nova imagem do sistema da
plataforma, copiando-a directamente para a memória flash de cada um dos robôs usando a rede sem
fios.
RACmotion – Robótica Académica de Coimbra
Página 64 de 119
Figura 10.1.3.1 – Sistema de desenvolvimento e teste.
O C foi a linguagem utilizada para programar as aplicações de controlo de movimento e
comunicação com o apoio das ferramentas do projecto GNU, destacando-se principalmente a GNU
Compiler Collection (GCC) cujo o compilador é standard para todos os sistemas operativos Linux. O
interface exterior do GCC interpreta os argumentos da linha de comandos e gera ficheiros binários em
código máquina tendo em conta a arquitectura e as optimizações especificas do microprocessador da
plataforma.
As operações repetitivas de manipulação de ficheiros, execução de programas, e configuração
de dispositivos foram realizados usando shell scripts. Um shell script é um guião escrito para um
interpretador de linha de comandos (shell). Permite que vários comandos, que tradicionalmente seriam
introduzidos um a um, sejam executados automaticamente e rapidamente.
10.1.4. Sistema Operativo da Plataforma
Como já foi referido, o sistema operativo da plataforma é baseado na distribuição Linux Gentoo.
Esta foi modificada tendo em conta o espaço disponível na memória flash. Todos os componentes
desnecessários foram removidos e o processo de carregamento foi alterado para poder ser executado a
partir do dispositivo directamente para a memória principal da plataforma. O processo de compilação do
sistema foi optimizado tendo em conta a arquitectura e funcionalidades do microprocessador VIA Eden
[VIA].
O código fonte do sistema da plataforma é mantido intacto entre as várias interacções do
desenvolvimento. Isto permite uma actualização e configuração fácil, permitindo adicionar programas
como num sistema operativo tradicional. Para além disso, o tempo de construção de uma nova imagem
é bastante inferior porque mantemos o mesmo código fonte entre as interacções.
Podemos dividir o processo de desenvolvimento nas seguintes etapas:
Ø
Ø
Ø
Ø
Ø
Preparação do ambiente de construção
Instalação do sistema base Gentoo.
Criação da imagem Initrd.
Desenvolvimento e manutenção das aplicações de controlo
Construção do sistema.
O ambiente de construção é apenas uma directoria na qual é usado um ambiente de chroot,
tornando-a na raiz do sistema a construir, mas usando ligações simbólicas para as bibliotecas e
ferramentas no sistema de desenvolvimento. Nesta directoria é criado um esqueleto com as directorias
RACmotion – Robótica Académica de Coimbra
Página 65 de 119
base da distribuição Gentoo usando a primeira ou a segunda etapa de instalação da distribuição.
Seguidamente é necessário instalar o sistema Portage que será responsável pela obtenção e
manutenção dos pacotes instalados.
A instalação do sistema base consiste em fazer o download dos pacotes básicos do sistema
operativo, assim como todos os pacotes indispensáveis, como por exemplo, as ferramentas de
configuração das redes sem fios. O ficheiro /etc/make.conf é muito importante, pois contém os
parâmetros de optimização passados ao compilador no processo de compilação dos pacotes.
Nesta etapa, uma das principais tarefas é a compilação do kernel da plataforma. Ao código fonte
do kernel adicionamos as opções especificas e aplicamos os patches que corrigem o funcionamento do
dispositivo wireless. O kernel da plataforma tem de suportar os seguintes itens:
Ø
Ø
Ø
Ø
Ø
Ø
Squashfs – Suporte para sistema de ficheiros comprimido
Initrd com 8 MB – Suporte para imagem de arranque de sistema.
Loopback – Suporte para sistema de ficheiros em memória.
IDE/ATAPI – suporte para dispositivos IDE.
Ext2 – suporte para o sistema de ficheiros ext2.
Wireless – suporte para as extensões IEEE 802.11b.
A imagem initrd proporciona ao bootloader a capacidade de carregar um sistema de ficheiros na
memória principal da plataforma (ramdisk). Este sistema de ficheiros pode ser montado como a raiz do
sistema e os programas podem ser executados a partir dele. O sistema initrd foi desenhado para que o
arranque do sistema ocorra em duas fases, na primeira, o kernel com muito poucos drivers de
dispositivos, assume o comando do computador e carrega os drivers e ficheiros de configuração
presentes em initrd, para que na segunda fase, já com acesso aos principais dispositivos, arranque o
sistema principal.
A imagem initrd é um ficheiro que ocupa 8 mega bytes e contem para além do script de
arranque do sistema (linuxrc), as ferramentas de sistema usadas pelo script e respectivas bibliotecas de
funções.
Programa
/bin/sh
/bin/cat
/bin/mount
/bin/umount
/bin/mkdir
/bin/chroot
/bin/tar
/sbin/pivot_root
Função
Dependências
Interpretador de linha de
comandos (shell)
Faz a concatenação de
ficheiros de configuração
Monta um sistema de
ficheiros
Desmonta um sistema de
ficheiros
Cria directorias num sistema
de ficheiros
Modifica o sistema para um
sist. de raiz em jaula
Comprime e descomprime
ficheiros e/ou directorias
Substitui a raiz do sistema
de ficheiros
/lib/libc.so.6
/lib/ld-linux.so.2
…
Tabela 10.1.4.1 – Ferramentas de sistema presentes em initrd.
Após a criação da imagem initrd, são copiados os ficheiros executáveis dos programas de
controlo da plataforma, assim como os respectivos ficheiros de configuração.
Na última etapa, o sistema da plataforma é compactado numa estrutura squashfs (sistema de
ficheiros compactado) e copiado juntamente com o initrd e o kernel do sistema para a memoria flash.
Este processo é automaticamente realizado por um script que opcionalmente pode actualizar
remotamente o sistema de todos os robôs que se encontrarem ligados.
RACmotion – Robótica Académica de Coimbra
Página 66 de 119
Grande parte dos sistemas computorizados, não possuem um sistema operativo em memória. O
hardware por si só não consegue realizar as operações complexas de um sistema operativo, como ler
um programa de um dispositivo de armazenamento. Então parece estar criado um paradoxo: para
carregar um sistema operativo na memória é necessário que exista um sistema operativo previamente
instalado.
A solução para este paradoxo, envolve o uso de um pequeno programa, chamado bootloader.
Este programa não tem todas as capacidades de um sistema operativo, mas é construído à medida para
carregar software suficiente para que o sistema operativo consiga arrancar. Frequentemente são
utilizados bootloaders de múltiplas etapas, onde vários programas carregam-se em cadeia, até que o
último, carrega o sistema operativo.
Todos os dispositivos de memória flash da plataforma foram previamente preparados para
servirem como dispositivos de arranque. Para isso, foi instalado na sua partição principal um bootloader
que fica encarregue de ler os ficheiros do sistema operativo.
10.1.5. Processo de Arranque do Sistema
Após o arranque, o microprocessador da plataforma corre a instrução localizada no endereço
FFFF0h da BIOS (Basic Input/Output System). Esta localização é próxima do fim da memória do
sistema. Contém uma instrução de salto que transfere a execução para um programa, armazenado em
ROM da BIOS. Este programa corre um teste (Power-On Self Test) para verificar que dispositivos estão
a funcionar, e faz a sua inicialização. Em seguida a BIOS percorre uma lista de dispositivos previamente
definida até encontrar um que esteja preparado para arrancar o sistema operativo. Se a BIOS encontrar
um dispositivo de arranque, lê e executa o sector de arranque no sistema de ficheiros do dispositivo. No
caso da memória flash, este sector é a lista principal de arranque (MBR – Master Boot Record) que não
é específica de nenhum sistema operativo. O código da MBR verifica a tabela de partições pela
existência de uma partição activa. Se for encontrada, o código da MBR carrega o sector de arranque
dessa partição e executa-o. Este sector de arranque é onde esta instalado o bootloader, especifico do
sistema operativo, cuja principal função é carregar e executar o kernel.
Podemos sintetizar o processo que se segue nos seguintes passos:
1. O bootloader carrega em memória o kernel e a imagem inicial (initrd).
2. O kernel converte a imagem initrd num sistema de ficheiros em memória e liberta o espaço
ocupado pela imagem.
3. A imagem initrd é montada como apenas de leitura (read only) e como raiz do sistema de
ficheiros (root).
4. O script linuxrc é executado e realiza os restantes passos.
5. Guarda os parâmetros que foram passados ao kernel, para os passar posteriormente a /sbin/init.
6. Localiza o dispositivo de memória flash no bus IDE.
7. Monta o dispositivo em /flash.
8. Monta o sistema de ficheiros compactado (squashfs) em /new (contém toda a instalação do
Gentoo compactada num único ficheiro), este vai ser a raiz do sistema, em modo apenas de
leitura (read only).
9. Monta as directorias de leitura/escrita em memória usando o sistema de ficheiros tempfs (/var,
/etc, /tmp e /root) e preenche o seu conteúdo a partir da imagem compactada.
10. A raiz do sistema é alterada para a nova raiz usando a ferramenta pivot_root.
11. A sequencia de arranque habitual (i.e. a execução de /sbin/init) é executada na raiz do sistema
de ficheiros.
12. Os drivers de dispositivos são carregados e configurados
13. O sistema de ficheiros initrd é removido.
14. São executados os programas de controlo de movimento e comunicações.
Ao fim de alguns segundos após o arranque, a plataforma fica pronta a receber comandos de
movimento e a enviar dados de sensores e dispositivos.
10.2. Sistema de Comunicações
O sistema de comunicações da plataforma da RAC utiliza uma rede de dados baseada no
modelo de referencia de sete camadas do protocolo OSI (Open Systems Interconnection) [ISO].
RACmotion – Robótica Académica de Coimbra
Página 67 de 119
O modelo OSI divide as funções do protocolo de comunicações numa série de camadas. Cada
camada possui a característica de apenas usar as funções da camada a baixo e apenas disponibiliza as
suas funcionalidades e serviços à camada a cima. Um sistema de comunicações que implementa um
protocolo que consiste numa série destas camadas é designado por pilha protocolar (como por exemplo,
a pilha TCP/IP). As pilhas protocolares podem ser implementadas tanto em software como em
hardware, ou como uma mistura dos dois. Tipicamente, apenas as camadas inferiores são
implementadas em hardware e as camadas superiores em software.
O modelo OSI teve grande adesão por parte da indústria de telecomunicações e informática. A
sua característica principal está no interface entre as várias camadas que impõem especificações
exactas sobre a maneira como uma camada interage com a outra. Isto significa que uma camada
implementada por um fabricante pode interagir com a camada de outro (assumindo que a especificação
foi cumprida). Estas especificações são geralmente conhecidas com RFC’s (Request for Comments) na
comunidade TCP/IP. Elas constituem standards ISO na comunidade OSI.
A camada física é a mais básica da rede de comunicações, corresponde ao nível um no modelo
de sete camadas OSI. Esta camada executa serviços pedidos pela camada dois, a camada de ligação.
Este nível corresponde ao hardware de comunicações, cabos, ou a uma conexão electromagnética sem
fios. É também responsável pelas especificações eléctricas, conectores eléctricos, frequências de
transmissão, controlo de colisões e outras funções de baixo nível.
As principais funções e serviços executados pela camada física são:
•
•
•
Estabelecimento e terminação de uma conexão no meio físico de comunicação.
Participação no processo no qual os recursos do meio de comunicação são efectivamente
partilhados entre vários utilizadores, i.e. resolução de contenção e controlo de fluxo.
Conversão entre a representação dos dados digitais no equipamento do utilizador e os sinais
correspondentes transmitidos no canal de comunicações.
A camada de ligação corresponde ao nível dois no modelo de sete camadas OSI. Disponibiliza
serviços à camada de rede e pede serviços à camada física. Assegura que a informação é transmitida
correctamente entre nós adjacentes de uma rede alargada. Fornece os meios que possibilitam a
detecção e correcção de erros de transmissão que possam ocorrer na camada física. Esta camada é
composta por dois componentes. O primeiro componente é o controlo de ligação lógico. Este
componente determina onde acaba um segmento de dados e onde começa o segmento seguinte. O
segundo componente é o controlo de acesso ao meio (MAC – Media Access Control). Este componente
determina quem é que esta autorizado a utilizar o meio de comunicação baseado no endereço físico do
dispositivo. Exemplos de protocolos de ligação são: wi-fi para redes sem fios, ethernet para redes locais
e PPP, HDLC para ligações ponto a ponto.
A camada de rede corresponde à camada três do protocolo OSI. É responsável por converter
endereços lógicos e nomes em endereços físicos. Também determina o caminho desde a fonte ao
destinatário e faz a gestão de tráfego na rede, como a comutação, o encaminhamento e a congestão de
pacotes de dados. Fornece os meios para a transmissão de sequencias de dados de comprimento
variável mantendo a qualidade de serviço disponibilizada pela camada de transporte. No entanto, a
camada de rede, realiza as suas funções sem detecção e correcção de erros e controlo de fluxo.
Exemplos de protocolos de rede são: IP, ICMP, IPX, netBEUI e DECnet.
A camada de transporte corresponde ao nível quatro do modelo de sete camadas OSI. No
modelo de camadas da RAC, a camada de transporte disponibiliza serviços à camada de aplicação e
requer serviços a camada de rede. A camada de transporte fornece uma transferência de dados
transparente entre sistemas. É responsável pela recuperação de situações de erro e controlo de fluxo.
Assegura que a transferência de dados é completa. A sua missão é proporcionar às camadas superiores
uma transferência de dados eficaz e confiável. Permitindo que a implementação das camadas
superiores seja feita sem qualquer preocupação sobre a integridade dos dados enviados no canal de
comunicação. Existe uma longa lista de serviços disponibilizados por esta camada, no entanto, nem
todos são usados pelas aplicações. Alguns destes serviços podem levar ao desperdício de recursos ou
mesmo tornarem-se
contra-producentes em alguns casos. Alguns exemplos de protocolos de
transporte são: TCP, UDP, RTP e SPX.
A camada de aplicação corresponde ao nível sete do modelo OSI. No modelo de camadas da
RAC, a camada cinco e seis do modelo OSI não foram implementadas pois não são necessárias. Assim,
a camada de aplicação requer serviços à camada de transporte, e por sua vez, a camada de aplicação
RACmotion – Robótica Académica de Coimbra
Página 68 de 119
faz o interface directo com as aplicações de utilizador. No caso da RAC, estas aplicações são os
programas de controlo de movimento e aquisição de dados.
Na tabela seguinte é ilustrada a pilha protocolar usada na plataforma da RAC, esta pilha
implementa um subconjunto de cinco camadas das sete camadas originais do modelo de referência
OSI.
Pilha Protocolar da plataforma RAC
Camada
Aplicação
Protocolo
RACprotocol, SSH/SFTP
Implementação
Software
Transporte
TCP
Software
Rede
IPv4
Software
Wi-fi (IEEE 802.11b)
Hardware/Software
Radiofrequência (2,4 GHz)
Hardware
Ligação
Física
Tabela 10.2.1 – Pilha protocolar da plataforma RAC.
Nos três sub capítulos seguintes são analisados os protocolos que foram utilizados nas cinco
camadas protocolares da plataforma da RAC.
10.2.1. Protocolo IEEE 802.11b
O protocolo IEEE 802.11b juntamente com o dispositivo de comunicação wireless USB EDIMAX
LAN Adapter implementam as duas primeiras camadas (camada física e de ligação) da pilha protocolar
do sistema de comunicação da plataforma da RAC.
O protocolo IEEE 802.11 refere-se a um conjunto de standards para redes locais sem fios
desenvolvido pelo grupo onze do comité de standards LAN/MAN do IEEE (IEEE 802). O termo é
também usado para referir o protocolo original 802.11, que actualmente se encontra ultrapassado.
A família 802.11 inclui seis técnicas de modulação de radiofrequências que usam o mesmo
protocolo, as técnicas mais populares são as definidas pelas adendas a, b e g do protocolo original. A
segurança das comunicações foi originalmente incluída, e mais tarde reforçada através da adenda i.
Outros standards da família (c-f,h-j,n) são extensões para a melhoria do serviço, ou correcções a
especificações prévias. O 802.11b foi o primeiro protocolo de rede sem fios mundialmente aceite,
seguido ( de maneira pouco intuitiva) pelos 802.11a e 802.11g.
Figura 10.2.1.1 – Router wireless 802.11b.
RACmotion – Robótica Académica de Coimbra
Página 69 de 119
Os standards 802.11b e 802.11g usam a banda pública (não licenciada) dos 2,4 GHz. Nesta
banda podem ocorrer interferências provocadas por telefones sem fios e fornos micro-ondas, pois
utilizam as mesmas frequências. O standard 802.11a usa a banda não regulamentada dos 5 GHz.
A versão original do standard IEEE 802.11 lançado em 1997 especifica duas velocidades para a
transmissão de dados de 1 e 2 mega bits por segundo (Mbits/s) de modo a serem transmitidas através
de sinais infra-vermelhos (IR) ou através da banda Industrial Médico-Científica de 2,4 GHz. O IR
mantém-se como parte integrante do standard mas actualmente não existem implementações
comerciais.
O standard original também define como método de acesso ao meio o CSMA/CA (Carrier Sense
Multiple Access with Collision Avoidance). Uma percentagem significativa do canal de comunicação
disponível é sacrificado para permitir aumentar a fiabilidade da transmissão de dados em condições
ambientais adversas.
Surgiram pelo menos cinco implementações comerciais inter-operáveis usando a especificação
original. Uma das fraquezas da especificação foi a disponibilização de muitas opções, levando com isso
a uma inter-operabilidade difícil de conseguir. Era mais uma “meta-especificação” do que uma
especificação rígida, permitindo a cada fabricante a flexibilidade de diferenciar os seus produtos. O
802.11 original foi rapidamente suplantado pela popularidade do 802.11b
A adenda 802.11b ao protocolo original foi rectificada em 1999. O 802.11b tem uma velocidade
de transmissão dados máxima de 11 Mbit/s e utiliza o mesmo método de acesso ao meio (CSMA/CA)
definido no protocolo original. Devido à percentagem bastante significativa da largura de banda do canal
que o CSMA/CA utiliza, na prática o fluxo de dados máximo que uma aplicação pode atingir é
aproximadamente 5,9 Mbit/s sobre TCP e 7,1 Mbits/s sobre UDP.
Os dispositivos baseados no protocolo 802.11b apareceram no mercado muito rapidamente, já
que utilizam uma extensão directa da modulação DSSS (Direct-sequence spread spectrum) definida no
standard original. Assim, os produtos existentes foram rapidamente actualizados para suportarem as
evoluções introduzidas pelo 802.11b. O aumento significativo do 802.11b (quando comparado com o
standard original) e as reduções do preço dos dispositivos levaram a adopção definitiva do 802.11b
como a tecnologia LAN sem fios.
O standard 802.11b é usado mais frequentemente numa configuração ponto-multiponto, onde
um ponto de acesso (AP) comunica através de uma antena omnidireccional com um ou mais clientes
localizados dentro da área de cobertura do AP. Com antenas exteriores de alto ganho é possível utilizar
uma configuração fixa ponto a ponto para distancias típicas de oito quilómetros, embora já tenham sido
conseguidas distancias de 80-120 quilómetros.
Os dispositivos 802.11b podem funcionar a velocidades de 11 Mbits/s, mas se a qualidade do
sinal constituir um problema, podem reduzir a velocidade para 5,5, 2 e 1 Mbit/s. Como as velocidades
mais baixas utilizam métodos de codificação menos complexos e mais redundantes, são menos
susceptíveis a corrupção de dados devido a interferências e à atenuação do sinal. Foram realizadas
extensões ao protocolo 802.11b (como por exemplo a união de canais e técnicas de transmissão burst)
para se conseguir aumentar a velocidade de transmissão para 22, 33 e 44 Mbit/s, mas estas extensões
são propriedade de algumas empresas e, por isso, não são protocolos abertos, patrocinados pelo IEEE.
Estas extensões ultimamente têm sido postas de parte devido ao desenvolvimento do 802.11g, que
consegue 54 Mbit/s e é compatível com o 802.11b.
O 802.11b divide o espectro em 14 canais sobrepostos onde as frequências centrais estão
separadas 5 MHz umas das outras. É comum ouvir que os canais 1,6 e 11 (e 14 se a entidade
reguladora de comunicações local permitir o uso dessa frequência) não se sobrepõem e que esses
canais (ou outros conjuntos com o mesmo espaçamento) podem ser usados de modo a que várias
redes possam operar muito próximas sem causar interferências entre elas, no entanto esta afirmação é
um bocado simplificada. O standard 802.11b não especifica a largura do canal, em vez disso, é
especificado a frequência central do canal e a máscara espectral para o canal respectivo. A máscara
espectral para o 802.11b define que o sinal tenha uma atenuação de 30 dB da sua energia máxima a
+/- 11 MHz da frequência central e pelo menos 50 dB a +/- 22 MHz da frequência central.
RACmotion – Robótica Académica de Coimbra
Página 70 de 119
Figura 10.2.1.2 – Sobreposição de canais no protocolo 802.11b.
Uma vez que a máscara espectral apenas define a potencia do sinal até 22 MHz da frequência
central, algumas pessoas podem assumir que a energia do canal não se estende para além desse
limite, mas na realidade, é isso não acontece. De facto, se o transmissor for suficientemente potente, o
sinal pode ser bastante forte, mesmo depois do ponto dos +/- 22 MHz. É portanto, incorrecto dizer que
os canis 1, 6 e 11 não se sobrepõem. É mais correcto dizer que, dada a separação dos canais 1, 6 e 11,
o sinal em qualquer canal, deve estar suficientemente atenuado para não interferir significativamente
com o transmissor em qualquer outro canal. Por exemplo, um transmissor potente no canal 1 pode
facilmente sobrepor-se a um transmissor fraco no canal 6. Em testes de laboratório, a velocidade de
transferência de um ficheiro usando o canal 11 diminuiu sensivelmente quando uma transferência similar
começou no canal 1, indicando mesmo que os canais 1 e 11 podem interferir ligeiramente um com o
outro. Se os transmissores estiverem próximos e utilizarem canais mais juntos do que o 1, 6 e 11 (como
por exemplo o 1, 4, 7 e 10), a sobreposição de canais pode provocar uma degradação inaceitável da
qualidade do sinal e da velocidade de transferência de dados.
Os canais que estão disponíveis para utilização num determinado país diferem de acordo com a
legislação em vigor. Em Portugal estão disponíveis para utilização os canais 1 a 13. Nos Estados
Unidos, a autoridade reguladora (FCC) apenas permite a utilização dos canais 1 a 11. A lista actualizada
em 2001 das frequências para o protocolo 802.11 é apresentada na tabela seguinte. O canal 14, quando
disponível, é para uso exclusivo para o protocolo 802.11b.
Canal
Frequência
MHz
EUA
X10
Canada
X20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2412
2417
2422
2427
2432
2437
2442
2447
2452
2457
2462
2467
2472
2484
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
Europa
ETSI
X30
x
x
x
x
x
x
x
x
x
x
x
x
x
Espanha
X31
x
x
França
X32
x
x
x
x
x
x
x
x
x
x
x
x
x
Japão
X40
x
x
Japão
X41
x
x
x
x
x
x
x
x
x
x
x
x
x
x
Tabela 10.2.1.1 – Canais 802.11 e a sua disponibilidade em vários países.
RACmotion – Robótica Académica de Coimbra
Página 71 de 119
Como o IEEE apenas define especificações mas não testa equipamentos para verificar a sua
conformidade, um grupo de trabalho chamado Wi-Fi Alliance [WIFI] executa um programa de
certificação onde participam virtualmente todas as empresas que comercializam equipamentos 802.11.
O logótipo do Wi-Fi, detido pelo grupo, e que apenas pode ser usado em equipamento certificado,
pretende garantir a interoperabilidade do equipamento de fabricantes diferentes.
Em 2001 um grupo da universidade da Califórnia em Berkeley apresentou um artigo cientifico
onde descrevia as vulnerabilidades do protocolo WEP (Wired Equivalent Privacy) do standard 802.11,
seguidos rapidamente por Fluhrer, Mantin, e Shamir's no paper cientifico "Weaknesses in the Key
Scheduling Algorithm of RC4". Pouco depois Adam Stubblefield e a empresa AT&T anunciaram
publicamente a verificação do ataque. No ataque, eles conseguiram interceptar transmissões e obter o
acesso não autorizado a redes sem fios 802.11.
O IEEE estabeleceu um grupo de trabalho dedicado para criar um protocolo de segurança
substituto, o 802.11i. A Wi-Fi Alliance anunciou entretanto uma especificação chamada WPA (Wi-Fi
Protected Access) baseada num subconjunto da especificação 802.11i que ainda se encontrava em
desenvolvimento. Os produtos certificados começaram a aparecer no mercado em meados de 2003. O
802.11i (também conhecido como WPA2) foi rectificado em Junho de 2004 e utiliza o standard de
encriptação AES (Advanced Encryption Standard) substituindo o RC4, que é usado no WEP e no WPA.
10.2.2. Protocolo TCP/IP
O protocolo TCP/IP faz parte da pilha protocolar do sistema de comunicações da plataforma da
RAC. O IP (Internet Protocol) é utilizado na camada de rede (camada três do modelo de referência OSI)
e o TCP (Transmission Control Protocol) é utilizado na camada de transporte (camada quatro do modelo
de referência OSI).
O IP é um protocolo orientado para a comunicação de dados entre uma fonte e um destino
utilizando uma rede de comutação de pacotes. Os dados numa rede IP são enviados em blocos,
também chamados pacotes ou datagramas (Os termos são basicamente sinónimos na terminologia IP).
No IP, não existe a necessidade de haver uma negociação prévia para que um sistema tente enviar
pacotes de dados para outro sistema.
O IP disponibiliza um serviço de distribuição de pacotes de melhor esforço, ou seja, não dá
garantias sobre as condições de entrega de um pacote. O pacote pode chegar ao seu destino
danificado, pode chegar fora de ordem em relação aos outros pacotes, pode chegar duplicado, ou pode
perder-se completamente. Se uma aplicação necessitar de fiabilidade na comunicação, existem outros
meios para a conseguir, tipicamente através dos protocolos das camadas superiores que são
transportados sobre IP.
Os comutadores de pacotes, e os encaminhadores, enviam os pacotes de dados sobre redes
interligadas pelos protocolos da camada dois. A ausência de garantias na entrega de pacotes significa
que a implementação dos dispositivos de comutação e encaminhamento (switches e routers) é muito
mais simples.
Os aspectos mais complexos do protocolo IP são o endereçamento e o encaminhamento. O
Endereçamento diz respeito a maneira como são atribuídos os endereços IP a cada sistema e como são
divididas e agrupadas sub-redes de sistemas IP. O encaminhamento IP é realizado por todos os
sistemas, mas principalmente pelos encaminhadores (routers) que interligam redes. Tipicamente
utilizam protocolos de encaminhamento complexos (como por exemplo, os IGP – Interior Gateway
Protocols e os EGP – External Gateway Protocols) que ajudam a tomar decisões de encaminhamento
através de redes IP interligadas.
O IP é o elemento comum encontrado na Internet publica actual. A versão do protocolo mais
popular e difundida é a versão 4, ou IPv4. No entanto a Internet esta lentamente a ficar sem endereços,
pois os campos de endereços de fonte e destino é de apenas 32 bits (4.294.967.296 endereços
diferentes, se bem que muitos deles estão reservados para aplicações especiais). O IPv6 é o sucessor
proposto ao IPv4 e para além de outras funcionalidades, possui um espaço para endereçamento de 128
bits o que vai resolver o problema da falta de endereços para um futuro próximo.
RACmotion – Robótica Académica de Coimbra
Página 72 de 119
+
Bits 0 - 3
0
Versão
32
64
96
128
160
4-7
Comprimento
do cabeçalho
8 - 15
Tipo de serviço
(DiffServ e ECN)
Identificação
Tempo de vida (TTL)
19 - 31
Comprimento total
Offset de
fragmento
Checksum do cabeçalho
Flags
Protocolo
Endereço da fonte
Endereço do destino
Opções
192
16 - 18
Dados
Tabela 10.2.2.1 – Cabeçalho de um pacote IPv4.
O TCP (Transmission Control Protocol) é um dos protocolos fundamentais do conjunto de
protocolos da Internet. Usando TCP os programas, que correm em computadores ligados em rede,
podem criar ligações e enviar dados. O protocolo garante que os pacotes de dados enviados são
recebidos pela mesma ordem pela qual foram enviados e sem falhas. Consegue diferenciar os dados
das diferentes aplicações que correm no mesmo sistema usando o conceito de portos de 16 bits.
As aplicações enviam streams de bytes ao TCP para distribuição, o TCP divide essa stream em
pacotes com um tamanho máximo definido pela camada de ligação (corresponde ao MTU – maximum
trasnmission unit da rede). Depois, o TCP passa esses pacotes ao IP que os envia e entrega a um
destinatário usando a rede de comunicações. O protocolo certifica-se que nenhum pacote de dados é
perdido dando a cada pacote um número de sequência, esse número também é usado para verificar o
ordenamento correcto dos pacotes. Os módulos TCP enviam entre si confirmações para os dados que
foram entregues correctamente. Um temporizador no módulo TCP de envio causa um timeout se não for
recebida uma confirmação dentro de um tempo razoável (RTT – Round Trip Time) e reenvia o pacote
que foi presumivelmente perdido. O TCP verifica que não existem pacotes danificados utilizando um
mecanismo de verificação (checksum), o checksum de um pacote é calculado antes de ser enviado, e é
verificado no acto da recepção.
As conexões TCP são realizadas em três fases: estabelecimento da conexão, transferência de
dados e terminação de conexão. É utilizada uma negociação de três etapas para estabelecer uma
ligação e para terminar a ligação é utilizada uma negociação de quatro etapas.
Embora seja possível que um par de sistemas inicie simultaneamente entre si uma conexão,
habitualmente, um dos sistemas espera passivamente por uma conexão de outro sistema. Este é
normalmente designado como o paradigma cliente/servidor. O cliente inicia uma ligação enviando um
pacote SYN inicial, o servidor responde a um SYN válido com um SYN/ACK. Finalmente o cliente deve
responder com um ACK completando o processo de negociação de três etapas o que conclui o
processo de estabelecimento de ligação.
O processo para terminar a ligação utiliza uma negociação de quatro etapas, onde cada lado da
ligação termina independentemente. Quando um dos lados deseja terminar a ligação transmite um
pacote FIN que é confirmado pelo outro lado com um ACK. Assim o processo típico vai ter um par de
pacotes FIN e um par de pacotes ACK trocados entre as duas partes. A ligação pode estar “meioaberta” no caso em que um dos lados terminou a ligação, mas o outro lado ainda não. O lado que
terminou já não pode enviar dados, mas o outro lado ainda o pode fazer.
+
0
32
64
96
128
160
192
Bits 0 - 3
4-9
10 - 15
16 - 31
Porto fonte
Porto de destino
Número de sequência
Número de confirmação
Offset de dados Reservado Flags
Janela
Checksum
Ponteiro Urgente
Opções (Opcional)
Opções (continuação)
Enchimento (até 32)
224
Dados
Tabela 10.2.2.2 – Cabeçalho de um pacote TCP.
RACmotion – Robótica Académica de Coimbra
Página 73 de 119
10.2.3. Protocolo de Comunicação RACprotocol
Esta secção descreve o protocolo ao nível da camada de aplicação (camada sete do modelo de
referencia OSI). Especifica as mensagens da arquitectura de controlo da RAC entre o software de
controlo de movimento do robô e o controlador centralizado. O nível inferior da arquitectura de controlo
está representado na figura seguinte. A interacção é do tipo cliente/servidor: a camada de controlo
superior é o servidor e a camada inferior é o cliente.
A arquitectura utiliza o protocolo TCP/IP, o servidor aceita ligações dos robôs clientes no porto
10000. Após o estabelecimento de uma ligação, tanto o servidor como o cliente podem enviar
mensagens. O controlo da fiabilidade da comunicação entre cliente e servidor fica a cargo do protocolo
TCP/IP, o cliente pode iniciar e terminar uma ligação. O servidor apenas pode terminar uma ligação.
Servidor
TCP/IP
BRAIN
Controlador Central
TRJCTR
Controlo de Trajectórias
ACTUADORES
SENSORES
Cliente
TCP/IP
Figura 10.2.3.1 – Nível inferior da arquitectura de controlo da RAC.
10.2.3.1.
Grandezas e Codificação
As unidades das grandezas descritas nesta secção podem ser divididas em cinco grupos:
•
•
•
•
•
•
Informação lógica, como identificadores de mensagens, flags e identificadores de estado;
Posição, medida em metros (m);
-1
Velocidade linear, medida em metros por segundo (m.s );
Ângulo, medidos em radianos, sendo positivo no sentido contrário ao dos ponteiros do
relógio.
-1
Velocidade angular, medida em radianos por segundo (rad.s );
Tempo, medido em segundos (s).
Todos os dados são codificados em código binário: As unidades do primeiro grupo são
codificadas como variáveis de 1 byte (equivalentes ao tipo unsigned char da linguagem C); velocidades,
posições e ângulos são codificadas como variáveis de virgula flutuante de 4 bytes (equivalentes ao tipo
float da linguagem C com uma gama de precisão 3.4 E +/-38 e 7 dígitos).
10.2.3.2.
Especificação das Mensagens
As mensagens têm tamanho variável e seguem a estrutura definida pela tabela:
Tamanho da
mensagem
Identificador
MsgSize
IDMsg
2 bytes
2 bytes
Campos
Field 1
Field 2
…
Field n
FIELDS bytes
Tabela 10.2.3.2.1 – Estrutura da mensagem.
RACmotion – Robótica Académica de Coimbra
Página 74 de 119
Descrição dos campos:
•
•
•
MsgSize: Indica o tamanho da mensagem em bytes;
IDMsg: Identifica o tipo de mensagem;
Field x: Campos da mensagem. O número de campos e o seu tamanho variam consoante o
tipo de mensagem.
Os tipos de mensagens podem ser classificados em três grupos:
1. Gestão de sessão: As mensagens deste tipo são utilizadas pelo cliente e pelo servidor para
iniciar e terminar uma ligação;
2. Comandos do servidor: Estas mensagens são utilizadas pelo servidor para controlar os
actuadores da plataforma e os parâmetros relacionados, também permitem obter o estado
interno da plataforma;
3. Comandos do cliente: Estas mensagens são utilizadas pelo cliente para obter a sua
posição actual, calculada a partir dos dados da câmara, utilizada no controlador de
trajectórias do robô para corrigir o movimento.
10.2.3.2.1.
Mensagens de Gestão de Sessão
Existem duas mensagens definidas nesta secção.
10.2.3.2.1.1
Mensagem OpenSess (0x02)
Abertura de Sessão
Esta mensagem é transmitida pelo cliente logo após o estabelecimento de uma ligação. O
servidor utiliza a informação adicional do campo da mensagem para identificar o robô que iniciou a
ligação.
Identificador
Campos
OpenSess
RobotID
0x02
1 byte
1 byte
Tabela 10.2.3.2.1.1.1 – Mensagem OpenSess.
Descrição dos campos:
•
RobotID: Número único de identificação do robô
10.2.3.2.1.2
Mensagem SessQuit (0x03)
Fecho de Sessão
Esta mensagem pode ser transmitida tanto pelo cliente como pelo servidor para terminar uma
ligação. É utilizada quando uma das aplicações necessite terminar devido a um comando de utilizador
ou a um erro interno do programa. Em situações normais cabe ao cliente restabelecer a ligação.
Identificador
Campos
SessQuit
ExitFlag
0x03
1 byte
1 byte
Tabela 10.2.3.2.1.2.1 – Mensagem SessQuit.
RACmotion – Robótica Académica de Coimbra
Página 75 de 119
Descrição dos campos:
•
ExitFlag: Condição que leva a uma das partes a terminar a ligação de acordo com a tabela
seguinte.
Flag
Descrição
0
Ordem do utilizador
1
Erro interno da aplicação
2
Falta de recursos do sistema
3
Bateria Fraca
Tabela 10.2.3.2.1.2.2 – Condições de erro da mensagem SessQuit.
10.2.3.2.2.
Mensagens de Comando do Servidor
Existem oito mensagens definidas nesta secção.
10.2.3.2.2.1
Mensagem GiveState (0x01)
Envia Estado
Esta mensagem é enviada pelo servidor para actualizar o estado interno de cada robô. Os
clientes respondem com uma mensagem do tipo State. A mensagem GiveState não tem campos.
Identificador
Campos
GiveState
⊗
0x03
1 byte
0 bytes
Tabela 10.2.3.2.2.1.1 – Mensagem GiveState.
10.2.3.2.2.2
Mensagem SetVelocity (0x05)
Define Velocidade
Esta mensagem define a velocidade instantânea pretendida para o robô. São enviados nos
campos da mensagem os parâmetros do movimento pretendido: o módulo da velocidade, a orientação
no referencial do robô e a velocidade angular.
Identificador
Campos
SetVelocity
v ∈ R0
θ ∈ [0,2π [
ω∈R
0x05
1 byte
1
Campo 1
4 bytes
2..5
Campo 2
4 bytes
6..9
Campo 3
4 bytes
10..13
Tabela 10.2.3.2.2.2.1 – Mensagem SetVelocity.
Descrição dos campos:
•
Campo 1 - v - Módulo da velocidade linear do robô.
•
•
Campo 2 - θ - Anglo de orientação no referencial do robô.
Campo 3 -
ω - Velocidade angular do robô.
RACmotion – Robótica Académica de Coimbra
Página 76 de 119
10.2.3.2.2.3
Mensagem KickBall (0x06)
Chuta a Bola
Esta mensagem ordena ao cliente que active o kicker para chutar a bola. O único parâmetro
desta mensagem é um valor que define a intensidade do remate. Basicamente, define o tempo de carga
do condensador do kicker, quanto mais alto é este valor, maior será a força de remate.
Identificador
Campos
KickBall
Intensity
0x06
1 byte
1 byte
Tabela 10.2.3.2.2.3.1 – Mensagem KickBall.
Descrição dos campos:
•
Intensity: Define a força do remate, quanto maior for o valor, maior é a força do remate.
10.2.3.2.2.4
Mensagem SetDribbling (0x07)
Activa o Dribbler
Esta mensagem define a velocidade de rotação ( d) do dribbler do robô. O dribbler é um cilindro
rotativo que tem a capacidade de atrair a bola, permitindo um maior domínio do jogo. Na versão actual
da plataforma da RAC, o dribbler ainda não está implementado.
Identificador
Campos
SetDribbling
ωd ∈ R
0x07
1 byte
1
4 bytes
2..5
Tabela 10.2.3.2.2.4.1 – Mensagem Setdribbling.
Descrição dos campos:
•
ωd - Velocidade angular do dribbler do robô.
10.2.3.2.2.5
Mensagem Halt (0x08)
Parar
Esta mensagem ordena ao robô que pare os motores de tracção e o dribbler. Não tem campos.
Identificador
Campos
Halt
⊗
0x08
1 byte
0 bytes
Tabela 10.2.3.2.2.5.1 – Mensagem Halt.
RACmotion – Robótica Académica de Coimbra
Página 77 de 119
10.2.3.2.2.6
Mensagem SetTrajectory (0x09)
Define Trajectória
Esta mensagem envia ao robô um conjunto de pontos no espaço, que definem uma trajectória, e
as respectivas características do movimento entre cada ponto (set-points). O primeiro set-point contem a
posição, velocidade e orientação actuais do robô no referencial do campo. Este comando esta limitado a
32 set-points.
Identificador
SetTrajectory
0x09
1 byte
1
Campos
x1 ∈ R0
y1 ∈ R0
v1 ∈ R0
θ1 ∈ [0,2π [
x2 ∈ R0
y2 ∈ R0
Campo
1
Campo
2
Campo 3
Campo 4
Campo 5
Campo 6
…
4 bytes
2..5
4 bytes
6..9
4 bytes
10..13
4 bytes
14..17
4 bytes
18..21
4 bytes
22..25
…
…
Tabela 10.2.3.2.2.6.1 – Mensagem SetTrajectory.
Descrição dos campos:
•
•
•
Campo 1 -
•
Campo 4 - θ - Orientação no referencial do robô.
x - Abcissa do ponto no referencial do campo.
Campo 2 - y - Ordenada do ponto no referencial do campo.
Campo 3 - v1 - Módulo da velocidade linear do robô.
10.2.3.2.2.7
Mensagem SetParms (0x0A)
Define Parâmetros de Calibração
Esta mensagem ajusta os três parâmetros de calibração no modelo cinemático (anglos
desfasamento das rodas). Este comando é apenas usado na calibração de movimento do robô através
de um procedimento inicial quando necessário.
Identificador
Campos
SetParms
α1 ∈ [0,2π [
α 2 ∈ [0,2π [
α 3 ∈ [0,2π [
0x0A
1 byte
1
Campo 1
4 bytes
2..5
Campo 2
4 bytes
6..9
Campo 3
4 bytes
10..13
Tabela 10.2.3.2.2.7.1 – Mensagem SetParms.
Descrição dos campos:
•
•
•
Campo 1 - α1 - Ângulo de correcção de desfasamento da roda 1.
Campo 2 - α 2 - Ângulo de correcção de desfasamento da roda 2.
Campo 3 - α 3 - Ângulo de correcção de desfasamento da roda 3.
10.2.3.2.2.8
Mensagem Position (0x0B)
Posição do Robô
Esta mensagem é enviada pelo servidor em resposta a um pedido de posição (GivePosition) de
um robô.
RACmotion – Robótica Académica de Coimbra
Página 78 de 119
Identificador
Campos
Position
x ∈ R0
y ∈ R0
θ ∈ [0,2π [
0x0B
1 byte
1
Campo 1
4 bytes
2..5
Campo 2
4 bytes
6..9
Campo 3
4 bytes
10..13
Tabela 10.2.3.2.2.8.1 – Mensagem Position.
Descrição dos campos:
•
•
•
x - Abcissa da posição do robô no referencial do campo.
Campo 2 - y - Ordenada da posição do robô no referencial do campo.
Campo 1 -
Campo 3 - θ - Ângulo de orientação no referencial do robô.
10.2.3.2.3.
Mensagens de Comando do Cliente
Existem duas mensagens definidas nesta secção.
10.2.3.2.3.1
Mensagem State (0x00)
Devolve Estado
Esta mensagem devolve o estado interno de vários componentes do robô em resposta a uma
mensagem GiveState enviada pelo servidor.
Campos
Identificador
State
Modified
General
Power
Bumpers
v ∈ R0
ω∈R
ωd ∈ R
0x00
1 byte
1
Campo 1
Campo 2
Campo 3
Campo 4
Campo 5
Campo 6
Campo 7
1 byte
2
1 byte
3
1 byte
4
1 byte
5
4 bytes
6..9
4 bytes
10..13
4 bytes
14..17
Tabela 10.2.3.2.3.1.1 – Mensagem State.
Descrição dos campos:
•
Campo 1 - Modified – Um byte onde os sete bits mais significativos informam quais os
campos da mensagem que foram alterados desde a ultima mensagem state enviada. (1) se
houve alteração, (0) em caso contrário. O bit de ordem 1 é para o campo 1 e assim
sucessivamente.
•
Campo 2 - General – Estado geral do robô – (0) se o robô detecta algum defeito e (1) se
tudo esta em condições.
•
Campo 3 - Power – Estado das baterias – (0) para muito fraco; (1) para fraco; (2) para
estável; (3) para bom e (4) para muito bom.
•
Campo 4 – Bumpers – Estado dos bumpers de contacto – Cada bit representa o estado de
um bumper, (1) para contacto e (0) sem contacto.
•
Campo 5 - v - Módulo da velocidade linear actual do robô.
•
Campo 6 - ω - Velocidade angular actual do robô.
RACmotion – Robótica Académica de Coimbra
Página 79 de 119
•
Campo 7 - ωd - Velocidade angular actual do dribbler do robô.
10.2.3.2.3.2
Mensagem GivePosition (0x0C)
Pede Posição
Nesta mensagem, o robô pede ao servidor a posição actualizada no campo. Essa posição é
utilizada pelo controlador de trajectórias para minimizar o erro de posição. O servidor responde com
uma mensagem do tipo Position. Esta mensagem não tem campos.
Identificador
Campos
GivePosition
⊗
0x0C
1 byte
0 bytes
Tabela 10.2.3.2.3.2.1 – Mensagem GivePosition.
10.2.4. Driver do Dispositivo Wireless
A escolha do hardware de comunicações utilizado na plataforma da RAC teve em consideração
um conjunto de requisitos fundamentais. Construir de raiz todo o hardware de comunicações via rádio
era uma das opções. No entanto, devido às necessidades actuais e futuras da plataforma, a escolha de
um sistema robusto e fiável era fundamental. Os requisitos fundamentais do sistema de comunicação
são:
•
•
•
Fiabilidade – O sistema de comunicação deve ser uma solução previamente testada e com
elevada fiabilidade.
Robustez – A necessidade de suportar aplicações futuras com necessidades consideráveis de
largura de banda.
Facilidade de implementação – A integração do sistema comunicações ao nível do software
deve ser standard de modo a facilitar o processo de desenvolvimento das aplicações de
controlo. Ao nível do hardware, o sistema tem de ser compacto e de fácil integração na
plataforma.
Depois de uma análise, os membros da RAC tomaram a opção de integrar na plataforma o
sistema de comunicação wireless 802.11b. A escolha de um dispositivo com interface USB em vez do
interface PCMCIA (dois dos interfaces mais comuns suportados pelo PC104) foi tomada devido ao
reduzido tamanho e baixo custo dos dispositivos USB. A integração ao nível de software revelou-se
mais complicada, pois o suporte para outros sistemas operativos, sem ser o Windows, era
desconhecido. Após alguns contactos a escolha recaiu sobre o dispositivo EDIMAX EW-7117U wlan
adapter USB que utiliza o chipset ZyDAS zd1201.
Devido a quota de mercado pouco significativa do sistema operativo GNU/Linux, quando
comparada com o Windows, surgem problemas de suporte ao nível dos dispositivos de hardware. A
grande maioria dos fabricantes não disponibiliza suporte para o Linux pois não existe retorno financeiro
que justifique suportar o investimento de desenvolvimento e suporte técnico a uma plataforma que não
dispõe de uma base de utilizadores considerável.
Cabe a terceiros o desenvolvimento de drivers de dispositivos para os quais o fabricante não os
disponibiliza. Este esforço de desenvolvimento recorre na maioria dos casos ao uso de técnicas de
engenharia inversa, pois os fabricantes, por razões de concorrência e protecção da sua propriedade
intelectual, não revelam a arquitectura interna do dispositivo.
Em Linux, um driver de dispositivo é chamado de módulo, ou LKM (Loadable Kernel Module),
constituem extensões ao Kernel Linux que lhe permitem comunicar com os dispositivos, sistemas de
ficheiros ou redes. Uma das grandes vantagens dos módulos é que podem ser carregados
dinamicamente na memória do Kernel quando é necessário utilizar o dispositivo. Como os módulos são
construídos separadamente, o trabalho de desenvolvimento e de manutenção é muito mais fácil.
RACmotion – Robótica Académica de Coimbra
Página 80 de 119
O projecto Linux ZyDAS zd1201 USB [DRIVER] foi um projecto iniciado por Jeroen Vreeken com
o objectivo de distribuir um módulo para o dispositivo de rede sem fios (802.11b) com interface USB
baseado no chipset ZyDAS zd1201. Existem numerosos fabricantes que comercializam dispositivos
baseados neste chipset como é o caso da Edimax, Sweex, Zyxel, Belkin, SureCom entre muitos outros.
Inicialmente a Sweex distribuiu um driver Linux para a sua gama de dispositivos de rede sem
fios (802.11) USB, mas inesperadamente, retiraram o suporte para Linux e de acordo com a sua página
Web, o Linux deixou de ser suportado para aquela gama de produtos.
O estado de desenvolvimento do driver passou pelas seguintes etapas:
•
•
•
•
Até à versão 0.3 o driver foi baseado num já existente, o wlan-ng, após a versão 0.4, foi
desenvolvido de raiz um novo driver com o nome zd1201.
O driver baseado em wlan-ng suporta as versões 2.4 e 2.6 do Kernel.
O driver novo apenas suporta as versões 2.6 do Kernel.
Em Julho de 2005, o driver foi incluído na árvore de código fonte do Kernel, podendo ser obtido
em conjunto com as versões superiores à 2.6.12. Todo o desenvolvimento futuro será incluído
directamente na árvore do Kernel.
Durante o desenvolvimento do driver descobriu-se que o dispositivo não implementa a
especificação do protocolo USB correctamente. Existe uma diferença no modo de enumeração de
dispositivos USB entre o Windows e o Linux (segundo as especificações, ambos os métodos estão
correctos), o dispositivo apenas implementa o método do Windows. Para o correcto funcionamento em
Linux, é necessário aplicar uma correcção à pilha USB do Kernel. Esta correcção deixou de ser
necessária em fins de Julho de 2005 com o lançamento da versão actualizada do Kernel Linux que
também inclui o driver.
10.2.5. Configuração da Rede Sem Fios
Os dispositivos de rede sem fios 802.11b USB de 11 Mbit/s a bordo dos robôs da RAC permitem
a comunicação com a rede cablada da RAC constituída pelos computadores de controlo central e
processamento de dados da câmara. Uma rede com esta configuração é do tipo Infrastructure, pois
integra as duas redes, com e sem fios. Um grupo de clientes a 11 Mbit/s e um ponto de acesso (AP)
formam um conjunto de serviço básico (BSS – Basic Service Set). Cada cliente num BSS pode
comunicar com qualquer computador na infra-estrutura de rede cablada através do AP.
Figura 10.2.5.1 – Configuração da rede sem fios.
Uma configuração do tipo Infrastructure possibilita o acesso de um sistema sem fios a uma rede
cablada e consegue aumentar o alcance de transmissão entre dois dispositivos sem fios, já que o AP é
responsável por encaminhar os dados dentro do BSS.
A utilização de um identificador único para um BSS é essencial. Cada robô necessita de ser
configurado para usar o identificador e as opções do BSS da RAC. Estas opções podem incluir o tipo de
encriptação e a respectiva chave de acesso ao BSS.
RACmotion – Robótica Académica de Coimbra
Página 81 de 119
10.3. Funções de I/O na Placa MESA 4i65
A 4i65 da MESA é uma placa para o bus PC104 onde podem ser implementadas funções de
entrada/saída complexas. A 4i65 utiliza uma FPGA (Field Programmable Gate Array) de duzentas mil
portas da Xilinx para a implementação da lógica programável.
Figura 10.3.1 – MESA 4i65.
A configuração da FPGA é carregada a partir do bus PC104 permitindo a criação de aplicações
de controlo especializadas, incluindo microcontroladores. Para facilitar as implementações do código da
FPGA é utilizado uma Bridge PCI que faz o interface entre a FPGA e o bus PC104. As aplicações de
programação na FPGA apenas têm que realizar um interface com um bus síncrono de 32 bits, evitando
a árdua tarefa de implementar o interface directo com o barramento PCI.
Todos os bits de entrada/saída suportam 5 Volts e conseguem fornecer uma corrente de 24 mA.
Existem resistências de Pullup para todos os pinos de modo a serem conectados directamente a optoisoladores, contactores etc. A 4i65 possui três conectores de cinquenta pinos, três leds com o estado de
configuração da FPGA e 8 leds que podem ser usados pelos programas da FPGA para informação de
estado ou debug das aplicações.
O relógio de sistema da FPGA utiliza um oscilador de 50 MHz. A FPGA também tem disponível
o relógio de 33 MHz do bus PCI. Outras frequências podem ser geradas utilizando o DLL (Delay Lock
Loop) incluído.
O fabricante disponibiliza vários programas com o dispositivo, incluindo uma implementação de
um controlador de servo-motores de quatro canais baseado em microcontrolador (softDMC) e também
um sistema de 72 bits de entrada/saída paralelo. Este tipo de programas constitui o que normalmente
chamamos firmware, pois é um caso de software feito para ser embebido num dispositivo de hardware.
O código fonte em VHDL esta disponível para todas as aplicações incluídas.
10.3.1. Características do Firmware softDMC
O controlador de movimento digital softDMC [SOFTDMC] é um controlador de motores DC para
vários eixos implementado inteiramente na FPGA. Um controlador de quatro eixos cabe numa FPGA
(Spartan II) de cem mil portas e um controlador de oito eixos cabe numa FPGA de duzentas mil portas.
A versão do softDMC utilizada na plataforma da RAC é a versão de quatro eixos o que significa que a
FPGA de duzentas mil portas dispõe ainda de bastante espaço livre para aplicações futuras.
Toda a lógica, CPU, RAM e o programa em ROM funcionam em apenas um chip FPGA o que
torna este sistema de controlo de motores extremamente flexível, poderoso e barato. A implementação
do softDMC é baseada num DSP (Digital Signal Processor) de 16 bits e com 50 a 100 MIPS (Milhões de
instruções por segundo). Em conjunto com a placa de interface de 4 canais H-Bridge, o softDMC,
dispõem de entradas de índice e dupla quadratura, dispõem de saídas PWM (Pulse Width Modulation),
RACmotion – Robótica Académica de Coimbra
Página 82 de 119
direcção e enable. Estão ainda livres 72 bits de entrada/saída disponíveis para limites, estados,
posições, ou qualquer outro uso. Os parâmetros de posição, velocidade e aceleração são todos de 32
bits. Cada eixo possui dois codificadores o que permite realimentação dupla por posição e velocidade. É
possível realizar movimentos multi-eixo com relações de caixa precisas através de um registo de 32 bits
para o rácio entre eixos.
Os interfaces do softDMC são totalmente síncrono, permitindo que a maioria dos parâmetros
seja alterado durante o movimento. Incluem o interface PC/104 de 16 bits, interface de microcontrolador
de 8 bits, PCI, série, entre outros.
O controlador PID de cada eixo para além dos termos normais (Proporcional, Integral e
Derivativo), possui os termos de realimentação de velocidade, aceleração, bias e fricção para extrair o
máximo de desempenho dos motores. As altas taxas de amostragem (>30 Khz para o movimento dos 4
eixos em simultâneo) suportam motores pequenos e rápidos. Podem ser programados acções para
responder em tempo real a eventos internos (posição, tempo, velocidade, flags, etc.) e externos (limites,
sensores, etc.).
10.3.2. Calibração do Controlador PID
Para cada motor da plataforma é necessário afinar os parâmetros do controlador PID.
Juntamente com o softDMC é fornecido o programa DMCtune [DMCTUNE]. Este programa permite a
afinação manual dos parâmetros do controlador PID mostrando no ecrã a resposta do sistema. O
DMCtune mostra quatro parâmetros: o perfil de movimento programado (verde), o perfil de movimento
actual (amarelo), o sinal do motor (vermelho) e o erro, que é a diferença entre o perfil programado e o
perfil actual (violeta).
Figura 10.3.2.1 – Interface gráfica de calibração DMCtune.
O controlador PID utiliza controlo realimentado para manter a posição actual do motor igual a
posição pretendida. Os ponteiros utilizados pelo PID são: POSENC para o codificador de posição,
VELENC para o codificador de velocidade e FOLLOW para a posição desejada. O valor por defeito de
POSENC e VELENC é ENCP, que é o codificador primário do eixo a ser controlado. O valor por defeito
de FOLLOW é DESPOS, que é a posição desejada criada pelo gerador de perfil.
O PID é controlado por 6 parâmetros principais:
•
•
•
•
•
•
KP – Termo proporcional ou ganho
KI – Termo Integral
KD – Termo derivativo
KF1 – Termo de velocidade (feed forward)
KF2 – Termo de aceleração (feed forward)
KIL – Limite de Integração
RACmotion – Robótica Académica de Coimbra
Página 83 de 119
A saída do controlador PID é um sinal Drive que estabelece os sinais PWM e de direcção que
controlam a intensidade e direcção de corrente que é aplicada ao motor. A equação simplificada para o
sinal de saída do PID é:
Drive = KP(−E ) + KI (∑ − E∆T ) + KD(− ACTVEL) + KF1(VELOCITY) + KF 2( ACCEL)
Onde E é o erro de posição (posição desejada menos posição actual), ACTVEL é a velocidade
actual, VELOCITY é a velocidade pretendida e ACCEL a aceleração.
O programa DMCtune gera um ficheiro com os valores dos parâmetros do PID que depois são
enviados pelas aplicações de controlo ao softDMC, durante a fase de inicialização.
10.3.3. Implementação do softDMC Loader
Tal como uma memória RAM uma FPGA necessita de corrente eléctrica para manter a
informação armazenada no seu interior, assim, cada vez que a plataforma é ligada é necessário
carregar e executar o softDMC na FPGA da placa 4i65. Esta operação é realizada pelo sistema
operativo durante a fase de arranque do sistema. O softDMC está armazenado no sistema de ficheiros
da memória flash como um ficheiro binário normal, sendo necessário a utilização de uma ferramenta que
comunique com a placa 4i65 e que transfira o código binário do programa. Esta ferramenta é ainda
responsável por executar o programa na FPGA.
A ferramenta disponibilizada pela MESA para realizar o carregamento do firmware era bastante
antiquada. A única versão disponível apenas funcionava em MS-DOS e nos Windows mais antigos
(anteriores ao Windows Millennium). Felizmente, o código fonte da aplicação estava disponível em
linguagem C, no entanto, existem diferenças consideráveis entre o Linux e o MS-DOS, principalmente
quando existe a necessidade de comunicar com dispositivos no barramento PCI [PCI].
Figura 10.3.3.1 – Fase de arranque no sistem a de desenvolvimento.
Após uma análise cuidada ao código fonte do carregador para MS-DOS verificou-se que grande
parte das rotinas de comunicação com dispositivos era feita com o recurso a bibliotecas que não eram
possíveis de transferir para o Linux. Grande parte das funções estavam definidas em dos.h que é uma
das bibliotecas que acompanha o compilador BORLAND C [BORLAND] para sistemas operativos
Microsoft mais antigos, entre os quais o MS-DOS. As funções definidas em dos.h fazem uso extensivo a
código máquina de 16 bits para processadores x86, no entanto o Linux utilizado na plataforma RAC é
um sistema operativo de 32 bits com uma arquitectura bem mais sofisticada. Tirando as funções de
comunicação com o barramento PCI o resto do código fonte era bastante standard, resumia-se a abrir o
ficheiro com o firmware e a transferir o seu conteúdo usando as rotinas de comunicação. Tirando alguns
pequenos pormenores de sintaxe, o código fonte de leitura do ficheiro era idêntico ao código em Linux.
Para solucionar o problema das funções de comunicação foram definidos duas tarefas:
v Identificar as bibliotecas do Linux que possuíam funções que realizem acções semelhantes às
utilizadas pelo carregador em MS-DOS.
RACmotion – Robótica Académica de Coimbra
Página 84 de 119
v Alterar todas as funções e estruturas de dados do carregador para utilizarem as novas
bibliotecas.
Todas as funções necessárias estavam disponíveis no Linux em pci.h que faz parte da biblioteca
libpci, no entanto, o método de utilização dessas funções, e as estruturas de dados utilizadas, eram
completamente diferentes. Houve a necessidade de voltar a implementar grande parte das funções de
comunicação com o barramento PCI. Das funções redesenhadas, destacamos:
Funções Redesenhadas
Nome
Descrição
outportswap
Envia um byte invertido para a placa 4i65
outportsnoswap
Envia um byte para a placa 4i65
findpcicard
Tenta descobrir a placa 4i65 no bus PCI
Pcicfgread16
Lê a “configuration word” da 4i65
Writeenable5i20
Prepara a FPGA para escrita
ProgramEnable5i20
Prepara a FPGA para programação
findports
Descobre as localizações i/o da 4i65
programcard
Envia os dados do ficheiro para a 4i65
Tabela 10.3.3.1 – Funções implementadas para o carregador Linux
O carregador de firmware para Linux possui dois parâmetros de entrada, o primeiro é o nome do
ficheiro binário que contém o firmware a carregar e o segundo é o número da placa 4i65 que desejamos
programar (caso existam várias 4i65 ligadas ao sistema). O carregador realiza os seguintes passos:
1. Inicializa as estruturas de dados e a biblioteca libpci, verificando se o sistema possui um
barramento PCI.
2. Obtém uma lista com os dispositivos ligados ao barramento.
3. Verifica se existem uma ou mais placas 4i65 no barramento PCI, através do VENDOR_ID
(0x10b5) e do DEVICE_ID (0x9030) dos dispositivos. Se não existirem, o programa termina
com uma mensagem de erro. Se existirem uma ou mais placas 4i65, utiliza o argumento de
entrada para escolher o número da placa a programar.
4. Verifica a existência do ficheiro binário que contém o firmware e carrega-o para uma
estrutura de dados em memória.
5. Lê a “configuration word” do dispositivo para determinar a gama e o mapeamento de portos
de entrada/saída atribuídos automaticamente pelo protocolo “plug & play” no arranque do
sistema.
6. Faz um reset à FPGA, apagando o seu conteúdo e parando a execução de programas.
7. Carrega o firmware na FPGA e verifica o sucesso da operação.
8. Finaliza a programação da FPGA e ordena a execução do programa.
9. Limpa os recursos utilizados e termina a aplicação.
10.4. Controlador de Movimento
A principal função do controlador de movimento é realizar a cinemática inversa do robô, ou seja,
transformar os comandos de velocidade ou de posição enviados pelo controlador central em comandos
de velocidade individuais para cada um dos três motores. No entanto, este programa não se limita ao
controlo de movimento, pois implementa todo interface com o exterior. Na primeira versão, o programa
também controla o kicker e fornece informação sobre o estado interno do robô, como o nível de carga
das baterias ou a existência de anomalias no hardware.
As funções básicas da aplicação são as seguintes:
1. Implementação do lado cliente do protocolo de comunicações: inicia a comunicação e processa
o envio e recepção das mensagens entre o controlador central e o robô.
RACmotion – Robótica Académica de Coimbra
Página 85 de 119
2. Realização do controlo de movimento, transforma os comandos de posição ou velocidade
enviados pelo controlador central em comandos individuais para cada motor.
3. Controlo da força e do disparo do kicker.
4. Controlo do estado interno do robô, nomeadamente, o nível de carga das baterias e a presença
de anomalias no hardware.
Algumas das mensagens definidas no protocolo de comunicações da RAC (RACprotocol) não
foram implementadas na primeira versão da aplicação de controlo, pois existia hardware que ainda não
estava disponível na primeira interacção da plataforma, como é o caso do dribbler.
10.4.1. Arquitectura do Controlador
A aplicação de controlo é constituída por dois processos que comunicam entre si através de um
pipe (tubo). Um pipe é uma funcionalidade disponibilizada pelo sistema operativo para comunicação
inter-processo (IPC – Inter Process Comunication), a analogia com um tubo é correcta, pois permite que
dois processos troquem um fluxo de dados entre si. Cada processo pode ler e escrever dados para o
pipe, é portanto uma forma de comunicação bidireccional. Uma das grandes vantagens de utilizar as
IPC do sistema operativo é a possibilidade dos processos bloquearem sempre que não existam dados
no pipe. Nesta situação o sistema operativo fornece o tempo de processamento a outras aplicações.
Figura 10.4.1.1 – Arquitectura geral da aplicação de controlo
O processo 1 é responsável pelo estabelecimento da ligação e codificação e descodificação das
mensagens TCP/IP que são trocadas entre o cliente e o servidor. Este processo estabelece a ligação ao
servidor central e inicia uma sessão, identificando o cliente respectivo. Quando é recebida uma
mensagem, o processo 1 interpreta o corpo da mensagem e, se respeitar o protocolo, envia o comando
associado ao processo 2 usando o pipe. Nas situações em que o processo 2 necessita de informação
de posição, o processo 1 codifica a mensagem respectiva e envia-a ao servidor. Sempre que não
existam mensagens tanto do servidor como do processo 2, o processo 1 fica bloqueado numa função
select que não é mais do que um interface para a rotina de sistema, com o mesmo nome, que permite
realizar operações de entrada/saída assíncronas. A função select aceita uma lista de objectos ou
descritores de ficheiros que podem ser “escutados”. Assim, a função bloqueia até que um desses
objectos possua informação para ser tratada. É possível definir um valor de timeout de modo a que a
função não fique bloqueada indefinidamente. A granularidade do temporizador de timeout da função
select permite realizar operações temporizadas com grande precisão.
O processo 2 é responsável pelo controlo de movimento e faz o interface com os sensores e
actuadores da plataforma. Este processo recebe os comandos do processo 1 e executa-os. De salientar
que existem comandos que podem demorar vários segundos a executar, como por exemplo, o
seguimento de uma trajectória, ou o carregamento do condensador do kicker. Este processo tem a
RACmotion – Robótica Académica de Coimbra
Página 86 de 119
capacidade de executar vários comandos em simultâneo, mantendo para cada um deles, a
temporização adequada. Como o controlador de trajectórias é essencialmente baseado em odometria, a
precisão do temporizador necessita de ser elevada para minimizar erros de integração da velocidade. O
processo 2 utiliza bibliotecas de funções matemáticas para o cálculo de matrizes que realizam a
cinemática inversa do movimento. Por outro lado, sempre que a velocidade angular do robô é diferente
de zero, é necessário multiplicar as velocidades dos motores por uma matriz de rotação que depende da
velocidade angular, tal como foi analisado na secção 8.3.3. A figura 10.4.1.1 dá uma visão geral da
arquitectura da aplicação de controlo.
Figura 10.4.1.2 – Diagrama de actividade da aplicação global
Como mostra o diagrama de actividade da figura 10.4.1.2, a aplicação começa por criar o socket
TCP/IP e o pipe de comunicação inter-processo. Seguidamente, é carregado o ficheiro de configuração,
este contém dados importantes, como por exemplo, o endereço IP do servidor, os parâmetros dos
controladores PID de cada um dos eixos e os parâmetros de desfasamento
das rodas. Após a
configuração, são criados os dois processos, passando cada um deles a executar concorrentemente,
cada processo é criado no mesmo espaço de memoria atribuído à aplicação principal, pelo que herdam
do processo pai todas as variáveis e descritores de ficheiros de modo a poderem comunicar através do
pipe. Cada um dos processos realiza as suas funções até que a ligação ao servidor seja terminada por
uma das partes. Para finalizar, a aplicação liberta os recursos do sistema e escreve no ficheiro de
configuração os parâmetros alterados pela última sessão. A aplicação pode ser configurada para tentar
RACmotion – Robótica Académica de Coimbra
Página 87 de 119
conectar-se indefinidamente ao servidor, o que é bastante útil, pois dispensa intervenção humana
sempre que a ligação ao servidor seja quebrada por qualquer motivo.
Figura 10.4.1.3 – Diagram a de actividade do processo 1
O diagrama de actividade da figura 10.4.1.3 mostra o comportamento do processo 1 como foi
referido, o processo 1 é responsável pela comunicação entre o programa de controlo e o servidor
central. Funciona basicamente como uma bridge (ponte) entre as duas aplicações. Implementa o
protocolo de comunicações RACprotocol, convertendo as mensagens em comandos e vice-versa. Cada
mensagem recebida do servidor é verificada de acordo com a especificação e transformada num
comando transmitido através do pipe para o processo 2. Quando um dos processos intervenientes
necessitar de terminar por algum motivo, o processo 1 envia uma mensagem à outra parte interessada
para que esta possa terminar correctamente.
O processo 2 da aplicação tem uma complexidade bastante grande, pois este é responsável por
todas as acções de controlo sobre actuadores e sensores da plataforma. Este processo recebe no pipe
RACmotion – Robótica Académica de Coimbra
Página 88 de 119
de comunicação inter-processo os comandos passados pelo processo 1 depois de enviados pelo
controlador centralizado. Os comandos podem ser divididos em duas categorias:
•
•
Comandos síncronos – São os comandos que resultam numa acção imediata, como por
exemplo, um comando de velocidade, o comando de paragem ou o comando de chutar a
bola.
Comandos assíncronos – São comandos em que a acção se propaga durante um tempo
relativamente longo, como por exemplo, o seguimento de uma trajectória ou carregamento
do condensador do kicker.
Comando
Síncrono
x
x
x
x
x
GiveState
SetVelocity
SetParms
Halt
KickBall
SetTrajectory
Tipo
Assíncrono
x
x
Tabela 10.4.1.1 – Classificação dos comandos de controlo
De salientar que o comando KickBall possuí duas acções, uma síncrona, chutar a bola, e outra
assíncrona, carregar o condensador do kicker. Logo a seguir ao chuto, o condensador é carregado
durante um intervalo de tempo que é proporcional à força desejada. Como o circuito leva alguns
segundos a carregar, a força não pode ser definida no momento do chuto.
Como foi analisado na secção 8.3.3, o vector velocidade tem as suas componentes v x e vy no
referencial do robô, de modo que se este rodar (rad/s) é necessário fazer uma rotação do referencial
de modo a que o vector velocidade mantenha a mesma orientação. No domínio da aplicação de
controlo, é necessário multiplicar a velocidade de entrada por uma matriz de rotação. O ângulo de
rotação é calculado multiplicando o intervalo de tempo pela velocidade angular do robô. Este
procedimento é necessário sempre que é diferente de zero.
A execução de comandos assíncronos requer que o estado de execução do comando seja
actualizado durante o tempo de execução, este estado é controlado por blocos de software que foram
designados de controladores de comandos assíncronos. Por defeito, a aplicação executa cada um
destes controladores a uma frequência de 40 Hz. Quando um controlador é executado, a saída é
calculada sabendo que a última execução do bloco ocorreu 25 ms atrás. Cada controlador é executado
em cadeia em cada ciclo de execução, deste modo, os comandos são executados em paralelo.
O controlador de rotação não implementa nenhum comando em particular. A sua função é
multiplicar a velocidade pela matriz de rotação, sempre que a velocidade angular é diferente de zero.
Os comandos síncronos requerem acções de controlo imediatas, de modo que a sua execução,
logo após a recepção, ocorra o mais rapidamente possível. A execução de um comando síncrono pode
interromper ou iniciar a execução de um controlador. Por exemplo, o comando halt, deve interromper a
execução do controlador de trajectórias.
Comando
GiveState
SetVelocity
SetParms
Halt
KickBall
SetTrajectory
Trajectoria
Desactiva
Desactiva
Activa
Controlador
Kicker
Activa
-
Rotação
-
Tabela 10.4.1.2 – Influencia dos comandos nos controladores
RACmotion – Robótica Académica de Coimbra
Página 89 de 119
Figura 10.4.1.4 – Diagrama de actividade do processo 2
10.4.1.1.
Controlo por Comando de Velocidade
O controlo por comandos de velocidade possibilita que o movimento do robô seja executado
fornecendo apenas as componentes do vector velocidade no referencial da plataforma. Adicionalmente,
é possível fornecer a velocidade angular desejada. No caso da velocidade angular ser diferente de zero,
o controlador de rotação corrige o movimento como já foi descrito anteriormente.
Este comando transforma a velocidade da plataforma em comandos de velocidade para cada
um dos três motores utilizando a matriz de cinemática inversa, cuja equação foi obtida na secção 7.2. A
execução deste comando implica que seja desactivado qualquer movimento que o controlador de
trajectórias esteja a executar na altura. Este comando é executado em apenas um ciclo de
processamento da aplicação. O diagrama de actividade do comando está representado na figura
10.4.1.5.
RACmotion – Robótica Académica de Coimbra
Página 90 de 119
Figura 10.4.1.5 – Diagrama de actividade do controlo por com andos de velocidade
10.4.1.2.
Controlador de Trajectórias
O controlador de trajectórias é activado pelo comando SetTrajectory e a sua função é realizar
um movimento programado ao longo de um caminho ou trajectória. Esta trajectória é dividida em
segmentos de recta. Por cada segmento, o movimento do robô é caracterizado por um conjunto de
parâmetros designado de set-point. Cada set-point possui quatro parâmetros que definem o movimento
nesse segmento da trajectória: A posição desejada no referencial do campo, x e y, a velocidade do robô,
v, e a velocidade angular, .
O controlo de movimento é implementado usando essencialmente odometria. A velocidade da
plataforma é integrada ao longo do tempo para estimar a posição pretendida. O estudo prévio em
simulador foi efectuado no capítulo 8.
Figura 10.4.1.6 – Diagram a de actividade do sistema de polling dos dados da câmara
A câmara de visão global fornece dados de posição de todos os objectos do campo. No entanto,
para que o controlo seja suficientemente rápido, o recurso a odometria é essencial. A realimentação de
posição da câmara é utilizada a uma frequência baixa apenas para corrigir os erros de integração da
RACmotion – Robótica Académica de Coimbra
Página 91 de 119
velocidade. Na figura 10.4.1.6 é mostrado como o controlador de trajectórias faz o polling para obter a
posição do robô.
Quando o controlador termina o movimento de um set-point, utiliza a posição fornecida pela
câmara para corrigir a posição actual do robô. O próximo movimento é calculado tendo em conta a
posição real e a posição pretendida. Durante a realização do movimento apenas é utilizada odometria
para controlar o movimento. Na figura 10.4.1.7 esta representado o diagrama geral do controlador de
trajectórias.
Figura 10.4.1.7 – Diagrama de actividade do controlo de trajectórias
10.4.1.3.
Controlador de Rotação
O controlador de rotação executa uma mudança do referencial do robô sempre que a velocidade
angular é diferente de zero, multiplica a velocidade desejada para a plataforma por uma matriz de
rotação, tal como foi analisado na secção 8.3.3. O ângulo de rotação da matriz é calculado multiplicando
a velocidade angular pelo tempo que decorreu desde a ultima rotação. Este controlo não possui nenhum
RACmotion – Robótica Académica de Coimbra
Página 92 de 119
comando associado, pois a sua condição de acção é a velocidade de rotação ser diferente de zero. O
diagrama de actividade do controlador está representado na figura 10.4.1.8.
Obtém velocidade angular
Velocidade angular != 0?
Não
Sim
Calcula ângulo de rotação
Multiplica velocidade pela matriz de rotação
Figura 10.4.1.8 – Diagrama de actividade do controlador de rotação
10.4.1.4.
Controlador de Carga do Kicker
O controlador de carga kicker controla a duração em que o circuito de carga fornece energia ao
condensador. O controlador passa ao estado activo assim que é executado um comando KickBall. A
força do chuto é proporcional à energia armazenada no condensador, que por sua vez está relacionada
com o tempo de carga. Um dos parâmetros da mensagem KickBall é a força desejada para o remate.
Este parâmetro é usado para determinar o tempo de carga. O controlador activa o circuito de carga e
inicia um contador. Por cada ciclo de execução, o contador é incrementado até que atinja o valor que
corresponde ao intervalo de tempo desejado, nesse instante o circuito é desligado e o condensador
estará carregado com a energia pretendida. O diagrama de actividade do controlador está representado
na figura 10.4.1.9.
Figura 10.4.1.9 – Diagrama de actividade do controlador de carga do kicker
RACmotion – Robótica Académica de Coimbra
Página 93 de 119
11. Testes e Resultados
Um dos objectivos finais da RAC é desenvolver uma equipa de Futebol Robótico competitiva e
eficiente. A melhor forma de avaliar a performance do sistema é submetê-lo a um teste de
funcionamento em competição, isto é, um jogo de Futebol Robótico. Os jogos constituem a melhor forma
para testar o desempenho da Arquitectura e Sistema, pois torna-se possível comparar o desempenho
com outras equipas. No caso da RAC isso ainda não foi possível, os testes efectuados foram realizados
ainda no Laboratório de Robótica Móvel.
Neste capitulo são apresentados alguns testes e conclusões das aplicações referentes ao
Sistema de Controlo do robô. Inicialmente são analisados aspectos referentes à participação em
competições e eventos. Seguidamente são ilustrados diversos testes e ensaios, juntamente com
algumas conclusões. No final é feita uma análise do Sistema de Controlo terminando com a
apresentação de algumas perspectivas de desenvolvimento.
11.1. Competições e Eventos
A realização do Festival Nacional de Robótica em Coimbra motivou todos os membros da RAC.
Durante as semanas que precederam o evento, foram feitos grandes progressos no desenvolvimento da
equipa de Futebol Robótico. A publicação de dois artigos no Encontro Científico, por parte da equipa
RACmotion e da equipa RACsmart, vieram mostrar alguns dos trabalhos e objectivos da RAC. A
participação na competição não foi possível de realizar conforme o objectivo inicial, no entanto a equipa
esteve presente com um expositor que veio realçar todo o trabalho desenvolvido. A oportunidade dada
ao público em geral de interacção com os robôs e de conhecimento sobre a sua tecnologia obteve
grande êxito. Durante dois dias dezenas de pessoas visitaram o expositor e puderam deliciar-se com as
competições e demonstrações apresentadas no Robótica 2005.
Figura 11.1.1 – Robótica 2005.
A realização de um Atelier e Sessão de Palestras vieram promover a divulgação do Projecto
RAC, bem como, projectos levados a cabo por outras pessoas e instituições. Foi o caso do artista
Leonel Moura e dos seus Robôs Pintores. É fundamental que a divulgação de projectos desta
envergadura seja feita junto da comunidade académica e público em geral. São precisas novas ideias e
pessoas com espírito de iniciativa, de modo a enraizar estes projectos na nossa comunidade e lhes
proporcionar um final feliz.
11.2. Testes e Ensaios
Os testes e ensaios descritos nesta secção foram realizados no Laboratório de Robótica Móvel
no Instituto de Sistemas e Robótica de Coimbra. Os objectivos visam testar a aplicação de controlo
RACmotion – Robótica Académica de Coimbra
Página 94 de 119
desenvolvida para o protótipo RACbot. É fundamental que os resultados obtidos em simulação sejam
validados pela implementação do controlador de movimento.
11.2.1. Arranque e Movimento do Robô
O desenvolvimento do Simulador RACbot permitiu a analise e estudo do movimento do robô
para diferentes trajectórias. Após a implementação do Sistema de Controlo na plataforma, foi necessário
analisar o seu comportamento em ambiente real, não simulado, para perceber as suas acções e
melhorar o controlo efectuado. Numa primeira fase, foi analisado o comportamento no arranque e o
movimento do robô de um ponto A para um ponto B. Foram utilizados diferentes pontos no campo de
jogo tal como mostra a figura 11.2.1.1.
Figura 11.2.1.1 – Testes de movimento efectuados ao robô (varias direcções num raio de 1.2m).
Este conjunto de 12 pontos vai permitir analisar o comportamento do robô em várias direcções
partindo do centro do terreno. Inicialmente foram marcados e medidos os pontos no campo e
seguidamente foram introduzidos na aplicação de controlo. Os 12 pontos situam-se sobre uma
circunferência com 1,2 metros de raio.
Pontos
A
B
C
D
E
F
x (m)
y (m)
0
1.03923
0.6
0
-0.6
-1.03923
1.2
0.6
1.03923
1.2
1.03923
0.6
Pontos
G
H
I
J
K
L
x (m)
-1.2
-1.03923
-0.6
0
0.6
1.03923
y (m)
0
-0.6
-1.03923
-1.2
-1.03923
-0.6
Tabela 11.2.1.1 – Conjunto de pontos utilizados no ensaio do movimento do robô.
Numa primeira análise podemos concluir que o robô tem alguma dificuldade no arranque. Existe
bastante atrito entre as rodas e o campo de jogo (alcatifa). Por outro lado, a plataforma ainda não foi
optimizada em relação ao peso, de modo que é possível melhorar o seu desempenho. Ao ensaiar o robô
fora do campo de jogo, observamos que as rodas não estão tão susceptíveis ao atrito e o seu
movimento ocorre mais suavemente. O estado das baterias também influencia o movimento, à medida
que se realizam os testes e as baterias se gastam, o robô vai gradualmente perdendo potência.
Em relação aos testes com os diversos pontos introduzidos, obtivemos bons resultados segundo
determinadas direcções do movimento, mas os resultados não foram satisfatórios quando o movimento
se realizou noutras direcções. Numa primeira fase, foi ensaiado o movimento sem velocidade angular,
ou seja, a rotação do robô sobre o seu próprio eixo permaneceu igual a zero durante todo o movimento.
Podemos concluir que os set-points B, F, J tiveram melhores resultados, uma vez que o robô se
deslocou para as proximidades dos pontos com um desvio máximo de cerca de 10 cm. Por exemplo,
RACmotion – Robótica Académica de Coimbra
Página 95 de 119
para o set-point B os motores 1 e 3 têm velocidades simétricas e o motor 2 tem velocidade igual a zero,
o que vai facilitar o movimento e equilíbrio do robô. O mesmo acontece no caso do ponto F, o motor 3
fica parado e os restantes motores executam a tracção. O caso J mantém o motor 1 parado e os
motores 2 e 3 em movimento.
Concluímos que os restantes set-points que colocam os três motores em movimento, vão
originar grandes discrepâncias nos resultados, o robô tem tendência a desequilibrar-se e executar
trajectórias incorrectas. A dificuldade de controlo do robô aumenta, quanto maior for a influencia dos três
motores na trajectória.
Figura 11.2.1.2 – Posição final do robô após a introdução do set-point C [0.6 1.03923 0.1 0].
Não foi possível fazer a aquisição de dados da trajectória, no entanto, conseguimos tirar
algumas conclusões com base no ponto final atingido pelo robô. De notar, que estes testes foram
realizados em malha aberta, ou seja, a realimentação através do sistema de visão não foi utilizada,
embora a aplicação esteja preparada para utilizar os dados da câmara na execução de trajectórias
complexas, nomeadamente, através do comando setTrajectory. O controlo de movimento utiliza apenas
odometria. O controlador integra a velocidade do robô ao longo do tempo para obter uma estimativa da
posição final.
O robô obteve alguns resultados satisfatórios, contudo, também foram obtidos resultados menos
bons. A figura 11.2.1.3 ilustra alguns resultados, através de gráficos XY, dos vários testes executados
para diferentes set-points.
a) Ponto H (-1.03923, -0.6)
b) Ponto L (1.03923, -0.6)
Figura 11.2.1.3 – Testes de movimento efectuados ao robô para os set-points H e L (vmed=1m/s).
RACmotion – Robótica Académica de Coimbra
Página 96 de 119
a) Ponto B (1.03923, 0.6)
b) Ponto C (0.6, 1.03923)
Figura 11.2.1.4 – Testes de movimento efectuados ao robô para os set-points B e C (vmed=1m/s).
Distância ao
Ponto B
Ponto B
1.03923
1
1.04
1.07
1.065
0.6
0.5
0.7
0.6
0.5
0.10742
0.100003
0.03077
0.103267
0.085365
Distância ao
Ponto C
Ponto C
0.6
0.45
1.1
0.65
0.4
1.03923
1.02
1.3
0.97
0.6
0.151228
0.563916
0.085398
0.482621
0.320791
Tabela 11.2.1.2 – Cálculo da média das distancias das varias amostras aos pontos B e C.
Na tabela 11.2.1.2 é evidente a eficácia do comportamento do robô na execução do set-point B
em relação ao set-point C. O set-point C obriga o funcionamento dos três motores, enquanto que o
set-point B apenas coloca em funcionamento os motores 1 e 3 com velocidades simétricas, o motor 2
fica parado.
O possível peso excessivo e a dificuldade no arranque foram iminentes nos testes efectuados. O
comportamento dos motores difere bastante entre vazio e carga, provando mais uma vez que diversos
factores (peso, atrito, desfasamentos, etc.) influenciam bastante a trajectória do robô.
Nos vários testes efectuados podemos tirar as seguintes conclusões:
v A execução dos movimentos para os pontos B, F e J, obtiveram resultados satisfatórios;
v O aumento e diminuição da velocidade do robô influencia muito a trajectória, Para velocidades
pequenas, os motores não conseguem vencer as forças de inércia e atrito. Para velocidades
elevadas é difícil manter o equilíbrio dinâmico da plataforma, causando uma trajectória muito
diferente da esperada. Um bom compromisso obtido foi: vmed= 1m/s;
v O valor da aceleração introduzido na aplicação de controlo deve ser o mais elevado possível.
v As trajectórias em que os três motores estão pleno funcionamento têm piores performances
comparadas com as trajectórias em que apenas actuam dois motores.
Como foi referido, as trajectórias B, F e J obtiveram bons resultados devido à forma simplificada
da cinemática, assim, concluímos que devemos valorizar este comportamento e adoptá-lo na
movimentação do robô. O movimento deve sempre ser realizado no sentido da frente de ataque, ou
seja, deve sempre utilizar as rodas 1 e 3 adjacentes ao kicker para tracção principal e utilizar a roda 2
apenas para mudança de direcção, só assim se consegue uma trajectória bastante próxima do
esperado.
RACmotion – Robótica Académica de Coimbra
Página 97 de 119
Figura 11.2.1.5 – Frente de ataque do robô.
A introdução de velocidade angular diferente de zero em simultâneo com o movimento de
translação do robô, não obtém resultados satisfatórios. Para cada intervalo t é calculada uma rotação
dos eixos no referencial do robô o que origina a actuação dos três motores em simultâneo, como foi
analisado na secção 8.3. Nestas circunstâncias, o robô sofre um desequilíbrio de forças o que origina
uma trajectória incorrecta muito longe da esperada. Chegámos à conclusão que a utilização de controlo
realimentado pelos dados de posição e orientação da câmara é essencial para corrigir os desvios que
ocorrem durante o movimento de translação e rotação simultâneo. A frequência de actualização dos
dados da câmara terá que ser superior à frequência de execução do controlador de rotação para que se
obtenham bons resultados. O controlador realiza actualizações 40 ciclos por segundo, no entanto, foi
confirmado que o sistema de processamento de visão apenas consegue um máximo de 15 ciclos por
segundo. Será possível alcançar uma solução de compromisso, mas todos os grupos de trabalho
envolvidos no projecto RAC, conjuntamente, terão realizar testes de interoperabilidade. Tal não
aconteceu, pois o desenvolvimento das aplicações de controlo sofreram atrasos, em todos os níveis da
arquitectura de controlo da RAC.
Outro dos problemas identificados envolve o controlador PID de cada motor, este utiliza controlo
realimentado para manter a posição actual do motor igual a posição pretendida, no entanto, a posição
actual tende a atrasar-se ao longo do tempo, o controlador tenta compensar este atraso, mas os
motores não conseguem desenvolver potência suficiente para compensar o atraso de posição. Neste
contexto, podemos concluir que o controlo do robô por comandos de posição é bastante difícil, a
abordagem mais correcta para esta versão da plataforma é o controlo por velocidade.
11.2.2. Execução de Trajectórias
Os testes seguintes, abordam, a execução de trajectórias através da inserção de vários
set-points na aplicação de controlo. Na figura 11.2.2.1 é ilustrada uma trajectória testada.
Figura 11.2.2.1 – Execução de trajectórias.
A aplicação de controlo está preparada para receber uma trajectória predefinida através da
inserção de vários set-points em simultâneo (comando setTrajectory). Cada set-point é então executado
por ordem, permitindo realizar movimentos complexos. Como vimos na secção anterior, nem todas as
direcções do movimento obtêm resultados satisfatórios. Por outro lado, a sucessiva realização de
movimentos leva à acumulação de erros de posição que necessitam de ser corrigidos pelos dados de
posição da câmara global. Ao nível da aplicação de controlo, a correcção do erro de posição é feita no
RACmotion – Robótica Académica de Coimbra
Página 98 de 119
final da execução de cada set-point, o movimento é corrigido tendo em conta a posição real obtida pelo
sistema de visão e a posição que se pretende atingir no próximo set-point.
Figura 11.2.2.2 – Execução de trajectórias.
Os testes realizados para a execução de trajectórias complexas tiraram partido das conclusões
obtidas na secção anterior, assim, todos os movimentos foram executados usando apenas as direcções
que obtiveram bons resultados.
A aplicação de controlo desenvolvida calcula os vários parâmetros de cinemática para os
diferentes set-points introduzidos, a introdução do parâmetro vmed=1m/s vai permitir calcular o tempo
necessário que o robô demora a percorrer um segmento da trajectória e seguidamente mudar para
outra, a aplicação utiliza um temporizador de alta resolução que permite definições na casa dos
microsegundos. Contudo, um pequeno atraso no arranque do robô origina um atraso na trajectória prédefinida. É bastante difícil prever este factor de modo a compensar toda a trajectória, contudo, a
introdução do sistema de visão vai ajudar na correcção deste parâmetro, pois é possível minimizar o
erro de posição entre dois set-points consecutivos.
A interligação com o sistema de controlo central e com a câmara de visão global não foi possível
de realizar durante a etapa final de testes do projecto RACmotion. Não foi possível reunir todos os
grupos de trabalho de modo a realizar testes conjuntos. Todos os resultados foram obtidos com controlo
baseado em odometria.
A figura 11.2.2.3 ilustra uma trajectória definida pelos pontos A, B e C. Ao introduzirmos este
conjunto de set-points na aplicação de controlo, vamos ter vários comportamentos. As trajectórias
representadas são uma aproximação do movimento realizado pelo robô em vários ensaios realizados.
Figura 11.2.2.3 – Trajectória utilizada nos testes efectuados ao robô
Pontos
A
B
C
x (m)
y (m)
0.6
0.6
3
1
-0.4
-0.4
Tabela 11.2.2.1 – Conjunto de pontos utilizados no ensaio de uma trajectória do robô.
RACmotion – Robótica Académica de Coimbra
Página 99 de 119
O cenário montado na figura 11.2.2.3 mostra algumas trajectórias satisfatórias, mas na realidade
o comportamento do robô não é constante entre dois ensaios consecutivos, realizados em condições
semelhantes. Na tentativa de melhorar o comportamento do robô, foram efectuadas algumas
optimizações na aplicação de controlo. O modo como a aplicação altera as velocidades entre cada
set-point foi modificado para garantir que as velocidades dos motores, em cada instante, sejam
proporcionais às velocidades que resultam da aplicação das equações de cinemática.
Figura 11.2.2.4 – Trajectória efectuada pelo robô
11.2.3. Procedimento de Calibração
A validação do procedimento de calibração não foi efectuada como desejávamos. Foram
executadas várias tentativas de aplicar o procedimento, tal como foi descrito no capítulo 9, mas os
resultando foram inconclusivos no que toca à validade do procedimento. A conclusão tirada dos vários
testes, mostra que existem outros factores que são muito mais influentes no movimento do robô do que
um possível ângulo de desfasamento dos eixos dos motores. Fenómenos como o atrito sobre
determinada roda, aceleração e distribuição de peso, provocam alterações na trajectória que se
sobrepõem ou somam ao efeito em analise. Apesar dos resultados não serem os que mais
desejaríamos, aprendemos ao menos quais serão os factores a incluir futuramente no modelo.
11.2.4. Controlo de Disparo e Carga do Kicker
Embora o circuito do kicker ainda se encontre na fase de desenvolvimento e teste, foi possível
realizar o ensaio ligando dois LEDs às saídas de dados da placa MESA 4i65. Uma das saídas controla o
disparo e a outra controla o tempo de carga do condensador. O programa de controlo responde ao
comando kickBall executando o disparo e activando o temporizador que controla a saída de carga.
11.2.5. Conclusões
Com a realização destes testes, pretendeu-se validar a implementação e analíse realizada no
Simulador RACbot, no entanto, a presença do robô num ambiente susceptível a muitos fenómenos
exteriores, leva a comportamentos imprevisíveis e por vezes, difíceis de corrigir. Como conclusões
tiramos:
v A necessidade de interligar o sistema de controlo com o sistema de visão é fundamental para
uma boa performance prestada pelo robô. O sistema de visão global terá de ser extremamente
rápido, só assim será possível controlar de forma eficaz os movimentos do robô;
v A calibração dos parâmetros do controlador PID de cada um dos eixos, torna-se essencial para
uma boa resposta dada pelos motores;
v O controlo dos motores do robô por posição usando odometria é bastante mais difícil de
implementar e mais susceptível a erros, do que o controlo por velocidade com realimentação de
posição pela câmara;
RACmotion – Robótica Académica de Coimbra
Página 100 de 119
v O sistema de controlo do robô deve privilegiar o movimento segundo a frente de ataque
analisada, onde as duas rodas laterais realizam tracção e a roda traseira apenas deve actuar
para mudança de direcção;
v O movimento omnidireccional do robô torna-se difícil de realizar sem a realimentação dos dados
de posicionamento do sistema de visão. Será necessário utilizar frequências de actualização
bastante altas e latências baixas.
v O seguimento de trajectórias complexas deve utilizar movimentos segundo as direcções que
minimizam o erro de posição de modo a minimizar desvios e erros de integração da posição;
v O procedimento de calibração não é possível de validar sem que as variáveis mais importantes
que afectam o movimento do robô (peso, aceleração, velocidade) sejam caracterizadas;
v O sistema de controlo do kicker funciona como esperado, no entanto, será necessário ligar o
circuito real, quando este estiver completamente desenvolvido, de modo a calibrar os tempos de
carga do condensador.
11.3. Perspectivas de Desenvolvimento Futuro
Dada a natureza do trabalho realizado no âmbito deste projecto, as perspectivas de
desenvolvimento que se apresentam são diversas. Em relação ao Sistema de Controlo implementado no
RACbot o seu desempenho será aumentado se forem abordados os seguintes pontos:
•
•
•
•
•
Extensão do sistema de controlo com maior capacidade de configuração dos parâmetros
utilizados;
Implementação de um logfile para analisar a execução de comandos recebidos;
Implementação de um algoritmo automático para calibração do robô;
Realização de um conjunto mais alargado de experiências utilizando o Sistema de Visão como
realimentação do Sistema de Controlo do robô, de modo a optimizar os parâmetros de controlo;
Calibrar os tempos de carga do condensador do circuito do kicker para diferentes forças de
chuto.
No que diz respeito à estrutura e plataforma do RACbot, apresentam-se como principais
perspectivas de desenvolvimento:
•
•
•
•
•
•
Optimizações ao nível do peso e da sua distribuição;
Análise de configurações de cinemática alternativas para optimizar o movimento do robô
segundo uma frente de ataque;
Analisar as limitações do softDMC e da H-bridge de controlo de motores de modo a aumentar a
potência fornecida pelos motores;
Aumentar a autonomia das baterias;
Conclusão e instalação do kicker;
Instalação de sensores de controlo de posição a bordo do robô.
Em relação ao Projecto RAC e aos seus objectivos existem diversas perspectivas e ideias para
desenvolvimento que podem levar ao crescimento do Projecto, tais como:
•
•
•
A inserção de mais Projectos de Final de Licenciatura no seio da RAC;
A criação do dia RAC, um dia que pode levar como objectivo a organização de varias visitas e
apresentações de vários Projectos relacionados com o Futebol Robótico;
O aumento da interacção entre os Projectos da RAC e o desenvolvimento de Trabalhos para
cadeiras da LEEC, LEI e LTIV;
RACmotion – Robótica Académica de Coimbra
Página 101 de 119
Conclusão
O objectivo principal do projecto RACmotion passou pelo estudo e desenvolvimento de um
sistema de controlo para os robôs omnidireccionais da RAC. No entanto, foi necessário fazer evolução
da plataforma e de toda a equipa de robôs, o que trouxe alguns acréscimos aos objectivos do projecto.
Neste contexto, as principais fases do trabalho desenvolvido incluíram:
v Estudo dos conceitos de Cinemática do robô e das diversas metodologias propostas pelos
orientadores;
v Projecto e implementação de um Simulador em MATLAB, de modo a compreender e analisar o
comportamento do robô num ambiente controlado;
v Analisar e desenvolver um método iterativo de calibração para o movimento do robô;
v Estudo e análise das diferentes abordagens de outras equipas a diversos problemas
emergentes ao futebol robótico e em particular a Small Size League;
v Construção mecânica de um protótipo, de modo a servir como base de ensaio e testes para o
desenvolvimento da plataforma de competição da RAC;
v Implementação de uma plataforma de desenvolvimento de aplicações de controlo;
v Implementação e configuração de um sistema operativo embebido num dispositivo do tipo
memória Flash que respeite os requisitos impostos;
v Desenvolvimento de um carregador de firmware em Linux para a FPGA da placa MESA 4i65;
v Implementação e configuração de um sistema de comunicação sem fios IEEE 802.11b para o
sistema operativo embebido;
v Desenvolvimento e implementação de um protocolo de comunicação sobre TCP/IP
(RACprotocol), que permita efectuar o controlo do robô a partir de um controlador centralizado
remoto;
v Implementação de uma aplicação de controlo a bordo do robô, de modo a executar os
comandos enviados pelo controlador centralizado;
v Implementação de controladores de velocidade, posição e trajectória a bordo do robô, usando
odometria e, esporadicamente, os dados de posição do sistema de visão global;
v Replicação da equipa de Futebol Robótico, em conjunto com os restantes membros da RAC.
v Promoção da RAC: Criação de uma Sessão de Palestras e Atelier de Robótica inserida no
Robótica 2005, desenvolvimento de um pequeno expositor de demonstração da RAC durante o
Robótica 2005.
v Elaboração de um artigo científico em colaboração com os orientadores do projecto,
denominado “RAC Robotic Soccer Small-Size Team: Omnidirectional Drive Modelling and Robot
Construction” apresentado no Encontro Científico do Robótica 2005;
O trabalho realizado e os objectivos conseguidos pelos membros do projecto RACmotion
ultrapassaram em número os objectivos iniciais. No entanto, não foram atingidos alguns dos objectivos
colocados à partida, aquando da proposta do projecto. Foi desenvolvido algum trabalho que não estava
inicialmente planeado, mas que era essencial para atingir os objectivos finais. O desenvolvimento de
uma plataforma base funcional tornou-se fundamental antes de se poder avançar para os objectivos
propostos. Ficaram por concluir algumas etapas ao nível de testes e integração dos diversos módulos
de controlo da arquitectura da RAC. No entanto, a colaboração dos membros do projecto RACmotion
não terminará com a avaliação dos júris na cadeira de Projecto.
RACmotion – Robótica Académica de Coimbra
Página 102 de 119
O desenvolvimento e o progresso do Projecto RACmotion levaram a diversas conclusões no que
respeita ao controlo do robô e à arquitectura adoptada. De um modo geral, é possível dizer que:
v O movimento totalmente omnidireccional na competição de futebol robótico da SSL, é utilizado
apenas em circunstâncias muito particulares. Normalmente são adoptadas arquitecturas com
frentes de ataque mais abertas, de modo a melhorar o movimento do robô e a sua aceleração
segundo uma direcção predefinida, colocando apenas a roda traseira como uma roda de efeito
de leme. O movimento do robô continua a ser omnidireccional, mas privilegia uma direcção
particular;
v O desenvolvimento de um Simulador tornou-se fundamental para o estudo e análise de
comportamento do robô. Foi possível analisar a influência de diversos factores como a presença
de desfasamentos, rotação e aceleração no movimento do robô. O Simulador também permitiu
testar o método iterativo de calibração implementado.
v A análise e desenvolvimento da estrutura mecânica do robô tornou-se fundamental. Uma
correcta distribuição e selecção do hardware é imprescindível, uma vez que diversos factores
como tamanho, peso e forma influenciam o movimento do robô;
v O Sistema Operativo que corre na plataforma deve ser bastante minimalista, mas por outro lado
bastante robusto para poder suportar uma arquitectura distribuída e habilitada a frequentes
actualizações. Os robôs tornam-se cada vez mais autónomos e para isso é fundamental adoptar
uma plataforma que permita a sua evolução;
v Em contrapartida, a evolução da plataforma pode levar à diminuição da sua autonomia e
aumento dos consumos e do peso, colocando em causa o seu comportamento e a escolha do
hardware;
v As equipas de Futebol Robótico estão cada vez mais susceptíveis a alterações e avanços
tecnológicos levados a cabo pela evolução das regras de jogo e pelo progresso dos níveis de
competição. A optimização do hardware e a implementação do software tornam-se assim
fundamentais.
v O Sistema de Controlo pode ser distribuído entre os robôs e um sistema centralizado. O controlo
a bordo dos robôs tem a vantagem de adquirir os dados de sensores locais muito rapidamente e
com baixa latência, por outro lado, o controlo centralizado e remoto, tem a capacidade de
efectuar um processamento pesado sobre uma grande quantidade de dados, como por
exemplo, o processamento dos dados obtidos pela câmara.
As dificuldades encontradas durante a realização do projecto resultaram da complexidade do
sistema que constitui o futebol robótico, ou seja, um ambiente bastante dinâmico com muitas variáveis
que necessitam ser equacionadas. A interligação com outros módulos, tais como, o controlador central e
a Visão, não foram possíveis de alcançar de modo a optimizar o sistema de controlo de movimento.
Encontrámos dificuldades ao nível do hardware, devido ao aparecimento de problemas, como a
aparente falta de potência dos motores que dificultaram a implementação dos algoritmos de controlo. A
definição de metodologias de coordenação entre grupos com tarefas diferentes, mas cooperantes,
implica sempre um domínio de técnicas de gestão de projecto avançadas, no caso da RAC, foi difícil de
alcançar uma coordenação perfeita.
O projecto RACmotion, foi um projecto ambicioso que envolveu diversas fases, tais como, o
planeamento, desenvolvimento e implementação. Como projecto inserido num contexto maior, onde
coexistiam outros projectos paralelos e cooperantes, constituiu uma parte fundamental, no sentido em
que a conjugação do esforço de muitas pessoas conduzirá certamente aos objectivos da RAC.
Em termos pessoais, a realização do projecto RACmotion foi bastante recompensadora.
Passámos por algumas dificuldades inerentes à complexidade do projecto, mas no geral sentimos que o
nosso esforço foi recompensado. A experiência adquirida na cadeira de Projecto certamente constitui
um alicerce para vida profissional, tanto ao nível técnico, como ao nível social.
RACmotion – Robótica Académica de Coimbra
Página 103 de 119
Referências e Bibliografia
ASADA, M.; KITANO, H. RoboCup-98: Robot Soccer World Cup II. Springer, 1999.
BARONE, D. Sociedades Artificiais: a Nova Fronteira da Inteligência nas Máquinas. Porto Alegre: Bookman, 2003.
BRAUNL, T. Embedded Robotics
Mobile Robot Design and Applications with Embedded Systems. Springer, 2003.
COSTA, A. GUARANÁ Robot-Soccer Team: some architectural issues. FIRA Robot World Cup France'98 Proceedings,
Federation of International Robot Soccer Association, 1998.
D’ANDREA, R. The Cornell robot soccer team. RoboCup-00: Robot Soccer World Cup IV, Lecture Notes in Computer Science.
Springer, 2001.
DIVERIO, T. A.; MENEZES, P. B. Teoria da Computação: Máquinas Universais e Computabilidade. Porto Alegre: Sagra
Luzzato, 1999.
GONZALEZ, R.; WOODS, R. Digital Image Processing. Addison-Wesley, 2002.
KITANO, H. RoboCup-97: Robot Soccer World Cup I. Springer, 1998.
KITANO, H.; ASADA M.; KUNIYOSHI Y.; NODA I.; OSAWA E. RoboCup: The Robot World Cup Initiative. Proceedings IJCAI-95
Workshop on Entertainment and AI/ALife, 1995.
MACKWORTH, A. K. On seeing robots. Singapore: World Scientific Press, 1993.
MARTINS, J.; ROCHA, R.; LOBO, J.; DIAS, J. RAC Robotic Soccer Small-Size Team: Control Architecture and Global Vision.
Actas do Encontro Científico do Festival Nacional de Robótica 2005, Coimbra, Portugal, 29 Abr. 2005.
PRADHAN, D. Fault-Tolerant System Design. New Jersey: Prentice Hall, 1996.
RICH, E. Inteligência Artificial. São Paulo: McGraw-Hill, 1988.
RODRIGUES, J.; BRANDAO, S.; LOBO, J.; ROCHA, R.; DIAS, J. RAC Robotic Soccer Small-Size Team: Onidirectional Drive
Modelling and Robot Construction. Actas do Encontro Científico do Festival Nacional de Robótica 2005, Coimbra, Portugal, 29
Abr. 2005.
RUSSEL, S.; NORVIG, P. Artificial Intelligence: A Modern Approach. New Jersey: Prentice Hall, 1995.
STEVENS, R. UNIX Network Programming. New Jersey: Prentice Hall, 1990.
TANENBAUM, A. S. Computer Networks. Prentice Hall, 1996.
TANENBAUM, A. S. Distributed Operating Systems. Prentice-Hall, 1995.
TURING, A. M. On Computable Numbers, with an application to the Entscheidungsproblem. London: Mathematical Society,
1936.
VELOSO, M. CMUnited-98: RoboCup-98 small-robot world champion team. AI Magazine, Spring 2000.
[CMDRAGONS] Equipa de Futebol Robótico, CMDRAGONS, USA, http://www.cs.cmu.edu/~robosoccer/small/
[CORNELL] Cornell RoboCup Lab, http://robocup.mae.cornell.edu/
[FIRA] FIRA - Federation of International Robot-soccer Association, http://www.fira.net/
[FUFIGHTERS] Equipa de Futebol Robótico, Fu-Fighters, Alemanha, http://robocup.mi.fu-berlin.de/
[IJCAI] International Joint Conference on Artificial Intelligence, http://www.ijcai.org/
[KAIST] Korea Advanced Institute of Science and Technology, http://www.kaist.edu/
[KTEAM] Informação sobre a K-Team, http://www.k-team.com/
[OSAKA] Osaka University, http://www.osaka-u.ac.jp/
[AIBO] Sony AIBO, http://www.us.aibo.com/
[SONYCSLAB] Sony Computer Science Laboratories, http://www.csl.sony.co.jp/
[RAC] Robótica Académica de Coimbra, http://www.deec.uc.pt/~rprocha/RAC/RAC.html
[RACMOTION] Informação sobre o Projecto RACmotion, http://alumni.deec.uc.pt/~brandao/racmotion/
[ROBOCUP] The RoboCup Federation, http://www.robocup.org/
RACmotion – Robótica Académica de Coimbra
Página 104 de 119
[ROGITEAM] Equipa de Futebol Robótico, ROGITEAM, Espanha, http://rogiteam.udg.es/
[5DPO] Equipa de Futebol Robótico, 5DPO, Portugal, http://paginas.fe.up.pt/~robosoc/
[PC/104] Informação sobre o PC/104, http://www.pc104.com/whatis.html
[M570] Informação sobre a placa M570, http://www.seco.it/schede_prod/M570-HTE01A.htm
[MESA] Informação sobre produtos MESA, http://www.mesanet.com/
[V104] Informação sobre a V104 Power Supply, http://www.tri-m.com/products/engineering/v104.html
[EDIMAX] Informação sobre produtos EDIMAX, http://www.edimax.com/
[FAULHABER] Informação sobre produtos FAULHABER, http://www.faulhaber-group.com/
[WIN] Informação sobre sistemas operativos Windows, http://www.microsoft.com/windows/default.mspx
[LINUX] Informação sobre o kernel Linux, http://www.kernel.org/
[UNIX] Informação sobre sistemas Unix, http://www.unix.com/
[MAC] Informação sobre produtos Macintosh, http://www.mac.com
[DISTRO] Informação sobre distribuições GNU/Linux, http://distrowatch.com/
[PUPPY] Informação sobre a distribuição Puppy Linux, http://www.goosee.com/puppy/
[ZyDAS] Informação sobre o chipset ZyDAS zd1201, http://www.zydas.com.tw/
[USB] Informação sobre o protocolo USB, http://www.usb.org/hom e
[GENTOO] Informação sobre a distribuição Gentoo, http://www.gentoo.org/
[DEBIAN] Informação sobre a distribuição Debian, http://www.debian.org/
[PYTHON] Informação sobre a linguagem de programação Python, http://www.python.org/
[GNU] Informação sobre o projecto GNU Not Unix, http://www.gnu.org/
[FSF] Informação sobre a Free Software Foundation, http://www.fsf.org/
[VIA] Informação sobre os produtos VIA, http://www.via.com.tw/en/index.jsp
[IEEE] Informação sobre o IEEE, http://www.ieee.org/portal/site
[IETF] Informação sobre o IETF, http://www.ietf.org/
[ISO] Informação sobre a ISO, http://www.iso.org/iso/en/ISOOnline.frontpage
[WIFI] Informação sobre a WIFI Alliance, http://www.wi-fi.org/OpenSection/index.asp
[DRIVER] Página do projecto do driver zd1201, http://linux-lc100020.sourceforge.net/
[SOFTDMC] Informação sobre o controlador de motores softDMC, http://www.mesanet.com/pdf/motion/softdmc.pdf
[DMCTUNE] Informação sobre o programa DMCtune, http://www.mesanet.com/pdf/motion/softdmc.pdf
[BORLAND] Informação sobre compiladores e ferramentas de desenvolvimento, http://www.borland.com/
[PCI] Informação sobre o barramento PCI, http://www.pcisig.com/home
RACmotion – Robótica Académica de Coimbra
Página 105 de 119
Anexo 1
RACmotion – Robótica Académica de Coimbra
Página 106 de 119
Reportagem
Diário As Beiras
RACmotion – Robótica Académica de Coimbra
21 Março 2005
Página 107 de 119
Reportagem
Diário As Beiras
RACmotion – Robótica Académica de Coimbra
1 Maio 2005
Página 108 de 119
Reportagem
Diário de Coimbra
RACmotion – Robótica Académica de Coimbra
1 Maio 2005
Página 109 de 119
Anexo 2
RACmotion – Robótica Académica de Coimbra
Página 110 de 119
Encontro Científico – Festival Nacional de Robótica 2005
Artigo Robótica2005
Omnidirectional Drive Modelling and Robot
Construction
RACmotion – Robótica Académica de Coimbra
Página 111 de 119
RACmotion – Robótica Académica de Coimbra
Página 112 de 119
RACmotion – Robótica Académica de Coimbra
Página 113 de 119
RACmotion – Robótica Académica de Coimbra
Página 114 de 119
RACmotion – Robótica Académica de Coimbra
Página 115 de 119
RACmotion – Robótica Académica de Coimbra
Página 116 de 119
Anexo 3
RACmotion – Robótica Académica de Coimbra
Página 117 de 119
Código Fonte das Aplicações Desenvolvidas
(...)
RACmotion – Robótica Académica de Coimbra
Página 118 de 119
Anotações
RACmotion – Robótica Académica de Coimbra
Página 119 de 119

Documentos relacionados