Avaliação e Correção do Modelo Cinemático de Robôs Móveis Visando a Redução de Erros no Seguimento de Trajetórias

Share Embed


Descrição do Produto

UNIVERSIDADE DO ESTADO DE SANTA CATARINA – UDESC CENTRO DE CIÊNCIAS TECNOLÓGICAS – CCT DEPARTAMENTO DE ENGENHARIA ELÉTRICA – DEE PÓS-GRADUAÇÃO EM AUTOMAÇÃO INDUSTRIAL – PGAI

Formação: Mestrado em Automação Industrial DISSERTAÇÃO DE MESTRADO OBTIDA POR

Jonas Pereira

AVALIAÇÃO E CORREÇÃO DO MODELO CINEMÁTICO DE ROBÔS MÓVEIS VISANDO A REDUÇÃO DE ERROS NO SEGUIMENTO DE TRAJETÓRIAS

Apresentada em 11/12/2003 perante a Banca Examinadora: Prof. Dr. Silas do Amaral – Orientador – CCT/UDESC Prof. Dr. Edson Roberto de Pieri – UFSC Prof. Dr. Antônio Heronaldo de Sousa – CCT/UDESC Prof. Dr. José de Oliveira – CCT/UDESC

UNIVERSIDADE DO ESTADO DE SANTA CATARINA – UDESC CENTRO DE CIÊNCIAS TECNOLÓGICAS – CCT DEPARTAMENTO DE ENGENHARIA ELÉTRICA – DEE PÓS-GRADUAÇÃO EM AUTOMAÇÃO INDUSTRIAL – PGAI

DISSERTAÇÃO DE MESTRADO Mestrando: JONAS PEREIRA – Engenheiro Eletricista Orientador: Prof. Dr. SILAS DO AMARAL – CCT/UDESC

AVALIAÇÃO E CORREÇÃO DO MODELO CINEMÁTICO DE ROBÔS MÓVEIS VISANDO A REDUÇÃO DE ERROS NO SEGUIMENTO DE TRAJETÓRIAS

Dissertação submetida à Universidade do Estado de Santa Catarina como parte dos requisitos para a obtenção do grau de Mestre em Automação Industrial.

Joinville 2003

UNIVERSIDADE DO ESTADO DE SANTA CATARINA - UDESC CENTRO DE CIÊNCIAS TECNOLÓGICAS – CCT COORDENAÇÃO DE PÓS-GRADUAÇÃO - CPG

"Avaliação e Correção do Modelo Cinemático de Robôs Móveis Visando a Redução de Erros no Seguimento de Trajetórias" por Jonas Pereira Essa dissertação foi julgada adequada para a obtenção do título de

MESTRE EM AUTOMAÇÃO INDUSTRIAL área de concentração em "Automação e Informática Industrial", e aprovada em sua forma final pelo

CURSO DE MESTRADO EM AUTOMAÇÃO INDUSTRIAL CENTRO DE CIÊNCIAS TECNOLÓGICAS DA UNIVERSIDADE DO ESTADO DE SANTA CATARINA

Dr. Silas do Amaral (presidente)

Banca Examinadora: Joinville, 11 de Dezembro de 2003 Dr. Edson Roberto de Pieri (UFSC)

Dr. Antônio Heronaldo de Sousa

Dr. José de Oliveira (suplente)

A teoria é assassinada mais cedo ou mais tarde pela experiência. (Albert Einstein)

Não está na natureza das coisas que o homem realize um descobrimento súbito e inesperado; a ciência avança passo a passo e cada homem depende do trabalho de seus predecessores. (Ernest Rutherford)

v

A Deus, à minha namorada, Queli, aos meus pais, e a toda minha família.

vi

Agradecimentos

Inicialmente, quero agradecer a Deus, por estar sempre me protegendo e guiando pelos bons caminhos durante toda minha vida; Agradeço, também, ao professor Silas do Amaral, por sua orientação, paciência, e especialmente pelas suas preciosas dicas, que contribuíram enormemente para a elaboração desta dissertação; Ao professor da UFRGS, Edson Prestes e Silva Júnior, que mesmo não me conhecendo pessoalmente, demonstrou ser muito prestativo e atencioso; Aos colegas da UDESC, em especial aos do Departamento de Engenharia Elétrica e do curso de Automação Industrial pela convivência e companheirismo; Aos meus pais, José Mota Pereira e Miranda Felippi Pereira, e demais familiares, pelos conselhos e doses de incentivo; À minha namorada, Queli Terezinha Schmitz, por sua compreensão, paciência e companheirismo; Finalmente, não posso deixar de agradecer a todos aqueles, que de uma forma ou de outra contribuíram para a conclusão deste trabalho, permitindo alcançar os objetivos propostos.

vii

FICHA CATALOGRÁFICA NOME: PEREIRA, Jonas DATA DA DEFESA: 11/12/2003 LOCAL: Joinville, CCT/UDESC NÍVEL: Mestrado

Número de ordem:

– CCT/UDESC

FORMAÇÃO: Automação Industrial ÁREA DE CONCENTRAÇÃO: Automação e Informática Industrial TÍTULO: Avaliação e Correção do Modelo Cinemático de Robôs Móveis Visando a Redução de Erros no Seguimento de Trajetórias PALAVRAS - CHAVE: Robótica Móvel; Modelagem Cinemática; Odometria; Controle. NÚMERO DE PÁGINAS: xvii, 124 p. CENTRO/UNIVERSIDADE: Centro de Ciências Tecnológicas da UDESC PROGRAMA: Pós-Graduação em Automação Industrial - PGAI CADASTRO CAPES: ORIENTADOR: Dr. Silas do Amaral PRESIDENTE DA BANCA: Dr. Silas do Amaral MEMBROS DA BANCA: Dr. Edson Roberto de Pieri Dr. Antônio Heronaldo de Sousa Dr. José de Oliveira

Resumo da Dissertação apresentada à UDESC como parte dos requisitos necessários para obtenção do grau de Mestre em Automação Industrial.

AVALIAÇÃO E CORREÇÃO DO MODELO CINEMÁTICO DE ROBÔS MÓVEIS VISANDO A REDUÇÃO DE ERROS NO SEGUIMENTO DE TRAJETÓRIAS

Jonas Pereira

Dezembro/2003

Orientador: Silas do Amaral, Dr. Área de Concentração: Automação e Informática Industrial. Palavras-chave: Robótica Móvel; Modelagem Cinemática; Odometria; Controle. Número de Páginas: 124

Em Robótica Móvel, muitas tarefas requerem precisão, sobretudo com relação à posição e à orientação final dos robôs. Este problema está intimamente ligado ao planejamento de trajetória, que, a partir da informação da postura (posição e orientação) inicial, espera-se que o robô, dentre os inúmeros caminhos possíveis, escolha o mais conveniente e atinja a postura final desejada. Entretanto esta postura, devido à inexatidão de alguns parâmetros cinemáticos do robô, nem sempre é possível de ser alcançada em malha aberta, resultando em erros de odometria. Por isso, neste trabalho, é feita uma descrição das propriedades estruturais dos robôs móveis, dos tipos de rodas, das restrições de movimento associadas a cada roda e a caracterização dos robôs móveis em cinco classes distintas. Em seguida, o problema se concentra em uma classe: a dos robôs Khepera. Um método de avaliação e correção para os erros sistemáticos de odometria é apresentado. Diversos resultados de simulação e experimentais para situações de interesse, são apresentados com o intuito de validar o estudo.

viii

Abstract of Dissertation presented to UDESC as a partial fulfillment of requirements for the degree of Master in Industrial Automation.

EVALUATION AND CORRECTION OF THE KINEMATIC MODEL OF MOBILE ROBOTS LOOKING AT THE REDUCTION OF ERRORS IN THE PATHES FOLLOWING

Jonas Pereira

December/2003

Advisor: Silas do Amaral, Dr. Area of Concentration: Industrial Informatics and Automation. Keywords: Mobile Robots; Kinematic Model; Odometry; Control. Number of Pages: 124

In Mobile Robotics, many tasks require accuracy, overcoat with relation to the end position and orientation of the robots. This problem is closely tied to the path planning, wich, from of the information of the starting posture (position and orientation), the expectation is that the robot, from among innumerables possibles pathes, chooses the more convenient and achieves the desired end posture. However this posture, due to the some inexact robot’s kinematic parameters, not always it is possible to be reached in open-loop, resulting in odometry errors. Therefore, in this work, a description is done about the structural properties of mobile robots, types of wheels, restrictions motion associated to each wheel and the characterization of the mobile robots in five distincts classes. Afterwards, this problem concentrates in a class: that of Khepera’s robots. One method of evaluation and correction for the systematic odometry errors is presented. Several results of simulation and experiments for situations of interesting are presented with the intention to validate the study.

ix

Sumário 1

Introdução ..........................................................................................................................1 1.1

Breve Histórico dos Robôs Móveis ............................................................................1

1.2

Aplicações dos Robôs Móveis....................................................................................4 1.2.1

Robôs Móveis Industriais ..............................................................................4

1.2.2

Robôs Móveis de Serviço ..............................................................................5

1.2.3

Robôs Móveis para Pesquisa .........................................................................6

1.2.4

Robôs Móveis de Campo ...............................................................................7

1.2.5

Robôs Móveis para Entretenimento...............................................................8

1.3

Formulação do Problema ............................................................................................8

1.4

Objetivos.....................................................................................................................9

1.5

Organização ..............................................................................................................11

2 Modelagem Cinemática....................................................................................................12 2.1

Descrição do Robô Móvel ........................................................................................15

2.2

Descrição das Rodas .................................................................................................16 2.2.1

Rodas Convencionais Fixas .........................................................................16

2.2.2

Rodas Convencionais Orientáveis Centradas ..............................................20

2.2.3

Rodas Convencionais Orientáveis Não-Centradas ......................................20

2.2.4

Rodas Suecas ...............................................................................................21

2.3

Restrições à Mobilidade de um Robô Móvel............................................................22

2.4

Classes de Robôs Móveis .........................................................................................26

2.5

Exemplo ....................................................................................................................29

2.6

Modelo Cinemático de Postura.................................................................................30

2.7

Propriedades da Classe (2,0).....................................................................................34

2.8

Considerações Finais ................................................................................................38

x

3 A Plataforma Khepera .....................................................................................................39 3.1

Capacidade Computacional ......................................................................................40

3.2

Sensores ....................................................................................................................41

3.3

Motores .....................................................................................................................41

3.4

Especificações Técnicas............................................................................................44

3.5

Modos de Configuração............................................................................................45

3.6

Comandos MATLAB ...............................................................................................46

3.7

Considerações Finais ................................................................................................50

4 Odometria..........................................................................................................................51 4.1

Cálculo Odométrico a partir do Modelo Cinemático................................................52

4.2

Definição dos Erros de Odometria............................................................................58

4.3

Erros Sistemáticos em Robôs com Tração Diferencial.............................................59

4.4

Método UMBmark....................................................................................................63 4.4.1

Avaliação Experimental...............................................................................64

4.4.2

Análise dos Resultados ................................................................................67

4.5

Aplicação do Método UMBmark ao Khepera ..........................................................78

4.6

Considerações Finais ................................................................................................83

5 Controle e Resultados.......................................................................................................84 5.1

Rastreamento ............................................................................................................84

5.2

Controle de Robôs Móveis segundo o Modelo Cinemático de Postura em Coordenadas Cartesianas...... ....................................................................................85

5.3

O Controlador de Rastreamento................................................................................85

5.4

Resultados de Simulação ..........................................................................................87

5.5

Resultados Experimentais.........................................................................................96

5.6

Considerações Finais ..............................................................................................104

6 Conclusões e Trabalhos Futuros ...................................................................................105 6.1

Principais Contribuições ........................................................................................105

6.2

Propostas de Trabalhos Futuros .............................................................................106

xi

A Programa UMBmark-Khepera ....................................................................................109 A.1 Valores de Controle ................................................................................................109 A.2 Programa UMBmark adaptado ao Khepera............................................................110 B Programa Rastreador-Khepera ....................................................................................112 B.1 Programa em Diagrama de Blocos .........................................................................112 B.2.1 Parâmetros de Controle..............................................................................117 B.2.2 Exibe Gráficos ...........................................................................................118 Referências Bibliográficas...................................................................................................121

xii

Lista de Figuras 1.1

Shakey, o primeiro robô móvel ........................................................................................2

1.2

O robô Stanford Cart .......................................................................................................3

1.3

O robô Hilare ..................................................................................................................3

1.4

Exemplo de um robô móvel industrial, o Unitload Vehicle ............................................4

1.5

O robô móvel Koala ........................................................................................................5

1.6

O aspirador robótico RoboCleaner da Kärcher ...............................................................6

1.7

O robô Khepera ...............................................................................................................6

1.8

O micro-robô Alice ..........................................................................................................7

1.9

Exemplo de um robô móvel de campo, o Nomad ...........................................................7

1.10 O Aibo da Sony ................................................................................................................8 2.1

Acionamento através de lagartas (robô Urbie)...............................................................13

2.2

Acionamento através de pernas (robô Genghis).............................................................13

2.3

Acionamento através de rodas (robô Sojourner)............................................................14

2.4

Sistemas de coordenadas do robô móvel .......................................................................15

2.5

Sistema de coordenadas da roda convencional fixa ......................................................16

2.6

Roda convencional orientável não-centrada ..................................................................20

2.7

Roda sueca .....................................................................................................................21

2.8

Centro Instantâneo de Rotação ......................................................................................25

2.9

(a) Classe (3,0) utilizando rodas suecas; (b) Classe (3,0) utilizando rodas convencionais orientáveis não-centradas ......................................................................27

2.10 Classe (2,0) utilizando duas rodas convencionais fixas e uma roda convencional orientável não-centrada .................................................................................................27 2.11 Classe (2,1) utilizando duas rodas convencionais orientáveis não-centradas e uma roda convencional orientável centrada ..........................................................................28 2.12 Classe (1,1) utilizando duas rodas convencionais fixas e uma roda convencional orientável centrada .........................................................................................................28 xiii

2.13 Classe (1,2) utilizando duas rodas convencionais orientáveis centradas e uma roda convencional orientável não-centrada ...........................................................................29 2.14 Realização da tarefa do estacionamento: a) robô da Classe (2,0); b) robô da Classe (1,1) ................................................................................................................................34 2.15 Realização da tarefa do labirinto: a) robô de forma circular; b) robô de forma quadrangular ..................................................................................................................35 2.16 Formas de alocação do CIR ...........................................................................................35 2.17 Influência de a sobre a realização de manobras ............................................................36 2.18 Relações apresentando as restrições não-holonômicas .................................................37 3.1

O robô móvel Khepera ..................................................................................................39

3.2

Comunicação entre o Khepera e um Microcomputador ................................................40

3.3

Posição dos motores e sensores do Khepera. .................................................................41

3.4

Método PWM de acionamento dos motores .................................................................42

3.5

Estrutura de controle dos motores do Khepera ..............................................................42

3.6

Relação entre velocidade e posição ...............................................................................43

3.7

Especificações técnicas do Khepera ...............................................................................44

3.8

Vista lateral do robô Khepera ........................................................................................45

3.9

Vista superior e inferior do robô Khepera .....................................................................45

3.10 Modos de funcionamento do Khepera ...........................................................................46 3.11 Equivalência entre os comandos Khepera e KMatlab ...................................................49 4.1

Descrição comparativa dos sistemas de posicionamento ..............................................52

4.2

Erros acumulados pela odometria .................................................................................52

4.3

Coordenadas de postura (posição e orientação) .............................................................53

4.4

Velocidades angular e linear da roda..............................................................................54

4.5

Modelo cinemático .........................................................................................................55

4.6

Conseqüência da diferença de diâmetros das rodas ......................................................60

4.7

Erro de postura do robô para uma trajetória quadrada ..................................................64

4.8

Probabilidade de cancelamento de Ed e E Dr , quando o experimento é realizado em apenas um sentido ..........................................................................................................65

xiv

4.9

Os erros devidos a Ed e E Dr se somam, quando o experimento é realizado no outro sentido ............................................................................................................................66

4.10 Ed e E Dr podem provocar o mesmo erro de posicionamento, quando o experimento é realizado em apenas um sentido .................................................................................66 4.11 Resultados típicos do método UMBmark ......................................................................67 4.12 Erros do Tipo A .............................................................................................................70 4.13 Erros do Tipo B .............................................................................................................70 4.14 Raio Rc da curvatura devido a Ed ...................................................................................75 4.15 Resultado do experimento UMBmark para o Khepera descalibrado .............................80 4.16 Resultado do experimento UMBmark para o Khepera calibrado ..................................83 5.1

Diagrama de blocos do sistema de controle utilizado ....................................................86

5.2

Khepera rastreando uma trajetória retilínea ...................................................................87

5.3

Sinais de controle para V ................................................................................................88

5.4

Sinal de controle para ! .................................................................................................89

5.5

Erros de postura ..............................................................................................................89

5.6

Distâncias para o deslocamento do robô ........................................................................90

5.7

Khepera rastreando uma trajetória curvilínea.................................................................91

5.8

Sinais de controle para V ................................................................................................92

5.9

Sinal de controle para ! .................................................................................................92

5.10 Erros de postura ..............................................................................................................93 5.11 Distâncias para o deslocamento do robô ........................................................................93 5.12 Khepera rastreando uma trajetória fechada no sentido horário ......................................94 5.13 Khepera rastreando uma trajetória fechada no sentido anti-horário...............................95 5.14 Khepera rastreando uma trajetória sinuosa.....................................................................96 5.15 Khepera rastreando uma trajetória fechada no sentido horário ......................................98 5.16 Khepera rastreando uma trajetória fechada no sentido anti-horário...............................98 5.17 Khepera rastreando uma trajetória sinuosa.....................................................................99 5.18 Resultados obtidos para trajetória (fechada sentido horário) .......................................101 5.19 Resultados obtidos para trajetória fechada (sentido anti-horário) ................................102 5.20 Resultados obtidos para a trajetória sinuosa.................................................................104 xv

B.1 Diagrama de blocos do controlador de rastreamento de trajetórias .............................112 B.2 Bloco velocidades de referência ...................................................................................113 B.3 Bloco modelo de referência..........................................................................................113 B.4 Bloco Te (erro de postura)............................................................................................114 B.5 Bloco controle de rastreamento ....................................................................................114 B.6 Bloco modelo cinemático do robô................................................................................115 B.7 Bloco conversão de velocidades...................................................................................115 B.8 Bloco modelo cinemático do robô1..............................................................................116 B.9 Bloco Te1 (erro de postura)..........................................................................................116

xvi

Lista de Tabelas 2.1

Características constantes do robô..................................................................................29

4.1

Resultados obtidos após a realização do método UMBmark para o Khepera................78

4.2

Resultados obtidos após a realização da correção dos parâmetros Ed e E Dr .................82

5.1

Valores de controle para a trajetória fechada (sentido horário) ...................................100

5.2

Resultados obtidos para a trajetória fechada (sentido horário) ....................................100

5.3

Valores de controle para a trajetória fechada (sentido anti-horário) ............................102

5.4

Resultados obtidos para a trajetória fechada (sentido anti-horário) .............................102

5.5

Valores de controle para a trajetória sinuosa................................................................103

5.6

Resultados obtidos para a trajetória sinuosa.................................................................103

A.1 Valores de controle para o sentido horário...................................................................109 A.2 Valores de controle para o sentido anti-horário ...........................................................109

xvii

Capítulo 1

Introdução Nos últimos anos, tem-se observado um vertiginoso crescimento do potencial de sistemas robóticos. Numa primeira etapa, houve um grande desenvolvimento na área de robótica industrial, com a utilização sobretudo de robôs manipuladores. Numa segunda etapa de evolução, pesquisadores em robótica têm concentrado esforços na construção de robôs móveis, introduzindo as capacidades de mobilidade e autonomia para reagir adequadamente ao ambiente, o que abre um vasto campo de novas aplicações e, conseqüentemente, muitos desafios [1].

1.1 Breve Histórico dos Robôs Móveis A Robotic Industries Association (RIA) define um robô como sendo um manipulador programável multifuncional capaz de mover materiais, partes, ferramentas ou dispositivos específicos através de movimentos variáveis programados para realizar uma variedade de tarefas [2]. Entretanto, esta definição descreve toda uma categoria de máquinas, e sendo assim, qualquer equipamento capaz de ser programado é considerado um robô. Durante décadas a indústria vem utilizando esta tecnologia como substituta da mão-de-obra humana, em especial onde há riscos envolvidos. Os robôs utilizados pela indústria são, de um modo geral, grandes, fixos, capazes de efetuar tarefas como a manipulação de objetos em sua área de trabalho, desprovidos de inteligência de alto nível e não-autônomos (necessitam da interação com os seres humanos). Em resumo, poderiam ser classificados de máquinas-ferramentas. Como o próprio nome indica, os robôs móveis são muito mais versáteis, pois não precisam estar fixados a uma célula de trabalho, podendo ser utilizados em tarefas onde não existam

CAPÍTULO 1. INTRODUÇÃO

2

limites geográficos, movimentando-se por meio de pernas, lagartas ou rodas, dotados de autonomia ou não, capazes de serem programados em alto nível via software e de sentir o ambiente a sua volta através de seus sensores. Em resumo, são máquinas passíveis de locomoção própria. Da cronologia dos desenvolvimentos relacionados com a tecnologia da robótica, o primeiro robô móvel construído e reconhecido na bibliografia data de 1968 com a denominação de Shakey (ver Figura 1.1), desenvolvido no Stanford Research Institute (SRI). Este robô era equipado com uma variedade de sensores, incluindo uma câmera de visão e sensores de toque, o que lhe dava a possibilidade de mover-se de um lado para o outro sobre uma superfície plana.

Figura 1.1 – Shakey, o primeiro robô móvel (adaptado de [3]) Outro robô móvel reconhecido é um veículo de 1977 denominado de Stanford Cart do Stanford Artificial Intelligence Laboratory [4] (ver Figura 1.2). O Stanford Cart, utilizava um sistema de navegação baseado no “parar e seguir”, onde a cada metro percorrido, parava, fazia a leitura de seus sensores e realizava o planejamento da rota a seguir.

CAPÍTULO 1. INTRODUÇÃO

3

Figura 1.2 – O robô Stanford Cart [5] Durante os anos 80 vários trabalhos envolvendo robôs móveis foram desenvolvidos em todo o mundo, dentre eles vale ressaltar o Hilare, um robô multisensorial desenvolvido no Laboratoire d’Architeture et d’Analyse de Systémes (LAAS) em 1983 [4] (ver Figura 1.3).

Figura 1.3 – O robô Hilare [6] Ao longo dos anos, muita coisa mudou. Hoje em dia, os robôs móveis podem ser encontrados nas mais diferentes formas e modelos, o que lhes compete uma infinidade de aplicações, desde científicas, industriais e até educacionais.

CAPÍTULO 1. INTRODUÇÃO

4

1.2 Aplicações dos Robôs Móveis Atualmente no mercado mundial, os robôs móveis são classificados em função da aplicação em cinco grandes áreas: a) Industriais [2][7]; b) De Serviço [2][7]; c) Para Pesquisa [7]; d) De Campo [2][7]; e) Para Entretenimento [2]; Para um melhor entendimento, a seguir é dada uma descrição para cada uma destas cinco áreas de aplicação, juntamente com alguns principais robôs a elas associados.

1.2.1 Robôs Móveis Industriais São plataformas móveis, que executam tarefas pesadas, como por exemplo carregar grande quantidade de materiais, peças, etc. Este tipo de robô em geral, tem uma autonomia muito grande [7], isto é, sua interação com os seres humanos é reduzida. Um dos principais métodos de navegação utilizado por esse tipo de robô consiste no uso de linhas pintadas no chão, que definem o caminho a seguir. O que requer um alto grau de investimento em mudanças de infra-estrutura na planta da empresa, quando da sua implantação. A Figura 1.4 mostra um Automated Guided Vehicle (AGV), o Unitload Vehicle, como exemplo de um robô móvel industrial.

Figura 1.4 – Exemplo de um robô móvel industrial, o Unitload Vehicle [8]

CAPÍTULO 1. INTRODUÇÃO

5

1.2.2 Robôs Móveis de Serviço A robótica de serviço é reconhecida como uma importante área de aplicação para um futuro próximo. Sistemas de robótica móvel autônoma, que executam tarefas de serviço (transporte, manipulação, limpeza, vigilância, etc), podem ser utilizados em ambientes estruturados e com um mínimo de conhecimento prévio destes [7]. A Figura 1.5 mostra o robô Koala, do K-Team, como exemplo de um robô móvel de serviço. O Koala apresenta uma grande quantidade de possíveis aplicações, destacando-se o transporte de pequenos objetos e a vigilância (adicionando o módulo câmera).

Figura 1.5 – O robô móvel Koala [9] Outro bom exemplo de robô móvel de serviço é o aspirador de pó robótico RoboCleaner (Figura 1.6), da empresa alemã Alfred Kärcher (a maior fabricante de aspiradores do mundo). O RoboCleaner anda aleatoriamente pela casa (recarregando e esvaziando seu compartimento de poeira quando necessário), percebendo paredes e outros obstáculos com seus pára-choques sensíveis a impactos. Ele evita escadas e é baixo o bastante para aspirar sob os móveis. Um par de "orelhas de borracha" impede que ele fique entalado. Além disso, ele monitora o fluxo de poeira e se concentra nos pontos mais sujos. Segundo a Kärcher, ele pode funcionar semanas sem supervisão: o proprietário só precisa esvaziar o saco de pó da estação recarregadora, quando ele fica cheio.

CAPÍTULO 1. INTRODUÇÃO

6

Figura 1.6 – O aspirador robótico RoboCleaner da Kärcher [10]

1.2.3 Robôs Móveis para Pesquisa São robôs utilizados principalmente na área acadêmica para o desenvolvimento de novas tecnologias e para a pesquisa. Muitas empresas, que produzem robôs comerciais, vendem versões para pesquisa de seus modelos [7]. Um exemplo de robô móvel para pesquisa é o robô Khepera, do K-Team, que é mostrado na Figura 1.7. O Khepera é um robô de tamanho reduzido e custo relativamente baixo, se comparado a outros robôs no mercado, fato este, que tem feito dele um sucesso dentro das universidades.

Figura 1.7 – O robô Khepera [9]

CAPÍTULO 1. INTRODUÇÃO

7

A área acadêmica também pode usufruir do Alice (Figura 1.8), um robô móvel de dimensões ultra-reduzidas desenvolvido na Ècole Polytchnique Fédérale de Lausanne (EPFL). Dentre as possíveis aplicações para o Alice está a investigação de comportamentos coletivos, futebol de robôs e outros temas ligados às áreas da Inteligência Artificial e Robótica Inteligente.

Figura 1.8 – O micro-robô Alice [11]

1.2.4 Robôs Móveis de Campo Este tipo de robô realiza tarefas em ambientes desestruturados, pouco conhecidos e, geralmente, perigosos. Entre suas aplicações está a exploração espacial, mineração, limpeza de acidentes nucleares, navegação em auto-estradas, exploração de vulcões e muitas outras. A Figura 1.9 mostra o robô Nomad, como exemplo de um robô móvel de campo.

Figura 1.9 – Exemplo de um robô móvel de campo, o Nomad [12]

CAPÍTULO 1. INTRODUÇÃO

8

O Nomad é o primeiro protótipo da empresa LunaCorp e vem sendo testado no deserto de Atakama, no Chile, sob a supervisão do Robotics Institute, com financiamento da NASA. O objetivo da empresa é criar um parque temático na Terra, de onde as pessoas poderão comandar os veículos e sentir-se virtualmente explorando o solo lunar [4].

1.2.5 Robôs Móveis para Entretenimento Uma das áreas em que os robôs móveis têm obtido bastante divulgação é na área do entretenimento. Um dos exemplares de maior sucesso é o Aibo da SONY [2] (ver Figura 1.10). Apesar de se tratar de um robô dedicado ao entretenimento, é consideravelmente complexo, pois dispõe de um total de 20 graus de liberdade e de uma grande variedade de sensores [13].

Figura 1.10 – O Aibo da SONY [13]

1.3 Formulação do Problema Um dos problemas mais pesquisados na robótica móvel atual é o planejamento de trajetória [14][15][16]. De uma forma geral, este problema consiste em levar um objeto de uma postura (posição e orientação) inicial até uma postura final. Neste caso particular, o objeto que se deseja movimentar é o próprio robô.

CAPÍTULO 1. INTRODUÇÃO

9

Dentre as etapas envolvidas no planejamento de trajetória de um robô móvel, estão [15]: a) o planejamento da trajetória; b) a determinação do modelo cinemático; c) a execução do plano. Na etapa do planejamento, são determinados os pontos por onde o robô deve seguir (trajetória) dentro do seu espaço de trabalho para cumprir o seu objetivo. A segunda etapa trata de descrever o robô em função da velocidade e orientação das rodas no espaço (coordenadas do mundo) em que ele está inserido. A última etapa tem a missão de executar o planejamento, alcançar efetivamente os pontos desejados, corrigindo possíveis desvios da trajetória planejada. Sendo assim, a última etapa exerce um papel importantíssimo, pois sem o sucesso desta, a etapa do planejamento (primeira etapa) poderá ficar totalmente comprometida.

1.4 Objetivos A proposta inicial do trabalho era desenvolver um sistema de planejamento de trajetórias, ou seja, dadas as posturas inicial e final para o robô, fazer com que ele, dentre os possíveis caminhos gerados (levando em conta a presença de obstáculos), escolhesse o caminho ótimo e atingisse a postura final. Entretanto, após alguns testes preliminares, verificou-se que o robô raramente atingia a posição final desejada, aliás, não somente a posição como também a trajetória. Diante deste fato, o trabalho tomou um rumo um pouco diferente, pois, de nada adiantaria ter um sistema de planejamento de trajetórias se a mesma não pudesse ser cumprida. Várias técnicas para a estimação da posição e orientação de robôs móveis estão disponíveis [7][17][18]. Entretanto, a maioria delas (GPS, giroscópio, landmarks, visão) é sofisticada e de custo elevado. Outras nem tanto (bússola, sonar, encoders). Um método bastante utilizado para se obter a localização de robôs móveis é a odometria [19]. A base deste método é a utilização de encoders, que acoplados as rodas do robô, realizam a leitura dos pulsos de revolução das mesmas. Apesar de ser um método clássico e de boas características (baixo custo, simplicidade), o mesmo não é adequado para trajetórias longas, pois pela própria natureza do método, os erros vão sendo acumulados ao integrar-se os deslocamentos para obtenção da posição e orientação. Alguns trabalhos relacionados ao tema:

CAPÍTULO 1. INTRODUÇÃO

10

em [20] a odometria é combinada com a técnica de landmarks (marcos dispostos no ambiente), com o intuito de se obter uma localização mais robusta. No entanto, a detecção de landmarks, que possui custo computacional elevado pode ser reduzida substancialmente. Para tanto, a incerteza dos sensores é incluída ao modelo de odometria, através da adição de um ruído gaussiano idêntico nos dois encoders. Em resumo, objetiva-se entender como os erros de odometria se propagam e simular uma metodologia que os minimize auxiliando na localização do robô; em [21] a forma de propagação dos erros de odometria novamente é abordada, porém, ao invés de landmarks, utiliza-se linhas pintadas no chão em forma de grid, com o objetivo de melhorar a estimação da posição e orientação do robô; já em [22] investiga-se as causas e propõe-se um método experimental de correção para os erros sistemáticos de odometria. A proposta é submeter o veículo a trajetórias quadradas (sentido horário e anti-horário), calcular os erros de localização ocorridos e ajustar alguns parâmetros do modelo cinemático. Em se tratando da plataforma robótica utilizada, optou-se pela Khepera, devido aos motivos mencionados na Subseção 1.2.3. Ainda, a variedade, a disponibilidade e a facilidade na obtenção de material, aliadas ao fato de a UDESC dispor de duas unidades, tornaram a sua escolha um tanto trivial. Quanto a técnica utilizada para a estimação da posição e orientação, optou-se pela odometria devido a três motivos principais: 1) o Khepera em sua versão básica, dispõe (unicamente) de dois encoders incrementais como forma de obter sua localização; 2) a odometria possui baixo custo e é de simples implementação; e 3) por este ser um trabalho pioneiro na área dentro da UDESC. A presente dissertação tem por base o trabalho [22] e suas dissidências [23][24]. Assim, foram estudados todos os aspectos envolvidos na obtenção do modelo cinemático do robô Khepera e, a partir deste, as possíveis fontes dos erros de odometria (sistemáticos), quando do seguimento de trajetórias. Propostas de avaliação e correção para estes erros, e de utilização em situações de controle puderam ser avaliadas. Ainda, resultados de simulação e experimentais também foram implementados, fazendo com que as técnicas e modelos utilizados pudessem ser validados. Este trabalho, deixa portanto como contribuição, além dos resultados obtidos e das importantes conclusões alcançadas, um ponto de partida para todos aqueles que desejarem explorar o assunto.

CAPÍTULO 1. INTRODUÇÃO

11

1.5 Organização O restante desta dissertação está organizado da seguinte forma: o Capítulo 2 trata da modelagem cinemática dos robôs móveis. O Capítulo 3 descreve em detalhes a plataforma robótica utilizada (o robô móvel Khepera). O Capítulo 4 traz um estudo completo sobre a influência dos parâmetros cinemáticos na odometria e a forma de corrigí-los. No Capítulo 5, é discutida a forma de controle, juntamente com alguns resultados de simulação e experimentais realizados para trajetórias de interesse. O último, o Capítulo 6, traz as conclusões alcançadas e algumas propostas para trabalhos futuros. Finalmente, no Apêndice A é apresentado o programa UMBmark-Khepera utilizado para a avaliação e correção da odometria e no Apêndice B, o programa Rastreador-Khepera utilizado no controlador de rastreamento de trajetórias.

Capítulo 2

Modelagem Cinemática No mundo da robótica móvel, várias pesquisas estão sendo realizadas com o objetivo de desenvolver (construir e controlar) sistemas de locomoção [25]. Este crescente interesse pelos robôs móveis se deve a grande diversidade de tarefas que podem ser por eles realizadas, e adequá-los da melhor forma possível as exigências das mesmas (precisão, exatidão, e etc) vêm se tornando um trabalho imprescindível. Para o estudo das técnicas de controle, planejamento e correção de trajetória de robôs móveis, o primeiro passo a ser dado é definir o tipo de acionamento do robô e a classe a que ele pertence, e em seguida, a sua modelagem. Existem basicamente três métodos para o acionamento de robôs móveis[19]: •

Acionamento através de rodas;



Acionamento através de lagartas;



Acionamento através de pernas.

O acionamento através de rodas é o mais utilizado, por ser um mecanismo de fácil construção e adaptar-se bem às condições de operação em ambientes internos e externos, desde que as irregularidades do solo sejam praticamente desprezíveis. Já a utilização do acionamento através de lagartas ou através de pernas reserva-se principalmente à operação em ambientes externos, onde o solo apresenta geralmente acentuadas irregularidades, pois esses acionamentos permitem aos robôs transpor obstáculos com maior facilidade. As Figuras 2.1 e 2.2 apresentam, respectivamente, os robôs Urbie e Genghis, como exemplos de robôs com acionamento através de lagartas e através de pernas.

CAPÍTULO 2. MODELAGEM CINEMÁTICA

13

Figura 2.1 – Acionamento através de lagartas (robô Urbie [26]) O robô Urbano, apelidado de Urbie, é o resultado do esforço conjunto do Jet Propulsion Laboratory (JPL) do California Institute of Technology, iRobot Corporation, Robotics Institute of Carnegie Mellon University, e da University of Southern California Robotics Research Laboratory [27]. O robô Urbie foi projetado para o reconhecimento militar móvel em terrenos acidentados, inóspitos e de difícil acesso.

Figura 2.2 – Acionamento através de pernas (robô Genghis [28]) Já o robô Genghis foi desenvolvido no Artificial Inteligency Laboratory do Massachusetts Institute of Technology (MIT) pelo cientista e pesquisador Rodney Brooks [29] com o intuito de desenvolver uma arquitetura de controle robótico similar ao comportamento dos animais. Em [13], é fornecida uma série de outros exemplos de veículos com locomoção por pernas, incluindo sua evolução, desde as primeiras idéias até os dias atuais. Neste trabalho, serão considerados apenas robôs com acionamentos através de rodas. A Figura 2.3 apresenta o robô Sojourner, como exemplo para este tipo de acionamento.

CAPÍTULO 2. MODELAGEM CINEMÁTICA

14

Figura 2.3 – Acionamento através de rodas (robô Sojourner [30]) Sojourner (do inglês, hóspede temporário) é o batismo carinhoso dado ao modelo Rocky 4 [4], resultado das pesquisas do Jet Propulsion Laboratory (JPL) em parceria com a Nasa e enviado a Marte (Missão Mars Pathfinder) com o objetivo de explorar as características deste planeta e realizar experimentos científicos [2]. De acordo com [19], quatro tipos de modelos podem ser estabelecidos para robôs com acionamento através de rodas: modelo cinemático de postura, modelo cinemático de configuração, modelo dinâmico de configuração e modelo dinâmico de postura. Os modelos cinemáticos descrevem o robô em função da velocidade e da orientação das rodas, enquanto os modelos dinâmicos descrevem o robô em função das forças generalizadas aplicadas pelos atuadores, por exemplo, os torques nas rodas. Os modelos de postura consideram como variáveis de estado apenas a posição e a orientação do robô, ao passo que os modelos de configuração consideram, além da postura, outras variáveis internas, como o deslocamento angular das rodas. Do ponto de vista de controle da posição e orientação espacial do robô, apenas os modelos de postura são necessários. A Seção 2.1 apresenta inicialmente a descrição de um robô móvel genérico e a Seção 2.2, os seus possíveis modelos de rodas. Em seguida, as restrições de mobilidade (Seção 2.3), a divisão dos robôs em classes (Seção 2.4) e um exemplo para uma classe de interesse (Seção 2.5). A Seção 2.6 mostra os modelos cinemáticos de postura e para finalizar, a Seção 2.7 apresenta as principais propriedades da classe abordada no exemplo. Tanto a descrição quanto os modelos, seguem a formulação semelhante a [31] e as adaptadas por [19][32] e [33].

CAPÍTULO 2. MODELAGEM CINEMÁTICA

15

2.1 Descrição do Robô Móvel Para este trabalho, admite-se que o robô móvel seja constituído por um corpo rígido, cujas rodas não sofram deformação e que se movimentam apenas no plano horizontal. A posição e a orientação do robô são descritas em relação a um sistema de referência inercial {Xb, Yb} com origem denotada por O, enquanto que um sistema de coordenadas {Xm, Ym} com origem P = (x, y) é associado ao corpo do robô, conforme mostra a Figura 2.4.

Figura 2.4 – Sistemas de coordenadas do robô móvel (adaptado de [32]) Desta forma, as coordenadas de postura do robô, descritas no sistema {Xb, Yb} são dadas pelo vetor (3 x 1):

x  " =  y  ! 

(2.1)

e a matriz de rotação do sistema {Xb, Yb} em relação ao sistema {Xm, Ym} de um ângulo θ é dada por:  cos ! sin ! 0 R(! ) = − sin ! cos ! 0  0 0 1 Esta rotação representa a mudança de uma base velha (θ = 0) para uma nova [34].

(2.2)

CAPÍTULO 2. MODELAGEM CINEMÁTICA

16

2.2 Descrição das Rodas Com relação à modelagem das rodas, considera-se que o plano de cada roda permanece vertical durante o movimento e que a rotação ocorre em torno de um eixo horizontal, cuja orientação em relação ao sistema de coordenadas do robô {Xm, Ym} pode ser fixa ou variável. As rodas são divididas em duas classes: as convencionais e as suecas. Considera-se, para ambas as classes, que o ponto de contato com o solo é reduzido a um único ponto. Para a classe de rodas convencionais, o contato da roda com o chão é de rolamento puro e sem deslizamento. A velocidade do ponto de contato com o solo neste caso é zero, o que significa dizer que, as componentes de velocidade paralela e ortogonal ao plano da roda são nulas. Já para a classe de rodas suecas, apenas uma das componentes de velocidade do ponto de contato é zero. A direção desta componente é arbitrária, porém é fixa em relação à orientação da roda.

2.2.1 Rodas Convencionais Fixas Para este tipo de roda (ver Figura 2.5), o ponto A é fixo e representa o centro da roda. A posição deste ponto em relação ao ponto P é descrita em coordenadas polares por meio da distância l entre os dois pontos, e pelo ângulo α . A orientação do plano da roda em relação a l é dada pelo ângulo fixo β. O deslocamento angular da roda em torno do seu eixo horizontal é representado pela variável ϕ e o raio da roda pela constante r.

Figura 2.5 – Sistema de coordenadas da roda convencional fixa (adaptado de [32])

CAPÍTULO 2. MODELAGEM CINEMÁTICA

17

A posição desta roda fica, portanto, caracterizada por 4 constantes: α, β, l e r, e o seu movimento pela variável temporal ϕ(t). A velocidade do robô em relação ao sistema de referência inercial, descrita no sistema de coordenadas de referência do robô {Xm, Ym}, é dada por: "!m = R (! )"!

(2.3)

Descrevendo esta mesma velocidade em relação a um sistema de coordenadas de referência {Xw, Yw} associado ao centro da roda, tem a forma: 0 0 0  "!w = R (# )"!m + lw × 0 0 0 Rmw (# )"!m 0 0 1 w m

(2.4)

onde lw é o braço de giro e Rmw (# ) é a matriz de rotação do sistema {Xm, Ym} em relação ao sistema {Xw, Yw} de um ângulo ψ, e definidos por:  − l sin $  l w = − l cos $   0 

(2.5)

 cos # sin # 0 R (# ) = − sin # cos # 0  0 0 1

(2.6)

w m

Observando a Figura 2.5, deduz-se que # = & + $ −

% ; portanto, Rmw (# ) pode ser reescrita 2

na forma:  sin(& + $ ) − cos(& + $ ) 0 R (# ) = cos(& + $ ) sin(& + $ ) 0  0 0 1 w m

(2.7)

CAPÍTULO 2. MODELAGEM CINEMÁTICA

18

Substituindo as Equações (2.3) e (2.5) na Equação (2.4) obtém-se:

 − l sin $  0 0 0 w ! ! " w = Rm (# ) R (! )" + − l cos $  × 0 0 0 Rmw (# ) R(! )"!  0  0 0 1

(2.8)

Dividindo a Equação (2.8) em duas partes e substituindo a Equação (2.7) em ambas, temse para a primeira parte:  sin(& + $ ) − cos(& + $ ) 0 ′ "!w = cos(& + $ ) sin(& + $ ) 0 R(! )"!  0 0 1

(2.9)

e para a segunda parte:  − l sin $  0 0 0  sin(& + $ ) − cos(& + $ ) 0 ″ "!w = − l cos $  × 0 0 0 cos(& + $ ) sin(& + $ ) 0 R(! )"!  0  0 0 1  0 0 1  − l sin $  0 0 0 ″  ! " w = − l cos $  × 0 0 0 R(! )"!  0  0 0 1 0 0 − l cos $  ″  ! " w = 0 0 l sin $  R(! )"! 0  0 0 Somando as Equações (2.9) e (2.10): ′ ″ "!w = "!w + "!w

0 0 − l cos $   sin(& + $ ) − cos(& + $ ) 0   ! ! " w = cos(& + $ ) sin(& + $ ) 0 R (! )" + 0 0 l sin $  R(! )"! 0 0  0  0 0 1

(2.10)

CAPÍTULO 2. MODELAGEM CINEMÁTICA

19

o que resulta em:  sin(& + $ ) − cos(& + $ ) − l cos $  ! " w = cos(& + $ ) sin(& + $ ) l sin $  R(! )"! 0 0 1  

(2.11)

r'!  E como "!w =  0  , substituindo na Equação (2.11) chega-se a:  !!  r'!   sin(& + $ ) − cos(& + $ ) − l cos $   0  = cos(& + $ ) sin(& + $ ) l sin $  R(! )"!     !!   0 0 1 

(2.12)

de onde se obtêm as restrições a que está sujeito o movimento do robô para a roda em questão [31][32]: •

Ao longo do plano da roda:

[− sin (& + $ )

cos (& + $ ) l cos $ ]R(! )"! + r'! = 0

(2.13)

Esta restrição declara que o robô pode movimentar-se somente na direção de rolamento da roda e sem a ocorrência de derrapagens. •

Ortogonal ao plano da roda:

[cos(& + $ )

sin(& + $ ) l sin $ ]R (! )"! = 0

(2.14)

Esta restrição diz que o robô deverá permanecer estático (sem derrapagens) na direção ortogonal à do rolamento da roda.

CAPÍTULO 2. MODELAGEM CINEMÁTICA

20

2.2.2 Rodas Convencionais Orientáveis Centradas A descrição deste tipo de roda é a mesma utilizada para rodas fixas, exceto que agora o ângulo $ não é constante, mas variante no tempo (ver Figura 2.5). As restrições ao movimento do robô também são as mesmas dadas pelas Equações (2.13) e (2.14).

2.2.3 Rodas Convencionais Orientáveis Não-Centradas Para este tipo de roda (ver Figura 2.6), denota-se o seu centro por A, que se conecta ao corpo do robô no ponto B por intermédio de uma haste rígida de comprimento d. Neste caso, a rotação se dá em torno de um eixo vertical que não passa através do centro da roda.

Figura 2.6 – Roda convencional orientável não-centrada (adaptado de [32]) Desta forma, a Equação (2.5) torna-se [19]: − d − l sin $  l w =  − l cos $    0

(2.15)

de onde se obtêm as seguintes restrições de movimento [31][32]: •

Ao longo do plano da roda:

[− sin (& + $ )

cos (& + $ ) l cos $ ]R(! )"! + r'! = 0

(2.16)

CAPÍTULO 2. MODELAGEM CINEMÁTICA



21

Ortogonal ao plano da roda:

[cos(& + $ )

sin(& + $ ) d + l sin $ ]R (! )"! + d$! = 0

(2.17)

2.2.4 Rodas Suecas Esta classe de rodas diferencia-se da convencional fixa ao introduzir mais um parâmetro para caracterizar a direção em relação ao plano da roda, que é o do componente nulo da velocidade do ponto de contato da roda com o chão, representado por (. A Figura 2.7 mostra este tipo de roda.

Figura 2.7 – Roda sueca (adaptado de [32]) Assim, o braço de giro da roda (Equação (2.5)) passará a ser dado por [19]:  − l sin( $ + ()  l w = − l cos( $ + ()   0

e observando a Figura 2.7, deduz-se que # = & + $ + ( − pode ser reescrita na forma:

(2.18)

% ; portanto, Rmw (# ) (Equação (2.7)) 2

CAPÍTULO 2. MODELAGEM CINEMÁTICA

22

 sin(& + $ + () − cos(& + $ + () 0 R (# ) = cos(& + $ + () sin(& + $ + () 0  0 0 1 w m

(2.19)

Por outro lado, a velocidade do robô descrita no sistema de coordenadas {Xw, Yw} é dada por [19][35]:

r'! cos (  "!w =  "!wy   !! 

(2.20)

Pelo fato de se tratar de uma roda sueca, o componente de velocidade normal é desconhecido, pois a velocidade do ponto de contato nesta direção não é nula. Com isto, a restrição do movimento da roda pode ser escrita como [19][31][32][33][35]:

[− sin (& + $ + ()

cos (& + $ + () l cos( $ + ()]R(! )"! + r cos ('! = 0

É importante salientar que ( ≠

(2.21)

% ; caso contrário, a roda estaria sujeita a uma restrição 2

idêntica a de uma roda convencional, anulando o benefício da roda sueca.

2.3 Restrições à Mobilidade de um Robô Móvel Considera-se para a análise das restrições de mobilidade, um robô móvel genérico equipado com N rodas para os 4 tipos descritos anteriormente e identificados através dos seguintes subscritos: f para rodas fixas; c para rodas orientáveis centradas; oc para rodas orientáveis não-centradas e sw para rodas suecas. Desta forma, N=Nf+Nc+Noc+Nsw , onde Nf representa o número de rodas fixas, Nc o número de rodas orientáveis centradas, Noc o número de rodas orientáveis não-centradas e Nsw o número de rodas suecas.

CAPÍTULO 2. MODELAGEM CINEMÁTICA

23

A configuração deste robô é descrita por intermédio dos seguintes vetores de coordenadas [31]: ∆



Coordenadas de postura: " (t ) =[x(t )

y (t ) ! (t )]



Coordenadas angulares: $c (t ) e $oc (t ) que denotam a orientação das rodas orientáveis

T

centradas e não-centradas, respectivamente; ∆

[



Coordenadas de rotação: '(t ) = ' f (t ) 'c (t ) 'oc (t ) ' sw (t )



Coordenadas de configuração: " (t ) , $c , $ oc e ' .

]

T

O número total de coordenadas de configuração é dado por Nf+2Nc+2Noc+Nsw+3 [31]. Assim, as equações que descrevem as restrições (Equações (2.13), (2.14), (2.16), (2.17) e (2.21)) podem ser escritas na forma matricial:

J 1 ( $ c , $ oc ) R (! )"! + J 2 '! = 0

(2.22)

C1 ( $c , $ oc ) R(! )"! + C 2 $! oc = 0

(2.23)

 J1 f  ∆  J ($ )  J 1 ( $ c , $ oc ) =  1c c   J 1oc ( $ oc )    J 1sw 

(2.24)

 C1 f  C1 ( $c , $ oc ) =  C1c ( $ c )  C1oc ( $ oc )

(2.25)

 0  C 2 =  0  C 2 oc 

(2.26)

onde:





As dimensões das matrizes J 1 f , J 1c , J 1oc e J 1sw são, respectivamente, ( N f × 3) , ( N c × 3) , ( N oc × 3) e ( N sw × 3) . J 2 é uma matriz de dimensão ( N × N ) , cuja diagonal são os raios das

CAPÍTULO 2. MODELAGEM CINEMÁTICA

24

rodas ou, no caso de rodas suecas, o raio das rodas multiplicado por cos ( . As dimensões da matrizes C1 f , C1c e C1oc são, respectivamente, ( N f × 3) , ( N c × 3) e ( N oc × 3) . A matriz C 2oc é uma matriz diagonal que contém as distâncias d das rodas não-centradas. Considerando-se apenas as primeiras

(N f + Nc )

restrições referentes às rodas

convencionais fixas e orientáveis centradas, a Equação (2.23) reduz-se a:

C1∗ ( $c ) R(! )"! = 0

(2.27)

  C C1∗ ( $c ) =  1 f  C1c ( $c )

(2.28)

onde

o que implica dizer que o vetor R(! )"! pertence ao espaço nulo da matriz C1∗ ( $c ) , ou seja:

[

R(! )"! ∈ Ν C1∗ ( $c )

]

(2.29)

As limitações da mobilidade do robô estão relacionadas com o posto da matriz C1∗ ( $c ) ,

[

]

dado por ) C1∗ ( $c ) .

[

]

[

]

É evidente que ) C1∗ ( $c ) ≤ 3 . Se ) C1∗ ( $c ) = 3 , então R(! )"! = 0 , o que demonstra a

[

]

impossibilidade de se realizar algum movimento no plano. Portanto, deve-se ter ) C1∗ ( $c ) ≤ 2 . Assim, define-se o Grau de Mobilidade de um robô móvel com rodas, denotado por *m , como sendo [31]:

[

]

[

*m = dim Ν C1∗ ( $c ) = 3 − ) C1∗ ( $c )

]

(2.30)

[ ]

Por outro lado se ) C1 f = 2 , então o robô possui pelo menos duas rodas fixas cujos planos não são paralelos. Se existirem mais de duas rodas fixas, os eixos de todas elas serão concorrentes para o mesmo Centro Instantâneo de Rotação (CIR). Como este centro de rotação é fixo, devido aos planos das rodas não serem paralelos, o único movimento possível

CAPÍTULO 2. MODELAGEM CINEMÁTICA

25

para o robô é a rotação em torno deste ponto (ver Figura 2.8), o que na prática é de pouca ou nenhuma utilidade. Logo, para evitar esta limitação, assume-se que:

[ ]

) C1 f ≤ 1

(2.31)

ou seja, caso o robô possua mais de uma roda convencional fixa, todas elas devem estar montadas em um mesmo eixo.

Figura 2.8 – Centro Instantâneo de Rotação (adaptado de [32])

[

] [ ]

Além disso, tem-se que ) C1∗ ( $ c ) ≤ ) C 1 f + )[C1c ( $ c )]. No entanto, a situação em que

[

] [ ]

) C1∗ ( $ c ) < ) C 1 f + )[C1c ( $ c )] corresponde a ter-se os centros das rodas orientáveis sobre o eixo comum das rodas fixas, o que faz as rodas orientáveis perderem a sua capacidade de atuar

[

] [ ]

sobre a alocação do CIR. Por isso, assume-se que ) C1∗ ( $c ) = ) C1 f + )[C1c ( $c )]. Já o Grau de Dirigibilidade de um robô móvel com rodas, denotado por *s , é definido como o número de rodas convencionais orientáveis centradas que podem ser orientadas independentemente para dirigir o robô: *s = )[C1c ( $c )]

(2.32)

CAPÍTULO 2. MODELAGEM CINEMÁTICA

26

Se o robô estiver equipado com um número de rodas convencionais orientáveis centradas maior do que *s ( N c > * s ) , o movimento das N c − *s rodas excedentes deverá ser coordenado com as demais, de forma a garantir a existência do CIR [19]. De forma resumida, a configuração das rodas de um robô móvel deve obedecer as seguintes restrições: 1 ≤ *m ≤ 3

(2.33)

0 ≤ *s ≤ 2

(2.34)

2 ≤ *m + * s ≤ 3

(2.35)

Com relação as Restrições (2.33), (2.34) e (2.35) é válido dizer: • O limite inferior da Restrição (2.33) significa que serão considerados apenas os casos em que é possível o movimento; • A Restrição (2.34) indica que podem existir no máximo duas rodas orientáveis centradas independentes;

[

]

• O limite superior da Restrição (2.35) é devido a condição de que ) C1∗ ( $c ) ≤ 2 e, portanto, *s = 2 implica *m = 1 . As configurações em que *m + *s = 1 permitem apenas a rotação em torno de um centro instantâneo fixo, sendo portanto desconsideradas.

2.4 Classes de Robôs Móveis A partir das Restrições (2.33), (2.34) e (2.35), apenas 5 classes distintas de robôs móveis com rodas, caracterizados pelo par (*m , *s ) , são possíveis [31]: as Classes (3,0), (2,0), (2,1), (1,1) e (1,2). A seguir, uma breve descrição sobre cada uma destas classes: Classe (3,0): Esta classe de robôs móveis (Figura 2.9) apresenta Nf = Nc = 0, ou seja, não

[

]

existem rodas fixas ou rodas orientáveis centradas e, portanto, ) C1∗ ( $c ) = 0 . Estes robôs são chamados omnidirecionais, pois apresentam mobilidade completa no plano, podendo realizar movimento, a cada instante, em qualquer direção sem reorientação das rodas.

CAPÍTULO 2. MODELAGEM CINEMÁTICA

27

Figura 2.9 – (a) Classe (3,0) utilizando rodas suecas; (b) Classe (3,0) utilizando rodas convencionais orientáveis não-centradas (adaptado de [32]) Classe (2,0): Robôs pertencentes a esta classe (Figura 2.10) possuem uma roda convencional fixa (caso haja mais de uma roda fixa, todas devem estar no mesmo eixo, pois é necessário que

[ ]

[

] [ ]

) C1 f = 1 ) e, portanto, ) C1∗ ( $c ) = ) C 1 f + )[C1c ( $c )] = 1 com )[C1c ( $c )] = 0 . Os robôs desta classe normalmente possuem rodas operando em modo diferencial.

Figura 2.10 – Classe (2,0) utilizando duas rodas convencionais fixas e uma roda convencional orientável não-centrada (adaptado de [32]) Classe (2,1): Esta classe de robôs (Figura 2.11) apresenta pelo menos uma roda convencional orientável centrada ( N c ≥ 1) , suas orientações devem ser coordenadas, de forma que )[C1c ( $c )] = 1 .

CAPÍTULO 2. MODELAGEM CINEMÁTICA

28

Figura 2.11 – Classe (2,1) utilizando duas rodas convencionais orientáveis não-centradas e uma roda convencional orientável centrada (adaptado de [32]) Classe (1,1): Robôs desta classe (Figura 2.12) possuem uma ou mais rodas convencionais

[ ]

fixas montadas no mesmo eixo de rotação e, portanto, ) C1 f = 1 . Possuem ainda rodas convencionais orientáveis centradas (uma ou mais), com a condição de que seus centros não sejam colocados no mesmo eixo das rodas convencionais fixas. Havendo várias rodas convencionais orientáveis centradas, o seu movimento deve ser coordenado, de forma que )[C1c ( $c )] = 1 .

Figura 2.12 – Classe (1,1) utilizando duas rodas convencionais fixas e uma roda convencional orientável centrada (adaptado de [32]) Classe (1,2): Robôs pertencentes a esta classe (Figura 2.13) não possuem rodas fixas

[ ]

( ) C1 f = 0) . Em contrapartida, possuem duas rodas convencionais orientáveis centradas ou mais, desde que seu movimento seja coordenado de forma que )[C1c ( $c )] = 2 .

CAPÍTULO 2. MODELAGEM CINEMÁTICA

29

Figura 2.13 – Classe (1,2) utilizando uma roda convencional orientável não-centrada e duas rodas convencionais orientáveis centradas (adaptado de [32])

2.5 Exemplo Neste trabalho, a atenção está voltada a robôs móveis pertencentes a Classe (2,0). Por isso, esta seção apresentará um exemplo para esta classe de robô, mais precisamente, o robô da Figura 2.10. Para robôs dotados de duas rodas fixas, como o Khepera que será estudado nos próximos capítulos, basta desconsiderar a informação pertinente a roda convencional orientável não-centrada. Em [31] e [32] são dados outros exemplos para as demais classes de robôs móveis, restringindo-se a atenção a robôs com três rodas. Nas seções anteriores, pode-se observar que as rodas de um robô móvel são descritas por seis características; três ângulos &, $, ( e três distâncias l, r, d. Para o exemplo, é fornecida uma tabela (Tabela 2.1) com os valores numéricos destas características e apresentada as várias matrizes J e C envolvidas nas Equações (2.22) e (2.23). Da Figura 2.10, obtém-se Tabela 2.1 – Características constantes do robô Rodas 1f 2f 3oc

& 0 ! 3!/2

 0  J1 f    =  0 J 1 =   J 1oc   cos $ oc 3 

$ 0 0 -

1 −1 sin $ oc 3

l L L L

L

  L  L cos $ oc 3 

(2.36)

CAPÍTULO 2. MODELAGEM CINEMÁTICA

30

 r 0 0   J 2 = 0 r 0 0 0 r   

 1  C1 f    =  − 1 C1 =  C  1oc   sin $ oc 3 

0 0 − cos $oc 3

(2.37)

0

  0  d + L sin $oc 3 

0  0     =  0  C 2 =   C 2oc   d   

(2.38)

(2.39)

Nota-se que as restrições de não-derrapagem das duas rodas fixas são equivalentes (ver as primeiras duas linhas de C1); Portanto, a matriz C1* (Equação (2.28)) possui posto igual a um, devido a Restrição (2.31), como esperado [31][32].

2.6 Modelo Cinemático de Postura O modelo cinemático de postura permite uma descrição global do robô. A partir da Relação (2.29), pode-se escrever "! = R T (! )∑ ( $ c )+ onde as colunas de

∑($

∑($

c

(2.40)

) formam uma base para o espaço nulo de C1* ( $ c ) . A dimensão de ∆

c

) é (3 × * m ) e a do vetor + é (* m × 1) . Definindo-se , = $! c , a Equação (2.40) pode ser

aumentada para

CAPÍTULO 2. MODELAGEM CINEMÁTICA

31

"! = R T (! )∑ ( $ c )+ !  $c = ,

(2.41)

que é o modelo do sistema no espaço de estados, tendo as coordenadas de postura " e as coordenadas angulares $c como variáveis de estado. Como entradas lineares do sistema temse + e , . Salienta-se que a necessidade de se aumentar a Equação (2.40) é devido à existência de rodas convencionais orientáveis centradas. Por outro lado se N c = 0 (o robô não possui rodas orientáveis centradas), a matriz ∑ não dependerá de $c e a Equação (2.40) não precisará ser aumentada. A seguir é descrito o modelo cinemático de postura para cada uma das cinco classes de robôs móveis [19]: •

Classe (3,0):  x!  cos !  y!  =  sin !    !!   0



− sin ! 0  +1  cos ! 0 +2  0 1  +3 

Classe (2,0):  x!  cos ! 0  y!  =  sin ! 0  +1      +  ! !   0 1  2 



(2.42)

(2.43)

Classe (2,1):  x!  cos(! + $ c1 )  y!   sin(! + $ ) c1  = ! !   0 !   0  $ c1  

0 0  +1  0 0   +2 1 0    ,  0 1  

(2.44)

CAPÍTULO 2. MODELAGEM CINEMÁTICA



32

Classe (1,1):  x!   L cos ! sin $c 3  y!   L sin ! cos $ c3  =  !!   cos $c 3 !   0  $ c3  



0 0 +1  0  ,   1

(2.45)

Classe (1,2):  x!   L[sin $c1 cos(! + $c 2 ) + sin $c 2 cos(! + $c1 )]  y!   L[sin $ sin(! + $ ) + sin $ sin(! + $ )] c1 c2 c2 c1     !!  =  sin( $c 2 − $ c1 ) !   0  $ c1   !  $c 2   0

0 0 0 0  +1  0 0  , 1   1 0 , 2  0 1

(2.46)

Genericamente, o modelo cinemático de postura pode ser reescrito de forma mais compacta [31]: z! = B( z )u

(2.47)

onde, para N c = 0 (o robô não possui rodas orientadas centradas): ∆

z =" ∆

B( z ) = R T (! ) ∆

u=+

(2.48) (2.49) (2.50)

e para N c ≥ 0 (o robô possui rodas orientadas centradas): ∆ "  z =   $c 

(2.51)

CAPÍTULO 2. MODELAGEM CINEMÁTICA

33

∆  R T (! ) ∑ ( $c ) 0 B( z ) =  I 0  ∆ + u =  , 

(2.52)

(2.53)

onde na Equação (2.52), I representa a matriz identidade. Após definidos os modelos cinemáticos de postura é possível analisar melhor a questão da manobrabilidade de um robô móvel acionado por rodas. O Grau de Manobrabilidade, denotado por *M , é definido como * M = *m + * s

(2.54)

e fornece o número de graus de liberdade que podem ser influenciados diretamente pelas entradas de controle + e , . Em outras palavras, indica a possibilidade de alocar livremente o CIR: •

* M = 3 indica que o CIR pode ser livremente alocado no plano, diretamente através de + para robôs da Classe (3,0) ou através da reorientação das rodas centradas para robôs das Classes (1,2) e (2,1);



* M = 2 indica que a posição do CIR está restrita a pertencer a linha que passa pelo centro das rodas fixas. Esta posição é determinada diretamente por + para robôs da Classe (2,0) ou através da orientação das rodas centradas para robôs da Classe (1,1).

Entretanto, deve-se ressaltar que o número de graus de liberdade, que podem ser obtidos diretamente é igual a *m , pois apenas os graus de liberdade determinados por + podem ser obtidos de forma direta. Por outro lado, a ação de , nas coordenadas de postura é indireta, pois é obtida através da variável $c , calculada pela integral de , . Na prática, isto pode ser verificado considerando-se que , modifica apenas a orientação das rodas centradas do robô e, portanto, apenas influenciará as coordenadas de postura do robô se este se mover. Assim, para um mesmo valor de *M , robôs com *m maior são mais manobráveis. A situação de máxima

CAPÍTULO 2. MODELAGEM CINEMÁTICA

34

manobrabilidade se verifica nos robôs omnidirecionais (Classe (3,0)), para os quais * M = *m = 3 . Em [31] e [32] está demonstrado que o modelo cinemático de postura é irredutível, isto é, não existe uma transformação de coordenadas tal que uma das coordenadas é identicamente nula. Ainda em [31] e [32], pode ser encontrado, um resumo das principais propriedades referentes a controlabilidade e estabilidade, do modelo cinemático de postura dos robôs móveis com rodas.

2.7 Propriedades da Classe (2,0) Esta Seção discutirá as propriedades relevantes da Classe (2,0) (objeto de estudo dos capítulos seguintes com a utilização do robô Khepera). Para iniciar, uma importante propriedade é a relacionada ao estacionamento. A Classe (2,0) se mostra muito versátil nesta questão, quando comparada a outras classes. Na Figura 2.14, um robô da Classe (2,0) (Figura 2.14a) com tração diferencial pode facilmente realizar a tarefa do estacionamento, ocupando pequenos espaços sem a necessidade de muitas manobras, ao contrário de um robô da Classe (1,1) (Figura 2.14b) do tipo carro.

Figura 2.14 – Realização da tarefa do estacionamento: a) robô da Classe (2,0); b) robô da Classe (1,1) [36] Outra propriedade importante diz respeito a forma geométrica. Os robôs podem possuir diversas formas e tamanhos, dependendo da natureza da aplicação. Robôs destinados a exploração de ambientes devem possuir forma geométrica circular, de modo a facilitar o contorno de obstáculos. Na Figura 2.15a, mostra-se o caso em que um robô de forma circular movimenta-se em parte de um labirinto, desviando de paredes sem maiores problemas, ao

CAPÍTULO 2. MODELAGEM CINEMÁTICA

35

passo que, na Figura 2.15b, um robô de forma quadrangular tenta realizar o mesmo trajeto, no entanto, sem sucesso. Robôs de forma quadrangular são destinados principalmente ao transporte de materiais e objetos.

Figura 2.15 – Realização da tarefa do labirinto: a) robô de forma circular; b) robô de forma quadrangular [36] A execução da tarefa do labirinto pelo robô e de outras (estacionamento em pequenos espaços, rotações em seu próprio eixo) só é facilitada ou possível, se ambas as características (forma circular e tração diferencial) estiverem reunidas. Sendo assim, uma infinidade de manobras poderá ser realizada, dependendo da alocação do CIR (ver Figura 2.16, onde VE e VD são os vetores de velocidade da roda esquerda e da roda direita respectivamente).

Figura 2.16 – Formas de alocação do CIR (adaptado de [25])

CAPÍTULO 2. MODELAGEM CINEMÁTICA

36

Observando a Figura 2.16d tem-se que, se os vetores das rodas motrizes estiverem em sentidos opostos, o Eixo Instantâneo de Rotação (EIR), que é o eixo imaginário perpendicular ao plano da superfície de navegação, intercepta a plataforma do robô e, conseqüentemente, seu movimento será uma rotação em torno deste ponto de intersecção. Este eixo corta a superfície de navegação no CIR [25]. Se os módulos das velocidades forem iguais, mas de sentidos contrários, o CIR se localizará exatamente sobre o ponto médio da distância entre as rodas motrizes. Entretanto, em alguns robôs, o ponto médio entre as rodas motrizes poderá não coincidir com o centro geométrico do robô (distância a na Figura 2.17a). Desta forma, o robô descreverá uma trajetória circular com raio ) de curvatura. Por outro lado, se a = 0 (Figura 2.17b), o eixo imaginário entre as rodas motrizes passará pelo centro geométrico da plataforma e o robô apresentará apenas velocidade angular (rotação pura) sem nenhuma translação, característica importante para manobras do tipo docagem1 [25].

Figura 2.17 – Influência de a sobre a realização de manobras (adaptado de [25]) Outra propriedade é a relacionada a movimentação. Veículos móveis com rodas possuem impedimentos naturais em sua movimentação, que são traduzidos matematicamente por equações cinemáticas restritivas. Como resultado destas restrições, chamadas também de restrições não-holonômicas, robôs móveis deste tipo só conseguem deslocar-se na direção para onde estão orientados [37]. Assim, o robô que será alvo de estudo nos próximos capítulos, o Khepera, um representante da Classe (2,0) e dotado de tração diferencial, é um sistema nãoholonômico. No caso em estudo, as duas rodas impedem que ele se movimente lateralmente, devido ao atrito. Desta forma, o robô pode deslocar-se apenas na direção em que está 1

Neste texto, o termo docagem é usado para significar o predomínio de muitas curvas em pequenos espaços.

CAPÍTULO 2. MODELAGEM CINEMÁTICA

37

orientado. Matematicamente, isto pode ser expresso pelas equações derivadas das relações presentes na Figura 2.18.

Figura 2.18 – Relações apresentando as restrições não-holonômicas (adaptado de [37])

tan ! =

dy sin ! = ⇒ y! cos ! − x! sin ! = 0 dx cos !

(2.55)

Esta restrição (Restrição (2.55)) diz que o robô não poderá movimentar-se na direção ortogonal ao seu deslocamento. Vdt = dx cos ! + dy sin ! ⇒ x! cos ! + y! sin ! = V

(2.56)

Já esta outra (Restrição (2.56)), diz que o robô poderá movimentar-se somente na direção do seu deslocamento. E agrupando-as de forma mais compacta, no modo matricial:  cos ! sin !   x!  V  − sin ! cos !   y!  =  0      

(2.57)

CAPÍTULO 2. MODELAGEM CINEMÁTICA

38

2.8 Considerações Finais Este capítulo apresentou as propriedades estruturais dos robôs móveis, destacando: os tipos de rodas e as restrições associadas; e o modelo cinemático de postura para as cinco classes possíveis de robôs. O capítulo apresentou também, uma discussão sobre as principais características geométricas da Classe (2,0) e suas conseqüências quando da movimentação dos robôs. No próximo capítulo serão apresentadas as especificações técnicas e operacionais da plataforma Khepera.

Capítulo 3

A Plataforma Khepera O Khepera (Figura 3.1) é um robô móvel (acionado por rodas e pertencente a Classe (2,0)) comercializado pelo K-Team [38] e desenvolvido no Microcomputing Laboratory (LAMI) do Swiss Federal Institute of Technology [39], também conhecido como Ècole Polytechnique Féderale de Lausanne (EPFL), com o apoio de outras entidades de pesquisa da Europa, como University of Zürich, University of Karlsruhe, University of Sussex, Laboratorie d’Etudes et Recherche en Informatique e Ècole Nationale Supérieure (Paris) [4]. Ele foi originalmente projetado para servir de ferramenta de ensino e pesquisa do Swiss Research Priority Program. Com ele é possível testar algoritmos desenvolvidos (em simulação) para a geração de trajetórias, desvio de obstáculos, pré-processamento de informações de sensores e hipóteses no comportamento de objetos móveis [40]. Seu tamanho reduzido (altura da ordem de 30 mm, diâmetro de 55 mm e peso de aproximadamente 70 g), incluindo motores, sensores, baterias e processador, aliado a seu custo relativamente baixo, comparado a outros robôs no mercado, tem feito o Khepera um sucesso dentro das universidades [4].

Figura 3.1 – O robô móvel Khepera [41]

CAPÍTULO 3. A PLATAFORMA KHEPERA

40

3.1 Capacidade Computacional Apesar de pequeno, o Khepera possui uma grande capacidade computacional embarcada, baseada em um sistema composto por um microcontrolador de 32 bits (MC68331 – 16 MHZ), memória SRAM de 256 Kb e EEPROM de 128 Kb (podendo ser estendida até 512 Kb), barramento de extensão paralelo, porta serial (RS232), portas de entrada analógica, além de uma pequena rede de comunicação local, que permite a comunicação com equipamentos adicionais ou extensões (por exemplo: sistema de visão, manipulador ou rádio). Ainda, através de uma interface (dotada de uma RS232) e um cabo apropriados, é possível realizar a comunicação entre um computador e o Khepera (ver Figura 3.2). Com relação ao seu controle, este pode ser feito por intermédio de softwares como o LabVIEW®, MATLAB® ou diretamente através de palavras de controle (código ASCII) via RS232, o que pode ser implementado a partir de qualquer computador sem a necessidade de aquisição de software adicional [42]. Isto permite a utilização de um grande poder computacional (para análise de dados), capacidade de armazenamento em memória (para a gravação de todos os dados relevantes do experimento) e facilidades de interação (monitor, teclado, mouse) de um microcomputador, enquanto todos os processos de baixo-nível e tempo real (tais como leitura de sensores, controle dos motores e outras opções internas) rodam no microcontrolador do robô [43].

Figura 3.2 – Comunicação entre o Khepera e um Microcomputador [40]

CAPÍTULO 3. A PLATAFORMA KHEPERA

41

3.2 Sensores O robô possui ainda oito sensores de proximidade ou luminosidade, que estão posicionados em seu perímetro (ver Figura 3.3). Estes sensores são compostos por um emissor e um receptor de luz infravermelha e permitem detectar a proximidade de obstáculos através da luz que é refletida pelos objetos próximos ou a luminosidade do ambiente (quando utilizada somente a parte receptora do dispositivo). Ambas as ações dependem grandemente de vários fatores: a posição, a distância, a intensidade, e a cor da fonte de luz (quando utilizado para a detecção da luz ambiente); a refletividade do obstáculo (cor, tipo de superfície...) e a luz ambiente (quando utilizado para a detecção da luz refletida). Maiores detalhes a respeito deste assunto podem ser obtidos em [40].

Figura 3.3 – Posição dos motores e sensores do Khepera.

3.3 Motores Como atuadores, o Khepera possui 2 motores DC acoplados às rodas através de uma redução de 25:1 (ver Figura 3.3). Um encoder incremental localizado no eixo do motor permite medidas de odometria, fornecendo 24 pulsos por revolução do motor. Isto proporciona uma resolução de 600 pulsos por revolução da roda, o que corresponde a 12 pulsos por milímetro da trajetória do robô. Os motores são controlados diretamente pelo processador utilizando o método PWM (Modulação por Largura de Pulso) com chaveamento a 20 KHz, como ilustrado na Figura 3.4. Estes sinais são impostos aos motores através de uma ponte H com tecnologia NMOS [39].

CAPÍTULO 3. A PLATAFORMA KHEPERA

42

Figura 3.4 – Método PWM de acionamento dos motores (adaptado de [40]) Ambos os motores DC podem ainda ser controlados, em um nível mais elevado, através de um controlador PID (ver Figura 3.5) usando uma rotina do processador principal. Cada termo deste controlador (Proporcional, Integral, Derivativo) está associado a uma constante: Kp para Proporcional, Ki para Integral e Kd para Derivativo. O controlador do motor pode ser usado em dois modos de controle: um modo para velocidade e outro para a posição. O modo de controle é ativado de acordo com o tipo de comando recebido. Se o controlador recebe um comando de controle de posição, o modo de controle é automaticamente ativado para o modo de posição. Os diferentes parâmetros de controle (Kp, Ki e Kd) podem ser ajustados para cada um dos dois modos.

Figura 3.5 – Estrutura de controle dos motores do Khepera (adaptado de [40])

CAPÍTULO 3. A PLATAFORMA KHEPERA

43

O modo de controle de posição relaciona a aceleração, a velocidade e a posição das rodas do robô conforme a Figura 3.6. Dadas a posição alvo da roda, a aceleração (acc) e a velocidade máxima, o controlador acelera a roda até o valor máximo da velocidade e desacelera proporcionalmente até atingir a posição alvo.

Figura 3.6 – Relação entre velocidade e posição (adaptado de [40]) No modo de controle de velocidade, o controlador tem como entrada um valor que define a velocidade das rodas (velocidade de referência), e controla o motor para manter esta velocidade. A modificação da velocidade é realizada tão rapidamente quanto possível, de maneira brusca. Nenhuma limitação na aceleração é considerada neste modo.

CAPÍTULO 3. A PLATAFORMA KHEPERA

44

3.4 Especificações Técnicas A Figura 3.7 apresenta um quadro resumo das principais especificações técnicas referentes ao robô Khepera em sua versão básica.

Elemento

Informação Técnica

Processador

Motorola 68331 - 16 MHz - 32 bits

RAM

SRAM - 256 Kbytes

ROM

EEPROM - 128 a 512 Kbytes

Motores

2 servo motores DC

Acionamento

PWM - 20 KHz

Encoder

Incremental - 12 pulsos p/ mm da trajetória do robô

Unidade de Deslocamento

1 pulso = 0,081786 mm

Velocidade Min.

1 pulso / 10 ms

Velocidade Max.

127 pulsos / 10 ms

Sensores

8 (infravermelho) - p/ proximidade ou luz ambiente

Alimentação

4 baterias NiCd (recarregáveis) de +1,2 V / 180 mAh Fonte Externa de +8,5 V

Autonomia

aproximadamente 40 minutos

Módulos Adicionais

câmera, manipulador e/ou rádio

Tamanho

Diâmetro: 55 mm;

Peso

aproximadamente 70 g

Distância entre Rodas

53 mm

Raio da Roda

7,81 mm

Comunicação

Porta Serial RS232 - Protocolo ASCII

Taxa de Transmissão

9600, 19200 ou 38400 Baud

Altura: 30 mm

(8 bit, 1 start bit, 2 stop bit, no parity) Softwares de Controle

LabVIEW®, MATLAB® ou outro software capaz de se comunicar com uma RS232

Figura 3.7 – Especificações técnicas do Khepera

Nas Figuras 3.8 e 3.9, é possível identificar algumas das principais partes que compõem o robô Khepera.

CAPÍTULO 3. A PLATAFORMA KHEPERA

45

Figura 3.8 – Vista lateral do robô Khepera (adaptado de [40])

Figura 3.9 – Vista superior e inferior do robô Khepera (adaptado de [40])

3.5 Modos de Configuração Dependendo do uso do robô (controle remoto, downloading, teste, demonstração e etc.), pode-se selecionar o módulo específico através da configuração apropriada do respectivo modo de funcionamento. Esta configuração é feita no próprio robô (ver Figura 3.10) por intermédio de três conectores.

CAPÍTULO 3. A PLATAFORMA KHEPERA

46

Figura 3.10 – Modos de funcionamento do Khepera (adaptado de [40]) Ao todo, estão disponíveis oito modos de funcionamento para o robô [40]: •

Modo 0 (modo de demonstração): executa o algoritmo do veículo de Braitenberg (algoritmo de desvio de obstáculos);



Modo 1: modo para o controle do robô através do protocolo de comunicação serial RS232 com velocidade de 9600 Baud;



Modo 2: modo para o controle do robô através do protocolo de comunicação serial RS232 com velocidade de 19200 Baud;



Modo 3: modo para o controle do robô através do protocolo de comunicação serial RS232 com velocidade de 38400 Baud;



Modo 4 (modo de aplicação do usuário): inicia um aplicativo armazenado na EEPROM;



Modo 5 (modo downloading): neste modo, o robô espera um programa ser transferido e o executa quando totalmente descarregado (formato serial, 9600 Baud);



Modo 6: igual ao modo 5, mas com uma taxa de 38400 Baud;



Modo 7: teste da funcionalidade do robô, na taxa de 9600 Baud.

3.6 Comandos MATLAB A seguir é fornecida a lista de comandos MATLAB para o robô Khepera, organizadas por função, e obtida de [38]. Comandos de Demonstrações •

kProximityG(ref) ! Plotagem gráfica na forma polar ou de histograma da leitura dos sensores de proximidade;

CAPÍTULO 3. A PLATAFORMA KHEPERA



47

kBraitenbergG(ref, gain) ! Demonstração gráfica do veículo de Braitenberg (o 'ganho' é opcional);

Comandos de Sistema •

kopen([port, baud_rate, timeout]) ! abre a porta serial, suportando um baud rate de até 115200 bps;



kcmd(ref, text_string) ! envia um comando ao Khepera por uma única linha de comunicação;



kcmd(ref, text_string, 1) ! envia um comando ao Khepera por várias linhas de comunicação;



kclose(ref) ! fecha a porta serial;



kFlush(ref) ! esvazia o buffer. Isto é útil ao esquecer de inserir o parâmetro ‘1’ em um comando de várias linhas de comunicação;

Comandos de Informação •

kBios(ref) •

kBios(ref) ! mostra a versão da bios e do protocolo;



[a,b] = kBios(ref) ! não mostra os valores, mas atribui os valores para a e b;



kList(ref) ! lista o módulo da ROM disponível;



kTeam(ref) ! lista o K-Team;

Comandos dos Sensores •

kAmbient(ref) ! retorna o valor lido pelos sensores de luz ambiente em um vetor de 8 elementos;



kProximity(ref) ! retorna o valor lido pelos sensores de proximidade em um vetor de 8 elementos;

Comandos dos Motores/Encoders •

kGetStatus(ref) ! retorna um vetor de 6 elementos descrevendo o estado dos controladores dos motores;



kStatus(ref) ! mostra uma descrição textual do estado dos controladores dos motores;



kGetEncoders(ref) ! retorna um vetor de 2 elementos do valor corrente dos encoders;

CAPÍTULO 3. A PLATAFORMA KHEPERA



48

kSetEncoders(ref, left, right) ! configura a posição dos encoders. Se os valores left e right não estão especificados, as posições são configuradas para zero;



kSetPWM(ref, left, right) ! configura a velocidade dos motores usando a faixa de valores no PWM (-255...+255);

Controle de Velocidade •

kGetSpeed(ref) ! retorna um vetor de 2 elementos da velocidade corrente;



kSetSpeed(ref, left, right) ! configura a velocidade dos motores, ajustada pelo controlador PID;



kStop(ref) ! para o Khepera (configura a velocidade para zero);



kSetSpeedPID(ref, Kp, Ki, Kd) ! configura os coeficientes PID do controlador de velocidade. Se os valores não são especificados, eles adquirem o default (3800, 800, 100);

Controle de Posição •

kMoveTo(ref, left, right) ! utiliza o controlador de posição para mover para a posição desejada dos encoders incrementais;



kSetPositionPID(ref, Kp, Ki, Kd) ! configura os coeficientes PID do controlador de posição. Se os valores não são especificados, eles adquirem o default (3000, 20, 4000);



kSetProfile(ref, velLeft, accLeft, velRight, accRight) ! configura os perfis de velocidade e aceleração do controlador de posição. Se os valores não são especificados, eles adquirem o default (vel=20, acc=64);

Outros Comandos •

kGetAnalog(ref, channel) ! lê a entrada de um canal analógico através de um conversor A/D de 10 bits;



kLED(ref, n, action) ! configura os dois LEDs, onde 'n' e/ou 'action' podem ser vetores. Exemplo: kLED(ref, [0 1], [2 0]) mudará de estado o LED0 e desligará o LED1;



kReadByte(ref, address) ! lê um byte proveniente do barramento de extensão;



kWriteByte(ref, address) ! escreve um byte no barramento de extensão;



kTurret(ref, turretID, textString) ! envia um comando no formato string para um módulo de extensão;

CAPÍTULO 3. A PLATAFORMA KHEPERA

49



kTurretBios(ref, turretID) ! mostra a versão da bios do módulo de extensão;



kBraitenberg(ref, gain) ! demonstra um veículo de Braitenberg. Se o ganho não for especificado, um valor default de 0,7 é utilizado.

Obs.: Todos estes comandos compõem um pacote de arquivos designado de “kMatlab” e se encontra disponível em [38] para downloading. Para finalizar, é fornecido um quadro com a equivalência entre os comandos Khepera (Apêndice A do Manual do Usuário [40]) e kMatlab (comandos MATLAB para o robô Khepera) (ver Figura 3.11):

Comando Khepera

Equivalente kMatlab

A - Configure

kSetSpeedPID

B - Read software version

kBios

C - Set a position to be reached

kMoveTo

D - Set speed

kSetSpeed

E - Read speed

kGetSpeed

F

kSetPositionPID

- Configure the position PID controller

G - Set position to the position counter

kSetEncoders

H - Read position

kGetEncoders

I

- Read A/D input

kGetAnalog

J

- Configure the speed profile controller

kSetProfile

K - Read the status of the motion controller

kGetStatus

L

kLED

- Change LED state

N - Read proximity sensors

kProximity

O - Read ambient light sensors

kAmbient

P - Set PWM (pulse width modulation)

kSetPWM

T

kTurret

- Send a message to an extension turret

R - Read a byte on the extension bus

kReadByte

W - Write a byte on the extension bus

kWriteByte

Figura 3.11 – Equivalência entre os comandos Khepera e kMatlab

CAPÍTULO 3. A PLATAFORMA KHEPERA

50

3.7 Considerações Finais Neste capítulo foi possível observar as principais características técnicas e operacionais da plataforma Khepera, dentre as quais: dimensões, formas de comunicação, ambientes de programação, sensores e controle dos motores. Apresentou-se ainda, uma lista contendo os comandos em MATLAB, relativos a programação do robô. Tudo isto, pois, nos capítulos seguintes serão realizados experimentos com o Khepera e simulações baseadas em suas características. No próximo capítulo será estudado o problema da estimação da posição e orientação empregando a odometria.

Capítulo 4

Odometria Considerando-se que o objetivo principal deste trabalho é o de reduzir os erros de posicionamento e orientação de robôs móveis (sobretudo nos robôs de tração diferencial, como é o caso do Khepera), é imprescindível estudá-los em detalhe. Várias técnicas estão disponíveis para a obtenção da posição e da orientação de robôs móveis, utilizando encoders, visão computacional, sonar e scanner a laser [19]. Uma descrição detalhada destas e de outras técnicas pode ser encontrada em [7][17] e [18]. A Figura 4.1 apresenta um quadro comparativo das principais técnicas utilizadas em posicionamento de robôs móveis, identificando suas vantagens e desvantagens [21]. Apesar da existência de várias técnicas sofisticadas de posicionamento tais como as que puderam ser observadas na Figura 4.1, uma das mais utilizadas em robótica móvel, devido as suas características de simplicidade de implementação e baixo custo ainda é a odometria. A odometria é um método de estimação de posição e orientação que consiste no cálculo da posição atual de um robô móvel, integrando a distância percorrida, a qual é medida por intermédio da rotação de suas rodas [21]. A base deste método é a utilização de encoders incrementais, que acoplados ao eixo das rodas do robô, realizam a leitura dos pulsos de revolução das mesmas. Embora seja um método clássico e de boas características, o mesmo não é adequado para trajetórias longas, onde os erros vão se acumulando (ver Figura 4.2). Estes erros são classificados em: erros de ordem sistêmica e erros de ordem não-sistêmica, que são discutidos na Seção 4.2.

CAPÍTULO 4. ODOMETRIA

Sist. de Pos. Odometria Navegação Inercial Bússola Giroscópio Sonar

Triangulação Laser Landmarks Visão Estéreo GPS

Descrição posição determinada pela integração da informação da velocidade sensoriamento das mínimas acelerações em todas as direções e integração do tempo para se derivar a velocidade e posição medida da direção baseada na leitura do campo magnético terrestre leitura da direção baseada nas propriedades inerciais da alta rotação do motor medida da distância a partir do tempo de reflexão de pulsos ultra-sônicos

medida angular da reflexão do raio de luz emitido medida do tempo decorrido ou defasagem do pulso de luz emitido medida da distância e/ou ângulo entre o robô e marcos artificiais medida da distância através da comparação de duas imagens Sistema de Posicionamento Global baseado em satélite

52

Vantagens • baixo custo

Desvantagens • distância acumulada

• sem necessidade de contato com o solo • baixo custo • não acum. o tempo • insensível a anomalias magnéticas • baixo custo

• tempo acumulado • alto custo

• baixo custo • rapidez • rapidez

• sensib. magnética • precisão limitada • tempo acumulado • alto custo • lento • alcance limitado • sem focalização • ecos • alcance limitado • alto custo

• posição absoluta

• setup externo

• não necessita de setup externo • posição absoluta

• algoritmo complexo • não confiável • monitoramento espacial

Figura 4.1 – Descrição comparativa dos sistemas de posicionamento (adaptado de [21])

Figura 4.2 – Erros acumulados pela odometria (adaptado de [17])

4.1 Cálculo Odométrico a partir do Modelo Cinemático A cinemática é o estudo da geometria do movimento. Este estudo relaciona deslocamento, velocidade, aceleração e tempo, sem se preocupar com a causa do movimento [25]. Para a análise cinemática do Khepera e posterior cálculo da odometria, considera-se a mesma descrição feita para o robô genérico do Capítulo 2 deste trabalho, ou seja, assume-se

CAPÍTULO 4. ODOMETRIA

53

que o Khepera seja um corpo rígido, cujas rodas não sofrem deformação ou derrapagens e que se movimentam apenas no plano horizontal. A posição e a orientação do robô são descritas em relação a um sistema de coordenadas inercial {Xb, Yb} com origem denotada por O, enquanto que um sistema de coordenadas {Xm, Ym} com origem P é associado ao corpo do robô, conforme mostra a Figura 4.3.

Figura 4.3 - Coordenadas de postura (posição e orientação) Desta forma, as coordenadas de postura do robô descritas no sistema {Xb, Yb} são dadas pelo vetor:

 x " =  y  !  onde: x e y representam a posição do robô, e

θ representa a orientação do robô em relação ao eixo Xb.

(4.1)

CAPÍTULO 4. ODOMETRIA

54

Por se tratar de um robô de configuração “tração-diferencial”, o Khepera apresenta apenas dois graus de liberdade, isto é, as posições angulares das rodas. Assim, é possível realizar apenas dois movimentos independentes: a translação retilínea e a rotação pura. A realização de qualquer outro tipo de movimento poderá ser obtida pela combinação destes dois. A análise do comportamento cinemático será iniciada pela roda, pois ela é o elemento responsável pela movimentação do robô. O tipo de roda utilizado no Khepera é a convencional fixa, que obedece à seguinte relação: Vr = -r ⋅ R

(4.2)

onde: Vr é a velocidade linear da roda;

ωr é sua velocidade angular e R é o seu raio. A Equação (4.2) é facilmente deduzida a partir da Figura 4.4.

Figura 4.4 - Velocidades angular e linear da roda O restante do modelo cinemático do robô Khepera é obtido com base na Figura 4.5, onde P e P’ representam respectivamente as posições (x, y) e (x’, y’) do centro geométrico do robô nos instantes t e t+∆t; Dr é a distância entre rodas e DP é a distância do centro do robô ao Centro Instantâneo de Rotação (CIR); ∆DE, ∆DD e ∆D são os deslocamentos das rodas esquerda, direita e do centro do robô no intervalo de discretização, assim como VE, VD e V se referem às velocidades lineares da roda esquerda, direita e do centro do robô no mesmo intervalo e ∆θ é a variação do ângulo de orientação no tempo de discretização.

CAPÍTULO 4. ODOMETRIA

55

Figura 4.5 - Modelo cinemático Desta forma, é possível estabelecer a velocidade angular (ω) do robô a partir da seguinte relação:

-=

VD − VE Dr

(4.3)

e com base na Equação (4.2), pode-se reescrever a Equação (4.3) na forma:

-=

R ⋅ (- D − - E ) Dr

(4.4)

onde ωD e ωE representam as velocidades angulares da roda direita e esquerda respectivamente.

CAPÍTULO 4. ODOMETRIA

56

Além disso:

V=

VD + VE 2

(4.5)

Fazendo uso novamente da Equação (4.2):

V=

R ⋅ (- D + - E ) 2

(4.6)

De acordo com a Figura 4.5, para movimentos incrementais, tem-se [21]:  x' = x + V cos ! ⋅ .t   y' = y + V sin ! ⋅ .t !' = ! + -.t 

(4.7)

 .x = V cos ! ⋅ .t   .y = V sin ! ⋅ .t  .! = -.t 

(4.8)

No limite quando ∆t / 0, a forma diferencial é obtida:  x!  V cos !  ! " =  y!  = V sin !  !!   - 

(4.9)

cos ! 0 V  "! =  sin ! 0    0 1  

(4.10)

ou, ainda

CAPÍTULO 4. ODOMETRIA

57

Substituindo as Equações (4.3) e (4.5) na Equação (4.10), finalmente obtém-se: cos ! 0 V D + V E   2  "! =  sin ! 0 V − VE  D    0 1  D  r 

(4.11)

Os deslocamentos lineares das rodas esquerda e direita são dados pelas equações:

D   .D E = .! ⋅  D P − r  2  

(4.12)

D   .D D = .! ⋅  D P + r  2  

(4.13)

Por outro lado, a Equação (4.14) fornece o deslocamento do centro do robô e a Equação (4.15) o ângulo desenvolvido com relação ao CIR no intervalo [t, t+∆t]:

.D =

.D D + .D E 2

(4.14)

.! =

.D D − .D E Dr

(4.15)

Outra forma de se obter o deslocamento linear, muito usada para estimar posição e orientação, consiste em contar a quantidade de pulsos obtidos a partir dos encoders de cada roda em um certo intervalo de tempo. A partir do conhecimento do raio das rodas (R) e do número de pulsos por revolução das rodas nos encoders (Nr), pode-se calcular o deslocamento linear das rodas no intervalo [t, t+∆t] através de [17][19]:

CAPÍTULO 4. ODOMETRIA

58

.D E =

.D D =

2% ⋅ R ⋅ N pE Nr 2% ⋅ R ⋅ N pD Nr

(4.16)

(4.17)

onde NpE e NpD correspondem aos números de pulsos obtidos nos encoders das rodas direita e esquerda no intervalo de tempo discriminado.

4.2 Definição dos Erros de Odometria Erro de odometria é a diferença entre a posição sobre a qual o robô “pensa” estar (estimado por cálculo) e a posição atual (freqüentemente medida por dispositivos externos) [21]. Como visto no início deste capítulo, a odometria não é um método adequado para trajetórias longas, uma vez que os erros vão sendo acumulados. Estes erros podem ser isolados e divididos em duas classes [17][19][21]: 1. Erros sistemáticos: são causados basicamente por incertezas nos parâmetros geométricos utilizados para calcular a posição e orientação do robô. Para robôs de tração diferencial, as principais causas dos erros sistemáticos são: a) Diâmetro das rodas desigual e/ou diferente do valor nominal; b) Desalinhamento das rodas; c) Distância entre rodas diferente do valor nominal; d) Incerteza sobre o ponto de contato da roda. Os erros sistemáticos são graves, porque são fonte constante de erros aditivos. Entretanto, através de procedimento de calibração adequado, como o que será visto mais adiante no decorrer deste capítulo, estes erros podem ser reduzidos a valores aceitáveis (dependendo da aplicação, das dimensões do robô e do comprimento da trajetória). Em solos regulares, contribuem mais fortemente para o erro total do que os erros não-sistemáticos.

CAPÍTULO 4. ODOMETRIA

59

2. Erros não-sistemáticos: são característicos da relação do robô com o meio ambiente. As principais causas dos erros não-sistemáticos são: a) escorregamento das rodas (solo escorregadio, grandes acelerações do robô, rotações rápidas); b) imperfeições no solo (rugoso ou com obstáculos inesperados); c) outros fenômenos similares. Em solos irregulares, estes erros podem ser dominantes.

4.3 Erros Sistemáticos em Robôs com Tração Diferencial Considerando que não ocorram erros de ordem não-sistêmica, dois erros dominantes podem ser observados [23]: a) rodas com diâmetros diferentes: a maioria dos robôs móvel utiliza pneus feitos de borracha como forma de possibilitar o tracionamento. Este material é de difícil construção quando se requer a mesma forma (diâmetros iguais) e de rápido desgaste (considerando que cada roda esteja submetida a cargas diferentes). Ambos os efeitos podem provocar substanciais erros de odometria, que são dependentes da relação:

Ed =

D RD D RE

(4.18)

onde DRD e DRE são os diâmetros atuais das rodas direita e esquerda respectivamente. Para valores nominais, Ed = 1. b) incerteza quanto à distância entre rodas: define-se a distância entre rodas ( D r ) como a distância compreendida entre os pontos de contato que as duas rodas do robô fazem com o solo. A incerteza desta distância pode provocar diferenças na contagem dos encoders, e tem efeito somente quando o robô é submetido a trajetos curvilíneos ou rotações em torno de seu próprio eixo (ver Equação 4.3). Esta incerteza é dependente da relação:

CAPÍTULO 4. ODOMETRIA

60

E Dr =

onde

Dr , a

e

Dr , n

Dr , a Dr , n

(4.19)

representam as distâncias entre rodas atual e nominal,

respectivamente. Para valores nominais, E Dr = 1. Na Figura 4.6, é possível observar um destes erros (provocado pelos diâmetros desiguais das rodas). Ela apresenta um robô de tração diferencial tentando executar um arco de circunferência (de um ângulo 0) em torno de seu próprio eixo de rotação (C). Para isto, ambas as rodas devem girar com a mesma velocidade. Porém, como seus diâmetros são diferentes, e suas velocidades lineares são proporcionais aos diâmetros atuais, DRD e DRE, o CIR (Centro Instantâneo de Rotação), representado por “O”, não coincidirá com o ponto central (C) do robô. Ao ser completado o arco, o ponto C se moverá para C’, provocando um deslocamento lateral. Entretanto, se o robô executar uma rotação completa em torno de seu próprio eixo, este deslocamento lateral poderá ser ignorado, pois C’ e C ficarão novamente sobrepostos.

Figura 4.6 – Conseqüência da diferença de diâmetros das rodas (adaptado de [23])

CAPÍTULO 4. ODOMETRIA

61

Pode-se, agora, derivar a relação existente entre os diâmetros atuais DRD e DRE e o ângulo de rotação atual 0, de vital importância para a redução dos erros de odometria. A partir da Figura 4.6, obtém-se rD D RD = rE D RE

(4.20)

onde rD e rE são as distâncias do CIR à roda direita e esquerda, respectivamente. Segundo as condições normais de manobra, o CIR estará sempre sobre o eixo do percurso ou ao longo da extensão imaginária além das rodas (ver Figura 2.16 – Formas de alocação do CIR ); então Dr = rD + rE

(4.21)

Combinando as Equações (4.20) e (4.21), e resolvendo para rE, tem-se

rE =

D RE ⋅ Dr D RD + D RE

(4.22)

O deslocamento curvilíneo da roda esquerda nas condições nominais é dado por

D E , n = % ⋅ DRE ,n ⋅ N RE

(4.23)

onde DRE,n é o diâmetro nominal e NRE o número de rotações da roda esquerda. Ainda, em condições nominais, a roda esquerda deveria rotacionar em torno de C com um ângulo 0n dado por

0n =

DE ,n Dr 2

=

2% ⋅ DRE ,n ⋅ N RE Dr

(4.24)

CAPÍTULO 4. ODOMETRIA

62

Supondo que a roda direita seja menor do que a roda esquerda, a rotação ocorrerá em torno de “O” e o ângulo correspondente ao deslocamento da roda esquerda será

0=

DE % ⋅ DRE ⋅ N RE = rE rE

(4.25)

Resolvendo a Equação (4.24) para NRE e substituindo na Equação (4.25), o ângulo 0 passa a ser expresso em função de 0n, isto é:

0=

0 n ⋅ Dr ⋅ D RE 2 ⋅ rE ⋅ D RE , n

(4.26)

onde, finalmente, substitui-se a Equação (4.22) para obter:

0 = 0n ⋅

D RD + D RE 2 ⋅ D RE , n

(4.27)

Para interpretar estes resultados mais facilmente, define-se a média do diâmetro atual das rodas (DM) como:

DM =

D RD + D RE 2

(4.28)

e substitui-se a Equação (4.28) na Equação (4.27), obtendo-se:

DM D RE ,n = 0 0n

(4.29)

A partir da Equação (4.29) e da Figura 4.6, três importantes conclusões podem ser estabelecidas [23]:

CAPÍTULO 4. ODOMETRIA

63

1. A diferença no diâmetro das rodas não ocasiona erro de orientação durante as curvas, desde que DM = DRE,n. Em outras palavras, qualquer que seja Ed, 0 = 0n se DM = DRE,n; 2. O erro de orientação depende da média atual do diâmetro DM, caso DM " DRE,n. Isto é: se DM > DRE,n, então o robô fará uma curva maior do que a nominal (0 > 0n); se DM < DRE,n, então o robô fará uma curva menor do que a nominal (0 < 0n); 3. A diferença no diâmetro das rodas (Ed) provoca erro de posicionamento, fazendo com que a posição (x, y) do ponto central C mova-se para C’. Caso o robô execute uma rotação completa em seu próprio eixo, este erro pode ser ignorado, pois C’ retornará para C.

4.4 Método UMBmark Um método muito utilizado para avaliar, comparar e corrigir erros de odometria para robôs móveis de tração diferencial é o UMBmark1 – University of Michigan Benchmark [17][18][22][23][24]. Este método visa corrigir somente os erros sistemáticos, enquanto que os não-sistemáticos podem ser minimizados por uma variante do método chamado de extended UMBmark [22]. Neste trabalho, apenas a correção dos erros sistemáticos será abordada. A proposta do método UMBmark é submeter o robô a trajetórias quadrangulares (sentido horário e anti-horário), calcular os erros de posicionamento ocorridos e ajustar alguns parâmetros do modelo cinemático (distância entre rodas e seus diâmetros), através da alteração da constante de proporcionalidade existente entre os pulsos lidos pelos encoders e a distância efetivamente percorrida pelas rodas do robô. Portanto, o método consiste de duas etapas [24]: 1. Avaliação Experimental; 2. Análise dos Resultados.

1

Método criado e desenvolvido nos laboratórios de Robótica Móvel da Universidade de Michigan em 1994, pelos Drs. Johann Borenstein e Liqiang Feng, ambos do Depto. de Engenharia Mecânica daquele centro.

CAPÍTULO 4. ODOMETRIA

64

4.4.1 Avaliação Experimental A primeira etapa consiste em fazer com que o robô percorra um caminho quadrado diversas vezes e nos dois sentidos. Devido aos erros de odometria presentes, a posição final do robô não coincidirá necessariamente com sua posição inicial (Figura 4.7).

Figura 4.7 – Erro de postura do robô para uma trajetória quadrada (adaptado de [22]) Esta diferença é expressa pelos seguintes erros:

1 x = x abs − x calc

(4.30)

1 y = y abs − y calc

(4.31)

1! = ! abs − ! calc

(4.32)

onde

1 x , 1 y , 1!

= erros de posição e orientação devidos à odometria;

xabs , y abs , !abs = posição e orientação absolutas do robô;

xcalc , y calc , !calc = posição e orientação do robô, calculadas por odometria.

CAPÍTULO 4. ODOMETRIA

65

Este experimento é realizado cinco vezes no sentido horário e cinco vezes no sentido antihorário [24]. Ao realizá-lo em ambos os sentidos, os erros de odometria são evidenciados; do contrário, poderiam dar a falsa impressão de que os parâmetros cinemáticos do robô estariam corretos, uma vez que os erros devidos a Ed e E Dr podem se cancelar, como mostra a Figuras 4.8. Entretanto, quando o mesmo experimento é realizado no outro sentido, os erros devidos a Ed e E Dr se somam (Figura 4.9). Por outro lado, se o experimento fosse realizado em apenas um sentido, poderia ocorrer o mesmo erro de posicionamento, devido apenas a Ed ou a E Dr , como se observa na Figura 4.10.

Figura 4.8 – Probabilidade de cancelamento de Ed e E Dr , quando o experimento é realizado em apenas um sentido (adaptado de [17]) Com relação a Figura 4.8 e as seguintes (Figuras 4.9 e 4.10), nas curvas, o ângulo $ (erro de orientação devido a Ed) assume o valor de & (erro de orientação devido a E Dr ), como forma de simplificar a demonstração. Mais adiante, no decorrer deste capítulo, será discutida em detalhes a relação entre & e $ e suas conseqüências para os erros de odometria.

CAPÍTULO 4. ODOMETRIA

66

Figura 4.9 – Os erros devidos a Ed e E Dr se somam, quando o experimento é realizado no outro sentido (adaptado de [17])

Figura 4.10 – Ed e E Dr podem provocar o mesmo erro de posicionamento, quando o experimento é realizado em apenas um sentido (adaptado de [17])

CAPÍTULO 4. ODOMETRIA

67

4.4.2 Análise dos Resultados A análise dos resultados é realizada em quatro etapas: 1) Erros de Posicionamento; 2) Erros de Orientação; 3) Obtenção de E d e E Dr em Função dos Erros de Orientação; e 4) Fator de Correção. 1) Erros de Posicionamento Após a realização do experimento, têm-se, portanto, cinco pontos de erro de posicionamento (1xi,H, 1yi,H) para o sentido Horário (H), e cinco pontos de erro de posicionamento (1xi,AH, 1yi,AH) para o sentido Anti-Horário (AH). Se estes pontos forem plotados em um mesmo gráfico obtém-se algo semelhante à Figura 4.11.

Figura 4.11 – Resultados típicos do método UMBmark (adaptado de [23]) Percebe-se que a posição final do robô ocupa duas áreas distintas. O centro de gravidade da área formada pelo agrupamento de pontos no sentido horário é definido por xc.g.,H e yc.g.,H, calculados a partir de:

CAPÍTULO 4. ODOMETRIA

68

1 n ∑ 1 xi,H n i =1

(4.33a)

1 n = ∑ 1 yi , H n i =1

(4.33b)

x c. g , H = y c. g , H

Semelhantemente, no sentido anti-horário, o centro de gravidade é obtido de:

xc. g , AH =

1 n ∑ 1 xi, AH n i =1

(4.34a)

yc. g , AH =

1 n ∑ 1 yi, AH n i =1

(4.34b)

Este procedimento faz com que os erros não-sistemáticos presentes (tais como, erros de posicionamento inicial do robô, derrapagens, imperfeições do solo e outros, verificados pelo espalhamento da posição final em ambos os sentidos na Figura 4.8) sejam reduzidos, permanecendo somente os erros sistemáticos. O erro de posicionamento absoluto do robô a partir da origem pode ser obtido através de

rc. g ., H = ( x c. g ., H ) 2 + ( y c. g ., H ) 2

(4.35)

rc. g ., AH = ( x c. g ., AH ) 2 + ( y c. g ., AH ) 2

(4.36)

para o sentido horário e de

para o sentido anti-horário. Assim, o maior valor entre rc.g.,H e rc.g.,AH é definido como a “medida da precisão de odometria dos erros sistemáticos” [17][22]: E max ., sist . = max(rc. g ., H ; rc. g ., AH )

(4.37)

CAPÍTULO 4. ODOMETRIA

69

A razão de não ser usada a média entre rc.g.,H e rc.g.,AH é que, em aplicações práticas, interessa apenas saber qual a maior probabilidade do erro de odometria. Ainda, o erro de orientação 1θ não se encontra explicitado na Equação (4.37), porque se considera que todos os erros sistemáticos de orientação estão embutidos no erro de posição final [22]. Em outras palavras, desde que a trajetória possua lados iguais e comprimentos fixos, os erros sistemáticos de orientação traduzem-se imediatamente em erros de posicionamento [22], como pode ser observado nas Equações (4.43), (4.47), (4.51) e (4.55). 2) Erros de Orientação Seguindo o processo de análise do método UMBmark, duas novas características podem ser definidas. Estas características são chamadas de erros do Tipo A e erros do Tipo B, relativas à orientação do robô [24]: • Erros do Tipo A: erro de orientação que reduz ou aumenta a quantidade total de rotação do robô durante o experimento em ambos os sentidos; • Erros do Tipo B: erro de orientação que aumenta a quantidade total de rotação do robô durante o experimento em um sentido, mas reduz no outro. Estas de definições podem ser descritas em forma matemática como segue: • O erro é do Tipo A se

!total , H < ! n e !total , AH < ! n , ou se ! total , H > ! n e !total , AH > ! n • O erro é do Tipo B se

! total , AH > ! n mas ! total , H < ! n , ou se

! total , AH < ! n mas ! total , H > ! n onde

! n = 4 x 90° = 360° é o ângulo nominal total de rotação;

!total , H

AH

=4

x

(° = 4

(ver Figura 4.12);

x

( 90° - &°) é o ângulo de rotação total para erros do Tipo A

CAPÍTULO 4. ODOMETRIA

70

! total , H = 4 x (90 - $°) é o ângulo de rotação total para erros do Tipo B no sentido horário (ver Figura 4.13);

!total , AH = 4 x (90 + $°) é o ângulo de rotação total para erros do Tipo B no sentido anti-horário (ver Figura 4.13). No entanto, quando da movimentação do robô, erros do Tipo A e B ocorrem juntos. O problema, portanto, consiste em distinguí-los e encontrar os agentes causadores, assim como elaborar um fator de correção para ambos a partir do erro de posicionamento. A distinção entre os dois tipos de erro e seus agentes causadores pode ser facilmente obtida a partir da análise das Figuras 4.12 e 4.13.

Figura 4.12 – Erros do Tipo A (adaptado de [24])

Figura 4.13 – Erros do Tipo B (adaptado de [24])

CAPÍTULO 4. ODOMETRIA

71

Da análise das Figuras 4.12 e 4.13, pode-se concluir que os erros do Tipo A (denotados por &) ocorrem devido à diferença da distância atual e nominal entre as rodas do robô, ao passo que os erros do Tipo B (denotados por $) ocorrem devido à diferença de seus diâmetros atuais. Para se obter os valores de & e $, é preciso fazer algumas considerações [22]: 1. O robô inicia a trajetória em (x0, y0) com posição (0, 0) e a finaliza em (x4, y4); 2. São admitidas as seguintes aproximações para pequenos ângulos: Lsin' # L'; Lsin2' # 2L';

(4.38)

Lsin3' # 3L'; Lcos' # L; Lcos2' # L;

(4.39)

Lcos3' # L; onde L é o comprimento de cada lado da trajetória quadrada e ' é o erro de orientação causado por Ed ou E Dr e dado em radianos. Mediante as considerações adotadas, os erros dos Tipos A e B para ambos os sentidos são obtidos como segue: a) Determinação do posicionamento final (x4, y4) em função dos erros do Tipo A no sentido Horário: x1 = x0 + L;

(4.40a)

y1 = y0;

(4.40b)

x2 = x1 + Lsin& # L + L&;

(4.41a)

y2 = y1 - Lcos& # - L;

(4.41b)

x3 = x2 - Lcos2& # L&;

(4.42a)

y3 = y2 - Lsin2& # - L - 2L&;

(4.42b)

CAPÍTULO 4. ODOMETRIA

72

x4 = x3 - Lsin3& # - 2L&;

(4.43a)

y4 = y3 + Lcos3& # - 2L&;

(4.43b)

b) Determinação do posicionamento final (x4, y4) em função dos erros do Tipo A no sentido Anti-Horário: x1 = x0 + L;

(4.44a)

y1 = y0;

(4.44b)

x2 = x1 + Lsin& # L + L&;

(4.45a)

y2 = y1 + Lcos& # L;

(4.45b)

x3 = x2 - Lcos2& # L&;

(4.46a)

y3 = y2 + Lsin2& # L + 2L&;

(4.46b)

x4 = x3 - Lsin3& # - 2L&;

(4.47a)

y4 = y3 - Lcos3& # 2L&;

(4.47b)

c) Determinação do posicionamento final (x4, y4) em função dos erros do Tipo B no sentido Horário: x1 = x0 + Lcos($/2) # L;

(4.48a)

y1 = y0 + Lsin($/2) # L$/2;

(4.48b)

x2 = x1 + Lsin(3$/2) # L + 3L$/2;

(4.49a)

y2 = y1 - Lcos(3$/2) # L$/2 - L;

(4.49b)

x3 = x2 - Lcos(5$/2) # 3L$/2;

(4.50a)

y3 = y2 - Lsin(5$/2) # - L2$ - L;

(4.50b)

x4 = x3 - Lsin(7$/2) # - 2L$;

(4.51a)

y4 = y3 + Lcos(7$/2) # - 2L$;

(4.51b)

CAPÍTULO 4. ODOMETRIA

73

d) Determinação do posicionamento final (x4, y4) em função dos erros do Tipo B no sentido Anti-Horário: x1 = x0 + Lcos($/2) # L;

(4.52a)

y1 = y0 + Lsin($/2) # L$/2;

(4.52b)

x2 = x1 - Lsin(3$/2) # L - 3L$/2;

(4.53a)

y2 = y1 + Lcos(3$/2) # L$/2 + L;

(4.53b)

x3 = x2 - Lcos(5$/2) # - 3L$/2;

(4.54a)

y3 = y2 - Lsin(5$/2) # - 2L$ + L;

(4.54b)

x4 = x3 + Lsin(7$/2) # 2L$;

(4.55a)

y4 = y3 - Lcos(7$/2) # - 2L$;

(4.55b)

Agora, somando-se os erros dos Tipos A e B (pois estes ocorrem juntos) finais para x4 em ambos os sentidos: x4,H: -2L& + (- 2L$) = -2L(& + $) = xc.g., H

(4.56)

-2L& + 2L$ = -2L(& - $) = xc.g., AH

(4.57)

x4,AH:

E da subtração da Equação (4.57) pela Equação (4.56) chega-se a: (4.58)

-4L$ = xc.g., H - xc.g., AH e isolando $:

$=

(x

− x c. g ., AH ) 180 " ⋅ % − 4L

c. g ., H

para $ em graus

(4.59)

CAPÍTULO 4. ODOMETRIA

74

De modo similar para y:

$=

(y

+ y c. g ., AH ) 180 " ⋅ − 4L %

c. g ., H

para $ em graus

(4.60)

Agora, somando-se as Equações (4.56) e (4.57) obtém-se:

(4.61)

-4L& = xc.g., H + xc.g., AH e isolando &:

&=

(x

+ x c. g ., AH ) 180 " ⋅ − 4L %

c. g ., H

para & em graus

(4.62)

para & em graus

(4.63)

De modo similar para y:

&=

(y

− y c. g ., AH ) 180 " ⋅ − 4L %

c. g ., H

3) Obtenção de E d e E Dr em Função dos Erros de Orientação Usando relações geométricas (ver Figura 4.14), o raio da curvatura Rc do trajeto curvilíneo pode ser encontrado a partir do triângulo ABM, onde M é o CIR (Centro Instantâneo de Rotação do robô),

Rc =

L2 sin( $ 2)

(4.64)

CAPÍTULO 4. ODOMETRIA

75

Figura 4.14 – Raio Rc da curvatura devido a Ed (adaptado de [22]) Uma vez que o raio Rc da curvatura tenha sido calculado, fica fácil determinar a relação do raio (Ed) entre as duas rodas

Ed =

D RD Rc + Dr 2 = D RE Rc − D r 2

(4.65)

Semelhantemente, E Dr pode ser calculado (desde que a distância entre rodas Dr seja diretamente proporcional a quantidade atual da rotação (Equação (4.15)) usando a relação a seguir,

Dr , a 90

"

=

Dr , a = Dr , a Dr ,n

=

Dr , n 90 " − &

(4.66)

90 " ⋅ Dr ,n 90 " − &

(4.67)

90 " 90 " − &

(4.68)

onde por definição da Equação (4.19), chega-se finalmente a

E Dr =

90 " 90 " − &

(4.69)

CAPÍTULO 4. ODOMETRIA

76

4) Fator de Correção A correção do erro E Dr é trivial: a distância entre rodas Dr pode ser redefinida em software conforme a Equação (4.67). No entanto, a correção para o erro Ed é um pouco mais complexa: após a realização do experimento UMBmark, pode-se obter os fatores de correção das rodas a partir do conhecimento de Ed (Equação (4.65)). Entretanto, quando se aplica um fator de compensação, é necessário certificar-se de que não haverá mudança no diâmetro médio atual das rodas DM (Equação (4.28)), a não ser que este parâmetro tenha que ser recalibrado [22][24]. Isto, só se faz necessário, caso DM seja consideravelmente diferente do diâmetro nominal das rodas Dn, acarretando em uma terceira e potencial fonte de erro. Este erro, denominado de erro de escala Ee, pode ser facilmente medido e corrigido [22]: programa-se o robô para que percorra uma reta de comprimento nominal Ln, porém, na presença de Ee, uma distância atual La diferente da desejada será obtida. Portanto,

La Ln

(4.70)

D M = E e ⋅ Dn

(4.71)

Ee =

agora, aplicando este fator a Dn tem-se que

Desta forma, DM permanecerá imutável e considerado como um valor constante, desde o início da realização do método UMBmark. Assim, com base nas Equações (4.28) e (4.18),

D RE = e

2 ⋅ DM Ed + 1

(4.72)

CAPÍTULO 4. ODOMETRIA

77

D RD =

2 1 +1 Ed

⋅ DM

(4.73)

Sendo que dois parâmetros podem ser obtidos a partir das Equações (4.72) e (4.73),

CE =

2 Ed + 1

(4.74)

e CD =

2 1 +1 Ed

(4.75)

e de seus inversos, obtêm-se, finalmente, os fatores de correção das rodas esquerda e direita, respectivamente,

C RE =

1 CE

(4.76)

C RD =

1 CD

(4.77)

e

Estes dois fatores de correção podem ser implementados em software, reescrevendo as Equações (4.16) e (4.17):

.D E =

.D D =

onde RM é o raio médio atual das rodas.

2% ⋅ RM ⋅ N pE C RE ⋅ N r 2% ⋅ RM ⋅ N pD C RD ⋅ N r

(4.78)

(4.79)

CAPÍTULO 4. ODOMETRIA

78

4.5 Aplicação do Método UMBmark ao Khepera Para a realização do método UMBmark com o robô Khepera, utilizou-se uma cartolina branca na qual foi desenhada uma trajetória quadrada de dimensões 30 x 30 cm, colocada sobre uma mesa plana. Com relação ao controle do Khepera utilizou-se o MATLAB®. No Apêndice A é encontrado o programa UMBmark em MATLAB® (adaptado ao Khepera) utilizado. Para garantir que o robô não derrapasse nas curvas de 90°, adotou-se uma velocidade baixa (1 pulso/10 ms # 8 mm/s), e nas retas (2 pulso/10 ms # 16 mm/s). Após a realização do experimento (cinco vezes em cada sentido), os seguintes resultados foram obtidos: Tabela 4.1 – Resultados obtidos após a realização do método UMBmark para o Khepera Sentido Horário (H)

n 1 2 3 4 5

Soma Média Min. Max.

Sentido Anti-Horário (AH)

x (cm) y (cm) rc.g.,H (cm) -2 -1,95 -1,9 -1,85 -1,8 -9,5 -1,9 -2 -1,8

-1,9 -1,7 -2 -1,9 -1,7 -9,2 -1,84 -2 -1,7

2,76 2,59 2,76 2,65 2,48 13,23 2,65 2,48 2,76

n 1 2 3 4 5

Soma Média Min. Max.

x (cm) y (cm) rc.g.,AH (cm) -0,1 -0,15 0,05 0,05 0,25 0,1 0,02 -0,15 0,25

0 0,25 0,1 -0,2 -0,2 -0,05 -0,01 -0,2 0,25

0,10 0,29 0,11 0,21 0,32 1,03 0,21 0,10 0,32

Com os resultados da Tabela 4.1 e com o auxílio das Equações (4.59), (4.62), (4.64), (4.65), (4.67), (4.69), (4.74) e (4.75), foram calculados os seguintes parâmetros: $ = 0,9167° & = 0,8976° Rc = 1875,02 cm Ed = 1,002831 E Dr = 1,010074 Dr,a = 5,353393 cm

CAPÍTULO 4. ODOMETRIA

79

CE = 0,998587 CD = 1,001413 Emax.,sist. = 2,65 cm considerando L = 30 cm; % = 3,141593; e Dr,n = 5,30 cm. Agora, levando-se em conta os valores de CE e CD obtidos, pode-se calcular o raio e o diâmetro atual de ambas as rodas do robô, considerando que o raio nominal Rn = 7,81 mm; e Ee = 1. Logo RM = Rn. Assim, RRE = CE . RM

(4.80)

RRE = 7,798962 mm DRE = 2 . RRE

(4.81)

DRE = 15,597924 mm RRD = CD . RM

(4.82)

RRD = 7,821038 mm DRD = 2 . RRD

(4.83)

DRD = 15,642076 mm Os dados da Tabela 4.1 (Khepera descalibrado) podem ainda ser plotados em um gráfico, como pode ser observado na Figura 4.15

CAPÍTULO 4. ODOMETRIA

80

Figura 4.15 – Resultado do experimento UMBmark para o Khepera descalibrado Pela análise da Figura 4.15 e dos resultados obtidos pode-se observar que o agrupamento dos mesmos no sentido anti-horário apresenta um erro desprezível enquanto que no sentido horário é perceptível o erro de posicionamento. Isto ocorre porque quando o robô realiza o trajeto no sentido anti-horário, os erros provenientes de Ed e E Dr praticamente se cancelam, pois & e $ são de valores semelhantes (fenômeno semelhante a Figura 4.8, com a ressalva de que tem-se (90° - &) nas curvas), ou seja, θtotal, AH = 4 x (90° + $ - &) # 360°. Quando o robô percorre o trajeto no outro sentido, os erros provenientes de Ed e E Dr se somam (fenômeno semelhante a Figura 4.9, com a ressalva de que tem-se (90° - &) nas curvas), ou seja, θtotal, H = 4 x (90° - $ - &) = 4 x (90° - ($ + &)) # 358°. De posse dos valores de CE e CD e utilizando as Equações (4.76) e (4.77), determina-se os fatores de correção das rodas CRD = 0,998589 CRE = 1,001415

CAPÍTULO 4. ODOMETRIA

81

A correção dos parâmetros Ed e E Dr no Khepera é feita da seguinte maneira: a) Correção de Ed: realiza-se a correção dos pulsos desejados (utilizando os fatores CRE e CRD) a partir dos pulsos lidos dos encoders das rodas ao final de cada marco artificial implementado em software, sendo que a quantidade de marcos (MA) é dada por

 L   L  M A ≈   −  C RE RD ⋅  ud   ud  

(4.84)

onde ud é a unidade de distância do encoder e vale 0,0081786 cm (ver Figura 3.7 Especificações técnicas do Khepera – Capítulo 3) e L a distância do trajeto a ser percorrido pelas rodas do robô. Ainda, com relação a MA é válida a seguinte observação: deve-se adotar valores inteiros, uma vez que MA representa a diferença da quantidade total de pulsos desejados dos encoders para o trajeto, anterior e após a correção. Assim, considerando-se os valores anteriormente calculados MA # 5,2 ! MA = 5 b) Correção de E Dr : redefine-se em software o valor de Dr para o Dr,a, ou seja, na equação

DE D = 0 ⋅

D r 2% D r % ⋅ D r = ⋅ = 2 4 2 4

(4.85)

onde DE/D é a distância linear a ser percorrida pelas rodas esquerda e direita a cada 90° ($ = 2!/4). E convertendo a Equação (4.85) para pulsos de encoder

CAPÍTULO 4. ODOMETRIA

82

PE D =

DE D

(4.86)

ud

onde PE/D representa a quantidade de pulsos de encoder desejados para as rodas esquerda e direita, respectivamente. Após as devidas correções em software, foram obtidos os seguintes resultados para o experimento UMBmark (Khepera calibrado): Tabela 4.2 – Resultados obtidos após a realização da correção dos parâmetros Ed e E Dr Sentido Horário (H)

n 1 2 3 4 5

Soma Média Min. Máx.

Sentido Anti-Horário (AH)

x (cm) y (cm) -0,2 -0,1 0 0,15 0,15 0 0,00 -0,2 0,15

0,05 0,25 0,15 0,1 0,3 0,85 0,17 0,05 0,3

rc.g.,H (cm)

n

0,21 0,27 0,15 0,18 0,34 1,14 0,23 0,15 0,34

1 2 3 4 5

Soma Média min. Máx.

$ = 0,0048° & = -0,0048° Rc = -360000,00 cm Ed = 0,999985 E Dr = 1,000053 Dr,a = 5,350284 cm CE = 1,000007 CD = 0,999993 Emax.,sist. = 0,23 cm

x (cm) y (cm) -0,05 0,1 -0,1 -0,05 0,05 -0,05 -0,01 -0,1 0,1

0,2 0,2 -0,1 -0,25 -0,25 -0,2 -0,04 -0,25 0,2

rc.g.,AH (cm) 0,21 0,22 0,14 0,25 0,25 1,08 0,22 0,14 0,25

CAPÍTULO 4. ODOMETRIA

83

Os dados da Tabela 4.2 (Khepera calibrado), quando plotados em um gráfico, adquirem a forma mostrada na Figura 4.16.

Figura 4.16 – Resultado do experimento UMBmark para o Khepera calibrado Como se pode observar pela Figura 4.16, ocorreu uma melhora significativa quanto ao erro de posicionamento. Levando-se em conta o Emax.,sist, esta melhora foi da ordem de 11,5 vezes.

4.6 Considerações Finais Apresentou-se neste capítulo uma técnica para a estimação da posição e orientação, de baixo custo e fácil implementação, porém, inadequada para trajetórias longas. Com a utilização de um método de calibração adequado como o UMBmark, os erros sistemáticos de odometria puderam ser significativamente reduzidos, mediante a correção de alguns dos parâmetros cinemáticos do robô. No próximo capítulo serão mostrados os resultados obtidos por simulação empregando o método UMBmark (incluindo uma situação de controle) e experimentais para algumas trajetórias de interesse de modo a validar o estudo.

Capítulo 5

Controle e Resultados Este capítulo tem por objetivo avaliar e corrigir os erros de posicionamento e orientação do robô Khepera sob determinadas situações de interesse, que são: a) submeter e verificar o comportamento do robô perante o controle de rastreamento de trajetórias, e; b) dada uma tabela de valores desejados (orientação do robô, velocidade das rodas e distância a ser percorrida por elas) fazer com que ele percorra algumas trajetórias específicas. Para tanto, resultados de simulação e experimentais se fazem necessários e são apresentados como forma de validar o estudo. Quanto ao controle, será utilizada a técnica de controle de rastreamento considerando o modelo cinemático de postura em coordenadas cartesianas (Equação (4.10)). Em outros trabalhos [19][25][33][44], é possível obter informações em detalhes de uma série de outras técnicas, do ponto de vista do controle e para outros modelos de robôs da Classe (2,0).

5.1 Rastreamento O problema do rastreamento da trajetória para veículos não-holonômicos é considerado da seguinte maneira: Da Figura 4.5 (ver Capítulo 4), obtém-se a seguinte referência [44]

 x! r = Vr cos ! r   y! r = Vr sin ! r ! ! r = -r  T  p r = ( xr y r !r ) 2 r = (Vr -r ) T

(5.1)

CAPÍTULO 5. CONTROLE E RESULTADOS

85

onde pr representa o vetor de postura de referência e vr o vetor das velocidades linear e angular de referência. O objetivo é encontrar um controlador suave de velocidade, 2c (t ) = f c (e p , 2r , K ) tal que lim( p r − p ) = 0 t →∞

onde ep, vr e K são, respectivamente, o erro de rastreamento (Equação (5.2)), o vetor de velocidade referencial e o vetor de ganho do controlador.

5.2 Controle de Robôs Móveis segundo o Modelo Cinemático de Postura em Coordenadas Cartesianas Para o caso do robô móvel rastreando uma trajetória de referência, como na Seção 5.1, considera-se o erro de postura ep, como a diferença entre a postura de referência e a postura atual do robô, com a devida transformação de coordenadas [44]. Assim, e p = Te ( p r − p )  e1   cos ! sin ! 0 e  = − sin ! cos ! 0  2   e3   0 0 1

 xr − x   y − y  r   ! r − ! 

(5.2)

onde Te é a matriz de rotação do sistema de coordenada inercial {Xb, Yb} em relação ao sistema de coordenada móvel do robô {Xm, Ym}, já definida no Capítulo 4.

5.3 O Controlador de Rastreamento Para o sistema de controle de rastreamento, também denominado de sistema de controle de Referência-Modelo [45], as entradas do sistema são a postura de referência pr e a velocidade de referência 2 r = (Vr -r ) T , que são variantes no tempo. A saída do sistema é a postura atual

CAPÍTULO 5. CONTROLE E RESULTADOS

86

p do robô. O objetivo deste controlador é obter a convergência do erro de postura ep para zero. A estrutura de controle utilizada pode ser visualizada pelo diagrama de blocos da Figura 5.1.

Figura 5.1 – Diagrama de blocos do sistema de controle utilizado A regra de controle proposta para o rastreamento de veículos não-holonômicos tem a seguinte forma [33][44] Vr cos e3 + k1e1  V   2c =   =   - -r + k 2Vr e2 + k 3Vr sin e3 

(5.3)

com 2 c (t ) = f c (e p , 2 r , K , t ) e K = (k1 k 2 k 3 ) T , sendo os parâmetros de projeto ki’s (ganhos do controlador) todos positivos. A estabilidade assintótica da regra de controle da Equação (5.3) ocorre em torno de ep = 0 [44]. No projeto do controlador, os ganhos ki’s são ajustados experimentalmente de forma a se manter um compromisso entre a velocidade de resposta do controlador e o fato de ser implementável [44]. Como pode ser observado na Equação (5.3), os ganhos afetam diretamente as velocidades de controle, sendo necessário, portanto, ajustá-los de forma a não ultrapassar os limites de hardware do robô. Outra consideração importante a se fazer no projeto de controladores de rastreamento implementáveis é com relação à geração da trajetória de referência: as trajetórias devem ser contínuas e suaves para que o rastreamento seja possível [44].

CAPÍTULO 5. CONTROLE E RESULTADOS

87

5.4 Resultados de Simulação Para testar e validar tanto a forma de controle quanto a correção da odometria do Khepera, desenvolveu-se um simulador no SIMULINK®. No Apêndice B é mostrada em detalhes toda a estrutura dos blocos do programa utilizado nas simulações. A seguir são apresentados alguns dos resultados obtidos com o simulador, considerando os parâmetros cinemáticos e de controle estudados. A Figura 5.2 apresenta uma trajetória a ser seguida pelo robô com postura pr = (10 0 !/4)T. A postura de partida do robô foi atribuída como p = (5 0 !/2)T e os ganhos do controlador ajustados experimentalmente como K = (48 0,12 0,48)T. Para esta simulação, uma trajetória de referência retilínea foi gerada, com Vr # 1,6 cm/s e -r = 0 rad/s. Para evitar descontinuidades na lei de controle, considerou-se um movimento retilíneo uniformemente acelerado nos primeiros instantes da trajetória desejada como em [44]. Desta forma, o robô inicia seu movimento contínua e suavemente, resultando em uma lei que pode ser implementada e que respeita as acelerações e velocidades máximas permitidas para o robô.

Figura 5.2 – Khepera rastreando uma trajetória retilínea

CAPÍTULO 5. CONTROLE E RESULTADOS

88

Da Figura 5.2, pode-se verificar que o robô tende a adquirir a trajetória de referência, mas, devido aos erros de odometria presentes (discutidos no Capítulo 4), produz uma trajetória diferente da desejada, com erro acumulativo. Contudo, corrigindo alguns parâmetros do modelo cinemático do Khepera, o robô rastreia perfeitamente a trajetória desejada. Na Figura 5.3, são apresentados os sinais de controle para V, requeridos para que o robô atinja a trajetória desejada. Verifica-se que o rastreamento é possível de ser aplicado na prática, uma vez que não supera os limites de velocidade do robô.

Figura 5.3 – Sinais de controle para V Na Figura 5.4, a velocidade angular de controle - do centro do robô é apresentada. Depreende-se do seu comportamento a natureza retilínea da trajetória a ser seguida, pois se VE e VD tendem a se igualar (Figura 5.3), - tende para zero. A Figura 5.5 apresenta os erros de postura, definidos na Equação (5.2).

CAPÍTULO 5. CONTROLE E RESULTADOS

Figura 5.4 – Sinal de controle para -

Figura 5.5 – Erros de postura

89

CAPÍTULO 5. CONTROLE E RESULTADOS

90

Os erros de postura da Figura 5.5 levam em consideração o modelo cinemático do robô com seus parâmetros corrigidos. Pelo comportamento apresentado (estabilidade assintótica em torno de ep = 0) por estes erros, conclui-se que o desempenho do sistema de controle adotado é adequado. O tempo de amostragem (passo de integração da simulação) considerado nas simulações foi de T = 0,01 s, igual ao adotado por [44]. Ainda, da integração da informação da velocidade, observada na Figura 5.3, obtém-se a Figura 5.6. Esta apresenta tanto as distâncias de deslocamento das rodas, dadas por 3DE e 3DD, respectivamente, roda esquerda e roda direita, quanto a do centro do robô, dada por 3D.

Figura 5.6 – Distâncias para o deslocamento do robô Outra trajetória simulada, e que pode ser observada na Figura 5.7 é o segmento de curva. Para esta, os ganhos do controlador utilizados na trajetória anterior foram mantidos, ou seja, K = (48 0,12 0,48)T. Entretanto, mudaram as posturas e velocidades de controle para pr = (5 0 !/2)T, p = (0 0 !/2)T, Vr # 2,8 cm/s e -r # -0,15 rad/s.

CAPÍTULO 5. CONTROLE E RESULTADOS

91

Figura 5.7 – Khepera rastreando uma trajetória curvilínea As demais figuras, isto é, as Figuras 5.8, 5.9, 5.10 e 5.11, mostram, respectivamente, os resultados para as velocidades de controle linear, angular, os erros de postura e o deslocamento do robô para a trajetória desejada.

CAPÍTULO 5. CONTROLE E RESULTADOS

Figura 5.8 – Sinais de controle para V

Figura 5.9 – Sinal de controle para -

92

CAPÍTULO 5. CONTROLE E RESULTADOS

Figura 5.10 - Erros de postura

Figura 5.11 - Distâncias para o deslocamento do robô

93

CAPÍTULO 5. CONTROLE E RESULTADOS

94

As Figuras 5.12 e 5.13 apresentam o resultado obtido para uma trajetória de referência do tipo fechada, isto é, partindo de um ponto e retornando a ele. Na Figura 5.12, percebe-se claramente uma diferença entre a postura final desejada e a obtida, quando o Khepera rastreia a trajetória de referência no sentido horário. Esta diferença é resultado da presença dos erros sistemáticos de odometria estudados no Capítulo 4.

Figura 5.12 – Khepera rastreando uma trajetória fechada no sentido horário A postura de partida do robô foi atribuída como p = (40 5 !)T e a de referência como pr = (40 10 !)T. Nas retas, as velocidades de controle foram de Vr # 1,6 cm/s e -r # 0 rad/s e durante as curvas de Vr # 1,6 cm/s (com VE # 2,4 cm/s e VD # 0,8 cm/s) e -r # -0,30 rad/s. Com relação aos ganhos do controlador de rastreamento, manteve-se os mesmos adotados anteriormente. A Figura 5.13 apresenta o mesmo tipo de trajetória a ser seguida pelo robô, porém, em sentido contrário, ou seja, anti-horário. As posturas de partida do robô e da referência foram atribuídas como: p = (40 5 0)T e pr = (40 10 0)T.

CAPÍTULO 5. CONTROLE E RESULTADOS

95

Figura 5.13 – Khepera rastreando uma trajetória fechada no sentido anti-horário Diante disto, obteve-se o resultado esperado, ou seja, a postura final do robô praticamente foi igual à desejada (ver Figura 5.13). Este resultado só pode ser obtido graças ao cancelamento dos parâmetros Ed e E Dr (ver Capítulo 4). Outra trajetória simulada diz respeito a um circuito sinuoso, fazendo com que o robô realize guinadas tanto para a direita quanto para a esquerda (ver Figura 5.14). Através deste circuito é possível observar melhor os efeitos do não seguimento da trajetória desejada (quando da não correção dos parâmetros cinemáticos do robô), pois mistura retas e curvas em vários sentidos. Para esta trajetória, a postura de partida do Khepera foi p = (40 5 !)T e da trajetória de referência foi pr = (40 10 !)T. As velocidades de controle do robô e os ganhos do controlador de rastreamento foram iguais aos adotados para a trajetória fechada.

CAPÍTULO 5. CONTROLE E RESULTADOS

96

Figura 5.14 – Khepera rastreando uma trajetória sinuosa

5.5 Resultados Experimentais Esta Seção traz alguns resultados experimentais com objetivo de comparar com os resultados das simulações da Seção anterior. Entretanto, devido a grande quantidade de pontos de interpolação gerados (passo da integração de 0,01 s nas simulações) nas trajetórias da Seção 5.4, foram feitas algumas otimizações. Estas otimizações visam resolver alguns problemas verificados na experimentação, como a demora em se atingir o ponto final da trajetória e a não capacidade em se corrigir os parâmetros cinemáticos, responsáveis pelos erros sistemáticos de odometria. Isto porque, como explanado no Capítulo 4 (Equação 4.84), a correção só é possível de ser realizada quando obtida uma diferença igual ou superior a 1 (um) pulso de encoder entre o lido e o desejado. Ainda, mesmo que o passo da integração utilizado nas simulações da Seção 5.4 fosse aumentado, problemas de orientação e de não seguimento da trajetória seriam verificados (somente em trajetórias compostas de curvas), prejudicando a postura final desejada para o robô. Este prejuízo dependeria diretamente do passo da integração, do ângulo das curvas e da distância a ser percorrida pelo robô.

CAPÍTULO 5. CONTROLE E RESULTADOS

97

Diante dos problemas comentados no parágrafo anterior, foram feitas as seguintes otimizações: a) A postura de partida do robô foi igual a de referência; b) Reduziu-se consideravelmente a quantidade de pontos da interpolação graças a separação entre as retas e as curvas presentes nas trajetórias; c) Nas curvas, a distância Dp (distância do centro do robô ao CIR – ver Capítulo 4, Figura 4.5) foi definida como o produto entre a velocidade V do robô e a distância do seu centro às rodas dada por Dr 2 , isto é, D p = V . ( D r 2)

(5.4)

∆D = ∆!.D p

(5.5)

Sendo assim, como

logo, ∆D E = ∆!.V E . ( Dr 2)

(5.6)

∆D D = ∆!.V D .( Dr 2)

(5.7)

e

A diferença (em software) entre VE e VD deve ser igual a 2 pulsos/10ms de modo a manter a distância entre as rodas do robô sempre igual a Dr, já que em hardware este valor é fixo. Estas alterações, além de tornarem possível a correção dos erros de odometria, também propiciaram ao robô atingir a postura final no tempo previsto. Se as simulações forem utilizadas apenas como forma de comparação, somente a primeira otimização (item (a)) se faz necessária. Assim, novas simulações foram realizadas. Nas Figuras 5.15, 5.16 e 5.17, podem ser observados os resultados obtidos.

CAPÍTULO 5. CONTROLE E RESULTADOS

98

Figura 5.15 - Khepera rastreando uma trajetória fechada no sentido horário A postura de partida do robô na Figura 5.15 foi atribuída como p = (40 10 !)T e a posição de chegada obtida (considerando os erros de odometria) foi x = 41,9 cm; y = 11,4 cm.

Figura 5.16 - Khepera rastreando uma trajetória fechada no sentido anti-horário

CAPÍTULO 5. CONTROLE E RESULTADOS

99

A postura de partida do robô na Figura 5.16 foi atribuída como p = (40 10 0)T e a posição de chegada obtida (considerando os erros de odometria) foi x = 39,9 cm; y = 10 cm.

Figura 5.17 - Khepera rastreando uma trajetória sinuosa A postura de partida do robô na Figura 5.17 foi atribuída como p = (40 10 !)T, a postura de chegada desejada como p = (24,7 41,5 !/2)T. A posição de chegada obtida (considerando o erros de odometria) foi x = 23,2 cm; y = 42 cm. Antes de apresentar os resultados experimentais, é necessário explicar o modo de controle adotado para o Khepera. Utilizou-se o modo de controle por posição, devido ao fato de requerer-se precisão em seus movimentos. No modo de controle por velocidade, a velocidade mínima das rodas é de aproximadamente 0,8 cm/s e incrementada na forma de pulsos, ou seja, a velocidade superior a mínima é de 1,6 cm/s. Isto implica em movimentos indesejáveis, caso fosse necessária, por exemplo, uma velocidade de controle de 1,2 cm/s. No modo de controle por posição, a unidade de deslocamento é o pulso de encoder e vale aproximadamente 0,08 mm, aumentando significativamente a precisão dos movimentos do robô. Assim, por intermédio de uma tabela de valores contendo as velocidades, as distâncias a serem percorridas nas retas pelas rodas esquerda e direita, e o ângulo das curvas, torna-se possível realizar e obter os resultados experimentais relativos às trajetórias simuladas. O

CAPÍTULO 5. CONTROLE E RESULTADOS

100

ângulo das curvas é um dado importante, pois, a partir dele fica fácil obter as distâncias percorridas pelas rodas, como pode ser verificado nas Equações 5.6 e 5.7. Para validar os resultados obtidos nas simulações, foram realizados vários experimentos com o Khepera (dez vezes para cada trajetória), sendo que a metade, considerando corrigido os erros sistemáticos de odometria. Seguem os resultados obtidos: • Trajetória Fechada - Sentido Horário: Após o robô percorrer a trajetória de referência gerada a partir da Tabela 5.1 (trajetória desejada na Figura 5.15) com a utilização do programa de controle do Apêndice A, obtiveram-se os resultados da Tabela 5.2: Tabela 5.1 – Valores de controle para a trajetória fechada (sentido horário) VE(pulso) VD(pulso) 2 3 2 3 2 3 2 3

2 1 2 1 2 1 2 1

DE(mm)

DD(mm)

200 200 200 200 -

200 200 200 200 -

θ° 90 90 90 90

Tabela 5.2 – Resultados obtidos para a trajetória fechada (sentido horário) Sem Correção n x (cm)

y (cm)

Com Correção n x (cm)

y (cm)

1

41,7

11,2

1

39,85

9,85

2

41,6

11,5

2

40,1

9,7

3

41,8

11,4

3

40,25

10,05

4

41,9

11,75

4

40,3

9,8

5

42,05

11,6

5

40,1

9,9

Média

41,81

11,49

Média

40,12

9,86

Quando plotados em um gráfico, adquirem a forma apresentada pela Figura 5.18.

CAPÍTULO 5. CONTROLE E RESULTADOS

101

Y [cm] 12 11,8 11,6 11,4 11,2 11 10,8 10,6 10,4 10,2

X [cm]

10 39,6

39,8

40

40,2

40,4

40,6

40,8

41

41,2

41,4

41,6

41,8

42

42,2

9,8

Sem Correção 9,6

Com Correção

9,4

c.g.Sem Correção

9,2

c.g.Com Correção

Figura 5.18 – Resultados obtidos para trajetória (fechada sentido horário) Analisando a Figura 5.18, pode-se perceber claramente os efeitos da correção realizada, apresentando um resultado bastante semelhante ao da simulação (ver Figura 5.15). Analisando novamente a Figura 5.18, agora considerando o centro de gravidade das duas regiões formadas (média dos valores de x e y da Tabela 5.2) e a posição desejada, obtémse um rc.g.H = 2,34 cm (sem correção) e um rc.g.H = 0,18 cm (com correção). Considerando estes dois valores, a melhora no erro do posicionamento final obtida com a correção dos erros sistemáticos de odometria foi de aproximadamente 13 vezes. • Trajetória Fechada - Sentido Anti-Horário: Após o robô seguir a trajetória de referência gerada a partir da Tabela 5.3 (ver Figura 5.16) utilizando o programa de controle do Apêndice A, obtiveram-se os seguintes resultados (Tabela 5.4 e Figura 5.19):

CAPÍTULO 5. CONTROLE E RESULTADOS

102

Tabela 5.3 – Valores de controle para a trajetória fechada (sentido anti-horário) VE(pulso) VD(pulso) 2 1 2 1 2 1 2 1

DE(mm)

DD(mm)

θ°

200 200 200 200 -

200 200 200 200 -

90 90 90 90

2 3 2 3 2 3 2 3

Tabela 5.4 – Resultados obtidos para a trajetória fechada (sentido anti-horário) Sem Correção n x (cm) 1

40,05

2

39,85

3

39,95

4

39,9

5

39,75

Média

39,9

Com Correção n x (cm)

y (cm) 9,75

y (cm)

1

39,95

9,9

10,1

2

40,05

9,95

10,25

3

40

10,15

9,95

4

40,15

10,05

9,8

5

40,2

9,7

9,97

Média

40,07

9,95

Y [cm] 12 11,8 11,6 11,4 11,2 11 10,8 10,6 10,4 10,2

X [cm]

10 39,6

39,8

40

40,2

40,4

40,6

40,8

41

41,2

41,4

41,6

41,8

42

42,2

9,8

Sem Correção 9,6

Com Correção

9,4

c.g.Sem Correção

9,2

c.g.Com Correção

Figura 5.19 - Resultados obtidos para trajetória fechada (sentido anti-horário)

CAPÍTULO 5. CONTROLE E RESULTADOS

103

Pela Figura 5.19, percebe-se que os efeitos da correção realizada apresentam um resultado bastante semelhante ao da simulação (ver Figura 5.16) e ao encontrado no Capítulo 4 (cancelamento dos erros provenientes a Ed e E Dr ). Da análise da Figura 5.19, obtém-se um rc.g.AH = 0,095 cm (sem correção) e um rc.g.AH = 0,086 cm (com correção), acarretando em uma melhora desprezível.

• Trajetória Sinuosa: Mantendo o mesmo procedimento adotado com as duas trajetórias anteriores e após utilizar os dados da Tabela 5.5, obtiveram-se os seguintes resultados (Tabela 5.6 e Figura 5.20): Tabela 5.5 – Valores de controle para a trajetória sinuosa VE(pulso) VD(pulso) 2 3 2 1 2 3 2

2 1 2 3 2 1 2

DE(mm)

DD(mm)

θ°

200 200 100 50

200 200 100 50

180 180 90 -

Tabela 5.6 – Resultados obtidos para a trajetória sinuosa Sem Correção n x (cm)

y (cm)

Com Correção n x (cm)

y (cm)

1

23,34

41,89

1

24,74

41,24

2

23,39

42,09

2

24,64

41,34

3

23,34

42,24

3

24,74

41,59

4

23,24

42,04

4

24,79

41,39

5

23,09

42,09

5

24,89

41,54

Média

23,28

42,07

Média

24,76

41,42

CAPÍTULO 5. CONTROLE E RESULTADOS

104

Y [cm] 42,6

42,4

42,2

42

41,8

41,6

X [cm] 22,8

23

23,2

23,4

23,6

23,8

24

24,2

24,4

24,6 41,4

24,8

41,2

25

25,2

Sem Correção Com Correção

41

40,8

c.g.Sem Correção c.g.Com Correção

Figura 5.20 - Resultados obtidos para a trajetória sinuosa Da análise da Figura 5.20, percebe-se que os resultados experimentais obtidos foram bastante semelhantes aos simulados (ver Figura 5.17). Fazendo os cálculos, obteve-se um rc.g. = 1,53 cm (sem correção) e um rc.g. = 0,10 cm (com correção). Levando-se em conta estes valores, a melhora no erro do posicionamento final, obtida após a correção dos erros sistemáticos de odometria, foi de aproximadamente 15 vezes.

5.6 Considerações Finais Através deste capítulo pode-se analisar de uma forma mais detalhada os efeitos dos erros de odometria e da sua correção. Diante dos resultados obtidos, tanto a forma de controle quanto o método de correção adotado demonstraram ser adequados, validando o estudo.

Capítulo 6

Conclusões e Trabalhos Futuros Nesta dissertação, foram abordados três importantes assuntos concernentes à robótica móvel: modelagem, odometria e controle. Sobre a modelagem, foram descritas as propriedades estruturais dos robôs móveis, dos tipos de rodas, das restrições associadas a cada roda e a caracterização dos robôs móveis em cinco classes com seus respectivos modelos cinemáticos de postura. Com relação à odometria destacou-se: um quadro comparando a odometria com outras técnicas de estimação de posicionamento e orientação, o modelo de odometria obtido a partir dos parâmetros cinemáticos do Khepera, e o método de avaliação e correção dos erros de odometria utilizado, denominado de UMBmark. No que se refere ao controle, utilizou-se a técnica de rastreamento de trajetórias, com a finalidade de verificar o comportamento do modelo cinemático de postura do Khepera mediante a correção de alguns de seus parâmetros.

6.1 Principais Contribuições As principais contribuições deste trabalho relacionam-se à modelagem, a estimação da posição e orientação e ao controle de robôs móveis, e são identificadas e comentadas a seguir: • Modelagem cinemática dos robôs móveis com acionamento por rodas e para as cinco classes possíveis, abordando os modelos cinemáticos de postura, os tipos de rodas e as restrições de movimento associadas; • Estudo das propriedades cinemáticas da Classe (2,0) com acionamento diferencial; • Utilização da odometria como forma de estimação da posição e orientação dos robôs móveis;

CAPÍTULO 6. CONCLUSÕES E TRABALHOS FUTUROS

106

• Avaliação e correção dos erros sistemáticos de odometria em robôs móveis com acionamento diferencial através do método UMBmark. Aplicação do método a plataforma Khepera. Os resultados obtidos evidenciaram a necessidade de correção de alguns dos parâmetros cinemáticos do robô; • Incorporação dos resultados do método UMBmark em situações de controle. Utilizouse a técnica de controle de rastreamento em coordenadas cartesianas como forma de verificar a posição e orientação do Khepera, após a correção de alguns de seus parâmetros cinemáticos. Diversos resultados de simulação ilustram o bom desempenho da estratégia de controle adotada; • Otimização das trajetórias utilizadas, de modo a confrontar os resultados experimentais com os simulados. Devido a grande quantidade de pontos de interpolação gerados (em virtude do baixo passo de integração utilizado nas simulações) foram feitas algumas otimizações, com o objetivo do robô atingir o ponto final da trajetória, no tempo desejado e com os seus parâmetros cinemáticos corrigidos.

6.2 Propostas de Trabalhos Futuros Com base neste trabalho, são sugeridos os seguintes temas, cujas investigações produzirão acréscimos significativos aos resultados já alcançados: • Inclusão da avaliação e correção dos erros não-sistemáticos de odometria [22]; • Emprego da estatística como forma de analisar os resultados obtidos de forma mais aprofundada e/ou decidir sobre a necessidade de novas correções dos erros de odometria; • Estudo e incorporação da informação de como os erros sistemáticos de odometria se propagam [20][21]. A idéia é incluir a incerteza dos sensores, adicionando-se um ruído gaussiano idêntico nos dois encoders; • Exploração do problema com a utilização de outras técnicas de estimação da posição e orientação (GPS, bússola digital, landmarks, e etc) [17][18]; • Fusão da odometria com outras técnicas de estimação da posição e orientação. Em [16][46], integra-se a informação de orientação fornecida por um odômetro com a

CAPÍTULO 6. CONCLUSÕES E TRABALHOS FUTUROS

107

informação de uma bússola digital mediante um filtro de Kalman. Em [47], técnicas de processamento de imagens, baseadas em landmarks, são combinadas com as informações de encoders, através de um filtro de Kalman Estendido. Já em [48], os dados obtidos dos encoders são combinados com uma imagem que contenha pontos conhecidos (posição e orientação conhecidas) do ambiente. Estes pontos podem ser identificados na imagem através da Transformada de Hough ou através da comparação da imagem com mapas do ambiente e a posição do veículo em relação a este ponto conhecido computada. Mais uma vez, a fusão dos dados pode ser feita utilizando-se um Filtro de Kalman Estendido; • Utilização de um módulo de comunicação por rádio entre o computador e o Khepera ao invés de fio, como forma de reduzir os erros não-sistemáticos de odometria e aumentar o raio de ação do robô; • Aplicação das técnicas de estimação da posição e orientação em combinação com algoritmos reativos, tal como o veículo de Braitenberg [49]; • Aplicação das técnicas de estimação da posição e orientação em conjunto com técnicas de planejamento de trajetória [7][14], por exemplo: grafos de visibilidade, mapas de grid, campos de potencial, diagramas de Voronoi, lógica Fuzzy ou splines; • Aplicação das técnicas de estimação da posição e orientação em conjunto com técnicas de navegação autônoma empregando inteligência artificial, por exemplo, redes neurais [15], algoritmos genéticos, ou processamento de imagens baseadas na imposição de limiares [42], ultra-som, e infravermelho; • Estudo e inclusão da modelagem dinâmica do robô; • Melhoria na obtenção dos resultados experimentais, por exemplo, através da monitoração gráfica em tempo real do deslocamento do robô; • Hierarquização do controle do robô em camadas de prioridade através da Arquitetura de Assunção [50], o que permitiria a realização de várias tarefas ao mesmo tempo, por exemplo, a detecção de obstáculos, seguimento de fontes de luz, recarga de energia, e etc, combinadas com as técnicas de predição e correção da posição e orientação; • Implementar outras técnicas de controle, tais como: coordenadas polares, via modos deslizantes ou realimentação variante no tempo [19][33].

CAPÍTULO 6. CONCLUSÕES E TRABALHOS FUTUROS

108

• Relacionar e desenvolver o estudo a outros tipos de robôs móveis, inclusive os industriais, por exemplo, os AGVs.

Apêndice A

Programa UMBmark-Khepera A seguir é fornecida a listagem completa do programa UMBmark adaptado ao Robô Khepera implementado em MATLAB®, juntamente com a tabela de valores para controle.

A.1 Valores de Controle • Sentido Horário Tabela A.1 – Valores de controle para o sentido horário VE(pulso) VD(pulso) 2 1 2 1 2 1 2 1

2 -1 2 -1 2 -1 2 -1

DE(mm)

DD(mm)

300 300 300 300 -

300 300 300 300 -

θ° 90 90 90 90

• Sentido Anti-Horário Tabela A.2 – Valores de controle para o sentido anti-horário VE(pulso) VD(pulso) 2 -1 2 -1 2 -1 2 -1

2 1 2 1 2 1 2 1

DE(mm)

DD(mm)

θ°

300 300 300 300 -

300 300 300 300 -

90 90 90 90

APÊNDICE A. PROGRAMA UMBMARK-KHEPERA

110

A.2 Programa UMBmark adaptado ao Khepera % %Programa UMBmark adaptado ao Robô Móvel Khepera - desenvolvido por Jonas Pereira % load 'valores.txt'; %constantes físicas nominais do Khepera em [mm]: Rn=7.81; %raio das rodas Drn=53; %distância entre rodas %constantes físicas atuais do Khepera em [mm]: re=7.798962; %raio da roda esquerda rd=7.821038; %raio da roda direita Dra=53.5339; %distância entre rodas %%unidade de velocidade [mm/s]: %v=8.1786; %%unidade de deslocamento [mm]: ud=0.081786; %correção da leitura dos encoders: Ce=1; %fator de correção p/ roda esq. --> =1 (sem correção) Cre=1/Ce; Cd=1; %fator de correção p/ roda dir. --> =1 (sem correção) Crd=1/Cd; %correção da distância entre rodas. DrC --> =1 (sem correção) DrC=1; %DrC=Dra/Drn; %carrega tabela de valores Ve=valores(:,1); %velocidade roda esq. Vd=valores(:,2); %velocidade roda dir. De=valores(:,3); %distancia roda esq. Dd=valores(:,4); %distancia roda dir. Tetagraus=valores(:,5); %angulo das curvas ou rotações %programa principal ref=kopen([0,38400,1]); kBios(ref);

%abre a porta serial (comunicação com o Khepera)

Q=size(valores,1); %quantidade Q de linhas da matriz valores for n=1:Q kSetProfile(ref,Ve(n),256,Vd(n),256); % % Retas % if Ve(n) == Vd(n) p=abs((De(n)/ud)-(Cre*(De(n)/ud))); Ma=floor(p); %calcula a quantidade if Ma == 0 Ma=1; end per=Cre*(De(n)/ud); %pulsos desej. pdr=Crd*(Dd(n)/ud); %pulsos desej. xpe=round(per/Ma); %pulsos desej. xpd=round(pdr/Ma); %pulsos desej.

%calcula a dif. p de pulsos Ma de marcos artificiais

p/ p/ p/ p/

a a a a

roda roda roda roda

esq. dir. esq. dir.

p/ p/ p/ p/

o o o o

desloc. total desloc. total segm. de reta segm. de reta

APÊNDICE A. PROGRAMA UMBMARK-KHEPERA

111

m=0; for m=1:Ma kSetEncoders(ref,0,0); pos=kGetEncoders(ref); Gxpe=abs(pos(1)); Gxpd=abs(pos(2)); while (Gxpe < xpe)|(Gxpd < xpd) kMoveTo(ref,xpe,xpd); pos=kGetEncoders(ref); Gxpe=abs(pos(1)); Gxpd=abs(pos(2)); end end % % Curvas ou Rotações: obs.: nas Rotações usar Ve=1 e Vd=-1 ou vice-versa. % elseif Ve(n) ~= Vd(n) Tetarad=(Tetagraus(n)*pi)/180; %converte graus p/ radianos DeltaDe=abs(Tetarad*(Ve(n)*(DrC*(Drn/2)))); %distancia p/ a roda esq. DeltaDd=abs(Tetarad*(Vd(n)*(DrC*(Drn/2)))); %distancia p/ a roda dir. if DeltaDe DeltaDd p=abs((DeltaDd/ud)-(Crd*(DeltaDd/ud))); %calcula a dif. p de pulsos Ma=floor(p); %calcula a quantidade Ma de marcos artificiais if Ma == 0 Ma=1; end end per=Cre*(DeltaDe/ud); %pulsos desej. p/ a roda esq. p/ o desloc. total pdr=Crd*(DeltaDd/ud); %pulsos desej. p/ a roda dir. p/ o desloc. total xpe=round(per/Ma);%pulsos desej. p/ a roda esq. p/ o segm. de curva xpd=round(pdr/Ma);%pulsos desej. p/ a roda dir. p/ o segm. de curva m=0; for m=1:Ma kSetEncoders(ref,0,0); pos=kGetEncoders(ref); Gxpe=abs(pos(1)); Gxpd=abs(pos(2)); while (Gxpe < xpe)|(Gxpd < xpd) kMoveTo(ref,xpe,xpd); pos=kGetEncoders(ref); Gxpe=abs(pos(1)); Gxpd=abs(pos(2)); end end end kStop(ref); end kclose(ref);

%fecha a porta serial (comunicação com o Khepera)

Apêndice B

Programa Rastreador-Khepera A seguir é fornecido em diagrama de blocos - SIMULINK®, o programa do controlador de rastreamento de trajetórias utilizado nas simulações, juntamente com os programas em MATLAB® com os parâmetros de controle e de exibição dos gráficos.

B.1 Programa em Diagrama de Blocos

Figura B.1- Diagrama de blocos do controlador de rastreamento de trajetórias

APÊNDICE B. PROGRAMA RASTREADOR-KHEPERA

Figura B.2 – Bloco velocidades de referência

Figura B.3 – Bloco modelo de referência

113

APÊNDICE B. PROGRAMA RASTREADOR-KHEPERA

Figura B.4 – Bloco Te (erro de postura)

Figura B.5 – Bloco controle de rastreamento

114

APÊNDICE B. PROGRAMA RASTREADOR-KHEPERA

Figura B.6 – Bloco modelo cinemático do robô

Figura B.7 – Bloco conversão de velocidades

115

APÊNDICE B. PROGRAMA RASTREADOR-KHEPERA

Figura B.8 – Bloco modelo cinemático do robô1

Figura B.9 – Bloco Te1 (erro de postura)

116

APÊNDICE B. PROGRAMA RASTREADOR-KHEPERA

B.2.1 Parâmetros de Controle

% %Parâmetros de controle % %constantes físicas nominais do Khepera em [cm]: r=0.781; %raio das rodas Drn=5.3; %distância entre rodas %constantes físicas atuais do Khepera (após correção) em [cm]: re=0.7798962; %raio da roda esquerda rd=0.7821038; %raio da roda direita Dra=5.353393; %distância entre rodas %unidade de velocidade [0.81786 cm/s] = [1 pulso/10ms]: uv=0.81786; %velocidade do robô em [pulsos/10ms]: v=2; %velocidade do robô em [cm/s]: V=v*uv; %correção das velocidades: Ce=1; %fator de correção p/ roda esq. --> =1 (sem correção) Cre=1/Ce; Cd=1; %fator de correção p/ roda dir. --> =1 (sem correção) Crd=1/Cd; %correção da distância entre rodas. DrC --> =1 (sem correção) DrC=1; %DrC=Dra/Drn; %postura inicial de referência: xi=40; yi=10; tetai=0; %postura inicial do robô: xir=40; yir=10; tetair=0; %ganhos do controlador de rastreamento: k1=48; k2=0.12; k3=0.48;

117

APÊNDICE B. PROGRAMA RASTREADOR-KHEPERA

B.2.2 Exibe Gráficos % %exibe gráficos % clc; load load load load load load load load load load load

'robor'; 'pr'; 'p'; 'preal'; 'ep'; 'epreal'; 'VdVe'; 'VdrealVereal'; 'Vref'; 'Vc'; 'Vcreal';

while 1, which = menu('RESULTADOS', ... 'Posição XY de ref. versus do robô desejada e real', ... 'Erro de postura desejado', ... 'Erro de postura real', ... 'Velocidades desejadas', ... 'Velocidades reais', ... 'Velocidade angular desejada versus real',... 'Velocidade submetida ao robô',... 'Distância percorrida pelo robô',... 'Saída'); if which == 1, clf; %gráfico xyr versus xy plot(pr(2,:), pr(3,:),'green',p(2,:), p(3,:),'blue', preal(2,:), preal(3,:),'red'); grid on; xlabel('X [cm]'); ylabel('Y [cm]'); zoom on; elseif which == 2, clf; %gráfico ep1, ep2 e ep3 t = ep(1,:); subplot(3,1,1); plot(t, ep(2,:),'blue'); grid on; ylabel('ep1 [cm]'); zoom on; subplot(3,1,2); plot(t, ep(3,:),'blue'); grid on; ylabel('ep2 [cm]'); zoom on; subplot(3,1,3); plot(t, ep(4,:),'blue'); grid on; xlabel('t [s]'); ylabel('ep3 [rad]'); zoom on;

118

APÊNDICE B. PROGRAMA RASTREADOR-KHEPERA elseif which == 3, clf; %gráfico ep1real, ep2real e ep3real tr = epreal(1,:); subplot(3,1,1); plot(tr, epreal(2,:),'blue'); grid on; ylabel('ep1 [cm]'); zoom on; subplot(3,1,2); plot(tr, epreal(3,:),'blue'); grid on; ylabel('ep2 [cm]'); zoom on; subplot(3,1,3); plot(tr, epreal(4,:),'blue'); grid on; xlabel('t [s]'); ylabel('ep3 [rad]'); zoom on; elseif which == 4, clf; %gráfico Vc, Vd e Ve; tc= Vc(1,:); t = VdVe(1,:); plot(tc, Vc(2,:),'blue', t, VdVe(2,:),'red', t, VdVe(3,:),'magenta'); grid on; ylabel('V [cm/s]'); zoom on; elseif which == 5, clf; %gráfico Vcreal, Vdreal e Vereal; tcr = Vcreal(1,:); tr= VdrealVereal(1,:); plot(tcr, Vcreal(2,:),'black', tr, VdrealVereal(2,:),'green', tr, VdrealVereal(3,:),'cyan'); grid on; xlabel('t [s]'); ylabel('V [cm/s]'); zoom on; elseif which == 6, clf; %gráfico Wc e Wcreal; tc= Vc(1,:); tcr = Vcreal(1,:); plot(tc, Vc(3,:),'blue', tcr, Vcreal(3,:),'red'); grid on; xlabel('t [s]'); ylabel('V [cm/s]'); zoom on; elseif which == 7, clf; %gráfico velocidade (Vrd e Vre) submetida ao robô; t= robor(1,:); plot(t, robor(2,:),'red', t, robor(4,:),'blue',t, ((robor(2,:))+(robor(4,:)))/2,'green'); grid on;

119

APÊNDICE B. PROGRAMA RASTREADOR-KHEPERA xlabel('t [s]'); ylabel('V [cm/s]'); zoom on; elseif which == 8, clf; %gráfico distancia percorrida pelo robô em função de Vrd e Vre; t= robor(1,:); plot(t, robor(3,:),'red', t, robor(5,:),'blue',t, ((robor(3,:))+(robor(5,:)))/2,'green'); grid on; xlabel('t [s]'); ylabel('D [cm]'); zoom on; elseif which == 9, close; break; end end

120

Referências Bibliográficas [1]

Aragão, A., Romero, R., Marques, E. (2000). Computação Reconfigurável Aplicada à Robótica. CORE’2000.

[2]

Da Silva, L. R. (2003). Análise e Programação de Robôs Móveis Autônomos da Plataforma Eyebot. (Dissertação de Mestrado, Programa de Pós-Graduação em Engenharia Elétrica). Universidade do Estado de Santa Catarina – UFSC. Florianópolis – SC.

[3]

http://www.frc.ri.cmu.edu/~hpm/talks/Robot.Figures/fig.ch2/p027.html

[4]

Vieira, R. De S. (1999). Protótipo de um Sistema de Monitoramento Remoto Inteligente. (Dissertação de Mestrado). Universidade do Estado de Santa Catarina – UFSC. Florianópolis – SC.

[5]

http://www.frc.ri.cmu.edu/~hpm/project.archive/Image.Archive/Stanford.AI.Lab. 1970s/sail.rod/Cart.side.1979.jpg

[6]

http://www.laas.fr/~matthieu/robots/images/hilare.gif

[7]

Heinen, F. J. (1999). Robótica Autônoma: integração entre planificação e comportamento reativo. (Trabalho de Iniciação Científica), Universidade do Vale do Rio dos Sinos – UNISINOS, São Leopoldo – RS, Brasil.

[8]

http://www.egeminusa.com/products/AGVS/vehicles/index3.htm

[9]

http://www.k-team.com/gallery/index.html

[10] http://br.wired.com/news/images/full/foto2.223.jpg [11] http://www.contrib.andrew.cmu.edu/%7Erjg/webrobots/alice99.jpg [12] http://grok.ecn.uiowa.edu/Main/Projects/nomad-climb.jpg [13] Silva, M. S., Machado, J. A. T. (2001). Sistemas Robóticos de Locomoção – Estado da Arte. Departamento de Engenharia Eletrotécnica, Instituto Superior de Engenharia do Porto. Porto, Portugal. [14] Ottoni, G. De L. (2000). Planejamento de Trajetórias para Robôs Móveis. (Projeto de Graduação do Curso de Engenharia de Computação), Fundação Universidade Federal do Rio Grande, Rio Grande – RS, Brasil.

REFERÊNCIAS BIBLIOGRÁFICAS

122

[15] Barreto, G. de A.; Araújo, A. F. R.; Rosa, M. de O (1997). Algoritmo de Busca Heurística Usando Redes Neurais Competitivas para Planejamento Ótimo de Trajetória de um Robô Móvel. Universidade de São Paulo – USP, São Carlos – SP, Brasil. [16] Lora, F. A. S., Hemerly, E. M., Lages, W. F. (1998). Sistema para Navegação e Guiagem de Robôs Móveis Autônomos. SBA Controle e Automação, Vol. 9, N° 3. [17] Borenstein, J.; Everett, H. R.; Feng, L. (1996). Where Am I? – Sensors and Methods for Mobile Robot Positioning. University of Michigan Tecnical Report, EUA. [18] Borenstein, J.; Everett, H. R.; Feng, L.; Wehe, D. (1996). Mobile Robot Positioning – Sensors and Techniques. University of Michigan, EUA. Invited paper for the Journal of Robotic Systems, Special Issue on Mobile Robots. Vol. 14, N° 4. págs. 231-249. [19] Lages, W. F. (1998). Controle e Estimação de Posição e Orientação de Robôs Móveis. (Tese de Doutorado), Instituto Tecnológico de Aeronáutica – ITA, São José dos Campos – SP, Brasil. [20] Valgas Filho, J. H. Á., Campos, M. F. M., (2002). Uma Metodologia de Correção Automática de Erros de Odometria Durante a Navegação do Robô. XIV Congresso Brasileiro de Automática, Natal – RN. [21] Mächler, P. (1998). Robot Positioning By Supervised and Unsupervised Odometry Correction. (Thèse de Docteur), École Polytechnique Fédérale de Lausanne – EPFL, Switzerland. [22] Borenstein, J.; Feng, L. (1994). UMBmark – A Method for Measuring, Comparing, and Correcting Dead-reckoning Errors in Mobile Robots. University of Michigan Tecnical Report, EUA. [23] Borenstein, J.; Feng, L. (1996). Measurement and Correction of Systematic Odometry Errors in Mobile Robots. University of Michigan, EUA. IEEE Transactions on Robotics and Automation, Vol. 12, N° 5. [24] Borenstein, J.; Feng, L. (1995). Correction of Systematic Odometry Errors in Mobile Robots. University of Michigan Tecnical Report, EUA. Procedings of the International Conference on Intelligent Robots and Systems (IROS’95) – Pitsburgh, Pennsylvania, págs. 569-574. [25] Martins de Lima, L. E. (1995). Modelagem e Controle de um Robô Móvel a Rodas. (Trabalho de Pós-Graduação), Universidade Federal do Espírito Santo, Vitória –ES, Brasil. [26] http://www.jpl.nasa.gov/technology/images_videos/iv_browse/D120299B1browse. jpg [27] http://robotics.jpl.nasa.gov/tasks/tmr/homepage.html

REFERÊNCIAS BIBLIOGRÁFICAS

123

[28] http://www.ai.mit.edu/projects/genghis/genghis.jpg [29] Brooks, R. A. (1989). A Robot that Walks; Emergent Behaviors from a Carefully Evolved Network.Artificial Intelligence Laboratory. Massachusetts Institute of Technology. [30] http://www-2.cs.cmu.edu/~mwm/rover/i/sojourner.jpg [31] Campion, G., Bastin, G., D’ Andréa-Novel, B. (1996). Structural Properties and Classification of Kinematic and Dynamic Models of Wheeled Mobile Robots. IEEE Transactions on Robotics and Automation, Vol. 12, N° 1, págs. 47-62. [32] Canudas de Wit, C.; Siciliano, B.; Bastin, G. (1996). Theory of Robot Control. SpringerVerlag, Londres. [33] De Oliveira, V. M. (2001). Técnicas de Controle de Robôs Móveis. (Dissertação de Mestrado), Universidade do Estado de Santa Catarina – UFSC, Florianópolis – SC. [34] Howard, A., Rorres, C. (2001). Álgebra Linear com Aplicações. Trad. Claus Ivo Doering. 8ª Ed., Bookman, Porto Alegre – RS. [35] Lages, W. F., Hemerly, E. M. (1998). Controle em Coordenadas Polares de Robôs Móveis com Rodas. Anais do XII Congresso Brasileiro de Automática, Vol. II, Págs. 605-610, Uberlândia – MG. [36] Jones, J. L., Flynn, A. M. (1993). Mobile Robots - Inspiration to Implementation. A K Peters, Wellesley – Massachusetts. [37] Alsina, P. J.(2002). Sistemas Robóticos Autônomos. (Apostila do curso disponível em: http://www.dca.ufrn.br/~pablo/cursos.html). Centro de Tecnologia, Departamento de Engenharia de Computação e Automação, Universidade Federal do Rio Grande do Norte – UFRN, Natal –RN. [38] http://www.k-team.com [39] Mondada,F., Franzi, E., Lenne, P. (1994). Mobile Robot Miniaturization: A tool for investigation in control algorithms. Experimental Robotics III, Proceedings of the Third International Symposium on Experimental Robotics, Kyoto, Japan. Págs. 501-513. [40] K-Team (1998). Khepera User Manual. Versão 5.0. Lausanne, Switzerland. [41] Floreano, F., Mondada, F. (1998). Evolutionary Neurocontrollers for Autonomous Mobile Robots. Swiss Federal Institute of Technology, Lausanne, Switzerland. [42] Bianchi, R. A. C., Costa, A. H. R., Simões, A. S. (2000). Comportamentos Reativos para Seguir Pistas em um Robô Móvel Guiado por Visão. Escola Politécnica da Universidade de São Paulo, São Paulo – SP, Brasil.

REFERÊNCIAS BIBLIOGRÁFICAS

124

[43] Michelon, R. (2000). Desvio de Obstáculos Utilizando um Ambiente Simulado para o Robô Móvel Khepera. (trabalho de conclusão do Curso de Informática). Universidade Regional Integrada do Alto Uruguai e das Missões – URI, Frederico Westphalen – RS, Brasil. [44] Pimentel, J. C. (2000). Técnicas de Visão Computacional e de Controle para Aplicação em Robótica Móvel. (Tese de Mestrado), Instituto Tecnológico de Aeronáutica – ITA, São José dos Campos – SP. [45] Ogata, K. (1998). Engenharia de Controle Moderno. Prentice Hall do Brasil, 3ª Edição. [46] Lora, F. A. S., Hemerly, E. M., Lages, W. F. (1997). Estimação em Tempo Real de Posição e Orientação de Robôs Móveis Utilizando Sensores com Diferentes Taxas de Amostragem. Anais do 3° Simpósio Brasileiro de Automação Inteligente, Vitoria-ES, págs. 453-458. [47] Lages, W. F., Hemerly, E. M., Pereira, L. F. A. (1996). Controle Linearizante de uma Plataforma Móvel Empregando Realimentação Visual. Anais do XI Congresso Brasileiro de Automática, São Paulo, págs. 537-542. [48] Lages, W. F., Hemerly, E. M. (1995). Técnicas para Estimação de Posição e Orientação de uma Plataforma Móvel. Instituto Tecnológico de Aeronáutica – ITA, São José dos Campos – SP. [49] Braitenberg, V. (1984). Vehicles: Experiments in syntetic psychology. Cambridge, MIT Press. [50] Xavier, J. E. M. (1996). Uma Estrutura para a Construção de Sistemas de Controle Baseados em Agentes para Robôs Móveis. Universidade Federal do Espírito Santo, Vitória –ES, Brasil.

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.