Para verificar a capacidade do RAVE de servir como uma plataforma de pesquisa em robótica móvel, um conjunto de testes foram propostos:
· Desenvolver um sistema de controle reativo embarcado para desviar de obstáculos e permitir uma navegação automática em um ambiente plano e estruturado.
· Apresentar um sistema de mapeamento que está em desenvolvimento utilizando como ferramentas os aplicativos RaveControl e o Matlab.
1 - Navegação Automática Embarcada
Para testar a navegação automática, foi desenvolvido um sistema de controle reativo onde o robô “lê” as informações provenientes do módulo de sensoriamento e verifica se existe um obstáculo próximo aos seus dois sonares. Caso não exista obstáculo em sua frente, este segue em linha reta. Caso o robô detecte um obstáculo em sua frente, este verifica se existe um obstáculo atrás, caso negativo é feita uma ré para direita. Se houver um obstáculo tanto na frente quanto atrás do robô, este fica parado. É possível ver esta lógica em forma de fluxograma na figura abaixo.
Figura 1. Sistema de controle reativo implementado no RAVE.
É importante citar que este algoritmo foi desenvolvido para demonstração. Para certos tipos de ambiente como, por exemplo, um corredor, seria necessário criar um novo algoritmo para fazer o robô navegar corretamente.
O primeiro teste foi colocar o RAVE em um ambiente plano, fechado e estruturado com alguns obstáculos estáticos. O robô conseguiu se desviar da maior parte dos obstáculos quando estes estavam posicionados de forma perpendicular em relação aos sensores. Este fato ocorre devido à reflexão das ondas sonoras. Se um obstáculo estiver inclinado em relação ao sonar, as ondas poderão ser desviadas, e o sensor poderá realizar uma leitura errada.
Outro fator importante é que o RAVE possui apenas dois sonares sendo assim sua percepção é limitada. Existe, portanto, a probabilidade que o robô colida com os obstáculos não percebidos. Para isso pretende-se futuramente adotar o robô com uma maior quantidade de sensores para resolver este problema.
2 - Sistema de Mapeamento
Nesta seção é apresentada outra aplicação deste trabalho, onde foi desenvolvido um sistema de mapeamento para ambientes fechados, estáticos e estruturados, por Caroline Pacheco do Espírito Silva, Engenheira de Computação da Faculdade ÁREA1. Neste caso, o robô RAVE foi utilizado como plataforma de testes e estudo.
A aplicação RaveControl possui uma funcionalidade chamada Mapeamento que permite o desenvolvimento de algoritmos de mapeamento. Para isso o sonar dianteiro do RAVE foi adaptado a um servo-motor possibilitando obter informações dos obstáculos em um arco de no máximo 180 graus devido às limitações do próprio servo-motor.
Através do aplicativo RaveControl é possível girar o servo-motor para o ângulo desejado e então verificar a distância medida pelo sonar neste ângulo. Também é oferecido uma opção que permite fazer o sonar varrer um arco de forma automática bastando apenas especificar um ângulo inicial e um ângulo final. Algumas outras opções oferecidas são:
Incremento: nesta opção é possível especificar de quantos em quantos graus o servo-motor deve girar. O valor do incremento deve ser um número inteiro não negativo entre 1 (um) até 180. A valor padrão é 1 (um).
Intervalo: esta opção especifica o tempo de espera que o aplicativo irá aguardar para enviar o próximo comando ao servo motor. Com isto é possível fazer com que o servo-motor gire mais rápido ou mais devagar. O intervalo deve ser um número inteiro que pode variar de 0 (zero) até 9999 milissegundos. O intervalo padrão é 500 milissegundos.
Amostras: esta opção especifica a quantidade de amostras que serão coletadas pela aplicação. Cada amostra corresponde a duas varreduras, uma no sentido positivo e outra no sentido negativo do movimento do servo-motor. O valor da amostra deve ser um número inteiro não negativo entre o intervalo de 1 (um) até 99. Se for especificado o valor 0 (zero) a aplicação irá coletar um número indefinido de amostras. O valor padrão é 1 (uma) amostra.
Localização (Posição X, Posição Y e Orientação): Esta opção oferece um meio de especificar a posição absoluta do robô em um dado ambiente. Como o RAVE ainda não possui um sistema de localização automático, é preciso especificar manualmente sua localização para que se possa fazer um mapeamento adequado.
Arquivo: neste campo é possível especificar onde os dados coletados pelo sonar são armazenados. O local padrão é c:\sonar.txt. O arquivo é gerado utilizando o formato especificado na tabela abaixo.
Padrão utilizado pela geração do arquivo de mapeamento.
Figura 2. Opção Mapeamento oferecida pela aplicação RaveControl.
O primeiro teste consistiu no seguinte procedimento:
Figura 3. Ambiente utilizado e mapa gerado pelo algoritmo de mapeamento
Através da figura acima é possível realizar uma comparação do ambiente selecionado e o mapa gerado. Claramente observa-se que em alguns ângulos foi possível ter uma medida exata e em outros o sonar faz uma leitura totalmente errada. Este erro pode ser resolvido utilizando sonares de melhor qualidade e ou realizando fusão de dados com outros tipos de sensores.
Com o objetivo de testar a robustez do sistema, foi preparado um novo ambiente fechado, plano e sem obstáculo, conforme pode ser visto na Figura 4. Logo em seguida foram realizados os seguintes procedimentos:
Todos os procedimentos citados anteriormente foram realizados novamente mudando apenas o ângulo de orientação do robô para 90, 180 e 270 graus. O resultado obtido, após o processamento realizado pela função geraMapa, pode ser visto na Figura 5 e na Figura 6.
Figura 4. Ambiente utilizado no segundo teste.
Figura 5. Resultados obtidos no segundo teste.
Figura 6. Comparação do ambiente real com o mapa gerado.
Analisando a Figura 6, observa-se que o mapa gerado não é perfeito, mas procura mostrar que o robô se encontra em um ambiente fechado. Apesar de o ambiente real ser retangular (aproximadamente 1,1 metros de comprimento por 1,4 metros de largura) o mapa gerado apresenta um ambiente com características de uma elipse. Isto ocorre devido aos erros cometidos pelo sonar, pois conforme visto no primeiro teste, em determinados ângulos a leitura pode falhar ocasionando em uma medida errada da distância.
Outro fator importante é que o robô não possui um sistema de localização automático e exato. Quando o robô foi rotacionado no ambiente, foi pré-suposto que sua orientação fosse 0°, 90°, 180° e 270° sem nenhum feedback para confirmar se sua orientação era exatamente um destes valores. Uma bússola digital poderia resolver este problema. Para diminuir ainda mais os erros apresentados no mapa gerado, também seria recomendável um sistema de odometria para levar em consideração o deslocamento do robô no ambiente.