• Nenhum resultado encontrado

Especificação Executável para Controle de um Sistema Robótico via Sistema on Chip SoC

N/A
N/A
Protected

Academic year: 2021

Share "Especificação Executável para Controle de um Sistema Robótico via Sistema on Chip SoC"

Copied!
10
0
0

Texto

(1)

Especificação Executável para Controle de um Sistema

Robótico via Sistema on Chip – SoC

Flavio Velloso Laper¹, Marcelo Silvio Miranda Alvarenga Costa¹, Paulo Henrique Vieira Magalhães², Rafael Nunes Linhares Papa¹, Willer Henrique dos Reis¹ ¹FUMEC -Fundação Mineira de Educação e Cultura - Rua Cobre, 200 - Cruzeiro, Belo

Horizonte, Brasil

²UFOP - Universidade Federal de Ouro Preto - Rua Diogo de Vasconcelos, 122, Ouro Preto, Brasil

{flavio.laper,rafael}@fumec.br,

{marcelosilviocosta,willer.reis}@gmail.com, paulo.magalhaes@em.ufop.br

Abstract. Obstacle avoidance have been considered a challenge for

autonomous mobile robots and methods used to solve it have been extensively discussed. This paper presents the process of developing a Soc in order to control a robot performing obstacle avoidance. The method chosen is based on the algorithm of navigation 'Bug'. We developed a simulator to test this algorithm under various circunstances, and after proven its efficiency, was translated in the language of hardware description Verilog to be implemented in the board DE2-70 FPGA. The last step is, to implement a navigation system for a mobile robot based on the algorithm tested.

Keywords: SoCs, Verilog, RTL, mobile robots, robotics, obstacle avoidance,

FPGA.

Resumo. Desvio de obstáculos tem sido considerado um desafio para robôs

móveis autônomos e os métodos utilizados para solucioná-lo têm sido bastante discutidos. Este artigo apresenta o processo de desenvolvimento de um Soc com o propósito de controlar um robô capaz de desviar de obstáculos. O método escolhido é baseado no algoritmo de navegação “Bug”. Foi desenvolvido um simulador para testar esse algoritmo em diversos cenários e, após comprovada a sua eficiência, foi efetuada sua tradução para a linguagem de descrição de hardware Verilog para ser implementado na FPGA da placa DE2-70. O último passo é aplicar o sistema de navegação a um robô movél baseado no algoritmo testado.

Palavras-chave: SoCs, Verilog, RTL, robôs movéis, robótica, desvio de

obstáculos, FPGA.

1. Introdução

A crescente demanda por equipamentos eletrônicos que utilizam circuitos integrados vem impulsionando o mercado de desenvolvimento de SoC's (“System on a Chip”) [Bergamaschi e Cohn 2002]. SoC's são sistemas computacionais formados pela

(2)

união do software e do hardware, freqüentemente utilizados para automatizar diversas tarefas do dia a dia, como por exemplo: sistemas de produção em larga escala, veículos automotores, sistemas de localização via satélite (GPS - Global Positioning System), entre outros.

Outra área bastante difundida para auxiliar na automatização de tarefas rotineiras é a robótica. Atualmente diversas aplicações desta área já estão disponíveis na indústria, em instalações militares, ambientes de segurança e até mesmo como produtos de consumo. Várias pesquisas têm voltado seu foco para a construção de robôs móveis e para a solução de problemas relacionados como o desvio de obstáculos [Modi, Chandak, Murty, e Hall 2001], cujo o objetivo é controlar a navegação do dispositivo móvel em um ambiente desconhecido até o seu destino. Existem diversos algoritmos desenvolvidos com este propósito. Algoritmos conhecidos como sendo da “família Bug" têm sido aplicados com sucesso [Yufka e Parlaktuna 2009].

Para identificar os obstáculos encontrados no trajeto, o dispositivo deve utilizar sensores. Diversos sensores têm sido utilizados com esta finalidade [Philipsen e Siegwart 2003], [Ottoni e Lages 2003]; dentre os quais pode-se citar: infravermelho, ultra-som e GPS.

Este artigo tem como objetivo principal descrever o desenvolvimento de um SoC para controlar o deslocamento de um robô móvel, desviando-se de obstáculos em um ambiente desconhecido. Pata tanto é proposta uma adaptação do algoritmo de desvio de obstáculos conhecido como “Bug2” [Yufka e Parlaktuna 2009].

2. Metodologia

A metodologia de desenvolvimento utilizada no projeto está descrita a seguir (ver Figura 1).

Figura 1. Metodologia

• Especificação do Sistema: definição das características e funcionalidades do

(3)

• Modelo Comportamental: definição do comportamento do algoritmo em

diversos cenários, utilizando um simulador desenvolvido em linguagem C.

• Modelo RTL (Register Transfer Level): tradução do algoritmo para o Verilog e

sincronização do hardware digital por sinais de clock.

• Protótipo FPGA: implementação do circuito obtido em uma FPGA (Field

Programmable Gate Array). 2.1. Especificação do Sistema

No primeiro momento do projeto, um esboço de uma versão do algoritmo de navegação e desvio de obstáculos foi feito em portugol, tal como descrito a seguir.

2.1.1. Algoritmo Bug

O deslocamento e desvio de obstáculos realizados pelo robô, neste trabalho, se baseiam nos algoritmos da família Bug [Yufka e Parlaktuna 2009]. Estes algoritmos requerem os seguintes comportamentos:

• Seguir uma parede (direita ou esquerda).

• Mover em uma linha reta até o seu objetivo se o caminho estiver livre. • Contornar o obstáculo caso encontre um a sua frente.

• Saber se localizar perfeitamente e conhecer sua posição inicial e final

O algoritmo original foi adaptado de forma a permitir a movimentação do robô apenas nas direções horizontal e vertical. Isto foi feito para obter uma maior precisão no cálculo do deslocamento e da posição atual do robô: uma vez que este não dispõe de sensores de posição, este cálculo é efetuado pela contagem do número de giros efetuados pelas rodas, levando em conta o diâmetro das mesmas e o comprimento do eixo. Assim, o movimento do robô foi dividido em quatro estados: procurando coluna, procurando linha, desviando coluna e desviando linha, tal como mostrado na Figura 2.

(4)

O robô navega em uma grade virtual em forma de matriz, onde as posições são representadas por quadrados. Inicialmente, ele efetua um deslocamento horizontal, procurando a coluna alvo. Ao encontrá-la, o deslocamento passa a ser vertical, procurando a posição final. Ao encontrar um obstáculo, o mesmo é contornado, sendo mantido sempre à direita. Cada vez que o robô se desloca uma casa na grade, é computado um movimento. A Figura 3 representa uma amostra de deslocamento em um ambiente com obstáculos.

Figura 3. Demonstração do deslocamento do Robô

2.2.

Modelo Comportamental

Após a especificação do sistema desenvolveu-se seu modelo comportamental. Vários testes são necessários para comprovar a correção do algoritmo desenvolvido, para então efetuar a tradução para o modelo RTL. Estes testes devem acontecer em diversos cenários que reproduzam as situações que o robô possa vir a encontrar na prática. Isto foi feito através de um simulador desenvolvido em linguagem C e implementado e testado em um computador com o sistema operacional Linux com Slackware na versão 12.2.0. A Figura 4 mostra as partes principais do simulador.

(5)

• Cenário: responsável por gerar e gravar um cenário aleatório em um arquivo

texto.

• Simulador: interpreta o arquivo acima e a partir do cenário gerado grava todas

as leituras do robô e o seu deslocamento em um arquivo texto de saída.

• Representação: interpreta o arquivo de saída e mostra o deslocamento do robô

através da parte gráfica criada.

2.2.1

Simulador

O Simulador é a parte principal da aplicação. É responsável pela inicialização das estruturas de dados, alocação da memória para o grid e a inicialização das três threads: motor,sensor,robô.

Figura 5. Comportamento das Threads

Problemas com o sincronismo das threads foram observados na simulação, sendo necessária a utilização de diversos mecanismos de sincronização, tais como semáforos e barreiras.

Cada thread é responsável por simular um dispositivo de hardware:

• Sensor:

Recebe como informação de entrada a posição dos obstáculos no cenário da simulação. É atualizado constantemente com a posição atual do robô (linha e coluna) e simula a leitura dos sensores de ultra-som conforme a posição do obstáculo.

• Motor:

Atualizado constantemente com o valor dos acionadores dos motores. Simula o giro das rodas do robô com um delay estabelecido de 1 segundo.

• Robô:

O código do robô implementa o algoritmo desenvolvido acima. Simula o robô em si e é capaz de tomar decisões e navegar pela grade. Ele representa a tradução do algoritmo em portugol mencionado acima para linguagem C.

(6)

2.3. Modelo RTL Verilog

O SoC controlador do robô irá implementar o algoritmo de deslocamento e desvio de obstáculos descrito acima. A interface para a comunicação com o ambiente externo encontra-se na Figura 6.

Figura 6. Chip robô

O detalhamento dos sinais mostrados na figura depende do entendimento dos detalhes da construção eletro-mecânica do robô.

2.3.1. Estrutura do robô

O robô terá a estrutura mostrada na Figura 8. Cada roda será acionada por um motor de corrente contínua capaz de girar independentemente para frente ou para trás, de acordo com os comandos recebidos do SoC. Cada roda terá também um grupo de marcas capazes de acionar sensores óticos de modo a enviar ao SoC um número inteiro de pulsos elétricos a cada volta efetuada. Quatro sensores de ultrassom, colocados na parte frontal, traseira, e nas laterais (direita e esquerda) enviarão informações sobre a distância dos obstáculos encontrados.

Figura 7. Estrutura do robô

Cada posição da grade é identificada por suas coordenadas (x,y), com (0,0) correspondendo ao canto inferior esquerdo da grade. O tamanho máximo das dimensões horizontal e vertical é de 255 posições. As posições inicial (xi,yi) e final (xf,yf) do robô são arbitrárias (dentro desses limites) e deverão ser informadas no início da operação.

(7)

2.3.2. Sinais da Interface

Algumas observações importante sobre os sinais apresentados:

1. Sinais sme e smd: a cada volta completa do eixo das rodas, estas entradas receberão um número inteiro de pulsos. Estas entradas são assíncronas e devem ser amostradas na borda de descida. Estas informações serão utilizadas para o cálculo do posicionamento e da orientação do robô. A distância entre os eixos e o diâmetro das rodas deverão ser tais que o deslocamento entre dois elementos da grade (na vertical ou horizontal) corresponda a um número inteiro de pulsos e um giro de 90 graus corresponda a um número inteiro de pulsos.

2. Sinais me e md: sinais de acionamento que devem ser enviados aos motores esquerdo e direito, respectivamente. As seguintes combinações são possíveis:

me = md = 11: deslocamento frontal. me = md = 00: deslocamento para trás. me = md = 01 (ou 10): robô parado.

me = 11; md = 00: robô gira para a esquerda sobre seu próprio eixo. me = 00; md = 11: robô gira para a direita sobre seu próprio eixo. As demais combinações estão proibidas.

3. Sinais done e error: quando o robô encerrar o processamento, ele faz done = 1. Este sinal permanece em nível alto até o próximo reset. Caso ocorra algum erro o sinal error é colocado em 1.

(8)

3.2.3. Estrutura interna do SoC

O bloco da Figura 6 tem a estrutura mostrada na Figura 8.

Figura 8. Detalhamento robô

Os blocos xi, yi, xf e yf são registradores que armazenarão as coordenadas inicial e final do deslocamento. O bloco robo_core corresponde ao núcleo do SoC, e será descrito a seguir. O bloco controle_entrada é responsável por fazer o tratamento das informações de entrada.

A estrutura interna de robo_core encontra-se na Figura 9.

Figura 9. Detalhamento core

O módulo principal é bug, que implementa o algoritmo de deslocamento descrito anteriormente (a implementação deste módulo corresponde à tradução do algoritmo em linguagem C para uma máquina de estados especificada em Verilog, seguindo os

(9)

procedimentos usuais para implementação de circuitos digitais complexos). Os demais módulos (girar, mover e parar) são acionados (respectivos sinais start) quando necessário, conforme descrito abaixo:

1. Módulo girar: responsável pelo acionamento dos motores (saídas me e md) de

modo a girar o robô. A entrada direção indica o sentido do giro (horário ou anti-horário) e a entrada ângulo o número de pulsos a contar (entradas sme e smd) de modo a obter um determinado ângulo de giro. Ao final da operação, habilita o sinal done.

2. Módulo parar: responsável por emitir o sinal de parada dos motores (saídas

me e md). O sinal done é habilitado no final da operação, após um pequeno delay (cerca de 1s) para estabilização do robô.

3. Módulo mover: responsável pelo acionamento dos motores (saídas me e md)

de modo a movimentá-lo para frente. A cada volta completa das rodas, um pulso é emitido pela saída volta. O final da movimentação é solicitado pela entrada stop, e o final da operação pela saída done.

Todos esses módulos são implementados na forma de autômatos de estados finitos.

2.4. Protótipo FPGA

A placa utilizada para a implementação do algoritmo Bug já traduzido para Verilog foi a DE2 - 70, com FPGA Cyclone II, do fabricante Altera. Esta placa é responsável pela comunicação e controle dos dispositivos de hardware (sensores de ultra-som, rodas, motores). Ver Figura 8.

Figura 8. Placa Altera DE2-70

A construção da parte física do robô, bem como de sua interligação com o SoC. encontra-se em desenvolvimento.

(10)

3. Conclusão

A aplicação da metodologia no processo de desenvolvimento do SoC em conjunto com o simulador multi-thread, desenvolvido na linguagem C, permitiu uma redução considerável do tempo gasto no projeto desde o esboço do algoritmo de navegação na linguagem Portugol até a simulação na FPGA da plataforma de desenvolvimento DE2-70. A utilização dessas ferramentas possibilitou identificar com facilidade os problemas e conflitos que surgiram no decorrer do projeto. O simulador foi fundamental sendo que através dele a eficiência do algoritmo foi comprovada, para assim ser convertido para a linguagem Verilog e aplicado à FPGA. Como sugestão de trabalho futuro foi estabelecido a construção da estrutura fisica do robô e realizar testes reais com o SoC desenvolvido.

4. Referências

Bergamaschi, R.A. and Cohn, J.(2002). The A to Z of SoCs, In: Proceedings of the 2002 IEEE/ACM International conference on Computer-aided design, New York, nov. 10-14.

Lee, S. (2000). Design of Computer and Other Complex Digital Devices, Prentice Hall, New Jersey.

Modi, S., Chandak, P. Murty, V.S. and Hall, E.L. (2001). A Comparison of Three Obstacle Avoidance Methods for a Mobile Robot, Proc. of the SPIE Intelligent Robots and Computer Vision Conf., out. 29-31.

Ottoni, G. L. and Lages, W. F. (2003). Navegação de Robôs Móveis em Ambientes Desconhecidos Utilizando Sonares de Ultra-som, Revista Controle & Automação. Vol.14 nº.4,p.402-411, out-dez.

Philipsen, R. and Siegwart, R. (2003). “Smooth and efficient obstacle avoidance for a tour guide robot”, http://infoscience.epfl.ch/record/97504/files/paper.pdf, Fevereiro. Yufka, A. and Parlaktuna, O. (2009). “Performance Comparison of bug algorithms for

mobile”, http://iats09.karabuk.edu.tr/press/bildiriler_pdf/IATS09_01-01_1254.pdf, Março.

Referências

Documentos relacionados

A proposta desta pesquisa objetivou desenvolver o estudante para realizar a percepção sobre o estudo da complexidade do corpo humano, onde o educando teve oportunidade

da quem praticasse tais assaltos às igrejas e mosteiros ou outros bens da Igreja, 29 medida que foi igualmente ineficaz, como decorre das deliberações tomadas por D. João I, quan-

A partir da análise das Figuras 5.20, 5.21, 5.22 e 5.23 pode-se afirmar que a variação do início da altura de queda do bloco não alterou os resultados da energia cinética e alturas

Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades

Os Coordenadores Setoriais, enquanto professores, procuram dar o exemplo, mas deixam claro que encontram, no seu percurso como extensionistas, esse elemento dificultador;  O

As IMagens e o texto da Comunicação (com as legendas incluídas) devem ser enviadas por correio eletrônico. Comitê

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

Predicted values were calculated by measuring the joint probability of effects on isopods’ biomass variation found for single exposures to different soil