"Moliceiro" - um robot que segue uma linha - Concurso Micro-Rato
Transcrição
"Moliceiro" - um robot que segue uma linha - Concurso Micro-Rato
REVISTA DO DETUA, VOL. 2, Nº 1, JANEIRO 1997 659 "Moliceiro" - um robot que segue uma linha José António Vieira, Maria João Magalhães, Rosa Pasadas, Tiago Oliveira, António Carvalho e Luís Almeida Resumo - Este artigo descreve de forma sucinta o robot "Moliceiro" que representou a Universidade de Aveiro no "Championat du Monde de Robotique Mobile" que decorreu de 13 a 19 de Maio de 1996 integrado no Festival de Ciência e Tecnologia de La Ferté-Bernard, França. Basicamente o robot teria que seguir uma linha com cerca de 50m de comprimento ao longo de um percurso com algumas dificuldades. A construção deste robot foi realizada de forma "extra-curricular" pelos autores deste artigo e decorreu de Janeiro a Maio desse ano. Este trabalho baseou-se em sensores analógicos de infra-vermelhos, pequenos motores DC, controlo diferencial de direcção, um controlador aproximadamente proporcional e um mecanismo de selecção de cor. Desta forma construiu-se um robot capaz de cumprir as especificações da prova mantendo um custo extremamente baixo (inferior a 50.000$00 em materiais e componentes) e com uma grande simplicidade mecânica e eléctrica. Abstract - This paper presents a brief description of the “Moliceiro” robot that represented the University of Aveiro in the “Championat du Monde de Robotique Mobile” that took place in La Ferté-Bernard, France, from the 13th to the 19th of May, 1996. Basically, the robot had to follow a line on the floor, about 50m long, and overcome a few more difficulties. The complete project design and implementation was carried out as an extra-curricular activity by the authors of this paper from January to May of that year. The project was based on infra-red analog sensors, low-power DC motors, differential stearing control using a near-proportional controller and a color discrimination mechanism. This way the robot was built with a very low cost (below PTE 50.000 in raw materials and parts), with great simplicity in its mechanics and electronics and still meeting all the contest specifications. I. AS REGRAS DO CONCURSO De forma global as regras exigiam que o robot fosse capaz de percorrer um determinado percurso sinalizado por uma linha com cerca de 50m de comprimento. Esta linha, com 5cm de largura, apresentava curvas com raio de 1m, cruzamentos, interrupções e frequentes mudanças de cor, umas vezes branca sobre fundo preto, outras vezes preta sobre fundo branco. Nas interrupções (cuja posição só era conhecida na prova) o recomeço da linha era sinalizado por um reflector colocado a 1m de altura. Existia ainda um troço suplementar, separado da linha principal, cujo início e fim era sinalizado por reflectores tal como nas interrupções. Este troço poderia ser seguido como alternativa ao troço paralelo no circuito principal. No início o robot deveria ser capaz de começar a prova ainda fora da linha e no final deveria ser capaz de se imobilizar por si, numa zona limitada em redor do fim da linha. Ao longo do percurso estariam colocadas várias bolas de bilhar, 5 vermelhas e uma negra, devendo as primeiras ser recolhidas e transportadas até à zona de chegada e a negra rejeitada. A perda da linha (ou afastamento superior a 30cm) implicaria a terminação antecipada da prova. Cada bola de bilhar vermelha não recolhida, assim como a não rejeição da bola negra acarretaria uma penalização. As penalizações traduziam-se em tempo a adicionar ao tempo de prova. F I Figura 1 - Percurso a seguir (I- início, F- final) II. ESTRUTURA DO "MOLICEIRO" A. Chassis Dada a limitação temporal para a construção do robot (cerca de 4 meses) e dada a impossibilidade prática de recorrer a oficinas de serralharia devidamente equipadas optou-se por construir todas as partes mecânicas da forma mais simples e económica, recorrendo essencialmente a chapas de alumínio de várias espessuras. Deste modo, construiu-se um chassis artesanal com forma rectangular, com uma elevação na parte frontal, para deixar passar as bolas de bilhar, e com outra elevação numa das chapas laterais para deixar sair as bolas rejeitadas. 660 REVISTA DO DETUA, VOL. 2, Nº 1, JANEIRO 1997 B. Motricidade e direcção D.2 Sensores de seguimento dos reflectores Por simplicidade de construção e controlo optou-se por utilizar para a tracção um par de servomecanismos de radiomodelismo dos quais apenas se utilizava o motor e as engrenagens de desmultiplicação. O controlo da velocidade dos motores era então feito por PWM directamente a partir de saídas digitais do microcontrolador. Esta solução tem a vantagem de permitir obter uma extraordinária simplicidade mecânica (todos os componentes mecânicos de tracção estão concentrados dentro de uma pequena caixa plástica fechada) e ainda de requerer uma potência muito baixa (inferior a 1W) com correntes também reduzidas (100-200mA). Note-se que apesar da baixa potência dos motores conseguiam-se obter velocidades razoáveis (cerca de 0,3m/s). A direcção era controlada de forma diferencial, i.e., controlando separadamente a velocidade de cada um dos motores. Esta solução também é mecanicamente muito simples e não acarreta nenhuma complicação adicional no software de controlo. Para além das duas rodas principais (~7cm diam.), directamente inseridas nos eixos dos motores respectivos, existiam ainda duas rodas "malucas" colocadas na traseira do robot com a função de equilibrar a estrutura. Uma vez que os reflectores se encontravam posicionados a 1m do solo optou-se por colocar os respectivos sensores a uma altura próxima mas ligeiramente mais baixa. Para tal montou-se um mastro sobre o robot, sensivelmente a meio comprimento deste, com cerca de 95cm de altura. C. Recolha e transporte das bolas de bilhar Para recolher, seleccionar, rejeitar e transportar as bolas de bilhar optou-se, tal como anteriormente, por uma solução mecânica tão simples quanto possível. Desta forma, as bolas entrariam passivamente no robot através de uma abertura na parte frontal do chassis, eram orientadas por guias até ao mecanismo de selecção e aí eram rejeitadas (bola negra) ou recolhidas (bolas vermelhas). A expulsão das bolas rejeitadas era feita através de uma abertura lateral. Por seu lado o transporte das bolas recolhidas era realizado num compartimento fechado, interior ao chassis, sendo as bolas arrastadas com o robot. E. Cablagem e conectores Para facilidade de reparação certos componentes estavam munidos de conectores que permitiam um rápido rearranjo de entradas/saídas ou, se necessário, de troca do componente em questão. Por exemplo, todas as ligações à placa controladora eram feitas através de um conector apropriado. Assim, a troca da placa controladora, se necessária, poderia ser efectuada sem dificuldade. As ligações dos vários sensores às entradas da ADC eram também efectuadas por intermédio de conectores que permitiam um rápido e fácil rearranjo das ligações no caso de queimar uma entrada da ADC. 13 cm Bola preta 24 cm Bolas vermelhas Bola de bilhar 56,5 cm 95 cm Figura 2 - A estrutura do Moliceiro F. Exterior e decoração (o "Moliceiro") D. Colocação dos sensores D.1 Sensores de seguimento da linha A orientação do robot sobre a linha era realizada com uma barra de sensores que tinha cerca de 20cm de comprimento e que estava orientada transversalmente ao eixo do robot. Essa barra foi colocada à frente do robot, por cima da entrada das bolas de bilhar, a uma distância de 13cm do eixo dos motores. Nesta configuração as bolas ao entrar passariam sob os sensores causando alguma perturbação no seguimento da linha. Contudo, para a velocidade esperada e taxa de amostragem/processamento conseguida (cerca de uma amostra cada 2,3cm) essa perturbação seria controlável (o que nem sempre veio a ocorrer!). Por cima da estrutura atrás descrita foi colocado um modelo de moliceiro, realizado com estrutura de arame e papel reforçado com cola. A pintura, feita manualmente, seguia a traça habitual neste tipo de embarcações. No mastro foi também colocada uma vela. III. O MECANISMO DE SELECÇÃO DE BOLAS DE BILHAR Para seleccionar as bolas de bilhar de acordo com a respectiva cor foi construído um mecanismo composto por duas partes principais: por um lado, uma campânula para segurar a bola no momento da aquisição da cor e que rodaria sobre o próprio eixo da bola libertando-a para o exterior caso fosse para rejeitar ou recolhendo-a num compartimento interior; por outro lado, um iluminador da bola apontado para o centro da campânula colectora REVISTA DO DETUA, VOL. 2, Nº 1, JANEIRO 1997 montado em conjunto com um sensor de intensidade luminosa e que permitiria determinar a cor da bola. A campânula estava montada sobre o eixo de um motor que a fazia girar para um lado ou para outro. O movimento do motor era controlado por uma máquina de estados que recebia inputs do sensor de cor e de 4 interruptores, dos quais 3 funcionavam como fins-de-curso e 1 como detector de bola no interior da campânula. Quanto ao sensor de cor, baseado num conversor de intensidade luminosa em tensão eléctrica (TSL250), foi colocado no interior de um tubo revestido internamente com papel de estanho para reduzir a respectiva sensibilidade à orientação. Na boca desse tubo foi colocado um pedaço de acrílico vermelho para efectuar alguma filtragem cromática. Ao lado do tubo foram colocados dois led's vermelhos de alto brilho (cerca de 1 candela cada) cuja função era iluminar a bola a inspeccionar. A saída do sensor passava por um discriminador de três zonas cujo resultado era "1" sempre que a bola presente na campânula fosse vermelha. Refira-se, ainda, que mantendo a filosofia de simplicidade seguida desde o início da construção deste robot optou-se por manter este mecanismo completamente separado do programa de controlo do movimento. iluminador e sensor saída guia compartimento de transporte campânula receptora movimento do robot pivot Figura 3 - Selecção e recolha de bolas (vista de topo) A selecção de cor não funcionava para todo o espectro de cores pois baseava-se apenas no peso relativo da componente vermelha. Contudo, este mecanismo permitia discriminar com fiabilidade os tons de vermelho vivo das seguintes cores: branco, amarelo claro, todos os azuis, verdes, castanhos escuros e negro. IV. OS SENSORES DE INFRA-VERMELHOS Os sensores utilizados eram do tipo infra-vermelho com desmodulação de uma portadora de 40KHz. São sensores compactos, utilizados correntemente nos receptores dos telecomandos das televisões e videos, que apresentam uma boa imunidade à intensidade luminosa média do ambiente e têm apenas uma saída digital já desmodulada. Contudo, abrindo estes sensores era possível retirar o nível analógico correspondente à intensidade recebida de infravermelhos modulados a 40KHz, bastando para tal soldar um fio num extremo de um condensador que estava montado na entrada do discriminador final. Estas saídas analógicas possuiam uma gama dinâmica pouco superior a 0,5V. No entanto, em prol da redução do 661 número de componentes e consequentemente do consumo de corrente, optou-se por ligar estas entradas directamente à ADC de 8bits do microcontrolador. Após a digitalização a excursão conseguida era de cerca de 25 níveis da ADC. O condensador que vem de fábrica nestes sensores é relativamente elevado provocando um atraso grande na saída até estabilizar em torno do valor final (cerca de 150 a 200ms). Este atraso era demasiado para o seguimento da linha com a velocidade pretendida pelo que tivemos de alterar este condensador para outro com valor muito inferior de modo a melhorar a velocidade da resposta sem, contudo, aumentar a largura de banda para além do estritamente necessário por questões de atenuação de ruído. Conseguimos, assim, um atraso na resposta dos sensores entre 1 a 2 ms. Para fornecer a iluminação necessária para os sensores utilizaram-se LEDs infra-vermelhos como emissores, devidamente modulados a 40KHz, com 50% de duty-cycle. V. O CONTROLO DO ROBOT A. A placa controladora A placa controladora utilizada foi a 68HC11EVBU da Motorola. De fábrica esta placa traz apenas o controlador 68HC11 bem como um interface série para ligação a um sistema de desenvolvimento baseado em PC. Possui ainda uma zona de wrapping onde foram instalados 32 KB de RAM bem como os drivers necessários para controlo dos motores (L293 - 2 pontes H) e para modulação dos LEDs de infravermelhos . Das características do controlador 68HC11 destacamos as seguintes: • frequência de clock interna de 2MHz; • ADC de 8 entradas às quais se ligavam directamente os sensores de infravermelhos; • Unidade de timer muito versátil usada para gerar as ondas com informação PWM para controlo dos motores. A programação era feita em 'C'. Um pequeno executivo (sistema operativo mínimo) era carregado no controlador e permitia a execução concorrente de programas usando um interpretador. Este interpretador, embora tornasse o código um pouco mais lento era muito prático e permitia a edição “on-line” de valores de variáveis. B. O seguimento da linha B.1- Colocação dos sensores Conforme referido na secção II-D.1, a orientação do robot sobre a linha baseava-se na leitura de uma barra de sensores colocada transversalmente ao eixo do robot e com cerca de 18cm de largura. Esta barra era constituída por 4 sensores de infra-vermelhos, regularmente espaçados de 6cm. Cada sensor estava emparelhado com um 662 REVISTA DO DETUA, VOL. 2, Nº 1, JANEIRO 1997 emissor de infra-vermelhos cuja função era iluminar o chão que seria sempre branco e/ou preto. A leitura do respectivo sensor seria máxima quando o chão fosse todo branco e mínima quando fosse todo preto. Para isolar as áreas "vistas" por cada sensor os 4 pares sensor/emissor foram colocados cada um dentro de um pedaço de tubo preto, de secção quadrada. Cada um destes tubos tinha as dimensões necessárias, bem como estava colocado à altura necessária, para que as áreas "vistas" pelos dois sensores do meio fossem contíguas e as áreas "vistas" pelos dois sensores dos extremos se sobrepusessem ligeiramente às áreas dos sensores do meio (ver figura 4). 2 cm O parâmetro K3 serve apenas para compensar algum erro de alinhamento da barra de sensores (posição de erro 0). Os parâmetros K1 e K2 eram utilizados com dois propósitos, por um lado serviam para balancear o peso dos sensores centrais relativamente aos laterais, por outro serviam para uniformizar o comportamento da função quando o robot se deslocava sobre a linha branca ou sobre a preta (note-se que a intensidade média recebida pelos sensores é diferente em ambos os casos). A forma da função line_error era aproximadamente linear numa zona central e saturada perto dos extremos existindo um mínimo local nas transições. Fazendo em ambas as cores K2 ~ K1*1.5 o mínimo local era bastante atenuado (figura 5, curva a cheio). 6 cm line_error SL1 SL2 SL3 SL4 0 9 3 desvio da linha (cm) Figura 4 - Disposição dos sensores de linha A forma da resposta de cada sensor (em tensão) ao fazer passar a linha sob a respectiva àrea de "visão" era aproximadamente gaussiana. B.2- A medição do erro Neste caso, o afastamento do robot em relação à linha constituia o erro que se pretendia minimizar. A medição deste erro baseava-se nas leituras SLi (i=1..4) dos 4 sensores de infravermelhos atrás descritos (fig. 4). Estas leituras eram equalizadas e normalizadas para compensar pequenas diferenças de posição ou fabrico entre sensores, obtendo-se os valores sensori conforme indicado na expressão (1). sensori = SLi − SLi ,min SLi ,max − SLi ,min i = 1..4 (1) Estes valores eram então combinados de forma apropriada de modo a fornecerem uma medida do erro de seguimento da linha (desvio medido sobre a barra de sensores). Esta combinação, função line_error, era basicamente construída a partir da diferença entre os sensores do lado direito e os do lado esquerdo conforme a expressão (2). line _ error = K1 × [sensor2 − sensor3 ] + + K 2 × [sensor1 − sensor4 ] + K 3 desvio da linha (cm) Figura 5 - A função line_error linha -3 9 4 cm 8 cm -9 0 -9 2,5 cm (2) Para anular completamente o mínimo local utilizámos um catalogador fuzzy (fuzzificador) sobre a saída da função line_error. Este permite efectuar alguma compensação na forma da função jogando com a posição dos fuzzy sets tendo-se obtido a curva a tracejado mostrada na figura 5. Esta curva respresenta a relação entre o desvio da linha e o parâmetro de erro efectivamente fornecido ao algorítmo de controlo. B.3- O algoritmo de controlo e o comportamento do robot O controlo da trajectória do robot era feito agindo directamente sobre a respectiva velocidade angular (proporcional à diferença de velocidade das rodas direita e esquerda, ∆V) mantendo fixa a velocidade linear média (Vmed). Este controlo proporcional era efectuado de acordo com a expressão (3), em que Vdir corresponde à velocidade a aplicar à roda direita e Vesq à roda esquerda. Vdir = Vmed + ∆V Vesq = Vmed − ∆V (3) com ∆V = K 4 × fuzz (line _ error (...)) A malha de controlo global para seguimento da linha encontra-se representada na figura 6. + Desvio pretendido (=0) Desvio relativo - Dinâmica Controlo (∆V=...) Velocidade do robot das rodas fuzz(...) Trajectória do robot line_error(...) Linha Figura 6 - Malha de controlo para seguimento da linha REVISTA DO DETUA, VOL. 2, Nº 1, JANEIRO 1997 663 Quanto ao comportamento sobre a linha o robot apresentava frequentes oscilações com amplitude relativamente grande. Estas oscilações estavam relacionadas com a massa do robot e respectivo momento de inércia que provocavam um atraso no estabelecimento das velocidades pretendidas (comportamento excessivamente integrador). Este comportamento foi compensado com um avanço da barra de sensores relativamente ao eixo dos motores (13cm). Pode-se demonstrar que tal avanço tem um efeito antecipativo de certo modo semelhante ao efeito de uma componente derivativa adicionada ao controlo proporcional. B.4- As mudanças de cor da linha As mudanças de cor da linha, umas vezes branca sobre preto e outras preta sobre branco, constituíam uma dificuldade acrescida para o respectivo seguimento. De facto, facilmente se vê que um algorítmo que siga a linha preta sobre fundo branco levará o robot a afastar-se da linha quando esta se torna branca sobre fundo preto. Repare-se que a função de medida do desvio sobre a linha, line_error, inverte-se de uma situação para a outra, resultando em valores grosso modo simétricos. Assim, numa aproximação simplista poderemos dizer que o sentido do controlo tem que ser invertido, i.e., se para um dado desvio sobre a linha branca a saída do controlador é x então, para o mesmo desvio sobre a linha preta a saída deverá ser -x. Contudo, a função line_error não fica exactamente invertida de uma situação para a outra já que os níveis médios de intensidade recebida pelos sensores são bastante diferentes nos dois casos. Por esta razão torna-se necessário usar parâmetros K1 e K2 diferentes em cada situação para além de trocar o sinal da saída do controlador. A detecção da situação concreta em que o robot se encontrava era conseguida com a utilização da função line_colour (expressão 4) que permitia discrimar as 4 possíveis situações: fundo preto sem linha, fundo preto com linha branca, fundo branco com linha preta e fundo branco sem linha. line _ colour = ( sensor1 + sensor4 ) + + 2 × ( sensor2 + sensor3 ) (4) line_colour > A -- fundo branco, sem linha A> line_colour >B -- fundo branco, linha preta B> line_colour >C -- fundo preto, linha branca C> line_colour -- fundo preto, sem linha O factor 2 usado sobre as leituras dos sensores centrais permitia melhorar a detecção da linha quando o robot se encontrava correctamente alinhado. Os níveis de decisão A, B e C eram relativamente fáceis de ajustar já que os valores de line_colour se ajustavam com facilidade às 4 classes referidas uma vez que raramente assumiam valores perto das fronteiras. Refira- se, ainda, que a saída desta função era passada por um filtro de média (últimas 4 amostras) para reduzir a influência de interferências esporádicas (e.g., quando o robot passava por cima de uma bola ou quando passava por um cruzamento). C. O seguimento dos reflectores C.1- Colocação dos sensores O seguimento dos reflectores baseava-se na leitura de dois sensores de infra-vermelhos montados no topo de um mastro colocado aproximadamente a meio comprimento do robot. Pela forma como o percurso estava desenhado a vertical de cada reflector só poderia estar apenas numa de 3 posições relativamente ao ponto de interrupção da linha: a -45º e 1,4m (curva à direita), a 0º e aprox. 2m (em frente), ou a +45º e 1,4m (curva à esquerda). Assim, uma vez que os sensores apresentavam um diagrama de captação suficientemente aberto (pelo menos de +45º a -45º) orientámo-los um a +30º e e outro a -30º e colocámos uma pequena vedação opaca na direcção dos 0º. Deste modo, era possível captar a reflexão a partir de qualquer das 3 possíveis posições do reflector e obter uma boa diferença entre as leituras de ambos (ver figura 7). 30º SR1 SR3 SR2 sensores IV Farol de LEDs Figura 7 - Topo do mastro para seguimento dos reflectores Quanto aos emissores decidimos, neste caso, utilizar um farol mais ou menos omnidireccional na faixa de interesse, i.e., de -45º a +45º, constituído por 6 LEDs ligados em série e igualmente modulados a 40khz e que iluminaría o reflector qualquer que fosse a respectiva posição. C.2-. Medição do erro e algorítmo de controlo Neste caso, o erro a minimizar era o desvio do robot relativamente ao reflector de forma a que o robot se dirijisse a este. Com o fim de medir este erro construiu-se uma função com as leituras dos dois sensores referidos atrás, SR1 e SR2 a que se chamou reflect_error (expressão 5). Esta função consta, basicamente, da subtracção do sensor esquerdo ao direito. Note-se, apenas, que o seguimento dos reflectores não era tão crítico quanto o seguimento da linha e que o respectivo algorítmo poderia ser mais “grosso”. Deste modo não se fez a equalização e normalização das leituras destes sensores. As leituras SR1 e SR2 eram directamente aplicadas na função reflect_error. 664 REVISTA DO DETUA, VOL. 2, Nº 1, JANEIRO 1997 reflect _ error = K 5 + ( SR1 − SR2 ) (5) A constante K5 era utilizada apenas para correcção do ponto de erro zero. Mais uma vez o algoritmo utilizado também era simplesmente proporcional e tinha um desempenho levemente sobreamortecido. Este comportamento era muito conveniente pois permitia uma aproximação suave ao recomeço da linha. ∆V = K 6 × reflect _ error (...) (6) D. A paragem no fim do percurso Quando o percurso chegava ao fim a linha desaparecia e o robot deveria ser capaz de se imobilizar por si próprio. Esta acção era conseguida verificando se existia algum reflector. Caso existisse então seria uma normal interrupção de linha. Caso contrário seria o final do percurso. Para detectar a existência de reflectores nas três posições possíveis testavam-se as leituras dos sensores contra um nível de decisão apropriado. Este procedimento resultava bem quando o reflector estava numa posição lateral (+/-45º e 1,4m). No caso do reflector se encontrar na posição central (0º e aprox. 2m) não era fiável detectá-lo apenas com as leituras dos dois sensores SR1 e SR2 por serem ambas muito baixas. Assim, adicionou-se um terceiro sensor SR3 direccionado exactamente no alinhamento do robot e que servia apenas para detectar a presença de reflector na posição central. E. Breve análise comportamental O comportamento global do robot foi dividido em vários comportamentos elementares distintos que seriam activados como resposta a estímulos do exterior. Este método obrigou, também, à realização de um árbitro que teria de seleccionar qual o comportamento a desempenhar num dado instante caso vários comportamentos estivessem activos. Cada comportamento era implementado com uma função apropriada que poderia executar de forma concorrente sobre o microcontrolador (o executivo utilizado permitia multi-threading). Os vários comportamentos elementares eram: seguir linha branca, seguir linha preta, seguir reflector, parar no final do percurso e recolher ou rejeitar as bolas de bilhar. O árbitro tinha a seguinte estrutura: 1º sempre que encontra linha - determina cor e: se linha branca - segue linha branca; se linha preta - segue linha preta; 2º se não encontra linha mas encontra reflector seguir reflector; 3º se não encontra linha nem reflector - parar (final do percurso); 4º sempre que encontra uma bola de bilhar - verificar cor e rejeitá-la ou recolhê-la. O 4º comportamento era completamente autónomo em relação aos restantes e era desempenhado em simultâneo. VI. PROBLEMAS ENCONTRADOS Do ponto de vista do controlo, os principais problemas encontrados tinham a ver com a afinação e desempenho do algoritmo de seguimento da linha. De facto, dada a frequência de amostragem, a potência dos motores e o peso do robot, o controlo efectuado estava muito perto do limite de estabililade. Bastava colocar a "capota" de moliceiro sobre a estrutura para ser necessária completa reafinação dos parâmetros de controlo e tornava-se extremamente difícil evitar uma oscilação considerável (comportamento demasiado integrador). Adicionando ao problema as bolas de bilhar com cerca de 200g cada, e dado que não se utilizou nenhum tipo de algoritmo adaptativo, o comportamento do robot era progressivamente mais oscilatório. De tal forma que ao fim de recolher a terceira bola o robot normalmente perdia a linha. O problema causado pela recolha das bolas era majorado pelo facto do compartimento onde as bolas eram recolhidas estar a uma distância relativamente grande do eixo dos motores. Assim, a massa das bolas possuía um momento de inércia muito elevado dificultando os movimentos de rotação para correcção da trajectória. No seguimento do reflector, durante as interrupções de pista, o algoritmo usado também necessitava de um pouco mais afinação. Embora a aproximação ao reflector e, consequentemente, ao reinício da linha fosse suave, ligeiramente sobreamortecida, o facto é que, com alguma frequência, o ângulo com que o robot detectava o recomeço da linha era excessivo para a capacidade de controlo do robot. Assim, era frequente o robot perder a linha logo após a ter reencontrado. Do ponto de vista de instrumentação seria vantajoso melhorar a gama dinâmica dos sensores de infra-vermelhos bem como redesenhar a barra de sensores para seguimento da linha por forma a que a função de medida do erro (line_error) fosse linear numa gama mais ampla. Em relação à parte mecânica muito haveria a ser feito em especial no que diz respeito ao mecanismo de recolha das bolas de bilhar que frequentemente provocava interferências consideráveis no seguimento da linha. O momento de inércia e o peso do robot, por os respectivos valores serem elevados para a potência dos motores utilizados, também foi um factor perturbador muito importante. No que diz respeito ao ambiente de execução de programas o interpretador de C que era utilizado constituía um factor de atraso suplementar que se adicionava à tendência integradora do robot contribuíndo para a falta de estabilidade no seguimento da linha. VII. POSSÍVEIS EVOLUÇÕES No sentido de resolver ou atenuar os problemas encontrados seria interessante estudar melhor a REVISTA DO DETUA, VOL. 2, Nº 1, JANEIRO 1997 problemática do seguimento de linhas por robots autónomos com controlo diferencial da direcção e fazer um modelo matemático deste robot para permitir a realização de sessões intensivas de simulação. Seria ainda interessante estudar a possibilidade de utilização de um algoritmo adaptativo que fosse alterando adequadamente os parâmetros de controlo à medida que as bolas de bilhar fossem recolhidas. O mecanismo de recolha das bolas necessita de ser revisto por forma a transportar as bolas numa zona do robot que cause o menor momento de inércia global, relativamente ao eixo dos motores. O algoritmo de seguimento dos reflectores carece de um estudo mais aprofundado de modo a garantir que o robot encontre o reinício da linha com um ângulo pequeno que não crie problemas no reatar do seguimento do percurso. A utilização de um ambiente de execução de programas baseado num compilador em vez dum interpretador permitirá uma execução mais rápida do ciclo de controlo e poderá ajudar à estabilidade do robot sobre a linha. No entanto, esta solução também leva à perda das facilidades de consulta on-line de variáveis do programa que a versão com interpretador permite. AGRADECIMENTOS A equipa que projectou e construiu este robot agradece ao Prof. Keith Doty, que leccionou a disciplina de Robótica Móvel no 2º semestre de 94/95 no âmbito do Mestrado em Engenharia de Electrónica e Telecomunicações na Universidade de Aveiro, pelo seus ensinamentos que estiveram na base de muitas das opções feitas na construção do “Moliceiro”. Gostariamos ainda agradecer à TELECEL o patrocínio que permitiu a participação no campeonato de La FertéBernard, ao Departamento de Electrónica da Universidade de Aveiro pelo apoio em componentes, equipamentos de laboratório, oficinas e espaço que tornaram possível este trabalho, à UNAVE pelo apoio nas questões administrativas relacionadas com a viagem, à AFUA pela disponibilização da carrinha para a nossa deslocação a França, e a todos aqueles que contribuíram para o sucesso deste projecto quer através de preciosas sugestões quer de apoio moral e/ou material. Em particular agradecemos aos nossos colegas Ernesto Martins e Fernando Nogueira pela ajuda prestada na obtenção de determinados componentes e ao Pedro Fonseca pela ajuda nos contactos com a organização do campeonato e pelos valiosos comentários na revisão deste artigo. BIBLIOGRAFIA Mobile Robots: inspiration to implementation, by J.L.Jones, A.M. Flynn, Wellesley (Mass): A.K.Peters, 1993. The 6.270 MIT Robot Builder’s Guide - MIT LEGO Robot Design Competition, by Fred Martin, MIT Press, 1992. Designing Autonomous Agents, edited by Patti Maes, MIT Press / Elsevier, (3rd printing) 1994. 665 Notas da disciplina de Robótica Móvel leccionada no 2º semestre de 1995 no âmbito do Mestrado em Engenharia de Electrónica e Telecomunicações. Manuais da placa EVBU68HC11 e do microcontrolador 68HC11. RESUMO DAS CARACTERÍSTICAS TÉCNICAS DO "MOLICEIRO" Dimensões: (sem “capota”) 56,5x24 cm (com “capota”) 110x35 cm altura (com mastro) 95 cm Peso total: (sem “capota”) 1,8 Kg (com “capota”) 2,3 Kg Motricidade: 2 motores DC, 100mA e 3Kgm (servomecanismos de radiomodelismo) com rodas de 7cm diâmetro. Alimentação: 12V DC, 1A (bateria NiCad 1,3Ah) Velocidade linear máxima: 0,3 m/s Direcção: diferencial Processador: 68HC11 (68HC11EVBU-Motorola) Sensores: (linha) 4 sensores IV analógicos (reflectores) 3 sensores IV analógicos Emissores IV: 4+6 MLED81, modulação a 40KHz Selecção de cor das bolas: por intensidade de vermelho reflectido (TSL250 + filtro cromático + discriminador de 3 zonas) Captação, recolha e rejeição de bolas: passiva com porta rotativa Algoritmo de controlo: aprox. proporcional Antecipação dos sensores da linha: 13 cm à frente do eixo dos motores Custo total (componentes): inferior a 50.000$00 Foto do Moliciero
Documentos relacionados
JERRY: A Jolly ElectRic Robot, Yo! - Concurso Micro-Rato
cartão, apoiado nas alavancas de 8 micro-interruptores tipo fim-de-curso uniformemente colocados no perímetro do chassis. Para simplificar, ligaram-se os 4 interruptores da esquerda e os 4 da direi...
Leia mais