Escolar Documentos
Profissional Documentos
Cultura Documentos
FORTALEZA
2015
FORTALEZA-2015
TERMO DE APROVAÇÃO
AGRADECIMENTOS
A todos aqueles que contribuíram para que eu pudesse realizar esta obra,
familiares, primeiramente, e amigos. Em especial Natanael e Davi.
2 Timóteo 1:7
RESUMO
Nos últimos anos, um forte incentivo tem sido dado ao desenvolvimento de máquinas
para realizar atividades em ambientes hostis aos seres humanos ou em locais de difícil
acesso. Como é possível fazer inspeção, reconhecimento ou levar equipamentos a esses
locais e ainda desempenhar tarefas por longos períodos de tempo e retornar sem riscos?
O presente trabalho apresenta a construção de um robô hexápode biologicamente
inspirado, modelo tipo Phoenix, e de baixo custo para uso como plataforma de
desenvolvimento de arquiteturas de controle a fim de operar em ambientes não
estruturados, desconhecidos, ou hostis, pois, sendo um dos que se locomove por meio
de seis patas, apresenta vantagens para superar obstáculos em relação às outras
configurações de robôs móveis rotacionais, atendendo a necessidade de acesso a
ambientes de relevo acidentado ou com inclinação. O processo de manufatura de um
robô desse tipo é apresentado neste trabalho, contendo um desenho 3D no software
SOLID EDGE, um modelo utilizando acrílico como material de estrutura, servosmotores
de 9g e torque de aproximadamente 1,8 kg.cm como atuadores das patas, com três
graus de liberdade cada uma, e uma placa de desenvolvimento contendo um módulo de
controle da TIERTEX, com um microcontrolador da família PIC (o PIC 18F4550),
utilizando-se de interface USB para bootloader e linguagem C, com código escrito no
ambiente MPLAB X. Este projeto permitiu a construção do protótipo proposto, bem como
um firmware desenvolvido para acionamento inicial das patas, com o recurso de criar
sinais PWM variados para múltiplos servomotores, fazendo o robô deixar a posição de
repouso para uma posição elevada de espera para locomoção segura.
ABSTRACT
In recent years, a strong incentive has been given to the development of machines to
carry out activities in hostile environments to humans or hard to reach places. How you
can make inspection, recognition or take equipment to these places and still perform tasks
for long periods of time and return them safely? This paper presents the construction of a
biologically inspired hexapod robot, type model Phoenix, and low cost for use as a
development platform control architectures to operate in unstructured environments,
unknown, or hostile of them, being a robot that can walk with six legs, has advantages to
overcome obstacles in relation to other rotational mobile robot configurations, given the
need for access to rugged or tilted environments. The manufacturing method of a robot of
this type is presented in this paper, containing a 3D design in software SOLID EDGE,
using a model structure as acrylic material, 9g micro servos, with torque of approximately
1,8 Kg.cm how actuators of the legs, with three degrees of freedom each, and a
development board containing a control module TIERTEX with a PIC family
microcontroller (PIC 18F4550), using USB interface for bootloader and C language with
code written in MPLAB X environment. This project allowed the construction of the
proposed prototype, and firmware designed for initial activation of the legs, with ability to
create various PWM signals for multiple servos, making the robot let the rest position to a
raised position waiting for secure mobility.
Keywords: Mobile Robots Biologically Inspired. Robots with legs. Hexapod. Phoenix
Hexapod.
LISTA DE FIGURAS
Figura 1 - The Pigeon, pássaro mecânico a vapor, de Archytas de Tarentum. ..... 17
Figura 2 - Cavaleiro mecânico baseado nos desenhos de Leonardo da Vinci
(1452-1519) ....................................................................................................................... 18
Figura 3 - acima o pato mecânico de Jacques de Vaucanson, abaixo os três
bonecos autômatos dos irmãos Droz e ao lado foto do mecanismo de um dos
bonecos. ............................................................................................................................. 19
Figura 4 - Robô Explorador Viking (1975) .................................................................... 21
Figura 5 - Elementos funcionais de um robô................................................................ 25
Figura 6 - (a) Shakey; (b) Planejamento de trajetória por Lozano-Perez................ 29
Figura 7 - Evolução do robô humanoide da Honda até o robô Asimo. .................... 30
Figura 8 - Robô Dante usado para inspeção no de vulcão no Alaska ..................... 31
Figura 9 - Classificação segundo a anatomia .............................................................. 32
Figura 10 - (a) UAV MQ-9 Reaper, no Afeganistão, 4 de novembro de 2007; (b)
MQ-8B – helicóptero autônomo, 8 de maio de 2009. ................................................. 33
Figura 11 - (a) Quadrotor levando um bloco de concreto; (b) HALE-D – um LTA . 33
Figura 12 - (a) Robô Nereus; (b) AUV MT-88, já usado em salvamentos, na
Rússia. ................................................................................................................................ 34
Figura 13 - Remora 6000. ............................................................................................... 34
Figura 14 - Os quatro tipos básicos de roda: (a) roda comum com rotação em
torno do eixo motorizado; (b) roda com rotação na junta; (c) roda de três graus de
liberdade com pequenos rolos livres em volta; (d) roda esférica. ............................ 35
Figura 15 - (a) Rezero, robô com roda esférica; (b) robô omnidirecional. .............. 36
Figura 16 - (a) iRobot 710 Warrior; (b) Nanokhod ....................................................... 36
Figura 17 - (a) A-Pod; (b) Walking Harveste ................................................................ 37
Figura 18 - Classificação Segundo a funcionalidade .................................................. 39
Figura 19 - (a) Robô SILO-6, (b) Robô AIBO, (c) Robô Curiosity, (d) Robô AGV
Falcon F150 ....................................................................................................................... 41
Figura 20 - Esquema Geral do Sistema de Controle de um Robô Móvel. .............. 44
Figura 21 - Tipos de Atuadores: (a) Pistões Pneumáticos e Hidráulicos, (b) Pistões
Pneumáticos, (c) Motor AC, (d) Motor DC, (e) Motor de Passo, (f) Servo. ............. 47
Figura 22 - Mecanismos de Locomoção baseados em sistemas biológicos. ......... 55
Figura 23 - (a) Sistema original de Chebychev; (b) Mecanismo adaptado. ............ 57
Figura 24 - (a) Máquina quadrúpede da General Electric (b) Hexapode OSU....... 59
Figura 25 - Robô com uma pata ..................................................................................... 60
Figura 26 - (a) Robô WAP-1, (b) atual robô Asimo da Honda, (c) robô Sony Dream
............................................................................................................................................. 62
Figura 27 - (a) Big Dog (2008), (b) Ajax hexapod (2005) ........................................... 62
Figura 28 - (a) ASV, (b) robô quadrúpede do MIT. ..................................................... 63
Figura 29 - (a) Robô Genghis, (b) Robô Hannibal; Robôs com Arquitetura
Subsumption. ..................................................................................................................... 64
Figura 30 - Convenção de numeração de patas. ........................................................ 75
Figura 31 - Diagramas de Marcha de um hexápode: (a) wave gait, (b) ripple gait,
(c) tripod gait. ..................................................................................................................... 76
Figura 32 - Esquema de locomoção tripod gait em um hexápode. .......................... 76
Figura 33 - (a) pata do bio-sistema inspirado, (b) tipos de patas com três graus de
liberdade............................................................................................................................. 78
LISTA DE SIGLAS
SUMÁRIO
1 INTRODUÇÃO .......................................................................................... 13
1.1 Contextualização do Problema ............................................................... 13
1.2 Objetivos .................................................................................................. 14
1.2.1 Objetivos Gerais ...................................................................................... 14
1.2.2 Objetivos Específicos.............................................................................. 14
1.3 Justificativa .............................................................................................. 14
1.4 Metodologia.............................................................................................. 15
1.5 Escopo ...................................................................................................... 15
1.6 Estrutura do trabalho .............................................................................. 15
2 FUNDAMENTAÇÃO TEÓRICA ................................................................ 17
2.1 Contexto histórico ................................................................................... 17
2.2 Definições de Robô ................................................................................. 24
2.2.1 O que é e o que não é um robô .............................................................. 24
2.3 Robótica Móvel ........................................................................................ 28
2.4 Classificação de Robôs........................................................................... 31
2.4.1 Segundo a Anatomia ............................................................................... 32
2.4.2 Segundo o Tipo de Controle ................................................................... 37
2.4.3 Segundo a Funcionalidade ..................................................................... 38
2.5 Aplicações para a Robótica Móvel ......................................................... 40
2.6 Desafios de Implementação em Robótica Móvel .................................. 43
2.7 Componentes de um Robô Móvel .......................................................... 45
2.7.1 Estrutura Mecânica .................................................................................. 45
2.7.2 Atuadores ................................................................................................. 45
2.7.3 Sensores................................................................................................... 49
2.7.4 Controladores .......................................................................................... 53
2.7.5 Baterias..................................................................................................... 53
2.8 Locomoção............................................................................................... 54
2.9 Sistemas Robóticos de Locomoção por Patas ..................................... 56
2.9.1 Contexto Histórico e Primeiros Estudos ............................................... 57
2.9.2 Tipos de Robôs com patas ..................................................................... 60
2.9.3 Robôs Hexápodes ................................................................................... 65
1 INTRODUÇÃO
1.2 Objetivos
Este trabalho visa construir um robô de custo viável para estudo, do tipo
hexápode, tendo o design voltado à inspeção de locais de difícil acesso humano,
locais insalubres e/ou perigosos. Além de iniciar o controle primário dos
atuadores, que consiste em acionar as seis patas para locomoção.
1.3 Justificativa
1.4 Metodologia
1.5 Escopo
2 FUNDAMENTAÇÃO TEÓRICA
Figura 3 - Acima o pato mecânico de Jacques de Vaucanson, abaixo os três bonecos autômatos
dos irmãos Droz e ao lado foto do mecanismo de um dos bonecos.
(Fonte: http://pinterest.com)
Lei nº 1: Um robô jamais deve causar danos a um ser humano nem, por
inação, permitir que isso aconteça.
Lei nº 2: Um robô deve sempre obedecer à ordem do ser humano, a menos
que isso entre em conflito com a primeira Lei.
Lei nº 3: Um robô deve proteger sua própria existência a menos que isto
entre em conflito com a primeira ou a segunda lei.
Posteriormente foi formulada a Lei Zero, baseada nas outras três, que diz:
um robô não pode prejudicar a humanidade ou, por meio de sua falta de ação,
permitir que a humanidade sofra algum mal.
Essas leis devem dirigir o comportamento que um robô deve ter, mesmo
estando um pouco longe da aplicabilidade tecnológica atual, como robôs de uso
militar ou pelo fato da complexidade de criar robôs autônomos que ajam conforme
seres humanos. Entretanto, o conteúdo dessas leis pode servir de guia para
formular uma linha de diretrizes a serem aplicadas durante a concepção,
desenvolvimento, teste, implementação, utilização e manutenção de sistemas
robóticos (CLARKE, 1994).
Em 1948, após a invenção do transistor, os robôs puderam ser controlados
por computador e, em 1954, a primeira patente para um robô industrial controlado
por computador, chamado Programmed Article Transfer (Máquina de
Transferência Programada), foi criada e registrada por George Devol (1912-2011),
sendo sua principal função a de transferência de objetos de um ponto a outro.
Devol criou uma memória computadorizada, assim como um sistema de controle
com o nome de Universal Automation. Juntamente com Joseph F. Engelberger,
ambos desenvolvem o primeiro robô industrial pela Unimation Inc., primeira
empresa de robôs industriais, formada por eles em 1956. Já em 1961, o primeiro
robô UNIMATE, capaz de desempenhar várias tarefas automaticamente e
podendo ser reprogramado com custos pequenos, foi produzido e instalado na
General Motors, em Trenton, New Jersey. (BIANCHI, 2011; PIERE, 2002;
ROSÁRIO, 2005).
O primeiro sistema para visão de robôs surge em 1963 e o primeiro robô de
pintura, que podia ter sua trajetória treinada e armazenada, em 1966. Em meados
desta década, a confiabilidade, a qualidade e a produtividade oferecida por vários
21
1921 O dramaturgo Karel Kapek usa pela primeira vez a palavra ‘robot’ na
peça teatral Rossum’s Universal Robots (R.U.R.), que retrata a criação
de robôs para substituir o homem nos trabalhos pesados. O robô
começa a ser visto como uma máquina ‘humana’ com inteligência e
personalidade.
1969 O homem pisa no solo lunar pela primeira vez. Nessa época já se
utilizam manipuladores para recolher amostras e executar pequenas
tarefas em resposta ao comando de um controle remoto. O modo de
teleoperação serve para efetuar escavações e outras tarefas de
complexidade reduzida.
Sistemas de controle;
Sistema de percepção (sensoriamento);
Sistema de ação mecânica (manipulação ou locomoção);
Sistema de inteligência (processamento, representação, decisões, troca de
informações).
O P E R A D O R
DEFINIÇÃO DAS TAREFAS
COMUNICAÇÃO / INTELIGÊNCIA
CONTROLE / ACIONAMENTO
ESTRUTURA MECÂNICA
EXECUÇÃO
SENSORES INTERNOS DAS
TAREFAS
O ser humano, que visto pelo âmbito mecânico, é frágil, pois não pode
trabalhar em ambientes tóxicos ou contaminados, nem suporta
temperaturas extremas, executa número limitado de operações por período
de tempo. Contudo, ele é imensamente versátil, uma vez que a polivalência
de seu braço, com 7 graus de liberdade, e a adaptabilidade gerada por
meio de sua percepção e inteligência são imensuráveis.
26
Dessa forma, robôs podem ser definidos como máquinas que conjugam a
polivalência de telemanipuladores, o alto grau de automatismo de máquinas a
controle numérico e a adaptabilidade para que seja capaz de atuar em ambientes
desconhecidos (FERREIRA, 1991).
Segundo a AFRI (Association Française de Robotique Industrialle),
manipuladores modestos que executam automaticamente sequências, variáveis
ou fixas, de tarefas recebem denominação de robôs, mas não somente isso, pois
a Robótica deve englobar, com base na utilização de técnicas modernas de
controle, da informática e de novos sensores, todas as adaptações em máquinas
conhecidas ou desenvolvidas. Contudo, o R.I.A (Robotics Institute of America),
Instituto de Robótica da América, apresenta uma definição mais abrangente,
enfatizando a função de reprogramação ao invés da de adaptação: “Robô é um
manipulador multifuncional, reprogramável, projetado para mover materiais,
peças, ferramentas ou dispositivos específicos, por meio de movimentos
programáveis variáveis a fim de executar várias tarefas (FERREIRA, 1991;
BIANCHI, 2011).
De mesma forma, Mittal e Nagrath (2007) citam as categorias que a
Associação Japonesa de Robôs Industriais (Japanese Industrial Robot
Association – JIRA), juntamente com o Comitê de Padrões Industriais Japonês,
definiu para os robôs industriais:
(a) (b)
Fonte: Bombled (2011)
32
Robôs Móveis
Rodas
Esteiras
Pernas
Figura 10 - (a) UAV MQ-9 Reaper, no Afeganistão, 4 de novembro de 2007; (b) MQ-8B –
helicóptero autônomo, 8 de maio de 2009.
(a) (b)
Fontes: http://www.olive-drab.com-drones
(a) (d)
Figura 12 - (a) Robô Nereus; (b) AUV MT-88, já usado em salvamentos, na Rússia.
(a) (b)
Fonte: http://www.inovacaotecnologica.com.br-Nereus; Souza (2005)
(c)
Fonte: http://news.seadiscovery.com
Figura 14 - Os quatro tipos básicos de roda: (a) roda comum com rotação em torno do eixo
motorizado; (b) roda com rotação na junta; (c) roda de três graus de liberdade com pequenos rolos
livres em volta; (d) roda esférica.
(a) (b) (c) (d)
Figura 15 - (a) Rezero, robô com roda esférica; (b) robô omnidirecional.
(a) (b)
(a) (b)
(a) (b)
De acordo com cada tipo de controle, os robôs podem ser classificados nas
seguintes categorias:
38
Figura 19 – Robôs Móveis: (a) Robô SILO-6, (b) Robô AIBO, (c) Robô Curiosity, (d) Robô AGV
(a) (b)
(c) (d)
Cognição
Localização Posição
Mapa Global Planejamento da
no Mapa
Trajetória
Extração e Execução da
Interpretação das Trajetória
Informações
Comandos aos
Dado Bruto Atuadores
Sensoriamento Ação
Mundo Real
Estrutura Mecânica;
Atuadores;
Sensores;
Controladores;
Baterias.
2.7.2 Atuadores
Figura 21 - Tipos de Atuadores: (a) Pistões Pneumáticos e Hidráulicos, (b) Pistões Pneumáticos,
(c) Motor AC, (d) Motor DC, (e) Motor de Passo, (f) Servo.
(a) (b)
(d)
(c)
(e)
(f)
2.7.3 Sensores
Podem ser classificados ainda de acordo com Marchi (2001), que cita dois
grupos de sensores principais usados em robótica, os sensores de colisão
(fazendo referência aos sensores externos), usados para detecção de obstáculos
e mapear o ambiente externo, e os de posicionamento (internos), utilizados para
determinar a posição do robô.
São exemplos de Sensores Externos (MARCHI, 2001; SECCHI, 2012):
Sensor Infravermelho
Sendo um dos mais utilizados, com baixo custo e funcionamento simples,
este sensor emite luz infravermelha que, caso seja refletida por um objeto, é
captada por um receptor, permitindo ao controlador calcular a distância por
meio de incidência refletida.
Sonar
Sensor de baixo custo que se baseia pela emissão de um sinal ultrassônico
(alta frequência) que, ao atingir o obstáculo, é refletido e captado pelo
receptor (transdutor). O controlador obtém a distância calculando o tempo
entre início da emissão e recebimento da onda. Embora precise de pouco
processamento, pode haver falha no recebimento da onda, no caso de
objetos com superfície plana ou quando o receptor capta outra informação de
outro objeto, tornando a leitura imprecisa.
Laser
Apropriados para ambientes onde há mudanças na iluminação,
necessitando de circuitos para detectar de forma correta a alta velocidade do
feixe de luz, que é emitido em sequência rápida de período curto. O tipo mais
simples é semelhante aos infravermelhos, tendo um emissor e um receptor.
52
Câmeras
Utilizadas como sensores de visão para o robô, onde as imagens obtidas
são processadas por meio de reconhecimento de padrões, embora haja
sensibilidade à luz e complexidade envolvendo tal processamento.
Sensor de Contato
São representados por botões que são acionados em contato com algum
obstáculo.
Odômetro
Dispositivos que medem o estado interno e a dinâmica do robô, por meio
do cálculo da distância percorrida, sendo possível obter a posição estimada.
Os mais usados são os encoders, que é um transdutor no formato de um
disco com espaços radiais, que converte movimento angular dos motores em
pulsos digitais que são contabilizados.
Bússolas e Giroscópios
Tem como objetivo transmitir o ângulo do robô em relação ao ambiente,
embora sejam facilmente afetados por ruídos devido à sensibilidade do metal
usado. Compensam o maior problema nos sistemas odométricos, onde um
método de posicionamento baseado unicamente em odometria submetido a
um erro de orientação ou variação. Já um giroscópio baseia-se no princípio da
inércia, independente de coordenadas geográficas, ao contrário da bússola,
acoplados numa barra estabilizadora à estrutura do robô, não sendo afetado
por magnetismo, servindo como referência de direção.
GPS
Utilizado para determinar latitude e longitude em robôs por meio da
transmissão de dados com satélites em órbita no planeta, sendo mais
53
Triangulação e Trilaterização
Desenvolvida na Segunda Guerra Mundial, tendo a implementação original
conhecida como LORAN (Long Range Navigation), Navegação de Longo
Alcance, é um método de navegação passiva, onde o sistema faz uma
comparação dos tempos de chegada de dois sinais iguais gerados por
transmissores de coordenadas já determinadas. A diferença de tempo entre a
obtenção dos sinais é diretamente proporcional à distância entre os
transmissores e o robô. Já a Trilaterização é um sistema ativo que mede o
atraso de propagação de um sinal às estações conhecidas.
2.7.4 Controladores
O controlador é a parte do robô que opera outras partes que fazem parte
do próprio robô. Tal controle depende de atuadores, de sensores, de um algoritmo
de controle no software e de um hardware, tendo um retorno (feedback) de
informações para que atualize os comandos (velocidade do motor, posição,
localização do robô) (BRÄUNL, 2008).
2.7.5 Baterias
O fornecimento de energia está relacionado diretamente à autonomia do
robô, sendo necessário alimentar todos os sistemas que fazem parte dele, como
motores, sensores, controladores, comunicações, podendo ser por meio de
baterias de Chumbo, LI-Ion, NiCD, LiMH, entre outras, como energia alternativa
obtida de painéis solares (RIBEIRO, 2004).
54
2.8 Locomoção
Força gravitacional
Fluxo e hidrodinâmica
Onda
Força gravitacional
Rastejamento e fricção
Vibração longitudinal
Força gravitacional
e fricção
Deslizamento Vibração transversal
Força gravitacional Movimento
e atrito oscilatório
Corrida pendular
Movimento
Força gravitacional oscilatório
e atrito pendular -
Caminhada rolamento
(a) (b)
(a) (b)
Fontes: Bombled (2011); Demasi (2012)
60
Robôs com uma pata: o número mínimo de patas que um robô pode ter,
onde não é necessário coordenar movimentos com outras patas. Um robô nesta
configuração será bem sucedido somente se for dinamicamente estável, uma vez
que, para manter o equilíbrio ativo estável, deve mudar seu centro de gravidade e
transmitir forças para correção angular, movimento esse propício em terrenos
mais ásperos. Além disso, esses robôs podem ultrapassar orifícios no solo com
largura bem maior do que o passo deles, enquanto robôs com várias patas tem
que executar uma sequência de passos para locomoção limitada ao intervalo do
alcance. Robôs bípedes quando desempenham movimentos de corrida seguem o
mesmo modelo de estabilidade dinâmica de um robô com uma pata. A Figura 25
mostra o robô de “salto” de Raibert hopper, um dos mais conhecidos, fazendo
correções contínuas em salto, ajustando o ângulo da pata (dotada de mola e
conectada a uma bomba hidráulica) em relação ao corpo.
Figura 26 – Bípedes: (a) Robô WAP-1, (b) robô Asimo da Honda, (c) robô Sony Dream.
Robôs com quatro patas ou mais: a maioria dos robôs articulados por patas
já desenvolvidos enquadra-se nesta configuração. Embora com um número maior
de patas o robô fique passivelmente estável, a locomoção ainda continua um
desafio, pois, para manter essa estabilidade, o centro de gravidade deve se
deslocar durante a marcha. Contudo, Vieira (2010) fala sobre os fatores
estruturais, explicando que a construção de sistemas com quatro patas implicam
economia e simplificação do mecanismo, uma vez que o movimento é mais
simples e, consequentemente, a estrutura também, embora a desvantagem seja a
dificuldade em obter equilíbrio na locomoção, pois há menos pontos de contato
com o solo quando comparados aos de sistemas com seis patas.
Figura 27 – Robôs com patas: (a) Big Dog (2008), (b) Ajax hexapod (2005).
(a) (b)
(a) (b)
Fonte: Bombled (2011)
64
Figura 29 - Robôs com Arquitetura Subsumption: (a) Robô Genghis, (b) Robô Hannibal.
(a) (b)
Fonte: http://www.ai.mit.edu/projects/hannibal
67
Hexápode TUM (1991) Desenvolvido na Universidade Técnica de
Munique, tinha design e marcha inspirados em
estudos do inseto graveto, tendo cada pata três
graus de liberdade, sendo operadas por um
sistema de rede neural, ajustando a altura da
estrutura conforme o tamanho dos obstáculos
encontrados.
caso ocorre em robôs com seis ou oito patas. A desvantagem é que para manter
a estabilidade, a locomoção se torna mais lenta. Já no caso de dinamicamente
estável, a locomoção é mais rápida devido ao fato de o robô está em movimento
em todos os passos da marcha, pois a projeção do centro de gravidade não se
encontra sempre dentro do polígono formado pelas patas de suporte,
impossibilitando o equilíbrio estático do sistema. Isso ocorre com robôs bípedes
ou quadrúpedes (ERDEN, 2006).
Dentre os padrões de locomoção existentes, há três mais utilizados por
robôs com patas: wave gait, ripple gait e tripod gait. Uma convenção de
numeração das patas é adotada para melhor visualização, conforme é indicado
na Figura 30. A Figura 31 mostra o diagrama com os três padrões, onde a cor
branca indica a pata em contato com o solo e a cor preta, a pata suspensa.
No padrão wave, Figura 31 (a), o robô mantém cinco patas em contato com
o solo durante a locomoção, todas as patas de um lado movem-se
sucessivamente, começando com a pata traseira, e posteriormente isso é repetido
pelo lado oposto. É o mais lento, porém mais estável. No padrão ripple, Figura 31
(b), o robô alterna entre quatro e cinco patas no chão em determinado momento.
Já no caso do padrão tripod, Figura 31 (c), o robô faz uso de dois conjuntos de
três patas durante a locomoção, um conjunto serve de suporte, enquanto o outro
realiza o passo, sendo o mais rápido e mais comum. No caso de um robô
hexápode, pode haver mais um quarto tipo de padrão, chamado livre, onde o robô
escolhe qual modo de locomoção é mais adequado por meio de percepção do
ambiente, sobretudo o tipo de terreno (TEDESCHI; CARBONE, 2014).
L1
L2 R1
L3
R2
R3
Figura 31 - Diagramas de Marcha de um hexápode: (a) wave gait, (b) ripple gait, (c) tripod gait.
Os seis eventos são: retrair perna direita, liberar perna direita, retrair perna
esquerda, liberar perna esquerda, retrair ambas as pernas juntas e liberar ambas
as pernas juntas. Um robô de seis patas pode ter 39.916.800 possíveis eventos,
tornando o controle muito mais complexo.
Figura 33 - (a) pata do bio-sistema inspirado, (b) tipos de patas com três graus de liberdade.
(b)
Fontes: Machado (2001); Ridderström (2003); Kingsley (2005); Siegwart; Nourbakhsh (2004)
í
(3)
81
(4)
Τ (5)
Τ Τ
até aqui vários princípios e definições em relação aos robôs com patas e as
diferenças com relação às demais configurações.
Refinamentos
Validação do OK
De Design
Modelo
Cinemático
OK
Arranjo de atuadores e configurar modelo
dinâmico
OK Validação do
Modelo
Dinâmico
OK
Design ideal
OK
Arquitetura de
controle e validação
do gait
OK
END
Tipos de Patas
3.5 Atuador
Largura de pulso 1 ms – 2 ms
Registrador
Duty Cycle 1
Registrador
Duty Cycle 2
Laranja (Sinal)
Vermelho (+)
Marrom (-)
(6)
4 . . 65535
Tamanho da placa
(Botão)
(Cristal)
(Botão bootloader)
3.6.1 Bootloader
4 TRATAMENTO METODOLÓGICO
102
Como cada servomotor consome até 0.8 A em carga, e cada pata tem três
deles, a corrente que o sistema de seis patas pode vir a consumir é de 14,4 A.
Dessa forma, foi necessário o uso de reguladores de tensão e corrente, a fim de
fornecer a energia requerida. Além disso, a bateria utilizada foi uma Firefox de
Lítio-Polímero, com 7,4 V, 1,6 Ah e 20 C, o que requer um regulador para que a
tensão de entrada nos servomotores seja a de operação, no caso, 5 V.
O regulador escolhido foi o LM317, onde se pode ajustar a tensão de
saída, como mostra a Figura 57, por meio da utilização de dois resistores (R1 e
R2), conforme cálculo apresentado no datasheet do componente:
2 (7)
1 2
1
106
2 (8)
1
1
2
5 1,25 1
520
2 1,5. 10
Cada regulador pode fornecer até 3,4 A, sendo necessários cinco deles
ligados em paralelo para fornecer até 17 A.
Para suprir a alimentação para o módulo de controle, outro regulador foi
escolhido, o LM7805, podendo fornecer até 1,5 V e evitar sobrecarga, além de
fornecer tensão de saída e corrente, ambas ajustáveis.
Os pinos de recepção dos servomotores e do módulo de controle, os
reguladores e o botão de acionamento foram soldados conforme esquema,
utilizando ferro de solda de 60 W e uma placa protótipo de fenolite perfurada. Os
componentes soldados e a disposição deles na placa são demonstrados na
Figura 58.
107
(M2), uma vez que cada nível corresponde a uma porta do controlador (porta A, B
e D, respectivamente).
Conforme Equação 6, o período do PWM é controlado por um contador,
incrementado a cada interrupção. Sempre a cada início de interrupção, os pinos
de saída correspondentes a um nível de servomotores são colocados em nível
lógico alto. Posteriormente, o processo de contagem e comparação do valor de
contagem do Timer com o valor desejado de pulso são iniciados. Quando o valor
de contagem for maior ou igual ao valor desejado de pulso, a saída referente
àquele pino volta a nível lógico baixo, voltando ao nível lógico alto no início de um
novo período. No osciloscópio virtual do Proteus o perfil das ondas para os
motores dos três níveis é demonstrado na Figura 60. Os valores que
correspondem a 1 ms, 1,5 ms e 2 ms, para o posicionamento dos servomotores,
são respectivamente 35, 75 e 130.
Como acionamento primário, o programa aciona todos os servos de forma
que o robô saia da posição de repouso e entre em posição de espera, a uma
altura satisfatória do solo, esperando o comando.
5 TESTES E RESULTADOS
(9)
4 . . 65535
111
20000000
2000
4 . 4. 65535
Temos que o TMR inicial será de 64911, o que equivale a FD8F em valor
hexadecimal a ser carregado no registrador.
inserindo um novo limite de onda dente de serra para comparação com os valores
de referência para determinar os ângulos:
(10)
4 . . 255
20000000
50
4 . 2. 255
que uma das patas simulasse um ciclo de passo completo, conforme mostrado no
Apêndice C. A alimentação da placa foi por fonte externa, fornecendo 5 V e 3,4
mA. O resultado foi satisfatório e os motores não apresentaram vibração, pois foi
utilizada uma porta PWM especificada na placa para essa função.
A fundamentação teórica apresentada no Capítulo 2 e a metodologia
aplicada na construção do protótipo proposto mostraram-se eficientes como
alternativa dos problemas encontrados no decorrer do trabalho, como por
exemplo: como construir um robô de baixo custo aplicado a ambientes não
estruturados e como resolver a complexidade de controle de dezoito atuadores?
A modelagem por meio de uma ferramenta CAD possibilitou ver o protótipo
montado e previamente ver a viabilidade de construção, visualizar problemas de
conflitos mecânicos, ver a área de trabalho das patas e descrever
detalhadamente um plano de produção baseado das dimensões e posição das
peças, a fim de garantir reprodutibilidade do modelo proposto, iteração e tomadas
de decisões e ou modificações.
Embora o maquinário disponível fosse apenas furadeira de bancada com
fresa e micro retífica, o processo resultou peças com dimensões muito próximas
do modelo desenhado, facilitando o processo de acabamento. Não foi preciso
realinhar furos, pois o acrílico estava marcado em sua superfície com as devidas
posições.
Quanto ao protótipo da placa de circuito, esta se mostrou eficiente para os
testes de acionamento, mas pode ser reavaliada para uma placa definitiva por um
processo de placa de circuito impresso. Todos os conectores foram compatíveis
com os furos e o processo de soldagem não apresentou conflitos entre contatos.
116
REFERÊNCIAS
BRÄUNL, Thomas. Embedded Robotics: Mobile Robot Design and Applications with
Embedded Systems. Springer Science & Business Media. 2 ed. 2008
KURFESS, Thomas R. Robotics and Automation Handbook. CRC Press LLC, 2005.
NAGRATH, I. J.; MITTAL, R. K. Robotics and Control. 6. ed. Nova Deli: Tata McGraw-
Hill, 2007.
PIERI, Edson Roberto de. Curso de Robótica Móvel. UFSC–Universidade Federal de
Santa Catarina, 2002. Disponível em:
<http://www.adororobotica.com/CURSO_DE_ROBOTICA_MOVEL.pdf>, acesso em
04.09.2012.
NORTON, Robert L. Projeto de Máquinas: uma abordagem integrada. 2.ed São Paulo:
ARTMED, 2004. PRETZER, Willian S. Industrial Robot. Net, S.L, S.D. Disponível em:
<http://www.madehow.com/Volume-2/Industrial-Robot.html#b>, acesso em 14.12.2012
PRAÇA, Paulo. PWM - Modulação por Largura de Pulso. Prática 05. Universidade
Federal do Ceará. Técnicas Avançadas em Eletrônica Digital. Departamento de
Engenharia Elétrica. 2012.
RAIBERT, Marc H. Legged robots. Communications of the ACM, Volume 29, número
6:499–514. 1986. Disponível em:
<http://www.sci.brooklyn.cuny.edu/~sklar/teaching/f06/air/papers/p499-raibert.pdf>,
acesso em 03.06.2014.
RIBEIRO, Maria Isabel. Uma Viagem ao Mundo dos Robots. Ciclo Colóquios
Despertar para a Ciência. Universidade do Porto, p.1. 2004. Disponível em:
<http://users.isr.ist.utl.pt/~mir/pub/ViagemRobots-IsabelRibeiro05.pdf>, acesso em
28.10.2012.
APÊNDICE A
APÊNDICE B
CÓDIGO PIC
//HEXAPODE
#include <p18cxxx.h>
#include <delays.h>
void YourHighPriorityISRCode();
void YourLowPriorityISRCode();
//variáveis
//configuração do PWM
long int p_alta = 0xFF,
p_baixa = 0x37,
limite = 1820;//4 ciclos de 20ms/ que não tremem os motores
short int flag = 0;
long int serra=0;
long int ref[]={35,75,130};//1ms,1,5ms e 2ms em nível alto; valores que não vibram
int motor[]={243,//0b11110011, seta toda a porta D(BASE)
251,//0b11111011, seta toda a porta B(ART2)
63//0b00111111, seta toda a porta A(ART1)
};
#define BOOTVERSION // Using a PICKIT? comment this line out for a non‐
bootloaded version
#if !defined BOOTVERSION // Bootloaded code cannot set configuration register.
124
#pragma config PLLDIV = 5 // (20 MHz crystal )
#pragma config CPUDIV = OSC1_PLL2
#pragma config USBDIV = 2 // Clock source from 96MHz PLL/2
#pragma config FOSC = HSPLL_HS // 48Mhz operation
#pragma config FCMEN = OFF
#pragma config IESO = OFF
#pragma config PWRT = OFF
#pragma config BOR = ON
#pragma config BORV = 3
#pragma config VREGEN = ON //USB Voltage Regulator
#pragma config WDT = OFF
#pragma config WDTPS = 32768
#pragma config MCLRE = ON
#pragma config LPT1OSC = OFF
#pragma config PBADEN = OFF
#pragma config STVREN = ON
#pragma config LVP = OFF
#pragma config XINST = OFF // Extended Instruction Set
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CPB = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRTB = OFF // Boot Block Write Protection
#pragma config WRTC = OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
125
#pragma config EBTRB = OFF
#endif
// set addresses of reset, high int and low int.
#if defined BOOTVERSION
#define REMAPPED_RESET_VECTOR_ADDRESS 0x1000
#define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS 0x1008
#define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS 0x1018
#else
#define REMAPPED_RESET_VECTOR_ADDRESS 0x00
#define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS 0x08
#define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS 0x18
#endif
// If bootloaded a reset vector needs to be added at 0x1000 to point to 'c' start‐up code.
// It's done automatically for non‐bootloaded code.
#if defined(BOOTVERSION)
extern void _startup (void); // This runns the 'c' statud routines in c018i.c (system 'c'
file)
#pragma code REMAPPED_RESET_VECTOR = REMAPPED_RESET_VECTOR_ADDRESS
void _reset (void)
{
_asm goto _startup _endasm
}
#endif
// Insert actual interrupt vectors
#pragma code REMAPPED_HIGH_INTERRUPT_VECTOR =
REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS
void Remapped_High_ISR (void)
126
{
_asm goto YourHighPriorityISRCode _endasm
}
#pragma code REMAPPED_LOW_INTERRUPT_VECTOR =
REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS
void Remapped_Low_ISR (void)
{
_asm goto YourLowPriorityISRCode _endasm
}
// This bit of code is for safety, but not always needed. It puts interuupt vectors at 0x8 and 0x18 in
case you program a bootversion
// of this code on a system not using the bootloader. The bootloader ignores all code below
0x1000 so will not program this.
#if defined(BOOTVERSION)
#pragma code HIGH_INTERRUPT_VECTOR = 0x08
void High_ISR (void)
{
_asm goto REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS _endasm
}
#pragma code LOW_INTERRUPT_VECTOR = 0x18
void Low_ISR (void)
{
_asm goto REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS _endasm
}
#endif
#pragma code
//These are your actual interrupt handling routines.
//
127
#pragma interrupt YourHighPriorityISRCode
void YourHighPriorityISRCode()
{
// for this demo we will use a timer interrupt to toggle the LED RE0 (RD2 TDS4550MINI)
if (INTCONbits.TMR0IF == 1 ) // is it a timer 0 interrupt?
{
INTCONbits.TMR0IF = 0; // yes, so reset the
interrupt flag.
TMR0L = p_baixa;
TMR0H = p_alta;
serra++;
flag=1;
}
} //This return will be a "retfie fast", since this is in a #pragma interrupt section
#pragma interruptlow YourLowPriorityISRCode
void YourLowPriorityISRCode()
{
//Check which interrupt flag caused the interrupt.
//Service the interrupt
//Clear the interrupt flag
//Etc.
}
void pwm_base();
void pwm_art1();
void pwm_art2();
void repouso();
128
void main()
{
ADCON1 = 0x0F; // Default all pins to
digital
// set up the Port I/O directions
TRISD = 0;//Pinos utilizados: 0b00000000, mas D2 e D3 são LEDS
TRISB = 0b00000100;//Pinos utilizados: 0b00000100. pois B3 é um botão
TRISA = 0;//Pinos utilizados: 0b00000000
// set up the Timer 0 interrupt.
T0CON = 0x88; // 16 bit timer, 1 prescaler. (
interrupt every 20000000 / 4*1*65536 )
TMR0L = p_baixa;
TMR0H = p_alta;
INTCON2bits.TMR0IP = 1; // Make the Timer 0 interrupt a
high priority interrupt
INTCONbits.TMR0IE = 1; // Enable the Timer 0 interrupt
INTCONbits.GIE=1; // Global interrupts on
while(1)
{
PORTDbits.RD2 = 1;//Para led mostrar que o sistema está ligado
if (serra==limite)serra=0;//período aproximado de 20ms necessário para serra
repouso();
}
129
}
//FUNÇÕES DO PROGRAMA
/*Função PWM possui como primeiro valor a referência e segundo valor os pinos ativados no
PWM*/
//void pwm_base(referencia de tempo, pinos setados)
void pwm_base(int aux, int aux2)//{35,75,130};//1ms,1,5ms e 2ms em nível alto
{ if (serra<=aux)
LATD = aux2;//pinos da porta setados em nível alto
else LATD = 0;//pulso baixo no resto do tempo
}
void pwm_art1(int aux, int aux2)
{ if (serra<=aux)
LATA = aux2;
else LATA = 0;//pulso baixo no resto do tempo
}
void pwm_art2(int aux, int aux2)
{ if (serra<=aux)
LATB = aux2;
else LATB = 0;//pulso baixo no resto do tempo
}
void repouso()//Falta um timer pra garantir a posição do robô
{
pwm_base(ref[1],motor[0]);//void pwm_XXX(referencia de tempo, pinos setados)
pwm_art1(ref[1],motor[2]);//{35,75,130};//1ms,1,5ms e 2ms em nível alto
pwm_art2(ref[1],motor[1]);
}
130
#include <p18cxxx.h>
#include <delays.h>
void YourHighPriorityISRCode();
void YourLowPriorityISRCode();
//variáveis
//configuração do PWM
int p_alta = 0xFF,
p_baixa = 0x9B;//155 no timer
int function = 0;//Funcção para swtich que muda conforme aperta o botão B2
{
_asm goto YourHighPriorityISRCode _endasm
}
#pragma code REMAPPED_LOW_INTERRUPT_VECTOR =
REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS
void Remapped_Low_ISR (void)
{
_asm goto YourLowPriorityISRCode _endasm
}
// This bit of code is for safety, but not always needed. It puts interuupt vectors at
0x8 and 0x18 in case you program a bootversion
// of this code on a system not using the bootloader. The bootloader ignores all
code below 0x1000 so will not program this.
#if defined(BOOTVERSION)
#pragma code HIGH_INTERRUPT_VECTOR = 0x08
void High_ISR (void)
{
_asm goto REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS
_endasm
}
#pragma code LOW_INTERRUPT_VECTOR = 0x18
void Low_ISR (void)
{
_asm goto REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS
_endasm
}
#endif
#pragma code
134
}
} //This return will be a "retfie fast", since this is in a #pragma interrupt
section
void pwm_base();
void pwm_art1();
void pwm_art2();
void acordar();
void main()
{
while(1)
136
{
PORTDbits.RD2 = 1;//Para led mostrar que o sistema está ligado
switch (function)
{
case 0:// acordar(); //Essa função coloca todos as articulações em
pouco mais de 90º
if (serra<=ref[0]) LATB=art2; else LATB=0;
if (serra<=ref[1])
{
LATA=art1;
LATD=base;
}
else {LATA=0;LATD=0;}
break;
case 1://Robô se retrai
if (serra<=ref_b)
LATD = motor[0]; else LATD=0;
if (ref_b>=150) ref_b=150;
if (serra<= ref_1){LATA = motor[1]; LATB=motor[2];} else
{LATA=0;LATB=0;}
if (ref_1<=50) ref_1=50;
break;
case 2://acionamento de patas
break;
}
if (serra==limite){serra=0;ref_b++;ref_1--;}
}
}
137
//FUNÇÕES DO PROGRAMA
/*Função PWM possui como primeiro valor a referência e segundo valor os pinos
ativados no PWM*/
//void pwm_base(referencia de tempo, pinos setados)
void pwm_base(int aux, int aux2)//{35,75,130};//1ms,1,5ms e 2ms em nível alto
{ if (serra<=aux)
LATD = aux2;//pinos da porta setados em nível alto
else LATD = 0;//pulso baixo no resto do tempo
}
void acordar()
{
if (serra<=ref[1])
{
LATA=art1;
LATD=base;
}
else {LATA=0;LATD=0;}
if (serra<=ref[0]) LATB=art2; else LATB=0;
}
138
APÊNDICE C
// Sweep
// by BARRAGAN <http://barraganstudio.com>
// This example code is in the public domain.
#include <Servo.h>
Servo base;
Servo art1;
Servo art2; // create servo object to control a servo
// a maximum of eight servo objects can be created
//variable to store the servo position
void setup()
{
base.attach(11);
art1.attach(12);
art2.attach(13);// attaches the servo on pin 9 to the servo object
}
void loop()
{
art2.write(90);
int c = 90;
for (int i = 110; i > 0; i‐‐)
{
art1.write(i);
base.write(i);
139
delay(30);
if (c > 30)
{
art2.write(c);
delay (30);
c = c‐1;
}
}
for (int i = 0; i < 110; i++)
{
art1.write(i);
delay (30);
if (c < 90)
{
art2.write(c);
delay(30);
c = c+1;
}
}
for (int i = 0; i < 110; i++)
{
base.write(i);
delay(30);
}
delay(30);
}
140
APÊNDICE D