Você está na página 1de 56

Universidade do Estado do Amazonas – UEA Escola Superior de Tecnologia – EST

Gustavo Myrria Neto

Desenvolvimento de um Robô Móvel Versátil

.

MANAUS – AM

2007

Universidade do Estado do Amazonas – UEA Escola Superior de Tecnologia – EST

Gustavo Myrria Neto

Desenvolvimento de um Robô Móvel Versátil

Monografia apresentada à Escola Superior de Tecnologia da Universidade do Estado do Amazonas para obtenção do Título de Graduado em Engenharia Mecatrônica sob orientação do Prof. Dr. Israel Mazaira.

MANAUS – AM

2007

Universidade do Estado do Amazonas – UEA Escola Superior de Tecnologia – EST

Gustavo Myrria Neto

Desenvolvimento de um Robô Móvel Versátil

Banca Examinadora:

Nome:

Prof. Dr. Israel Mazaira

Nome:

Prof. Dr. Roberto Ballasteros

Nome:

Prof. Msc Rubem Sichar

MANAUS – AM

2007

Dedicatória

Dedico este trabalho aos meus queridos e amados pais, Carlos e Olindina, pelo grande amor, pela muita paciência, pela motivação, pelo suporte, pelas lutas enfrentadas e pelas vitórias alcançadas sem os quais nada poderia ser realizado!

Agradecimentos

Agradeço, em primeiro lugar, ao meu bom Deus, que em todas as coisas me faz mais que vencedor! Pois dEle, por Ele e para Ele são todas as coisas!

Aos meus pais, Carlos e Olindina, e às minhas irmãs, Diana e Sahra, pois sem todo apóio, sem a motivação e, principalmente, sem o amor demonstrado nada seria possível.

Aos meus amigos, Carlos, Andrei, Walter e Rodrigo, pelo ouvir e o compartilhar durante a toda nossa caminhada como equipe ProficLan e como pelos memoráveis tempos de iniciação científica.

À professora Marlene, que com toda atenção prestou auxilio durante o transcurso de todo o trabalho.

Resumo

Com a evolução da tecnologia de circuitos integrados e o desenvolvimento das teorias da Robótica, robôs móveis estão cada vez mais freqüentes. O estudo da Robótica móvel hoje em dia é devotado à solução de problemas do cotidiano. Entretanto, para o sucesso da construção de um protótipo de um veículo autônomo móvel é necessário o estudo e modelagem de todo o sistema. As teorias e as modelagens cinemática e dinâmica são ferramentas muito poderosas para um conhecimento completo do robô. Neste trabalho é mostrado o estudo da construção de um robô autônomo móvel versátil, levando em consideração a sua construção, a seleção de materiais e componentes e ainda sua modelagem cinemática do robô móvel.

.

Sumário

1 Introdução

 

9

1.1 Situação Problemática

9

1.2 Justificativa

10

1.3 Objetivos deste Trabalho

10

1.4 Organização deste trabalho

11

2 Revisão da Literatura

 

12

2.1

Robótica

12

2.1.1 Definição de Robô

 

12

2.1.2 Robô Móvel

13

2.2 Robôs Móveis

13

2.3 Modelo Cinemático do Robô Móvel

16

2.3.1

Modelos Cinemáticos e Restrições

16

2.3.1.1 Representação da Posição do Robô

17

2.3.1.2 Modelos de Cinemática Direta

19

2.3.1.3 Restrições Cinemáticas de Rodas

21

2.3.1.4 Mobilidade e Classificação de Robôs Móveis

24

2.3.1.5 Modelo Cinemático de Postura

27

3 Concepção do Projeto do Robô Móvel

31

3.1

O microcontrolador Atmel AVR ATMEGA16

31

3.1.1

Ferramentas de desenvolvimento

33

3.1.1.1 Hardware

 

33

3.1.1.2 Software

34

3.1.2

Procedimentos

Básicos para o Funcionamento

38

3.1.2.1 configuração

Registros de

38

3.1.2.2 Seleção da freqüência do relógio

40

3.1.3

Funcionalidades particulares

41

3.2

Sensores

42

3.2.1 Sensores

de

Toque

43

3.2.2 Sensores

de

Distância

43

3.2.3 Sensores

de

Proximidade

43

3.2.4 Sensores

de

Visão

 

44

3.3 Motores

44

3.4 Baterias

45

3.5 Modelo Cinemático do Robô WinoFire

46

3.6 Modelo Cinemático de Postura do WinoFire

46

4 Resultados

 

49

4.1 Robô Autônomo Inteligente: WinoFire

49

4.2 Características do robô WinoFire

50

4.2.1 Motores

 

51

4.2.2 Sensores

51

4.2.3 Bateria

51

4.2.4 Sistema Eletrônico

52

4.3

Testes

e Resultados

52

5 Conclusões

 

53

5.1

Conclusões

53

5.2 Trabalhos Futuros

53

Capítulo 1

1 Introdução

Cada vez mais a interação entre homem máquina pode ser vista em nossos dias. Seja desde a compra de um jornal até o piloto automático de um avião, os sistemas automatizados fazem parte da vida cotidiana de bilhões de pessoas no mundo. E com o avanço da tecnologia e com o melhoramento do desempenho de sensores, sistemas robóticos móveis têm ganhado mais espaço no cenário comercial e industrial.

É possível citar muitos exemplos de uso de sistemas robóticos móveis. Um exemplo pode ser encontrado no robô Chico Mendes, desenvolvido dentro do projeto PIATAM II, patrocinado pelo FINEP e com o apoio de várias instituições de pesquisa. Este robô realizara a coleta de recursos e realizará análises remotamente e enviará os dados aos pesquisadores. Este é um exemplo de um projeto genuinamente brasileiro dentro do campo de robótica móvel.

Com o grande desenvolvimento dentro desta área torna-se interessante o estudo de como estes robôs móveis podem ser modelados e construídos, levando em consideração aspectos técnicos e teóricos.

1.1 Situação Problemática

Envelhecimento da população, mudanças climáticas, terrorismo, são alguns dos desafios do mundo hoje. Torna-se interessante fazer maquinas inteligentes trabalharem para o propósito de resolver estes problemas. E para resolver estes problemas, institutos de pesquisa e laboratórios pelo mundo estão dedicados a trabalhar para desenvolver teorias e aplicações nesta área. Nos dias de hoje, é possível a construção de robôs desde para o cumprimento de aplicações domesticas, como fazer um café, até sofisticadas aplicações médicas, como em aplicações cirúrgicas.

No futuro, robôs móveis dotados com biosensores poderão auxiliar soldados ante o perigo de armas químicas, identificando a presença e a natureza dos gases, e alertando os humanos. Robôs móveis voadores poderão ainda monitorar e supervisionar a poluição do meio ambiente.

Com o avanço da tecnologia é possível a concepção de novas idéias, aplicando protótipos utilizando áreas como inteligência artificial, robótica, micromáquinas e materiais inteligentes. Os atuais sistemas de inteligência para robôs permitem a aplicação possuindo comportamentos simples comparados a insetos. Avanços como estes em “Software”, acompanhados na evolução na tecnologia de micro-sensores e microatuadores oferecem a oportunidade de termos no futuro robôs pequenos, de baixo custo e potencialmente úteis para tarefas de cirurgia.

É possível verificar a grande gama de aplicações hoje encontradas na robótica móvel. Logo o estudo das equações que modelam um robô móvel e aspectos de sua

construção torna-se mister, cabendo ao pesquisador a tarefa de buscar na bibliografia

o material necessário para o entendimento completo deste.

1.2 Justificativa

Como mostrado na seção anterior, existe uma grande variedade de aplicações de robôs móveis. O seu estudo hoje motiva milhares de pesquisadores e diversos centros de pesquisa de modo a responder suas principais questões e otimizar o comportamento destes. É notória a escassez de trabalhos na área acadêmica voltados ao estudo da robótica móvel.

Como em todo estudo teórico, existe a necessidade de validação dos resultados por meio da comparação entre o teórico e o experimental. Logo, o estudo cinemático de robôs móveis pode ser validado por meio de testes em plataformas robóticas. Contudo, as plataformas comerciais muitas vezes possuem um valor alto para a aquisição de um grupo de pesquisa de uma Universidade, prejudicando os estudos realizados pela privação de testes experimentais. Logo, torna-se interessante a construção de robôs móveis acessíveis para estudo das teorias de modelagem destes veículos.

1.3 Objetivos deste Trabalho

O objetivo principal deste trabalho é implementar um robô móvel autônomo de forma que este possa servir de plataforma para estudo futuros na área da robótica móvel.

Para a realização deste trabalho, a implementação de um robô móvel, foram realizados os seguintes passos: escolha de um microcontrolador adequado para as necessidades do projeto, conhecimento de linguagem de programação, escolha dos

módulos eletrônicos e mecânicos para a implementação do robô, seleção dos motores

e sensores, baterias, desenho do projeto, confecção e montagem das pecas e testes finais.

1.4

Organização deste trabalho

A dissertação está organizada de acordo com os seguintes capítulos:

Capítulo 2: Neste capítulo está uma revisão da literatura sobre o tema robótica, conceitos de modelagem de robôs móveis, mostrando a modelagem cinemática e como os aspectos estruturais, como número de rodas e suas características podem influenciar no modelo cinemático do robô móvel como um todo.

Capítulo 3: Este capítulo está dividido em duas partes: Na primeira parte são mostradas características de microcontrolador em geral, critério para seleção do microcontrolador, características e tipos de sensores e atuadores utilizados no robô. E numa segunda parte tem o modelo cinemático do robô WinoFire, construído neste trabalho;

Capítulo 4: Neste capítulo são mostrados os resultados obtidos da construção do robô móvel versátil. É realizada uma comparação com os testes realizados e as respostas obtidas.

Capítulo 5: Neste capítulo tem uma conclusão deste projeto avaliando os resultados obtidos em relação ao objetivo proposto. Ainda temos sugestões para trabalhos futuros

Capítulo 2

2 Revisão da Literatura

No mundo pós-moderno, a Robótica é uma ciência bastante presente na vida da humanidade. A Robótica pode ser definida como se segue:

“É a ciência da utilização de máquinas que desempenhem funções sem a intervenção do homem”.

Para melhor entender este trabalho, é interessante a definição de termos que serão utilizados a seguir, como é o caso da definição de robô:

2.1

Robótica

2.1.1 Definição de Robô

Definição da JIRA ( Japan Industrial Robot Association) : O robô é definido como um sistema mecânico que possui movimentos flexíveis análogos aos movimentos orgânicos, e combina esses movimentos com funções inteligentes e ações semelhantes as do ser humano. Neste contexto, função inteligente significa o seguinte:

decisão, reconhecimento, adaptação ou aprendizagem.

Definição do RIA ( Robot Institute of America) : O robô é definido como um dispositivo mecânico programável para execução de algumas tarefas de manipulação ou locomoção sob controle automático. Robô industrial é um manipulador multifuncional e reprogramável projetado para movimentar materiais, peças e ferramentas ou dispositivos especiais, conforme programação prévia, de modo a executar uma variedade de tarefas.

2.1.2

Robô Móvel

É necessário também definir o que vem a ser um robô móvel. Segundo ( Muir, 1988), define o robô como: : “um robô capaz de se locomover sobre um superfície somente através da atuação de rodas montadas no robô e em contato com a superfície” (Victorino,1998). Por meio da rotação das rodas é obtido um movimento relativo entre o eixo do robô e a superfície de contato.

Para que estes robôs móveis possam navegar dentro de um ambiente é necessário o uso de sensores. Com o uso destes, o robô móvel passa a ter percepção de obstáculos e possíveis fenômenos físicos e desta forma, pode tomar decisões, sem a intervenção do homem. Atualmente existe uma grande quantidade de tipos de sensores que podem ser utilizados, dos quais podemos citar os sonoros, infravermelho, toque.

Os processos de percepção e decisão podem ser considerados de três formas:

Estratégia Reativa: o comportamento do robô é determinado pelos estímulos exteriores vindos do ambiente obtidos por sensores;

Estratégia deliberada: as informações do ambiente são previamente processadas e a tarefa e o comportamento do robô é previamente determinado;

Estratégia híbrida: junção das duas anteriores

2.2 Robôs Móveis

Desde a década de 60 já realizava estudos em robôs móveis por institutos de pesquisa ao redor do mundo. O robô SHAKEY, do instituto de pesquisa de Stanford, foi desenvolvido com o objetivo de estudar as aplicações de inteligência artificial e estudar os processos para controle em tempo real de robôs os quais interagissem com ambientes complexos (Rezendo, 1992). O robô CART do mesmo instituto de pesquisa foi desenvolvido para estudos de visão estéreo.

Estes robôs usavam computadores externos e operavam, na maioria das vezes, em ambientes estáticos. No caso do SHAKEY, os experimentos incluíam a alteração do ambiente após muitas horas de execução, sem que o robô percebesse o efeito do ato dinâmico. Não obstante as simplificações, eles operavam muito lentamente. Era necessário muito tempo construindo modelos de mundo e era utilizado pouco tempo de computação para planejar e agir.

Na época, a dificuldade de levar adiante as aplicações ao mundo real e a falta de instrumentação eficiente (computadores, sensores) retardaram o avanço da

pesquisa para estes robôs. Houve falta de perspectivas palpáveis por parte dos pesquisadores, como por parte dos financiadores que queriam resultados imediatos. Desta forma, houve ascensão dos robôs manipuladores de aplicação imediata e de resultados palpáveis a curto prazo. Com a tecnologia dos microprocessadores uma retomada do interesse pelos robôs móveis,

O Laboratório de Robôs Móveis, no instituto de Robótica da Universidade de

Carnegie-Mellon, tem desde 1982 projetado, construído e avaliado quatro protótipos

de robôs moveis:

foi

desenvolvido para o estudo dos problemas de controle e estabilização.

O robô

PLUTO,

com

três

rodas

independentemente

associadas,

O robô NEPTUNE, um triciclo equipado com duas câmeras e 24 sensores de

ultra-som distribuídas em sua volta.

O robô ILONATOR possui quatro rodas unidirecionais montadas

simetricamente nos quatro vértices de um retângulo, resultando um movimento com três graus de liberdade. Um microprocessador embarcado realiza a interface com os atuadores das rodas possuindo encoders ópticos e o robô necessita de um computador para a comunicação dos comandos de alto-nível.

O robô TERRAGATOR é dotado de um motor à gasolina deslocando a curtas

distancias e se orienta a partir das bordas da pista.

Na França os robôs mais representativos são:

O HILARE do Laboratorie d’Automatique et d’Analyses des Systemes (LAAS)

que é utilizado para pesquisas sobre a programação de robôs móveis e planejamento

de movimento.

O robô móvel do projeto ICARE, do INRIA/Sophia Antipolis, que serve como

plataforma experimental para o estudo de processamento de imagens em 3D.

O Artificial Intelligence Lab Massachussetts Institute of Technology (MIT)

possui trabalhos relevantes nesta área, cita-se os seguintes:

O robô PEBBLES, um robô móvel usando câmera para evitar obstáculos em

ambientes acidentados e desconhecidos.

Os micro-robôs ANTS projetados para explorar idéias sobre a ação de

cooperação entre robôs. Este projeto tem como objetivos estender os limites da micro-

robótica integrando muitos sensores e atuadores em um espaço pequeno, formando uma espécie de comunidade robótica estruturada a partir destes indivíduos. Este projeto foi inspirado em colônias de formigas.

O SOLEITE, um robô móvel de 30 gramas de massa, completamente autônomo e alimentado por energia solar. A energia coletada pelo painel é armazenada em um capacitor de 1F para a alimentação do robô. O intuito deste é aplicação em projetos espaciais.

O robô KHEPERA, de origem de suíça, trata-se de um robô móvel miniaturizado de seção circular com raio de 2,5 cm e que se move através de duas rodas fixas impulsionadas por motores de corrente contínua independentes. Dispõe de módulos suplementares de visão, telemetria e garra mecânica. Em sua circunferência existem oito sensores de infravermelho que detectam a proximidade do obstáculo. É utilizado no estudo de controle e estabilização de sistemas não-holonômicos.

de controle e estabilização de sistemas não-holonômicos. Figura 2.1 – Robô Khepera. Podem-se citar vários

Figura 2.1 – Robô Khepera.

Podem-se citar vários trabalhos realizados dentro das escolas brasileiras. Dentre eles cita-se os trabalhos realizados pelo Laboratório de Automação e Sistemas da Escola Politécnica de São Paulo. Este laboratório dispõe de um AGV (Autonomous Guide Vehicle), ARIEL, construído no mesmo laboratório, possuindo duas rodas motrizes acionadas por motores de corrente contínua, além de possuir um computador

a bordo para operações de controle e interfaceamento.

A seguir serão mostrados os aspectos teóricos da robótica móvel. Assim como

a modelagem de manipuladores, serão desenvolvidas equações as quais permitirão ao

projetista controlar o robô móvel e assim definir os parâmetros que melhor realizem o

controle do móvel.

2.3

Modelo Cinemático do Robô Móvel

Cinemática é o estudo mais básico de como os sistemas mecânicos se comportam. Em robôs móveis, é necessário entender o comportamento mecânico do robô tanto para projetar robôs móveis apropriados para tarefas como para entender como criar métodos de controle.

É notório que robôs móveis não são os primeiros sistemas mecânicos a exigir este tipo de análise. Robôs manipuladores foram objeto de intenso estudo por mais de 30 anos. Em determinados casos, robôs manipuladores são muito mais complexos em relação a modernos robôs móveis: Um robô soldador pode possuir cinco ou mais juntas, enquanto recentes robôs móveis são simples maquinas com sistemas diferencial de locomoção. Nos últimos anos, as comunidades dedicadas ao estudo da Robótica alcançaram um grande entendimento da cinemática e, em muitos casos, da dinâmica (ou seja, relacionando forcas e massas) de robôs manipuladores [SIEGWART, 2004].

As comunidades de Robótica Móvel assumem muitas das questões cinemáticas da comunidade de Robôs Manipuladores. O Espaço de Trabalho dos robôs manipuladores é crucial porque ele define a extensão de possíveis posições que podem ser alcançadas pelo fim do manipulador relativas ao referencial do sistema. O Espaço de Trabalho de um Robô Móvel é igualmente importante porque ele define as possíveis posições que um Robô Móvel pode atingir dentro de um ambiente. A controlabilidade do Braço de um Robô define a maneira na qual a combinação da atuação dos motores em vista do movimento do braço de uma determinada posição para outra dentro do espaço de trabalho. De modo semelhante, a controlabilidade de um robô móvel define possíveis trajetórias dentro de seu espaço de trabalho. A dinâmica dos robôs impõe restrições adicionais sobre o espaço de trabalho e trajetórias devido às considerações de massa e força. O robô móvel também é limitado pela dinâmica: por exemplo, um alto centro de gravidade limita o raio de giro dentro de certo conjunto de velocidades, devido ao perigo de tombamento.

O processo de entendimento do movimento de um robô começa com o processo de descrição da contribuição que cada roda inclui na locomoção. Cada roda tem uma importante contribuição no movimento do robô como um todo. Da mesma forma, cada roda insere restrições no movimento do robô: por exemplo: não permitindo o deslocamento lateral. Na seção seguinte é introduzida a notação que permite expressar o movimento de um robô em um sistema de Referência Global assim como em um sistema de Referência Local. Então, usando esta notação, é demonstrada a construção de um simples Modelo de Cinemática Direta de movimento, descrevendo como o robô como um todo se move em função de sua geometria e do comportamento de cada roda. A seguir, será formalmente descrito as restrições cinemáticas das rodas individualmente, e então combinadas para expressar as restrições cinemáticas do robô como um todo.

2.3.1 Modelos Cinemáticos e Restrições

Descrever um modelo para o movimento do robô como um todo é um processo bottom-up. Cada roda individualmente contribui com o movimento do robô e, ao mesmo tempo, impõe restrições à sua locomoção. Rodas estão ligadas à geometria do chassi do robô, e consequentemente suas restrições são combinadas formando restrições no movimento geral do robô. Entretanto as forcas e restrições de cada roda devem ser expressas com respeito a um consistente Sistema de Referencia. Isto é particularmente importante em robótica móvel porque de sua natureza móvel; um claro mapeamento entre o Sistema de Referência Global e o sistema de Referência Local é necessário. Pode-se começar definindo formalmente estes Sistemas de Referencia, então usando o resultante formalismo para obter a cinemática das rodas individualmente e do robô como um todo.

2.3.1.1 Representação da Posição do Robô

Através desta análise pode-se modelar o robô como um corpo rígido sobre rodas, operando em um plano horizontal. A dimensionalidade total do chassi do robô é igual a três, duas para sua posição no plano e uma para orientação ao longo do eixo vertical, o qual é ortogonal ao eixo do plano. É claro que existem graus de liberdade adicionais e flexibilidade devido aos eixos da rodas, juntas das rodas, e rodas bobas. Contudo o chassi do robô pode ser somente referenciado como um corpo rígido, ignorando juntas ou graus de liberdade internos do robô e de suas rodas.

ou graus de liberdade internos do robô e de suas rodas. Figura 2.2 – Sistema de

Figura 2.2 – Sistema de Referência Local e o Sistema de Referência Local de um Robô.

Para especificar a posição de um robô no plano estabelece-se uma relação entre o Sistema de Referência Global do plano e o Sistema de Referência Local do Robô, como na Figura 2.2. Os eixos XI e YI definem uma arbitrária base inercial do plano como um Sistema de Referência Global a partir de uma origem O: {XI, YI}. Para especificar a posição do robô, escolhe-se um ponto P sobre o chassi do robô e então o Sistema de Referência Local. A posição P no Sistema de Referência Global é especificada pelas coordenadas x e y, e a diferença angular entre o sistema global e o local é dada por θ. Pode-se descrever a posição do robô como um vetor de três

elementos. Nota-se o subscrito I para mostrar a base desta posição como sendo em relação ao sistema de referência global:

ξ

I

=

x

y

θ

 

(2.1)

A expressão acima formada pelo vetor ξ é chamada de Postura do robô. Para descrever o movimento do robô em termos de componentes motoras, será necessário mapear o movimento ao longo dos eixos do sistema de referência global para o movimento do sistema de referência local do robô. É claro que o mapeamento é uma função da posição atual do robô. Este mapeamento é obtido usando a Matriz de Rotação Ortogonal.

I

é obtido usando a Matriz de Rotação Ortogonal . I Figura 2.3 – Robô Móvel alinhado

Figura 2.3 – Robô Móvel alinhado com um eixo global.

R θ

(

)

=

cos

0

θ

sen

θ

sen

cos

0

θ

θ

0

0

1

(2.2)

A matriz pode ser usada para mapear o movimento no sistema de referência global {X I , Y I } para o movimento em termos do sistema de referência local {X R , Y R }.

Esta operação é denotada por do valor de θ:

&

ξ

R

=

&

R θ ξ

(

)

I

&

R θ ξ

(

)

I

porque a computação desta operação depende

(2.3)

Por exemplo, considerando o robô da Figura 2.3, tem – se um ângulo

θ =

π

2

,

logo se pode facilmente computar a matriz de rotação instantânea R:

R

(

π

2

)

0

= −

0

1

1 0

0

0

0

1

(2.4)

  0 = − 0 1 1 0 0 0 0 1   

Figura 2.4 – Um robô de tração diferencial em seu sistema de referência global.

&

no sistema de referência global pode-se

, computar os componentes de movimento ao longo dos eixos locais X R e Y R . Neste caso, devido ao ângulo do robô, o movimento ao longo de XR é igual a y& e ao longo de YR é x& :

Dada uma velocidade

( x& y& ,θ )

&

ξ R

=

R

(

π

2

&

)

ξ

I

0

= − 1

0

1

0

0

0   x

0

1

&

&

y

&

θ

  

&

y

&

= − x

&

θ

(2.5)

2.3.1.2 Modelos de Cinemática Direta

Em casos mais simples, o mapeamento descrito na equação (2.3) é suficiente para gerar uma formula que se obtenha a cinemática direta de um robô móvel: Como

o robô se move, dada sua geometria e as velocidades das rodas? A título de ilustração, considere o exemplo mostrado na Figura 2.4.

Este robô com tração diferencial possui duas rodas, cada uma com diâmetro r. Dado um ponto P no ponto central em relação às duas rodas motoras, cada roda tem

uma distância l de P. Dados r, l, θ, e a velocidade de rotação de cada roda,

, a

modelo da cinemática direta pode prever a velocidade geral do robô como um todo no sistema de referência global:

ϕ&

1

e

ϕ&

2

&

ξ

I

=

x &

 

y &

 

&

θ

=

f

l r

( ,

,

θ ϕ ϕ

,

&

1

,

&

2

)

(2.6)

A partir da equação (2.3) tem-se que o movimento no sistema de referência

global pode ser obtido a partir do movimento no sistema de referência local:

. Consequentemente, primeiro computa-se a contribuição de cada roda

no sistema referência local,

Supondo que o sistema de referência local de um robô é alinhado de modo que

o robô se mova para frente ao longo do eixo +X R , como mostrado na Figura 2.2.

Primeiro considera-se a rotação de cada roda na velocidade de translação de P na direção +X R . Se uma roda gira e a outra está parada, desde que o ponto P está no meio entre as duas rodas, o robô se movimentará instantaneamente com metade da

velocidade: x&

. Em um robô com tração diferencial,

estas duas contribuições podem simplesmente serem adicionadas para calcular a

componente x r de

R é sempre igual à zero, pois nenhuma das rodas

contribui para o movimento ao longo deste eixo. Finalmente, é necessário calcular a

. Novamente as contribuições de cada roda podem

componente rotacional

ser computadas individualmente e somadas posteriormente. Pode-se chamar a roda direita de 1 e a esquerda de 2. Um giro para frente da roda 1 resulta em uma rotação

ω 1 em P pode ser computada

anti-horária no ponto P. A velocidade de rotação

porque a roda é se move instantaneamente ao longo do arco de círculo de raio 2l:

&

ξ

I

=

R θ

(

)

1

&

ξ

R

ξ

R

.

r 1

= (1/ 2)rϕ&

1

&

e

x&

r 2

=

y&

(1/ 2)rϕ&

2

ξ

R

. O valor de

&

θ

R

&

de ξ

R

ω

1

=

r &

ϕ

1

2 l

(2.7)

O

mesmo cálculo aplicado à roda esquerda é realizado e resulta em uma

rotação horária no ponto P:

ω

2

=

r &

ϕ

2

2 l

(2.8)

Combinando estas equações individuais resulta em um modelo cinemático para o robô com tração diferencial do exemplo:

&

ξ

I

=

R

θ

(

)

1

&

ϕ

r

1

2

r &

ϕ

1

2

l

+

0

+

&

ϕ

r

2

2

&

ϕ

r

2

2 l

(2.9)

Esta aproximação para a modelagem cinemática provê informação sobre o movimento de um robô dado as componentes das velocidades das rodas em casos onde o robô move-se para frente. Para os vários tipos de robôs existentes será necessária à mesma análise de modo a verificar as componentes levando em consideração as restrições impostas pela geometria e pela estrutura. A seguir será mostrado como se podem verificar as restrições impostas pelo uso de rodas adicionais, chamadas caster.

2.3.1.3 Restrições Cinemáticas de Rodas

Para se determinar o modelo cinemático de um robô é necessário primeiramente expressar as restrições sobre o movimento de cada roda. Como mostrado na seção anterior, o movimento de cada roda pode ser posteriormente combinado de forma a se obter o movimento do robô como um todo.

Existem quatro tipos principais de rodas, as quais possuem grandes diferenças em suas propriedades cinemáticas. Os quatro principais tipos de rodas são: Roda Padrão, com dois graus de liberdade; Roda Castor, com dois graus de liberdade e um com uma distancia em relação à junta de rotação; Roda Sueca, com três graus de liberdade e a Roda Bola ou Esférica. Na figura a seguir são mostrados os tipos de rodas.

Na figura a seguir são mostrados os tipos de rodas. Figura 2.5 – Tipos de Rodas:

Figura 2.5 – Tipos de Rodas: (a) Roda Padrão. (b) Roda orientada fora do centro (Caster). (c) Roda Sueca. (d) Roda Bola ou Esférica

Neste trabalho a proposta é estudar e verificar o comportamento de um robô com tração diferencial, e usando uma roda do tipo Caster, este trabalho mostrará as restrições vindas neste tipo de roda. Com o intuito de facilitar o modelo serão realizadas algumas suposições. Será assumido que o plano das rodas sempre permanece vertical e que em todos os casos sempre existe apenas um ponto de contato entre a roda e o chão. Isto é, a roda entrará em movimento apenas sob condições de rolamento puro.

2.3.1.3.1 Roda orientada fora do Centro (Caster)

Rodas orientadas fora do centro são capazes de guiar ao redor de um eixo vertical. Entretanto, diferente da roda padrão, o eixo vertical de rotação no castor não passa através do ponto de contato com o piso. A Figura 2.6 descreve um castor, demonstrando que a especificação formal da posição de um castor requer um parâmetro adicional.

O ponto de contato é representado por B, o qual é conectado por um alongamento rígido AB de comprimento fixo d para o ponto A, este por sua vez fixa o eixo vertical sobre o qual B gira e possui uma posição especificada dentro sistema de referência do robô, como mostrado na Figura 2.6. Assume-se que o plano da roda está alinhado com AB em todos os instantes. O Castor possui dois parâmetros variantes em função do tempo: ϕ(t) representa a rotação da roda sobre o tempo; β (t) denota o ângulo da direção e a orientação de AB sobre o tempo.

o ângulo da direção e a orientação de AB sobre o tempo. Figura 2.6 – Uma

Figura 2.6 – Uma roda Castor e seus parâmetros.

A restrição para o rolamento pode ser vista na equação a seguir:

sen

(α + β )

cos(α + β )

() cos(β )

l

R

&

(θ )ξ

I

ϕ& = 0

r

(2.10)

A geometria do Castor possui significativo impacto sobre as restrições de deslizamento. O tema crítico é que a força lateral sobre a roda ocorre no ponto A porque este é o ponto de acoplamento da roda com o chassi do robô. A restrição pode ser vista na equação a seguir:

cos(α + β )

sen

(α + β )

d

+

lsen

(β )

R

(θ )ξ & + r β & = 0

I

(2.11)

Na equação (2.11), qualquer movimento ortogonal ao plano da roda deve ser balanceado por um equivalente e oposta.

2.3.1.3.2 Rodas Suecas

Neste caso somente uma das componentes da velocidade do ponto de contato da roda com o chão é considerada igual à zero, diferentemente das rodas convencionais onde todas as componentes da velocidade do ponto de contato são iguais a zero, ao longo do movimento. A posição da roda com relação ao sistema de referência móvel é descrito como para as rodas convencionais fixas, por três parâmetros, α, β , l . Apenas um parâmetro mais é requerido para caracterizar a direção em relação ao plano da roda, segundo o qual a componente da velocidade no ponto de contato é zero, e será o ângulo γ . A equação de restrição cinemática é escrita da seguinte forma.

- Ao longo da direção representada por γ na Figura 2.7

sen(α + β + γ )

cos(α + β + γ )

&

l cos(β + γ ) R(θ )ξ

I

+ r cos γ

2)

(2.1

α + β + γ ) & l cos( β + γ ) R ( θ

Figura 2.7 – Rodas Suecas.

2.3.1.4 Mobilidade e Classificação de Robôs Móveis

Um robô móvel pode ser equipado com N rodas, podendo ter N f rodas fixas, N c rodas convencionais orientadas no centro, N fc orientadas fora de centro, e N sw rodas suecas [JACOBO, 2001].

N=N f +N c +N fc +N sw

A configuração do robô no plano cartesiano é completamente descrita pelos

seguintes vetores de coordenada.

Postura

Coordenada Angular

Coordenadas de Rotação, ângulos de rotação das rodas em torno do centro.

ϕ

β

c

=

ξ

I

=

x

 

y

θ

 

(t)e

β

fc

(t)

ϕ

f

ϕ

c

t

t ) ( ) t

(

ϕ

fc

ϕ

sw

(

(

t

)

)

ϕ

Os subíndices indicam respectivamente: f – roda fixa; c – orientada no centro; fc – orientada fora do centro; sw – roda sueca.

é chamado de coordenadas de configuração,

O

conjunto {ξ, β (t),β

c

fc

(t),ϕ }

sendo o número de coordenadas de configuração igual a:

N

f

+ 2

N

c

+ 2

N

fc

+

N

sw

+ 3

(2.13)

As equações de restrições cinemáticas podem ser resumidas em uma forma matricial compacta:

J

1

(

β

c

,

β

fc

)

R

&

(

θ ξ+ ϕ& =

J

2

)

0

(2.15)

C

1

(

β

c

,

β

fc

)

R

&

(

θ ξ+

)

ϕ& =

C

2

0

(2.17)

Com as seguintes definições:

J (

1

β β

c

,

fc

) =

J

1

f

J

1

f

J

1

fc

(

(

β

c

β

fc

)

)

J

1

sw

;

J

2

=

diag r

(

,

r

cos

γ

)

(2.18)

J 1f , J 1c , J fc , J sw são matrizes com dimensões (N f x 3), (N c x 3). (N fc x 3), (N sw x 3), respectivamente, cuja forma vem diretamente das equações de restrições ao longo do plano da roda. J2 é uma matriz (N x N) cuja diagonal são os raios das rodas suecas o qual é multiplicado por cos γ .

c

1

β β

( ,

c

fc

)

= C

C

1 f

C

1 f

1 fc

β

(

(

)

c

β

fc

)

; C

2

=

0

0

C

2

fc

(2.19)

C 1f , C 1c , C 1fc são matrizes com dimensões (N f x 3), (N c x 3), (N fc x 3), cuja forma vem diretamente das restrições na direção ortogonal ao plano da roda. C 2fc é uma matriz diagonal constante com elementos iguais a d, parâmetro das N fc rodas orientadas fora do centro (Caster).

Pode-se introduzir a seguinte suposição com respeito à configuração das rodas

suecas:

corresponderá à direção

da componente zero da velocidade que é ortogonal ao plano da roda. Tal roda seria

sujeita a uma restrição idêntica à restrição de não escorregamento das rodas convencionais, daí o benefício de implementar rodas suecas.

A1: Para cada roda sueca:

π

2

. O valor de

γ =

π

2

γ

Considerando as (N f + N c ) primeiras equações de (2.17), pode-se escrevê-las explicitamente como:

matriz

C

C

1

1

&

R (

θ ξ=

)

0

c

(

β

c

)

R

&

θ ξ=

(

)

 

(2.20)

0

(2.21)

Essas equações implicam que o vetor

C

*

1

(

β

c

)

definida como:

&

R(

)

θ ξ

pertence ao espaço nulo da

C

*

1

(

β

c

)

= 

C

1 f

C 1 c

(

β c

&

R θ ξN C β

(

)

1

(

c

*

)

)

Sabe-se, assim, que o posto (rank) da matriz

C β

1

(

c

*

)

 

(2.22)

(2.23)

3

e depende do

e qualquer movimento no

plano é impossível. Uma interpretação geométrica das equações (2.20) e (2.21) é que em cada instante o movimento do robô pode ser visto com uma rotação em torno do centro instantâneo de rotação (CIR) cuja posição relativa ao sistema de referência móvel pode ser variável no tempo. Em cada instante também o vetor de velocidade de qualquer ponto no chassi do robô é perpendicular à linha reta que une este ao ponto

projeto do robô móvel. Se

C

*

1

(

β

c

)

=

3

, então

&

R (θ )ξ = 0

CIR. Isto é ilustrado na Figura 2.8 e é equivalente à condição de posto

C β

1

c

*

(

)

2

à condição de posto  C β 1 c * ( )  ≤ 2 Figura

Figura 2.8 – Centro Instantâneo de Rotação (CIR).

O grau de mobilidade para um robô móvel pode então ser definido da seguinte

forma

δ

m

=

dim

N C

[

*

1 (

β

c

)]

=

3

posto C

[

1 * (

β

c

)]

é o número de rodas convencionais orientadas no centro que

poder ser guiadas independentemente para dirigir o robô. Este número é chamado

grau de dirigibilidade

O

posto C

[

1c

(

β

c

)]

δ

s

.

δ

s

= posto C

[

1c

(

β

c

)]

Podem-se agrupar os robôs móveis são singulares ou não-degenerados em

cinco classes diferentes de interesse prático, de acordo com o grau de mobilidade

e de dirigibilidade δ . As classes são separadas de acordo com o par (

δ ,

m

δ

s

).

s

δ

m

Tabela 2.1 – Classes de robôs Móveis de acordo com (

δ δ

m

,

s

).

δ

m

3

2

2

1 1

 

δ

s

0

0

1

 

1 2

Essas classes são formadas devido às seguintes condições sobre

O grau de mobilidade

δ

m satisfaz a inequação

1

δ

m

3

δ

m

e δ

s

:

 

(2.24)

Os limites indicam o número máximo de graus de liberdade que o robô pode ter no plano, as translações nas direções x, y e a rotação θ, e com no mínimo um movimento possível.

O grau de dirigibilidade

1

δ

s

2

δ

s

satisfaz a inequação

(2.25)

O limite superior aplica-se para os robôs sem rodas fixas (N f = 0), e o inferior

corresponde aos robôs sem rodas convencionais orientadas no centro (N c = 0).

81687054

Além disso, satisfaz a inequação:

2

δ

m

+

δ

s

3

(2.26)

, pois corresponderiam a uma rotação

em torno do CIR (Centro Instantâneo de Rotação) fixo. Também não se admitem

classes onde > 2

Não existem classes onde

δ

m

, e

δ

s

= 2

δ

m

+

δ

s

= 1

, para que o robô não apresente uma estrutura singular.

2.3.1.5 Modelo Cinemático de Postura

São modelos matemáticos de estado que dão uma descrição geral dos robôs móveis, permitindo que se discutam as propriedades de manobra do robô. Possibilitam uma análise do robô dentro do contexto de sistemas não-holonômicos [JACOBO, 2001].

Permite

inferir

sobre

conceitos

de

Mobilidade,

Dirigibilidade

e

Manobrabilidade

do

robô

móvel.

Como

é

descrito

pela

equação

(2.23),

&

R θ ξN C β

(

)

1

(

c

*

)

, conclui-se que para qualquer instante de tempo t, existe um vetor

de tempo η(t) , entrada de controle, tal que.

&

ξ

= R

Τ

(θ) (β )η

Σ

c

(2.27)

A

dimensão do vetor η(t) é o grau de mobilidade δ do robô. Quando o robô

m

não tem rodas orientáveis ao centro a matriz é constante e:

&

ξ=

R

Τ

θ Ση

(

)

(2.28)

De outra forma o modelo pode ser descrito como:

&

β =ζ

c

(2.29)

As expressões acima podem ser consideradas como a representação no espaço de estados do sistema (chamado modelo cinemático de postura), onde a coordenada

são variáveis de estado, enquanto η e

ζ são consideradas como as entradas de controle.

Esta interpretação deve ser tomada com cuidado. Em um sistema físico as verdadeiras entradas de controle são os torques dos motores, fornecidos pelos motores embarcados: O modelo cinemático do espaço de estados é de fato um subsistema do modelo dinâmico geral.

de postura ξ e possivelmente a coordenada

β

c

O modelo cinemático de postura pode ser escrito de uma forma compacta,

como é mostrado a seguir:

Se N c = 0

Se N c = 0

z&= B(z)u

z =ξ ;

B

(

z

)

=

u =η

z =

B

(

z

u =

ξ

β

c

;

) =

η

ζ

R

T

R

θ

(

)

0

T

Σ

(θ ) Σ

0

1

;

Para cada classe de robô móvel entre as definidas na Tabela 2.2, existe um modelo cinemático de postura diferente. Os robôs da mesma classe podem ser representados pelo mesmo modelo, variando a posição do ponto P e do referencial.

Para cada robô móvel com rodas pertencente à mesma classe, o mesmo modelo cinemático de postura é o utilizado. Para um móvel com rodas é sempre possível selecionar o ponto de referência P e a base {X, Y} solidário ao chassi do robô tal que o modelo cinemático de postura tome exatamente a forma correspondente ao tipo de robô dado na .

Para

escolhidos arbitrariamente.

o

tipo de

robô (3,0) o

ponto de

referência P e a base {X, Y} podem ser

Para o tipo de robô (2,0) o ponto de referência P é escolhido como um ponto do eixo das rodas fixas, com X alinhado ao longo deste eixo.

Para o tipo de robô (2,1), selecionamos uma das rodas centradas e P é escolhido como o centro desta roda, com (X, Y) escolhido arbitrariamente.

Para o robô (1,1), selecionamos uma das rodas centradas, P; e a intersecção da linha perpendicular que passa pelo centro da roda selecionada, com o eixo comum da rodas fixas. L é a longitude perpendicular do robô.

Para o tipo de robô (1,2) se seleciona duas rodas orientáveis centradas. P é escolhido como o ponto médio da distancia entre os centros destas duas rodas, com X alinhado ao longo da linha que junta estes centros. L é a distância média entre estes centros

A seguir será mostrada a descrição do robô Winofire implementado neste trabalho, descrevendo suas características e como estas afetam em sua cinemática.

Tabela 2.2 – Resumo dos Modelos Cinemáticos de Postura.

TIPO

z

Σ β

(

c

)

 

ou Σ

Modelo Cinemático de Postura z&= B(z)u

       

&

x

&

cos

θ

sen

 

x

θ

0  

η

1

(3,0)

y

Matriz Identidade

y

=

sen

θ

cos

θ

0

η

θ

 

θ

&

0

0

1

2

 

η

3

(2,0)

x

y

θ

0

1

0

0

0

1

   

&

 

 

&

x

y

&

θ

=

−

sen

cos

0

θ

θ

0

0

1

η

η

1

2

(2,1)

x

y

θ

β

c1

−

sen

cos

β

c

0

c

1

β

1

0

0

1





 

x

y

θ

&

β

&

&

&

c

1

  1

)

 −

  0

sen

cos(

θ β

(

+

c

θ β

+

c

0

1

=

)

0

0

1

0

0

0

0

1

 

 

η

1

η

2

ζ

1

(1,1)

x

y

θ

0

Lsen

β

   

&

x

&

y

=

−

L

θ

Lsen sen

β

c

3

cos

θ

cos

β

c

3

0

0

 

η

1

β

c3

cos

c 3

β

c 3

&

θ

&

β

c

1

cos

β

c 3

0

0

1

 

ζ

1

     

&

 −

(

L sen

β

c

1

sen

θ β

(

+

c

2

)

0

0

(1,2)

x

y

θ

β

c

β

c

1

3

 −

Lsen

Lsen

(

sen

(

β

c

β

c

2

1

2

β

c

1

sen

+

β

c

β

c

1

β

c

2

)

)

2


 

 

 

 

x

&

y

&

θ

&

β

c

1

&

β

c

2

= +

+

sen

β

c

2

sen

θ β

(

+

c

1

))

L sen

c

1

β

c

2

(

β

c

2

0

0

(

β

cos(

cos(

θ β

+

)

))

c

2

θ β

+

c

β

c

1

)

1

sen

sen

0

0

1

0

0

0

0

1

η

ζ

ζ

1

1

2

Capítulo 3

3 Concepção do Projeto do Robô Móvel

Para o funcionamento correto de um robô autônomo é mister conhecer como os dados vindos do ambiente externo serão processados e quais decisões serão tomadas com bases nestas informações. Logo, o circuito eletrônico é de grande importância dentro de um sistema robótico tanto o conhecimento de suas funcionalidades como de seu desempenho.

Uma opção para a gestão do processamento das informações dentro de um sistema robótico é o uso de microcontroladores. Em termos gerais, os microcontroladores podem ser definidos como processadores que foram encapsulados com memória, interface de entrada/saída de dados e dispositivos periféricos. Entre os periféricos estão conversores A/D (analógico/digital), temporizadores/contadores, interface para comunicação serial, watchdog programável, etc. Em outras palavras, são computadores encapsulados em um único invólucro. Tornaram-se comuns em diversos ramos da indústria a partir do final da década de 70 e atualmente existe um número crescente de opções disponíveis no mercado.

A família de microcontroladores AVR ATMEGA da Atmel é largamente usada em aplicações simples de robótica devido às suas características e de suas funcionalidades. A seguir pode ser vista uma visão geral das funcionalidades deste microcontrolador.

3.1 O microcontrolador Atmel AVR ATMEGA16

O Atmega16 é um microcontrolador 8-bit de tecnologia CMOS e arquitetura RISC (Reduced Instruction Set Computer ) [ATMEL,2004]. Uma característica interessante deste dispositivo é sua capacidade de executar uma instrução por ciclo de relógio. Esta taxa de execução de instruções foi possível de ser alcançada em virtude da conexão direta de seus 32 registradores de propósito geral com a unidade lógica aritmética. Esta característica o deixa em vantagem quando comparado com os concorrentes da família PIC da Microchip Technology. Além do mais, apesar de ser RISC, possui um grande número de instruções (130), o que permite melhor otimização de código de alto nível em linguagem C.

Com o objetivo de maximizar o desempenho e o paralelismo, o AVR segue arquitetura Harvard, em que os barramentos associados às memórias de dados e do programa são distintos. Além disso, utiliza-se a técnica do pipeline, em que, enquanto uma instrução começa a ser executada, uma outra já é buscada na memória de programa para que a mesma possa ser executada no próximo ciclo de relógio. A Figura 1 ilustra o diagrama de blocos do microcontrolador [Atmel 2004].

Figura 3.1 – Diagrama de Blocos do Microcontrolador [ATMEL]. 3.1.1 Ferramentas de desenvolvimento 3.1.1.1 Hardware

Figura 3.1 – Diagrama de Blocos do Microcontrolador [ATMEL].

3.1.1 Ferramentas de desenvolvimento

3.1.1.1 Hardware

Para desenvolvimento com o Atmega16, o hardware mínimo sugerido é dado por um circuito de referência e pela gravadora BSD, mostrados na Figura 2. O circuito de referência contém o mínimo para o Atmega16 funcionar apropriadamente, podendo ser conectado diretamente a uma protoboard para desenvolvimento. A gravadora possui um conector para o circuito de referência e um outro para porta

paralela de microcomputadores PC. As seções seguintes apresentam seus circuitos e descrevem os procedimentos de montagem.

3.1.1.1.1 Gravadora BSD

A gravadora é um circuito faz a interface entre o microcomputador e o microcontrolador, realizando as tarefas de programação e configuração. Elas são projetadas de acordo com as particularidades técnicas de cada microcontrolador e utilizam geralmente as portas serial ou paralela do PC. Para o caso do AVR, existem alguns modelos comerciais, mas também existem muitos outros gratuitos, que podem ser montados sem muita dificuldade. Seu diagrama esquemático está disponível na Figura 3.2. A gravadora é conectada ao microcomputador pela porta paralela, e ao microcontrolador por meio de um flat cable com conector de 10 pinos na extremidade. Sua alimentação é proveniente do circuito em que a gravadora será conectada. Os pinos 9 e 10 do conector da gravadora não devem ser usados. Desta forma, se o usuário cometer o erro de inverter o conector, isto não deve causar a queima de componentes.

o conector, isto não deve causar a queima de componentes. Figura 3.2 – Diagrama Esquemático da

Figura 3.2 – Diagrama Esquemático da Gravadora BSD.

3.1.1.2 Software

Tendo disponíveis a gravadora e o circuito do microcontrolador, deve-se providenciar o ambiente computacional que se comunicará com o dispositivo de acordo com o protocolo estabelecido pelo fabricante.

De fato, necessita-se ao menos de um compilador e/ou um montador para o microcontrolador, e um programa responsável pela gravação do dispositivo por meio do hardware da gravadora.

O programa utilizado neste trabalho foi o WinAVR, um pacote de programas em código aberto para desenvolvimento com microcontroladores da família AVR da Atmel no ambiente Windows, que inclui um editor de texto, debugger, bibliotecas em C, entre outros. Entre os programas mais importantes que acompanham o pacote, são descritos a seguir:

Programmer’s Notepad: Ambiente Integrado de Desenvolvimento, que é gratuito, e permite ser configurado para trabalhar com as ferramentas de desenvolvimento AVR;

Avrdude: programa de gerenciamento da gravadora em linha de comando DOS, que permite gravar o dispositivo, ler seu conteúdo e alterar os registros de configuração da família AVR;

Avrdude-gui: versão caixa de diálogo do avrdude, de interface amigável com o usuário. Este programa não permite alterar a configuração interna do microcontrolador, pois opera em modo seguro. A única forma de alterar os registros de configuração é por meio do programa avrdude;

Avr-toochain: Na verdade, isto não é um programa, mas um conjunto de ferramentas necessárias para compilar um programa para o AVR utilizando ferramentas GNU (software livre).

3.1.1.2.1 WinAVR

Como mencionado anteriormente, o WinAVR é um pacote de vários softwares utilitários para desenvolvimento com a família AVR. O site da distribuição é http://winavr.sourceforge.net/. Sua instalação é trivial, bastando seguir os passos indicados pelo programa de instalação. Entretanto, no caso de Windows 2000/XP, faz-se necessário ter privilégios de administrador do sistema. Após instalação, é criado o diretório WinAVR na raiz de algum disco do microcomputador, assim como \WinAVR\bin;\WinAVR\utils\bin; é inserido na variável de ambiente PATH. Se os programas que compõem o WinAVR não funcionarem após instalação, deve-ser verificar se a variável PATH foi realmente alterada. Caso não, sua alteração deve ser feita manualmente.

3.1.1.2.2 Programmer’s Notepad

Programmer’s Notepad 2 (PN) é uma ambiente de desenvolvimento integrado (IDE, do inglês) que acompanha o pacote. Através do PN é possível criar um projeto,

que é composto de um ou mais arquivos, editar os arquivos e compilar o projeto. A Figura 9 mostra o PC aberto com um projeto, em que se vêem os arquivos que compõem o projeto (main.c e makefile), o arquivo main.c aberto para edição com diferentes cores para as estruturas do programa em linguagem C, e uma janela de saída, que contém mensagens de compilação. Quando instalado, o PN deve ser o programa default para abrir arquivos com a extensão .pnproj, que é a extensão do arquivo principal de um projeto.

3.1.1.2.3 Avrdude

A gravadora BSD nada mais é do que uma peça de hardware que precisa ser comandada por um programa. Um destes programas é o Avrdude, que é um programa que permite gerenciar várias gravadoras, entre elas a BSD. O Avrdude é disponibilizado atualmente em duas versões, disponíveis no diretório WinAVR/bin:

avrdude-gui.exe: versão caixa de diálogo do Avrdude, mostrada na Figura 10. Esta versão é a mais utilizada devido à facilidade de configuração. O mínimo de configuração que se sugere é:

Flash e EEPROM: desabilitar Write, Read e Verify (nenhum programa ou dado será gravado);

Dispositivo (-p Device): Atmega16;

Gravadora (-c Programmer): bsd;

Porta de conexão da gravadora (-p Port): lpt1, para porta paralela 1;

Arquivo a ser gravado na memória Flash: selecionar o nome do arquivo, que em geral é o .hex resultante da compilação, e selecionar as opções de escrita (Write), verificação (Verify) e formato Autodetect, que identifica o formato pela extensão do arquivo. Na memória Flash deve ser gravado o programa a ser executado;

Arquivo a ser gravado na memória EEPROM: procedimento similar ao da gravação na memória Flash, sendo que na memória EEPROM devem ser gravados dados que podem ser lidos pelo programa a ser executado (geralmente alguma configuração);

Ao clicar no botão Execute, a gravação é realizada. Todos os procedimentos de gravação são mostrados no espaço “Output”, sendo que mais detalhes são mostrados se a opção “-v Enable verbose output” estiver habilitada. Se houver algum erro, podem-se consultar as mensagens “Output” para identificar a origem do problema.

avrdude.exe: versão linha de comando do Avrdude. Na verdade, o avrdude- gui.exe nada mais é do que uma interface gráfica que executa avrdude.exe com as opções mostradas no espaço “Command line” da caixa de diálogo. Uma das limitações do programa avrdude-gui.exe é que ele não escreve ou lê os registros

de configuração do microcontrolador (Seção 4.2), apesar de disponibilizar na sua interface espaços reservados a estes registros. Esta característica permite que usuários menos avisados cometam algum erro de configuração por utilizarem à interface gráfica. A única forma de alterar os registros de configuração é por meio do programa avrdude.exe, que deve ser lançado a partir de uma linha de comando DOS. A Seção 4.2 descreve com mais detalhe alguns procedimentos básicos de uso do avrdude.exe. Ao leitor recomenda-se consultar o anual do avrdude.exe que acompanha o CD de iniciação ao AVR (ver Anexo A).

Para qualquer versão do Avrdude, se estiver usando qualquer versão do Windows diferente do Windows 98, certifique-se de que o driver GiveIO está instalado. Esta verificação pode ser feita clicando no botão Status do espaço reservado ao GiveIO no avrdude-gui.exe. Caso a mensagem mostrada em Output seja negativa, instale GuiveIO clicando no botão Install. Se este procedimento não funcionar, copie o arquivo giveio.sys que está no diretório WinAVR/bin para o diretório System32 do Windows.

3.1.1.2.4 AVR – Toochain

O projeto GNU (GNU is not GNU)1 foi iniciado em 1984 por Richard Stallman com o objetivo de criar um sistema operacional totalmente livre, além de ferramentas para desenvolvimento. O projeto iniciou com as ferramentas, e abraçou o sistema operacional Linux em 1991 como alvo dos desenvolvimentos. Entretanto, muitas das ferramentas também funcionam no Windows, permitindo assim uma maior difusão do software livre. Desta forma, é possível desenvolver programas para vários microprocessadores e microcontroladores sem a necessidade de comprar ferramentas comerciais. Para o caso do AVR, tem-se, entre outras ferramentas, o avr-gcc (compilador C), avr-g++ (compilador C++), avr-as (assembler) e avr-ld (linker). No WinAVR, estas ferramentas estão instaladas no diretório \WinAVR\bin.

Figura 3.3 – Interface Gráfica do avrdude Uma descrição detalhada é feita no site

Figura 3.3 – Interface Gráfica do avrdude

Uma

descrição

detalhada

é

feita

no

site

http://www.gnu.org/manual/manual.html, em que se tem apenas o nome ferramenta sem o prefixo avr-.

da

Com a instalação do WinAVR, na barra de ferramentas é criada uma pasta WinAVR com alguns links, entre eles o avr-libc manual. Este link aponta para o arquivo \WinAVR\doc\avr-libc\ avr-libc-user-manual\index.html que é o manual da biblioteca LibC para a família AVR. LibC é a na verdade um conjunto de bibliotecas básicas para se trabalhar com linguagem C/C++ para a família AVR. O manual da biblioteca LibC é sempre bastante consultado para desenvolvimento.

3.1.2 Procedimentos Básicos para o Funcionamento

3.1.2.1 Registros de configuração

O Atmega16 possui alguns registros de configuração que não são acessíveis pelo programa gravado na memória flash. Estes registros definem a configuração de hardware do microcontrolador, habilitando ou não algumas de suas características.

Estes registros são descritos na seção Memory Programming do manual [Atmel 2004]. São registros de proteção de código e dados (Lock bit byte), fusíveis de configuração (Fuse High byte e Fuse Low Byte), bytes de assinatura do dispositivo e byte de calibração do oscilador interno. Destes registros, um dos mais usados é o Fuse Low byte pois determina principalmente a principal fonte de relógio da CPU.

Para alterar qualquer um dos registros de configuração, isto somente pode ser feito através do programa avrdude.exe operando no modo unsafe (opção -u). Por exemplo, a seqüência de operações abaixo permite obter os valores gravados nos registros Fuse High byte (hfuse no avrdude) e Fuse Low byte (lfuse no avrdude):

( hfuse no avrdude) e Fuse Low byte ( lfuse no avrdude): Figura 3.4 – Distribuição

Figura 3.4 – Distribuição dos Relógios [ATMEL 2004]

C:\>avrdude.exe -p atmega16 -c bsd -P lpt1 -t -u avrdude.exe: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude.exe: Device signature = 0x1e9307 avrdude> d hfuse >>> d hfuse

0000 d9 |+ |

avrdude> d lfuse

>>> d lfuse

0000 e1 |b |

avrdude> quit >>> quit avrdude.exe done. Thank you.

No exemplo acima, a opção -t permite entrar no modo terminal, em que o usuário usa alguns comandos para manipular os registros. Para conhecer melhor o avrdude, sugere-se uma leitura no manual avrdude.pdf.

Um procedimento comum consiste em alterar o valor do Fuse Low byte para redefinir a fonte de relógio do microcontrolador. Isto pode ser feito no modo terminal como no exemplo acima, mas também usando linha de comando através de

C:\>avrdude.exe -p atmega16 -c bsd -P lpt1 -t -u lfuse:w:0xEF:m

Este comando muda a fonte de relógio para cristal externo, o que permite fazer o ATmega16 operar a até 16MHz.

3.1.2.2 Seleção da freqüência do relógio

A freqüência do relógio determina, em última instância, a velocidade de execução do programa no microcontrolador. No microcontrolador AVR, o sinal de relógio pode ser obtido através de cinco diferentes fontes (ver Figura 11):

Circuito RC interno calibrado, que é um circuito que gera algumas freqüências

padrão utilizando um oscilador interno baseado em resistor e capacitor. A precisão

é da ordem de ±3%;

Cristal externo, segundo conexão mostrada na Figura 12(a). Esta fonte de relógio

é a de maior precisão, podendo chegar a até 16MHz. Quando o bit CKOPT do

registro Fuse High byte é programado em 0, a saída XTAL2 possui faixa de variação de 0 a VCC, tornando o microcontrolador mais imune à interferência externa e permitindo XTAL2 ser conectado a uma porta CMOS/TTL. Por outro lado, com CKOPT programado em 1, a faixa de variação de XTAL2 é bem pequena, o que implica também em menor consumo de energia;

Circuito RC externo, que requer um resistor e capacitor ligado externamente conforme mostrado na Figura 12(b). A freqüência do relógio passa a ser f = 1/ (3RC), mas com pequena precisão. Esta configuração é interessante quando se deseja trabalhar com baixas freqüências, o que implica em muito baixo consumo;

Oscilador externo, que gera uma onda quadrada a ser aplicada ao pino 9 (XTAL1) do Atmega16, conforme mostrado na Figura 12(c). O período da onda quadrada não pode sofre alteração de mais de 2% de seu período entre dois ciclos consecutivos. Se isto ocorrer, o comportamento do microcontrolador será imprevisível;

Ressonador cerâmico externo, que apresenta o mesmo tipo de conexão que o modo cristal externo. Ressonadores cerâmicos são mais baratos, embora não tão precisos quanto os cristais de quartzo.

Ainda de acordo com a Figura 11, cada um dos sinais de relógio gerados pode ser desligado independentemente (ver seção Power Managament and Sleep Modes, em [Atmel 2004]). Além disso, é importante destacar que o Watchdog Timer, que funciona como um dispositivo de proteção que reinicia o microcontrolador após o não cumprimento de determinada condição em um intervalo de tempo especificado, é conectado diretamente à fonte de relógio, e não à Unidade de Controle do Relógio, para proporcionar maior confiabilidade ao sistema.

Deve ser observado que o Atmega16 já vem de fábrica configurado para fonte de relógio dada pelo circuito RC interno a 1MHz [Atmel 2004]. Para alterar a fonte de relógio a ser utilizada, deve-se escrever no registro de configuração Fuse Low Byte, conforme ilustrado pela Seção 4.2. A Tabela 3.1 apresenta as fontes de relógio e o conteúdo que deve conter os bits CKOPT (registro Fuse High Byte) e CKSEL3, CKSEL2, CKSEL1 e CKSEL0 (registro Fuse Low Byte). Algumas vezes, algum efeito externo provoca a gravação do Fuse Low Byte para 00h, que implica no uso de fonte externa de relógio. Se isto ocorrer, um procedimento utilizado consiste em aplicar uma onda quadrada de aproximadamente 1MHz em XTAL1 e refazer a programação dos registros usando o avrdude.exe.

Uma vez alterada a fonte do relógio, a alteração somente tem efeito após reiniciar o microcontrolador. Isto significa que da próxima vez que avrdude for usado para gravação, à nova fonte de relógio já passa a ser utilizada. O mesmo ocorre com o programa da memória Flash, que passa a operar com a nova fonte de relógio selecionada.

3.1.3 Funcionalidades particulares

Esta seção pretende ilustrar o uso de algumas das principais funções disponibilizadas pelo AVR. Essas funções são, em alguns casos, implementações em hardware de funcionalidades que até poderiam ser executadas por software, mas que, dessa forma, poderiam resultar em um código bastante complexo, além de um custo computacional consideravelmente maior.

além de um custo computacional consideravelmente maior. Figura 3.5 – Conexões de fontes externas de relógio:

Figura 3.5 – Conexões de fontes externas de relógio: (a) Cristal/ressonador externo, C1 = C2 = 22pF, (b) Circuito RC externo com freqüência dada por f = 1/ (3RC) e (c) Oscilador externo [Atmel 2004]

Tabela 3.1: Seleção da fonte de relógio e bits CKOPT, CKSEL3 Low FuseByte

0

do registro

relógio e bits CKOPT, CKSEL3 Low FuseByte 0 do registro 3.2 Sensores Uma das mais importantes

3.2

Sensores

Uma das mais importantes características de robôs móveis é o uso de sensores externos os quais os tornam capazes de operar em ambientes desconhecidos. Estes sensores permitem ao robô extrair informações do ambiente de operação e daí tomarem decisões para locomoção.

A entrada de informação em um sistema inteligente ocorre sempre por meio de sensores. A informação dos sensores é sempre enviada ao módulo de processamento do sistema inteligente, que transformará os sinais oriundos em informação útil

(suarez,2000).

Sistemas com pouca ou nenhuma capacidade sensorial externa, na maioria das vezes são limitados a operações de seqüência fixa em ambientes altamente estruturados e não podem fornecer nenhum grau de autonomia substancial ou adaptabilidade (Rezende,1992). Deste modo, pode-se perceber que um robô sem sensores não é capaz de lidar devidamente com mudanças em seu ambiente.

Existem em robótica diversos modos de classificar os sensores, como por exemplo, em sensores de percepção interna e de percepção externa do robô. Outra classificação dos sensores para robótica móvel os divide em: sensores de luz (fotosresistores, detectores de proximidade com infravermelho), sensores de força (microchaves, resistências sensíveis à força), sensores de som (microfones, sonar), sensores de posição e orientação (“encoders”, giroscópios, sensores de inclinação, bússola), sensores “internos” (nível de bateria, corrente, temperatura) (Jones,1993).

3.2.1

Sensores de Toque

Sensores de toque são dispositivos que indicam o contato entre eles próprios e algum outro objeto. Normalmente são usados em robôs industriais ou manipuladores. A informação de toque pode ser usada, por exemplo, para a localização e reconhecimentos de objetos, indicando ainda a magnitude da forca de contato entre os dois. Um dos objetivos de se usar sensores deste tipo é identificar e controlar a interação entre o robô e o ambiente onde ele se encontra.

3.2.2 Sensores de Distância

São dispositivos que medem a distancia entre um ponto de referência (normalmente outro sensor) e os objetos no campo de atuação do mesmo. Tais sensores são usados na navegação de robôs e nos desvio de obstáculos, onde a localização destes objetos é necessária. Existem várias técnicas para efetuar os cálculos para determinar essa distancia: o método da triangulação, a abordagem da luz estruturada e a técnica dos ultra-sons. Os sensores de distancia mais utilizados nos robôs móveis autônomos inteligentes são os sensores ultra-som

móveis autônomos inteligentes são os sensores ultra-som Figura 3.6 – Um exemplo de sensor de distância

Figura 3.6 – Um exemplo de sensor de distância

3.2.3 Sensores de Proximidade

Os sensores de distancia discutidos anteriormente estimam a distância entre o sensor e um determinado objeto. Os sensores de proximidade, por outro lado, têm geralmente uma saída binária que indica a presença de um objeto a uma distancia pré- definida. Os sensores de proximidades mais utilizados nos robôs móveis autônomos inteligentes [Rezende, 1992] são sensores infravermelhos. Em algumas aplicações é suficiente determinar a presença (ou ausência) de um objeto em certa posição no lugar

de medir a distancia ao objeto [Bradshaw , 1990]. Embora este tipo de sensor não devolva a distancia entre ele e um objeto qualquer, eles podem identificar se algo está presente ou não, dentro do seu cone de detecção [Jones, 1993].

ou não, dentro do seu cone de detecção [Jones, 1993]. Figura 3.7 – Um exemplo de

Figura 3.7 – Um exemplo de um sensor de proximidade.

3.2.4 Sensores de Visão

O uso destes sensores tem despertado o interesse de muitos pesquisadores e é atualmente uma das áreas de pesquisa mais ativas [Han, 1994] [Ohya, 1998]. O avanço das pesquisas em sistemas de visão tornou possível o surgimento de robôs que interagem com o ambiente, recebendo informações de diversas formas para processá- las e, em função delas, executar determinadas tarefas. A recepção e obtenção de informações do meio são feitas pelos “olhos” do robô, ou seja, por uma câmara de televisão e/ou algum outro sensor juntamente com o equipamento de digitalização e “hardware/software” necessários para o interfaceamento entre os mesmos.

Pode-se concluir que uma exigência fundamental para a solução do problema de navegação [Bradshaw,1990] é a existência de um sistema sensorial, permitindo a aquisição dos dados necessários para o controle do seu movimento.

3.3

Motores

Um motor elétrico converte a energia elétrica em energia mecânica. Existe uma ampla variedade de motores para uso em robótica: Motores eletromagnéticos, a corrente contínua (DC), motores eletromagnéticos a corrente alternada (AC) e as variações de cada um [Jones, 1993].

Em adição aos motores eletromagnéticos DC e AC, existem um outro tipo de motor que não é eletromagnético: o motor ultra-sônico piezelétrico. Este motor possui como uma de suas características girar a baixa velocidade com um torque maior.

Os motores DC são usados na robótica móvel porque a fonte de energia neles

é tipicamente uma bateria DC.

Na figura a seguir pode ser observado o princípio do funcionamento de um motor elétrico.

o princípio do funcionamento de um motor elétrico. Um simples motor DC. Quando a bobina está

Um simples motor DC. Quando a bobina está carregada, um campo magnético é gerado ao redor da armadura. O lado esquerdo da armadura é empurrado para longe do lado esquerdo e dirigido em direção à esquerda, causando a rotação.

3.4

Baterias

em direção à esquerda, causando a rotação. 3.4 Baterias A armadura continua a rotacionar. Quando a

A armadura continua a rotacionar.

a rotação. 3.4 Baterias A armadura continua a rotacionar. Quando a armadura fica na horizontal, o

Quando a armadura fica na horizontal, o comutador inverte a direção da corrente ao longo da bobina, invertendo o campo magnético. O processo então se repete sucessivamente.

Para um robô ser dito autônomo, no sentido de energia, é necessário possuir uma fonte de energia (potência) que seja capaz de armazenar energia para permitir ao robô executar as tarefas determinadas, e que seja embarcada no próprio robô.

No caso de robôs móveis, o uso de baterias é uma boa solução. Uma bateria converte energia química em energia elétrica. A seguir são apresentadas algumas características importantes [Jones, 1993]:

Recarregáveis: Uma unidade que gera energia através de uma reação química e que não pode ser recarregada é uma célula primária. Uma que pode ser recarregada

é dita de secundária ou bateria de armazenamento.

Densidade de Energia (Wh/Kg): É a máxima quantidade de energia por unidade de massa.

Capacidade (Amp-hora ou mA-h): É a máxima armazenada na célula. Ela é o produto da Densidade de Energia vezes a massa da bateria.

Voltagem (V): Esta é uma característica particular da reação química na bateria, dependendo do estado de carga da célula.

Resistência Interna (Ohm): Quando se faz um curto circuito, a corrente fornecida por uma bateria é limitada pela resistência interna da mesma.

Taxa de Descarga (mA): É a taxa na que uma bateria é descarregada. A taxa máxima

Após estes aspectos práticos da construção de um robô móvel, será mostrado o estudo do modelo cinemático do robô WinoFire. Este estudo segue o mesmo padrão dos modelos cinemáticos no Capítulo 2.

3.5 Modelo Cinemático do Robô WinoFire

O robô WinoFire é um robô móvel de base circular de 80 mm aproximadamente. Possui duas rodas convencionais fixas no chassi com eixos colineares, paralelos ao lado menor, com raio de 30 mm, e uma roda orientada fora do centro (Caster) como apoio, sem nenhum controle, a qual não será tomada em conta para o seu modelo cinemático. O controle de direção é realizado por meio da variação de rotação das rodas fixas (motrizes). A Figura 3.8 esquematiza o chassi do robô.

(motrizes). A Figura 3.8 esquematiza o chassi do robô. Figura 3.8 – Representação do robô WinoFire

Figura 3.8 – Representação do robô WinoFire

3.6 Modelo Cinemático de Postura do WinoFire

Considera-se o robô como livre, movendo-se numa superfície lisa, e um ponto fixo P dentro do robô. Pode-se modelar este robô como se fosse um objeto circular movendo-se no espaço, conforme mostrado na Figura 3.8. Num espaço livre pode-se direcionar o robô a uma posição com uma orientação. Logo o espaço de configuração tem três dimensões, duas de translação e uma de rotação. Esta configuração foi mostrada no começo por ξ (x, y,θ ) , onde x e y são as coordenadas do ponto médio P, entre as duas rodas motrizes, na base inercial e θ [0,2π ] é o ângulo entre o eixo x da

base inercial e o eixo principal do robô, variante durante o movimento. Deste modo, o movimento é restringido pela equação [Latombe, 1996]:

y& cos