Computação Reconfigurável Aplicada à Robótica (FPGA)
Apesar de sua ampla utilização, processadores de finalidade geral não são ideais para a maioria das aplicações que executam. Para quase todas as aplicações, mudanças ou adições que melhorariam significantemente o desempenho podem ser sugeridas nas arquiteturas dos microprocessadores. Entretanto, as adições diferem de aplicação para aplicação.
Apesar de sua ampla utilização, processadores de finalidade
geral não são ideais para a maioria das aplicações que executam. Para
quase todas as aplicações, mudanças ou adições que melhorariam
significantemente o desempenho podem ser sugeridas nas arquiteturas dos
microprocessadores. Entretanto, as adições diferem de aplicação para
aplicação.
O hardware reconfigurável apresenta-se como uma alternativa tecnológica
que pode adaptar-se a aplicação com a facilidade de um processador de
finalidade geral, enquanto mantém as vantagens de desempenho do
hardware dedicado. Com essa inerente velocidade e adaptabilidade, a
computação reconfigurável tem um grande potencial a ser explorado
especialmente em aplicações que necessitam de alto desempenho como
arquiteturas paralelas, processamento de imagens e aplicações de tempo
real.
Neste artigo apresenta-se um overview desta tecnologia ainda nova,
apontando algumas possibilidades de aplicação na área de
robótica.
1 Introdução
A evolução das metodologias de projeto de hardware, apoiadas em
poderosas ferramentas de software que aceleram o ciclo de
desenvolvimento, e especialmente o surgimento de dispositivos
reconfiguráveis como os FPGAs (Field-Programmable Gate Arrays) abriu um
novo horizonte entre os extremos da computação de finalidade geral e o
hardware dedicado. Os FPGAs combinam a flexibilidade de dispositivos
programáveis (como PLDs e microprocessadores de finalidade geral) com o
desempenho do hardware de finalidade específica (como ASIC). [Brown,
1997] .
Hoje, é possível desenvolver rapidamente um projeto de sistema digital
empregando-se novas metodologias como linguagens de descrição de
hardware (HDLs) [Harding, 1990), ferramentas de síntese lógica e
simulação. Utilizando-se os circuitos reconfiguráveis pode-se
implementar em campo, sem necessidade de processos de fabricação de
chips, um protótipo ou a versão final do projeto desenvolvido [Chan,
1994].
Uma área promissora para aplicação de FPGAs, que ainda está começando a
se desenvolver, é a implementação de máquinas computacionais dedicadas
e reprogramáveis dinamicamente. Isto envolve o uso das partes
programáveis para "executar" algoritmos, ao invés de compilá-los para a
execução numa CPU. No simpósio FCCM (Field-Programmable Custom
Computing Machines), há previsões que em 2003 90% dos sistemas
embutidos irão utilizar dispositivos reconfiguráveis [FCCM,
1998].
Na área de robótica há grandes desafios no desenvolvimento de
algoritmos para controle de robôs móveis, que geralmente demandam
muitos recursos computaci-onais para execução em tempo real. A seguir
apresenta-se um overview dessa nova e empolgante área de Computação
Reconfigurável. Descreve-se também uma das linhas de pesquisa do
Laboratório de Computação Reconfigurável do ICMC-USP, que em conjunto
com o LABIC (Laboratório de Inteligência Computa-cional) e com a CMU
(Carnegie Mellon University - USA), pretende implementar algoritmos de
robótica em hardware reconfigurável e a longo prazo, construir um robô
móvel com uma arquitetura reconfigurável e flexível, visando atender os
requisitos deste tipo de aplicação.
2 Computação Reconfigurável
Em termos básicos, a computação reconfigurável combina a velocidade do
hardware com a flexibilidade do software. A tecnologia da computação
reconfigurável consiste na habilidade de se modificar o hardware da
arquitetura do sistema em tempo real para se adequar à aplicação; e
isto deve ser realizado com o chip energizado.
Os sistemas de computação reconfigurável são plataformas onde a
arquitetura pode ser modificada em tempo real para melhor se adequar à
aplicação que será executada, Deste modo, o processador reconfigurável
passa a trabalhar com uma arquitetura desenvolvida exclusivamente para
aquele determinado tipo de aplicação, permitindo uma eficiência muito
maior do que a normalmente encontrada em processadores de uso geral.
Isto ocorre porque o hardware é otimizado para executar os algoritmos
necessários para aquela aplicação específica; ou seja, para se obter um
melhor desempenho de um algoritmo, este deve ser executado num hardware
específico para ele. Acentuados ganhos de desempenho podem ser obtidos
com a utilização deste hardware específico.
Atualmente, a forma de utilização mais difundida dos chips
reconfiguráveis é como parte de sistemas que utilizam processadores
tradicionais. Os chips reconfiguráveis atuam como coprocessado-res
trabalhando com algoritmos pesados e específicos e dessa forma
aliviando a carga do processador principal permitindo que este possa
executar outras tarefas mais genéricas. Nesses casos o chip
reconfi-gurável pode ser comparado com um plug-in do sistema. Ele se
adapta em tempo real para tarefas especificas e pesadas que certamente
exigiriam grande tempo de processamento do microprocessador principal
[Cardoso, 2000; Star Bridge, 2000].
2.1 Tendências
A computação reconfigurável é ainda um campo extremamente novo. Apesar
dos conceitos básicos de computação reconfigurável terem sidos
propostos na década de 1960, as primeiras demonstrações só vieram
ocorrer poucos anos atrás e os FPGAS atuais ainda não estão preparados
para explorar todas as possibilidades desta técnica [Villasenor,
1997].
Pesquisadores acadêmicos e fabricantes estão superando numerosas
limitações que dificultam a adoção da computação reconfigurável. Nem
todas as operações computacionais podem ser implementadas
eficientemente nos FPGAs atuais: eles são bem adequados para algoritmos
compostos por operações bit-level, como o reconhecimento de padrões e
aritmética inteira, mas não são apropriados para operações numéricas
como multiplicação de alta-precisão e cálculos com ponto flutuante.
Além disso, os FPGAS possuem pouca memória no chip para armazenar
resultados intermediários dos cálculos, assim, muitas aplicações de
computação reconfigurável requerem grandes memórias externas. A
transferência de dados do FPGA e para o FPGA aumenta o consumo de
potência e pode diminuir muito o desempenho.
Felizmente, pesquisadores estão desenvolvendo arquiteturas de FPGAs
mais avançadas que contém mais memória, unidades de processamento
aritmético e outros blocos de circuito para finalidades especiais, como
a linha Virtex da Xilinx, que já atinge a quantia de 4 milhões de
portas lógicas.
FPGAs nunca irão substituir micropro-cessadores em tarefas
computacionais de finalidade geral, mas o conceito de computação
reconfigurável irá exercer um importante papel no desenvolvimento de
sistemas de computação de alto desempenho. O poder computacional que os
FPGAs oferecem os transformam nos dispositivos mais adequados para
aplicações que envolvem algoritmos onde uma rápida adaptação aos dados
de entrada é requerida.
Ainda mais, a fronteira entre processadores programáveis e FPGAs irá se
tornar mais tênue: as futuras gerações de FPGA irão incluir funções
como memória local e multiplicadores que são padrões em
microprocessadores; as novas gerações de microprocessadores em
desenvolvimento também irão dar suporte a algum grau de reconfiguração,
de forma similar aos FPGAs. De fato, assim como computadores conectados
à Internet podem automa-ticamente carregar componentes de software de
finalidade especial para realizar determinadas tarefas, futuras
máquinas deveram carregar novas configurações de hardware à medida que
forem necessárias. Os equipamentos computacionais nos próximos anos
irão incluir uma forte mistura de hardware programável via software e
hardware reconfigurável.
3 Robótica
Robôs são dispositivos mecânicos versáteis (por exemplo, braços
mecânicos articulados, veículos terrestres, áereos ou submarinos, etc)
equipados com sensores e atuadores sob o controle de um sistema
computacional. Eles realizam tarefas executando movimentos num espaço
físico. Este espaço é povoado por vários objetos e está sujeito às leis
da natureza [Salant, 1990].
Nos últimos anos têm-se observado um vertiginoso crescimento do
potencial de sistemas robóticos. Numa primeira etapa houve um grande
desenvolvimento na área de robótica industrial. A implantação no chão
de fábrica de robôs industriais trouxe benefícios como a melhoria da
eficácia, da qualidade, redução da mão-de-obra, além de mais
eficiência, confiabilidade e redução de custos. Vantagens adicionais
incluem a capacidade de realizar tarefas para as quais os humanos
teriam grande dificuldade, e a remoção de humanos de tarefas em
ambientes perigosos.
Numa nova etapa de evolução, pesqui-sadores em robótica têm concentrado
esforços na construção de Robôs Móveis, introduzindo as capacidades de
mobilidade e autonomia para reagir adequadamente ao ambiente, o que
abre um vasto campo de novas aplicações e conseqüentemente muitos
desafios.
3.1 Robôs Móveis: Aplicações e Requisitos
Dentre algumas possibilidades de uso de robôs móveis pode-se citar o
transporte de materiais, combate a incêndios, desativação de
explosivos, vigilância de armazéns, viagens submarinas e aeroespaciais
e prestação de serviços interagindo com pessoas para auxílio a tarefas
rotineiras [Simmons, 1995].
Os problemas enfrentados no desenvolvimento de robôs móveis geralmente
estão relacionados com a necessidade de interagir com os objetos
físicos e entidades do ambiente. A plataforma deve ser capaz de navegar
a partir de uma posição conhecida para uma nova localização desejada,
evitando colisões com objetos fixos e móveis durante sua rota
[Medeiros, 1998].
Para funcionar em um ambiente desestruturado, desconhecido ou dinâmico,
um robô móvel deve ser capaz de perceber as circunstâncias e gerar
ações que são apropriadas para o ambiente e para os objetivos do
sistema robótico.
Robôs Móveis precisam combinar informações de várias fontes diferentes.
Um bom sistema de sensoriamento é fundamental para adquirir dados que
descrevem o ambiente, em tempo real e com alta resolução, e ainda com
as limitações dos recursos computacionais e de consumo de energia do
veículo móvel. Algumas considerações gerais sobre o sistema de
sensoriamento estão sintetizadas a seguir [Everett, 1995]:
- Campo de visão ~V deve ser abrangente o suficiente e com bom alcance
de profundidade.
- Alta precisão e resolução.
- Capacidade de detecção de todos os objetos do ambiente.
- Operação em tempo real
- Dados concisos e fáceis de interpretar ~V uma quantidade de dados
excessiva ou insuficiente implicam em atrasos nas respostas ou
respostas inadequadas. Algum grau de pré-processamento e análise é
requerido para prover respostas somente quando uma ação for
necessária.
- Redundância ~V o sistema não deve ficar incapacitado pela falha de
algum dispositivo. Deve ter uma capacidade multimodal para assegurar a
detecção de todos os objetos, assim como aumentar a confiabilidade da
resposta.
- Simplicidade ~V o sistema deve ser de baixo custo e modular para
permitir uma fácil manutenção e atualizações.
- Consumo de potência ~V os requisitos de potência devem ser mínimos
devido aos limitados recursos de um veículo móvel.
- Tamanho ~V o tamanho e o peso do robô devem ser adequados para a
realização prática de suas tarefas.
Alguns outros requisitos de robôs móveis são:
- Necessidade de tele-operação e controle autônomo.
- Execução de tarefas não repetitivas.
- Dinâmica e cinemática complexa.
- Novos mecanismos de locomoção.
- Capacidade de trabalhar em ambientes hostis com bruscas variações de
temperatura, exposição a radiação, vácuo, iluminação variável.
- Necessidade de recuperação devido a eventos não planejados, incluindo
falhas do sistema e erros.
Em resumo, a próxima geração de robôs móveis deve ser bem mais flexível
para responder a eventos imprevistos que a geração atual. Especialmente
para aplicações de operações espaciais é requerida a habilidade de
trabalhar em um ambiente não bem definido e que não é controlável, ao
contrário do ambiente industrial.
3.2 Desafios da Robótica
Mesmo atualmente, após décadas de pesquisas e desenvolvimento, a
concretização dos "sonhos" dos pesquisadores, incluindo todas as
capacidades e funcionalidades necessárias para as aplicações
vislumbradas, esbarra em uma série de dificuldades tecnológicas.
Os principiais gargalos no desenvolvimento das aplicações são os
recursos computacionais (algoritmos e arquiteturas), recursos de
comunicação e sensores. Este é um campo de pesquisa multidisciplinar
que envolve áreas de conhecimento como Inteligência Artificial, Redes
Neurais, Computação Paralela, Física, Mecatrônica, dentre outras.
3.2.1 Algoritmos de Robótica
Algoritmos são abstrações que podem ser descritas e analisadas
independentemente de qualquer tecnologia específica. A análise da
complexidade de algoritmos contribuiu muito para o progresso da
indústria de software e hardware.
Os algoritmos de robótica são descrições abstratas dos processos
relativos às ações de navegação e percepção executadas no ambiente.
Assim como os algoritmos computacionais, algoritmos de robôs podem ser
desenvolvidos e analisados independentemente de sua implementação
particular. [Latombe, 1995] Entretanto, também diferem de forma
significativa dos algoritmos computacionais. Realmente, enquanto estes
últimos têm total controle e completo acesso aos dados que utilizam, os
algoritmos de robótica são aplicados a objetos físicos do mundo real,
os quais os algoritmos tentam controlar, apesar do fato desses objetos
estarem sujeitos às independentes e imperfeitamente modeladas leis da
natureza. A aquisição de dados através de sensores também está sujeita
a erros. Conseqüentemente, algoritmos de robótica possuem
características clássicas da teoria de controle, normalmente ausentes
em algoritmos computacionais. A complexidade do ambiente e suas
possíveis variações para a realização da mesma tarefa também levantam
questões combinatoriais como encontrar um caminho livre de colisões com
obstáculos e confrontar dados de sensores com um modelo padrão. Esta
mistura singular de questões relativas a controle e algoritmos de
programação é o núcleo da "Ciência Robótica". O enten-dimento,
desenvolvimento e análise de algoritmos de robótica devem causar um
impacto na robótica similar em magnitude ao impacto do estudo de
algoritmos em sistemas de computação.
Portanto, muitos pesquisadores em robótica enfocam prioritariamente o
desenvolvi-mento de algoritmos, pois consideram que a principal
limitação para construção de robôs está em como controlá-los, ou seja,
como criar programas capazes de operar estas máquinas complexas
[Brooks,1986]. Isto é um problema de software [Jones, 1993]. Um dos
ramos da computação que se ocupa da pesquisa do desenvolvimento destes
softwares para o controle de robôs é chamado de Inteligência Artificial
(IA). Os principais tópicos estudados no desenvolvimento de algoritmos
de robótica são: Planejamento do Movimento e Navegação [Mataric, 1990;
Trhun, 1996], Manipulação de Objetos, Visão Computacional
(reconhecimento de objetos, tratamento de imagens) e mais recentemente
também têm sido abordada a área de Interface Homem-máquina, buscando
facilitar a interação dos usuários com os sistemas robóticos, o que
implica no desenvolvimento de algoritmos para reconhecimento de voz e
gestos [Torrance, 1994; Waldherr, 1999].
3.3 Futuro e Perspectivas da Robótica
As tecnologias para construção de sistemas robóticos robustos e com
capacidade de mobilidade já amadureceram a ponto de não existir somente
experimentos e demonstrações de laboratório. Já alcançaram um patamar
onde aplicações viáveis comercialmente não são somente conceitos
futuristas, mas são realidades baseadas nas capacidades já disponíveis.
Como resultado, observa-se o surgimento de um novo mercado não mais
confinado às plantas industriais. Em breve será possível comprar robôs
que irão operar com pouco ou nenhum conhecimento prévio em plantações,
minas de cobre e transporte de cargas . As expectativas de vendas
dessas máquinas são projetadas para superar até quatro vezes as vendas
de robôs industriais. Um estudo preliminar, patrocinado pelo NREC,
identificou 14 segmentos industriais que podem se beneficiar
significantemente do uso da robótica, em termos de aumento de
produtividade, segurança e redução de custos de operação. Essas
indústrias incluem os ramos de agricultura, silvicultura, armazenamento
e transporte de cargas, construção civil, manipulação de materiais
perigosos e mineração. Em cada uma dessas áreas, o estudo aponta que as
vendas potenciais de sistemas de robótica para uso em campo pode
exceder a US$ 2 bilhões na próxima década. [NASA, 2000]
4. Aplicando Computação Reconfigurável em Robótica
Uma das mais promissores aplicações para computação reconfigurável é a
comparação de padrões (pattern matching). Esta técnica é usada em
tarefas como reconhecimento de escrita, identificação de faces,
recuperação em bases de dados e reconhecimento de alvos, sendo bastante
útil e amplamente utilizada em algoritmos de robótica. Uma operação
fundamental na comparação de padrões é a comparação de um conjunto de
bits (representando uma imagem, uma string de caracteres ou outros
dados) com um conjunto de modelos (templates) que correspondem aos
possíveis padrões a serem reconhecidos. O sistema declara o
reconhecimento quando o número de bits de entrada correspondentes ao
modelo ultrapassa um certo limite. No caso de reconhecimento de alvos,
o grande desafio é rápida comparação de uma imagem de entrada com
milhares de modelos. O sistema precisa realizar as comparações a uma
taxa de vários trilhões de operações por segundo, pois todos os pixels
da imagem devem ser comparados com todos os pixels dos muitos
modelos.
No Departamento de Engenharia Elétrica da UCLA, [Villasenor, 1997] foi
construído o protótipo de um sistema de reconhecimento com hardware
reconfigurável que obteve significante economia de hardware pelo
auto-ajuste do circuito para cada modelo comparado. Muitos dos pixels
de uma imagem típica não contribuem para os resultados da comparação,
portando a máquina reconfigurável pode simplesmente omiti-los dos seus
cálculos. Um sistema convencional não poderia facilmente operar da
mesma maneira, pois os pixels a serem ignorados diferem muito de um
modelo para outro.
Uma outra abordagem interessante de aplicação de computação
reconfigurável à robótica é o sistema de computação, desenvolvido pela
NASA [ ], chamado de Processador Matemático de Robôs (RMP). Este
sistema contém um grande número de elementos de processamento (PEUs)
conectados em várias combinações paralelas e seriais que são
reconfiguráveis via software. O RMP é uma arquitetura de propósito
especial projetada para resolver problemas computacionais diversos em
controle de robô, simulação, geração de trajetória, análise de ambiente
de trabalho, dentre outros. É uma arquitetura paralela especializada
algoritmicamente capaz de explorar as propriedades comuns dos
algoritmos paralelos desenvolvidos para esta classe de problemas. Pode
explorar o paralelismo em diferentes formas e em vários níveis
computacionais nestas aplicações pesadas e computacionalmente
intensivas. Da perspectiva de interação com outro equipamento de
computação, o sistema pode ser considerado como um processador que pode
ser acoplado ao barramento da máquina host externa como uma parte do
barramento de memória. O sistema interage com o processador externo
controlado pelo usuário. O processador do host externo pode ser
qualquer computador stand-alone ou um sistema com multiprocessadores.
Os dados e instruções do host externo para o RMP e os resultados do RMP
para o host externo são comunicados através de compartilhamento de
memória de acesso dual que é parte do barramento de memória.
5. Proposta de Construção de um Robô Móvel aplicando a Tecnologia de
Computação Reconfigurável
O Laboratório de Computação Reconfi-gurável do ICMC-USP está
desenvolvendo, juntamente com o LABIC (Laboratório de Inteligência
Computacional) e o com a CMU (Carnegie Mellon University - USA), um
projeto que a longo prazo pretende construir um robô móvel com
arquitetura totalmente baseada em computação reconfigurável [Romero,
2000]. Para este sistema, inicialmente, será construído uma biblioteca
de algoritmos de robótica descritos na linguagem VHDL [ Ashenden,
1996]. A implementação de hardware dos algoritmos escolhidos usará a
tecnologia de computação reconfigurável [Madisetti, 1996]. Num futuro
próximo, pretende-se construir um kernel que controlará de forma
inteligente a execução dos algoritmos desta biblioteca, para ser usado
no robô móvel. O fato da implementação de hardware estar usando a
tecnologia de computação reconfigurável permitirá a construção de um
robô projetado com circuitos integrados que são reconfigurados em tempo
de execução (sem que o hardware seja desligado), dando ao robô a
possibilidade de trabalhar com diversos tipos de hardware numa mesma
implementação. Esta possibilidade de reconfigurar o CI em tempo de
execução, carregando-se um outro algoritmo mais adequado para aquela
determinada tarefa só será possível a longo prazo com a construção de
um hardware "camaleão"; e as FPGAs disponíveis no momento estão ainda
bastante limitadas nesse aspecto [DeHon, 1999]. Mas, no futuro, isto
viabilizará a obtenção de um sistema mais flexível e de mais fácil
adaptação a diferentes ambientes, voltado a aplicações em tempo real,
visando, posteriormente, a construção de um robô completo com uma
arquitetura reconfigurável.
Para a implementação a nível de hardware, usando a tecnologia FPGA,
alguns algoritmos deverão ser discretizados e todos deverão ser
reescritos na linguagem de descrição de hardware VHDL. Os algoritmos
implementados na versão de
hardware serão testados inicialmente no sistema de emulação de hardware
"APTIX"
disponível no Laboratório de Computação Reconfigurável.
5.1 Ferramenta para o Auxílio na Construção do Hardware do
Robô
O Laboratório de Computação Reconfi-gurável do ICMC-USP está
trabalhando no desenvolvimento de um projeto denominado ARCHITECT
[Gonçalves, 2000]. O ARCHITECT é um sistema de computação
reconfigurável que atua no desenvol-vimento de pesquisas na área de
compiladores, arquitetura de computadores e kernel de sistemas
operacionais em tempo-real, visando a exploração máxima do paralelismo
encontrado nas mais diversas aplicações .
Para isso serão utilizadas técnicas modernas de otimização de
compiladores, exploração de paralelismo em nível de instruções - ILP -
e computação reconfigurável.
A idéia é particionar o projeto ARCHITECT de forma a ficar modular, ou
seja, o compilador, a arquitetura, e o kernel do sistema poderão ser
criados independentemente, seguindo-se apenas algumas regras de
interfaceamento entre eles. Este sistema dará suporte a construção do
hardware dos algoritmos do robô móvel, pois muitos dos algoritmos que
serão utilizados já estão escritos na linguagem C. Deste modo, o
ARCHITECT ajudaria na conversão direta desses algoritmos para a
linguagem VHDL, poupando muitas horas de trabalho do projetista de
hardware, e ao mesmo tempo gerando uma arquitetura para o robô da
maneira mais otimizada possível.
6 Conclusão
Como já foi apresentado, a área de Robótica é bastante complexa e há
muito que se fazer ainda nesta área. A proposta de um robô móvel
implementado com a tecnologia de computação reconfigurável é uma tarefa
difícil e de muito longo prazo. Um dos principais motivos é o caráter
multidisciplinar desse projeto, uma vez que abrangerá estudos nos
seguintes tópicos: projeto de lógica digital, modelamento de sistemas
digitais com VHDL, exploração de paralelismo em arquiteturas de
computadores, técnicas de inteligência artificial e redes neurais
aplicadas à robótica, teoria de controle, lógica fuzzy, kernel de
sistemas operacionais de tempo real e, finalmente, a computação
reconfigurável propriamente dita. Os resultados destas pesquisas darão
muita versatilidade ao robô e isto é um requisito fundamental para a
evolução da área da robótica.
7 Referências
Ashenden, P. J., The Designer's Guide to VHDL, Emorgan Kaufmann
Publishers, Inc., 1996.
Brooks, R.A., "A Robust Layered Control System for a Mobile Robot",
IEEE Journal of Robotics and Automation, RA-2, pp. 14-23, 1986.
Brown, S.; Rose, J.; Francis, R.; Vranesic, Z. "Field Programmable Gate
Arrays", Kluwer Academic Publisher, 1997.
Cardoso, J.M.P; Vestias, M.P., Architectures and Compilers to Support
Reconfigurable Computing,www,acm.org/crossroads/xrds5-3/rcconcept.html,
Janeiro de 2000.
Chan, P.; Mourad, S. "Digital Design using Field Programmable Gate
Arrays", Prentice Hall, 1994.
DeHon, A., Wawrzynek, J., Reconfigurable Computing: What, Why, and
Design Automation Requirements? In Proceedings of the 1999 Design
Automation Conference, pp. 610--615, June 1999.
Everett, H. R., "Sensors for Mobile Robots Theory and Application", A K
Peters, Ltd. , Wellesley, Massachusetts, 1995
FCCM '98 Top 10 Predictions for FCCMs in 2003,
http://www.fccm.org/top10_98.html
Gonçalves, R.A, Wolf, D.F., Coelho, F.A.S., Teixeira, M.A., Ribeiro,
A.A.L., Marques, E., ARCHITECT: Um Sistema de Computação
Reconfigurável, trabalho submetido ao CORE~R2000.
Harding, B. ~V "HDLs: a high-powered way to look at complex design",
Computer Design, p. 74-84, March 1990.
Jones, J.L., Flynn, A. M.,"Mobile Robots: Inspiration to
Implementation", A.K.Peters Ltda, 1993.
Latombe, J.C, Robot Algorithms, Algorithmic Foundations of Robotics,
edited by Ken Goldberb, p. 1-18, A K Peter, Wellesley Massachusetts,
1995.
Madisetti, V.K., Rapid Digital System Prototyping: Current Practice,
Future Challenges, IEEE Design & Test of Computers, 1996.
Mataric, M.J., "A Distributed Model for Mobile Robot
Environment-Learning and Navigation", MIT Technical Report 1228,
1990.
Medeiros, A.A D., "A Survey of Control Architectures for Autonomous
Mobile Robots", Journal of the Brazilian Computer Society, No. 3, Vol.
4, April, 1998.
NASA Space TeleRobotics Program,
http://ranier.hq.nasa.gov/telerobotics_page
Romero, R. A, Aprendizado em Robôs Móveis Via Software e Hardware ~V
ARMOSH ~V Projeto de Pesquisa do ICMC-USP, março de 2000.
Salant, M.A ., "Introdução à Robótica", São Paulo, McGraw Hill,
1990.
Simmons, R., Goodwin, R., Haigh, K., Koenig, S., and O'Sullivan, J., "A
Layered Architecture for Office Delivery Robots", 1995.
Star Bridge Systems, Overview of SBS´s Reconfigurable Computing
Technology http://www.starbridgessystems.com/tech-over.html
Thrun, S., Bucker, A., "Learning Maps for Indoor Mobile Robot
Navigation, CMU Technical Report CMU-XS-96-121, 1996.
Torrance, M.C., "Natural Communication with Robots", Master's thesis,
MIT Department of Electrical Engineering and Computer Science,
Cambridge, MA, 1994.
Villasenor, J.; Mangione-Smith, W.H.; Configurable Computing,
Scientific American, Junho de 1997.
Waldherr, S., Romero, R. A, Thrun, S., "Gesture-Based Interface for
Human-Robot Interaction", Journal Autonomous Robots, 1999 (in
print).
Antônio Aragão, Roseli Romero, Eduardo Marques
Universidade de São Paulo USP
Instituto de Ciências Matemáticas e de Computação ICMC
Av. Dr. Carlos Botelho, 1465 - São Carlos - SP
{aragao, rafrance, emarques }@icmc.sc.usp.br
URL Original:
http://www.icmc.sc.usp.br/~lcr/artigos/robotica.html

