Fundamentação Teórica

 

Metodologia

 

 

Na introdução desta proposta ressaltou-se a importância dos sistemas de navegação autônomos propostos nos desafios do DARPA. Neste item pretende-se enfatizar a importância da pesquisa aplicada, inicialmente, a um SAC - Sistema de Navegação Semi-Autônoma, como produto intermediário de projeto de um veículo autônomo.

 

Em relação à navegação autônoma e semi-autônoma, destaca-se que para muitas ocasiões não será possível à dispensa do ser humano, principalmente em operações militares, o que leva a sistemas autônomos e semi-autônomos a terem a mesma relevância.

 

Neste sentido, na figura 5, no limiar da pesquisa dos sistemas de navegação autônomos, encontram-se os sistemas semi-autônomos (SAC), onde, basicamente, a principal diferença está que para um sistema autônomo se faz necessário ter conhecido o modelo cinemático e dinâmico do veículo, enquanto que para um SAC necessita-se de uma Interface Homem-Máquina (IHM) e/ou de um Sistema de Realidade Virtual (SRV). Desta forma, para um sistema autônomo o resultado da análise sensorial gera comandos de movimentos aos atuadores do veículo, enquanto que para um SAC são gerados alertas ao condutor, que por sua vez, interage com os atuadores do veículo.

 

 

Figura 5 – Componentes principais dos Sistemas Autônomos e Semi-autônomos.

 

 

Atualmente, a pesquisa na área de navegação autônoma e semi-autônoma tem motivado muitos pesquisadores de diferentes grupos devido ao desafio que representa. Várias propostas têm sido estudadas, baseadas principalmente na multidisciplinaridade e no desenvolvimento de sistemas computacionais com inspiração biológica.

 

Neste cenário destaca-se o papel do ambiente no cumprimento de tarefas, por isso a geração de trajetórias pode ser macro classificada em duas grandes categorias, tendo o ambiente como elemento principal: conhecida e determinística; ou desconhecida e dinâmica (MENDELECK et al., 2005).

 

Comum aos sistemas autônomos e semi-autônomos, para obter as informações sobre o ambiente, são necessários sensores e atuadores, que por muitas vezes, podem ser de alcance limitado e sujeitos a ruídos. No entanto, ao incorporar vários tipos de sensores, podemos aumentar seu grau de autonomia e “inteligência”, principalmente em relação à navegação em ambientes desconhecidos. Em contrapartida, o tipo e a quantidade de sensores determinam o volume de dados para o processamento e composição da “imagem” do ambiente, impondo na maioria dos casos, um alto custo computacional. Este custo, por muitas vezes, pode inviabilizar projetos que utilizem equipamentos de pouca capacidade e/ou de aplicações de tempo real.

 

De aplicação comum para as decisões de sistemas não-determinísticos encontram-se os sistemas computacionais com inspiração biológica: Redes Neurais Artificiais e Sistemas Classificadores & Algoritmos Genéticos. No intuito de apresentar algumas características comuns entre sistemas computacionais e biológicos, a seguir trançamos um paralelo ao comportamento biológico humano observando a organização do sistema nervoso, do sistema de visão e o compartilhamento de conhecimento.

 

Independente do tipo de ambiente, para a navegação de humanos, o sistema nervoso em conjunto com o sistema endócrino desempenha funções de controle do organismo. Este sistema recebe milhares de informações dos diferentes órgãos sensoriais, e seu papel é integrá-las a fim de determinar respostas a serem executadas. Sua composição tem origem nas experiências sensoriais adquiridas através dos receptores sensoriais, podendo ser provenientes das experiências auditivas, visuais e vinculadas ao tato (GUYTON, 1973).

 

Uma das funções principais do sistema nervoso é atingir respostas ideais. Muitas das informações adquiridas pelos sensores são desprezadas após passarem pelo processamento de informações do cérebro, e isso pode ser justificado se considerarmos o fato de que humanos podem desempenhar diversas atividades simultaneamente. Como exemplo, durante a condução de um veículo, uma pessoa pode desenvolver outras atividades, como conversar, pensar em outras coisas diferentes daquela primordial, ou mesmo ignorar o fato que sua pele está em contato com suas vestimentas. Especialmente aplicado à visão humana, em determinado momento, o foco da visão de uma pessoa pode estar centrado em uma área específica do ambiente, por exemplo, na estrada por onde navega, no entanto, as outras áreas deste ambiente não estão sendo ignoradas, isto é, para estas sub-imagens do ambiente estará sendo delegado um segundo plano.

 

Para realizar o armazenamento das informações, seres humanos possuem o córtex cerebral e a medula espinhal. Este processo de armazenamento pode ser chamado de memória. As informações a serem armazenadas trafegam através das sinapses, que possuem propriedades muito diversas, tais como, transmitir um sinal de um neurônio para outro. A partir do momento que as recordações tenham sido armazenadas no sistema nervoso, se tornarão parte do mecanismo de elaboração, ou seja, poderão ser utilizadas para atividades motoras posteriores. Tais recordações serão comparadas futuramente a novas experiências, a fim de auxiliar na seleção de novas informações (GUYTON, 1973).

 

Segundo DURRANT-WHYTE (2001), onde se apresenta um trabalho sobre o estado-da-arte dos veículos autônomos e tecnologias, este autor destaca que cinco componentes principais devem compor um sistema autônomo, seja Mobilidade, Localização, Navegação, Missão e/ou Planejamento da tarefa e Comunicações, das quais, brevemente, se descreverá abaixo. 

 

Conforme pode se observar na figura 6, a Mobilidade é encarada simplesmente como o efeito do sistema global, isto é, como o resultado da observação do sistema como um todo. A Localização fornece as informações do local, por exemplo, atitude, velocidade e aceleração do veículo. Destaca ainda que a Localização é uma função exclusiva de saída quando vista em relação ao resto do sistema. Isto significa que o desenvolvimento da capacidade Localização pode por muitas vezes proceder de forma independente dos outros componentes do sistema.

 

A Navegação está preocupada com a aquisição e resposta às informações do ambiente externo. A função de Navegação recebe como entrada o resultado da observação dos sensores no ambiente operacional. Esta observação de muita importância, pois permite criar uma representação interna do ambiente, que pode ser utilizados posteriormente durante a execução de uma missão.

 

Missão e/ou Planejamento da Tarefa é responsável por gerar as trajetórias, comportamentos e/ou pontos de passagem para o sistema como um todo. Ela não tem nenhuma ligação direta com qualquer controlador de entrada ou saída sensorial. No entanto, ele deve ter uma clara compreensão dos mesmos, em conjugação com os mapas lidos antes missão e possíveis objetivos a serem cumpridos, a fim de produzir comandos adequados de navegação.

 

A Comunicação prevê a ligação entre o veículo e todos os possíveis elementos do sistema global, incluindo outros veículos e/ou operadores. Não há qualquer razão para supor que um sistema autônomo ou (Semi)-autônomo não deve compartilhar suas informações com outros sistemas de comunicação, a não ser que a missão exija tal feito.

 

 

 

Figura 6 – Relação entre os diferentes componentes funcionais de um sistema de navegação autônomo (DURRANT-WHYTE, 2001).

 

 

Vale ressaltar que apesar da elevada importância da missão a ser cumprida por um sistema autônomo, isto é, devido ao poder de influência das informações da missão sob o sistema global, tal fato não deve prejudicar os elementos funcionais do veículo, por exemplo, a necessidade de mobilidade, localização, navegação e planejamento, que são habilidades que devem ser contínuas, independentemente da missão.

 

Com efeito, é de esperar que a estrutura e o papel da missão, além da tarefa de planejamento seja uma função crítica, permitindo que a inserção de um grau de flexibilidade. Entretanto, a apreciação das missões específicas não será discutida neste momento.

 

Desta forma, tratando-se do cumprimento de tarefas, caso a tarefa de navegação seja em ambiente conhecido e estático, os problemas podem ser primeiramente reduzidos à modelagem do ambiente e à busca por caminhos seguindo algum critério de otimização, por exemplo: distância, energia, processamento, número de movimentos, qualidade dos deslocamentos, etc. Já para ambientes desestruturados, o cenário para estudo é dinâmico, com vários elementos em movimentos. Assim, conduzir um sistema de navegação autônomo ou semi-autônomo de um ponto inicial até o seu destino, ou auxiliar um condutor nesta tarefa, envolve a execução de operações complexas e não-determinísticas, como exemplo: interação com o ambiente, identificação dos elementos ambientais e tomadas de decisões. Neste caso, a geração de trajetória exige o tratamento de uma série de fatores desconhecidos pelo software de planejamento, tais como, o volume da área de trabalho e os elementos móveis e fixos. Sem estas informações, o custo computacional para a geração de trajetória torna-se bastante elevado, principalmente se considerarmos as formas convencionais de programação de robôs (MENDELECK et al., 2005).

 

Além disso, dizer que um agente é autônomo implica em afirmar que ele, além de agir só, deve conseguir se auto-regular gerando as próprias regras que regem sua atuação. Por isso, a definição distingue autônomo de automático, pois ser automático é ter a capacidade de operar em um ambiente percebendo-o e impactando-o, visando o cumprimento de tarefas definidas. Já um agente autônomo é antes de tudo automático, mas deve se autodirigir com base na capacidade própria de aprender e adaptar seus comportamentos (CAZANGI, 2004). Porém somente automático, não poderia ser a classificação ideal para um sistema semi-autônomo - SAC, pois o mesmo pode operar como se autônomo fosse, ficando apenas a decisão final de movimento ao condutor do veículo.

 

Com o que temos até o agora, um SAC pode ser definido como um sistema que possui a capacidade de perceber o ambiente, administrar o auxílio ao cumprimento de tarefas pré-definidas, e apresentar o resultado do processamento (status) ao condutor do veículo. Porém, a existência de níveis de autonomia deve ser considerada, pois não existe um ser totalmente autônomo. Como exemplo: os animais, em geral, e o ser humano, em particular, dependem de fatores externos para sobreviverem. Logo, quando se afirma que um agente é autônomo, deve-se ter em mente que ele detém certo nível de autonomia e não que ele é completamente autônomo, sendo que quanto mais autônomo for o agente, menos auxílio externo ele necessita (CAZANGI, 2004).

 

Ligados aos níveis de autonomia incluímos três definições SHIROMA (2004):

 

·         Sistema Mecânico - “A parte física. A plataforma móvel do veículo. Encontra-se imerso em um ambiente global ou mundo real e é capaz de interagir com uma parcela dele – o ambiente local, por exemplo: uma sala, um corredor ou uma estrada, através de seus atuadores.”;

·         Sensores - “Provêem os dados a partir do qual o estado do robô é determinado.”;

·         Inteligência - “O cérebro; responsável pela inteligência do sistema”.

 

Considerando um dado nível de autonomia, numa primeira fase, ou mesmo como subproduto, este projeto propõe a construção de um Sistema de Navegação Semi-Autônomo de Assistência ao Condutor - SAC. Através de um Sistema de Simulação de Realidade Virtual - SRV, inicialmente Não-Imersiva, para Assistência ao Condutor, seu objetivo será auxiliar um condutor durante o cumprimento de tarefas pré-definidas, executadas em ambientes desconhecidos e dinâmicos. Desta forma, incluindo-se o condutor, os quatro componentes: Condutor, Sistema Mecânico, Sensores e Inteligência, deverão interagir continuamente objetivando o cumprimento de tarefas de navegação.

 

O objetivo principal desta primeira fase será o cumprimento de tarefas em deslocamentos entre pontos pré-determinados em ambiente desestruturados, a partir de informações disponibilizadas por um sistema de posicionamento global. Conhecidos os pontos de origem e destino, durante o deslocamento, o sistema deverá ser capaz de identificar a área de navegação em relação aos seus obstáculos, alertando o condutor sobre possíveis colisões, e aprendendo com os movimentos executados.

 

Observa-se que nesta primeira fase, conforme apresenta a figura 7, a escolha do desenvolvimento de um SAC possibilitou que o modelo cinemático e dinâmico do veículo não fosse necessário. Portanto, a pesquisa irá abranger, principalmente, o Estudo Individual dos Sensores, Benchmarking entre os Sensores, Fusão de Sensores, Realidade Virtual Não-Imersiva e Arquitetura de Hardware & Software e Rede de Computadores.

 

Com base no resultado da fusão sensorial, o SAC deverá prover uma interface virtual que represente o ambiente real. Para isso, o SRV deverá criar em tempo-real o ambiente num ambiente virtual e apresentá-lo ao condutor do veículo. Também, deverá propor correções de movimentos para o cumprimento da tarefa principal de navegação e desvio de obstáculos. Na prática, este tipo de sistema auxiliará a navegação por instrumentos (sensores) em ambientes de baixa iluminação ou sob grande efeito de neblina, além de outras ocasiões onde o sistema de visão humano esteja prejudicado ou que a missão militar impeça o uso de iluminação.

 

 

 

Figura 7 – Em destaque os componentes de um Sistema Semi-Autônomo selecionados para o estudo.

 

 

Portanto, é possível considerar que as informações do sensoriamento do ambiente real devam ser mapeadas no ambiente virtual, inclusive preservando suas proporções. Este recurso poderá servir como uma ferramenta de estimativa de deslocamento e navegação, principalmente quando aplicada nos casos de interrupção temporária dos sinais dos sensores e/ou hodometria e telemetria. Por exemplo, preservada a proporcionalidade entre os ambientes, durante a navegação do veículo no ambiente real, é possível se obter um valor de correlação entre as informações de posicionamento local & global e deslocamentos realizados no ambiente virtual (caso permaneçam as informações de posicionamento global e de hodometria do veículo). Havendo pane no equipamento de posicionamento global - GPS, a partir de um valor estimado no ambiente virtual (caso permaneçam as informações de telemetria e hodometria do veículo ou vice-versa), poderia ser mantido o controle sobre o deslocamento a partir de posicionamentos relativos do veículo no ambiente virtual, preservando o cumprimento de tarefas. Estes resultados também se enquadram nos requisitos dos sistemas de reconhecimento e vigilância e observação, quando operados remotamente.

 

Nos desafios Grand Challenge e Urban Challenge, organizados pelo DARPA, manter as informações de posicionamento para o cumprimento das tarefas era um pré-requisito dos sistemas de navegação, pois estes deviam manter o controle sobre a execução da tarefa independente do perfeito funcionamento do sensor GPS.   

 

Para que a relação homem-máquina possa ocorrer, é indispensável o uso das interfaces e da interatividade. Sem estes dois fundamentos, é impossível haver qualquer tipo de relação homem-máquina. Uma Interface Homem-Máquina – IHM compreende os comportamentos do usuário, software, hardware e do ambiente - locais físicos e seus impactos. Basicamente, a IHM faz a conexão entre a imagem externa do sistema e o homem. A interface permite que o sistema mantenha contato com o usuário, sendo a interação de atuação recíproca. O usuário possui um modelo mental de como o sistema funciona, e o sistema possui um modelo cognitivo de como o usuário se comporta.

 

A Realidade Virtual - RV) ou ambiente virtual, é uma tecnologia de interface entre um usuário e um sistema computacional. Seu objetivo é recriar ao máximo a sensação de realidade para um indivíduo, levando-o a adotar essa interação como uma de suas realidades temporais. Como pré-requisito, deve ser realizada em tempo real, com o uso de técnicas e de equipamentos computacionais que ajudem na ampliação do sentimento de presença do usuário. Além disso, a RV como ferramenta de simulação da realidade através da tecnologia, também se estende a uma apreensão de um universo não real, um universo de ícones e símbolos, mas permeando em um processo de significação desse falso universo.

 

Originalmente, o termo RV significava um sistema totalmente imersivo, entretanto, a palavra tem sido utilizada para descrever sistemas que não utilizam componentes como luvas digitais, óculos estereoscópicos etc. Segundo a literatura, a RV não-imersiva é realizada com o uso de um monitor comum no qual o utilizador manipula o ambiente virtual através de um dispositivo de entrada. Alguns dispositivos importantes à RV: Percepção sensorial; Hardware; Software; Interface com o usuário (Simulações em tempo real). Além de ser uma boa ferramenta para comunicação com o usuário, um ambiente simulado também permite o desenvolvimento de ambientes de simulação para teste do sistema de navegação. Testes executados em ambiente real, em geral, consomem uma quantidade considerável de tempo e recursos da equipe. Adicionalmente, as variações ambientais aumentam a dificuldade de testes específicos.

 

Destaca-se, ainda, o aproveitamento desta pesquisa para o desenvolvimento de sistemas de simulação para detecção de alvos em sistemas de armamentos semi-automatizados, por exemplo, utilizando os recursos do Reparo Automatizado de Metralhadora, ora em desenvolvimento no Centro Tecnológico do Exército - CTEx.

 

Para viabilizar a pesquisa, vislumbra-se a participação de vários pesquisadores e especialistas, de diferentes instituições. Desta forma, assim como nos trabalhos submetidos ao DARPA, na ocasião do Grand Challenge e Urban Challenge, optou-se por uma arquitetura lógica baseada em camadas (e.g., TEAM OSHKOSH, 2007; STANFORD RACING TEAM’S, 2005).

 

Segundo TEAM OSHKOSH (2007), este tipo de arquitetura facilita a separação das funcionalidades e desenvolvimento, além de permitir a definição das interfaces entre subsistemas. Isto tem permitido que membros da equipe desenvolvam suas atividades de forma independente, sem sacrificar a coesão do sistema. Na figura 6 vemos a arquitetura lógica proposta pelo Team Oshkosh.

 

Na figura 8 uma adaptação foi realizada à arquitetura lógica proposta pelo Team Oshkosh, excluindo-se, inicialmente, as camadas: Sistema de Controle (System Control) e Gerenciamento do Veículo (Vehicle Management). Basicamente, retirando-se estas duas camadas, descreve-se o desenvolvimento do produto intermediário, quer seja a assistência ao condutor, quando não serão desenvolvidos os modelo cinemático e dinâmico do veículo, isto é, não existirão os mecanismos e atuadores de controle autônomo do veículo. Em seguida, para o projeto autônomo todas as camadas serão utilizadas.

 

A partir do macrodiagrama da figura 9 pode-se notar que o desenvolvimento da proposta deverá ocorrer em forma matricial com algumas linhas de pesquisa sendo desenvolvidas em paralelo.

 

Nota-se que o trabalho se desenvolverá em duas linhas principais, a saber: Sistema de Serviços e Serviços Autônomos. A primeira delas não necessita de uma grande infra-estrutura laboratorial uma vez que a realidade virtual e a interface homem-máquina serão os principais objetivos a serem atingidos e servirão como eventos críticos para a avaliação de desenvolvimento do tema.

A segunda fase, dependendo do maior ou menor aporte de recursos deverá ser executada em ambiente simulado ou de utilização final.

 

 

 

Figura 8 – Arquitetura Lógica para um Sistema de Navegação Semi-Autônomo de Assistência ao Condutor. Adaptada de TEAM OSHKOSH (2007).

 

 

A complexidade envolvida no desenvolvimento de software, a exemplo do que propomos neste documento, onde equipes especializadas e ambientes complexos dificultam a produção, e conseqüentemente a possibilidade de degradação da qualidade, implantar um processo de garantia da qualidade de software não é uma opção a ser estudada, mas parte de uma estratégia da sobrevivência do projeto.

 

Diversos modelos de maturidade para o desenvolvimento de software, como CMM e CMMI vêm sendo utilizados e aprimorados a cada dia. Entretanto, esses modelos podem não trazer uma grande atenção as atividades relacionadas a testes, de extrema importância para um sistema de navegação autônomoEm resposta a esta deficiência foram criados alguns modelos de maturidade para os processos de testes, dentre eles o TMM-e, Testing Model Maturity - environment.

 

Em resposta a esta deficiência foram criados alguns modelos de maturidade para os processos de testes, dentre eles o TMM-e, Testing Model Maturity - environment.

 

O Testing Maturity Model -TMM foi desenvolvido pelo Illinois Institut of Tecnology, como um guia para melhoria de processos de testes e é apresentado como um complemento ao modelo CMM. Sua estrutura está baseada em níveis de maturidade, que possuem requisitos para avaliação do grau de maturidade de um processo. A exemplo do CMM, e de seu sucessor CMMI, existem cinco níveis e para cada nível foram definidos objetivos de maturidade, que correspondem a um conjunto de atividades e responsabilidades (associadas a papéis), em um determinado domínio, como planejamento de testes. Quando estas atividades são executadas de forma adequada contribuem para a melhoria do processo de testes.

 

Um processo de software pode ser definido como um conjunto de atividades executadas para desenvolver, manutenir e gerenciar sistemas. Estas atividades podem ser compostas por outras atividades, seja realizada por pessoas, que possuem um determinado papel no processo, que podem utilizar ferramentas e modelos que automatizem e facilitem os seus trabalhos. À medida que o processo flui, artefatos (código, documentos, modelos e diagramas) são produzidos, atualizados e consumidos nas atividades realizadas.

 

Uma ferramenta conhecida como IEEE Standard Glossary of Software Engineering Terminology descreve o ciclo de vida do software. O ciclo de vida de software engloba, tipicamente, as fases de requisito, design, implementação, teste, instalação, operação, manutenção e desativação. O modelo de ciclo de vida V-Model associa cada atividade de desenvolvimento com uma atividade de teste ou validação no mesmo nível de abstração dos produtos gerados na fase. Ao final de cada fase, testadores avaliam formalmente os artefatos de cada fase, revisando e aprovando o documento de requisitos ao final da fase de requisitos, gerando testes, com base nos artefatos gerados, que deverão ser realizados posteriormente.

 

No V-Model o envolvimento dos testadores se dá desde o início do desenvolvimento possibilitando que defeitos sejam descobertos mais cedo que em modelos tradicionais. As fases são apresentadas na figura 10.

 

Na última multi-conferência realizada no estado do Texas-EUA, 2008 IEEE Multi-conference on Systems and Control (MSC), foi apresentado um caso prático do uso do V-Model (ou V-Shape - Software Development Validation) para o desenvolvimento e validação de softwares da NGC Aerospace Ltd. O título da apresentação foi Computer-Aided Software Design for Spacecraft Guidance, Navigation an Control. O palestrante foi o atual presidente da NGC, Jean de Lafontaine.

 

A NGC Aerospace Ltd é uma companhia canadense de alta-tecnologia, que oferece análise, simulação e controle de serviços aeronáuticos veículos espaciais e terrestres. Entre suas diversas atividades, a NGC desenvolve algoritmos e controle em tempo real que possibilita a navegação, orientação e controle de veículos espaciais. A NGC tem como principais clientes as agências espaciais internacionais, bem como outras empresas aeronáuticas norte-americanas e européias. Suas atuais atividades de pesquisa estão centradas em cinco temas principais:

 

·         Percepção, Visão Artificial;

·         Filtragem, Estimativa Ótima, Observadores de Estado;

·         Orientação e Controle;

·         Inteligência Artificial;

·         Identificação, Modelagem e Simulação;

 

 

Figura 9 – Macrodiagrama da Arquitetura Lógica. Adaptada de TEAM OSHKOSH (2007).

 

 

Desta forma, uma apresentação resumida das fases do ciclo de desenvolvimento V-Model será apresentada a seguir:

 

Fase de Verificação – Análise de Requisitos: nesta fase, os requisitos do sistema proposto são recolhidos analisando-se as necessidades do usuário. Esta fase está preocupada com o que o sistema deve realizar. No entanto, não é possível determinar a forma como o software será concebido ou construído. Geralmente, os usuários são entrevistados e um documento chamado Requisitos do Usuário é gerado, onde se descreverá as funcionalidades do sistema, física, interface, desempenho, dados, requisitos de segurança, etc, como esperado pelo usuário. Os usuários deverão analisar cuidadosamente este documento que servirá de orientação para os projetistas na fase de concepção do sistema. Os testes de aceitação do usuário são concebidos nesta fase.

 

 

V-model.JPG

 

Figura 10 – Fases V-Model – Desenvolvimento e Validação de Software.

 

 

Fase de Verificação – Projeto do Sistema: Engenheiros de Sistema vão analisar e entender o negócio do sistema proposto estudando o documento Requisitos do Usuário, descobrindo as possibilidades técnicas e requisitos. Se qualquer um dos requisitos é inviável, o usuário é informado do assunto. Uma resolução é encontrada e o documento de Requisitos do Usuário é editado em conformidade. A especificação do software é descrita e servirá como um modelo para a fase de desenvolvimento. Este documento contém a organização geral do sistema, sua estrutura de dados e etc. Outra documentação técnica como diagramas de entidade, dicionário de dados também serão produzidos nesta fase. O documento para teste do sistema é preparado nesta fase.

 

Fase de Verificação – Projeto da Arquitetura: Esta fase também pode ser chamada de alto nível de projeto. A linha-base é a seleção da arquitetura necessária para realizar todas as funcionalidades, relacionamentos, dependências, base de dados, diagramas de arquitetura, tecnologia empregada e pormenores necessários a integração. O projeto de testes de integração é preparado nesta fase.

 

Fase de Verificação – Projeto em Módulos: Esta fase também pode ser chamada de baixo-nível de projeto, onde o sistema é projetado e dividido em módulos ou unidades menores, e cada um deles é explicado de forma que o programador possa começar a codificação. O documento desta fase conterá o detalhamento das lógicas funcionais de cada módulo, em pseudocódigo - todos os detalhes da interface, referências a API, todos os problemas de dependência, mensagens de erro, listagens completa das entradas e saídas para cada módulo. O projeto unitário de testes é desenvolvido nesta fase.

 

Fase de Validação – Unidade de Testes: Implicam na primeira fase do processo de testes dinâmicos. Envolvem análise do código fonte com a intenção de eliminar erros, além da verificação dos códigos eficientes que aderem às normas aprovadas para codificação.

 

Fase de Validação – Teste de Integração: Todos os módulos serão testados em conjunto para expor as falhas nas interações entre os componentes integrados. É feito utilizando o teste de integração de projeto elaborado durante a fase de arquitetura do projeto. Permite-se a utilização de softwares testadores.

 

Fase de Validação – Teste do Sistema: Irá comparar as especificações do sistema contra o próprio sistema, utilizando-se de documentos de concepção do sistema. Permite-se a utilização de sistema automatizado nesta fase.

 

Fase de Validação – Teste do Sistema: Irá comparar as especificações do sistema contra o próprio sistema, utilizando-se de documentos de concepção do sistema. Permite-se a utilização de sistema automatizado nesta fase.

Fase de Validação – Teste de Aceitação do Usuário: Determinar se o sistema satisfaz os critérios, testar o software no "mundo real".

 

 

Realidade Virtual e Interface Homem-Máquina

 

 

Para que a relação homem-máquina possa ocorrer, é indispensável o uso das interfaces e da interatividade. Sem estes dois fundamentos, é impossível haver qualquer tipo de relação homem-máquina.

 

Uma Interface Homem-Máquina -IHM compreende os comportamentos do usuário, software, hardware e do ambiente - locais físicos e seus impactos (TURNELL, 1998). Basicamente, a IHM faz a conexão entre a imagem externa do sistema e o homem. A interface permite que o sistema mantenha contato com o usuário, sendo a interação de atuação recíproca. O usuário possui um modelo mental de como o sistema funciona, e o sistema possui um modelo cognitivo de como o usuário se comporta.

 

A Realidade Virtual - RV, ou ambiente virtual, é uma tecnologia de interface entre um usuário e um sistema computacional. Seu objetivo é recriar ao máximo a sensação de realidade para um indivíduo, levando-o a adotar essa interação como uma de suas realidades temporais. Como pré-requisito, deve ser realizada em tempo real, com o uso de técnicas e de equipamentos computacionais que ajudem na ampliação do sentimento de presença do usuário (e.g., JIMING LIU et al., 2003; GAVA. T. B. S., 2003; GAVA. T. B. S., 2003).

 

Na figura 11 a Universidade de Princeton apresenta o uso da ferramenta Microsoft Robotics Studio na simulação de testes do seu sistema de navegação autônomo. Neste sentido, desenvolveram um simulador que permite aos programadores executar testes de produção do veículo em um computador portátil-laptop (PRINCETON, 2007). Na figura 12 o resultado da visão computacional em um simulador de realidade virtual (GÖRZIG & FRANKE, 1998).

 

 

 

Figura 11 – Telas do Simulador: Vista do Ambiente Simulado; Simulação de Intersecção e Precedência (PRINCETON, 2007).

 

 

 

Figura 12 – UTA - Visualização do resultado da Visão Computacional (GÖRZIG & FRANKE, 1998).

 

 

 

 

Requisitos funcionais de sistemas de tempo real para um sistema de assistência ao condutor

 

 

Para dirigir um veículo é fundamental que o motorista tenha um controle simultâneo das posições longitudinais e laterais, condições ambientais, painel do veículo, sinais de trânsito, fazendo uso do volante, acelerador e freios. Além disso, são necessárias habilidades cognitivas de alto nível, como estimação de situações futuras, partindo-se de informações presentes.

 

A visão constitui 90% das informações de entrada na tarefa de dirigir. Quando o ambiente está bem visível, os sinais de trânsito são pouco observados pelo motorista (EVANS, 1991).

 

Para distâncias entre 100 a 200 metros de um veículo ao outro, quando ambos têm a mesma velocidade, 75% das pessoas tem a sensação de que os veículos estão se aproximando. Já para uma distância de 60 metros, com um carro se aproximando do outro com uma velocidade relativa de 5 km/h, para 99% das pessoas isso é perceptível (EVANS, 1991).

 

Tempo de reação humana pode ser entendido como o tempo necessário para que uma pessoa perceba e reaja a algum estímulo externo. Isto é muito importante para o sucesso em atividades que exigem respostas rápidas.

 

O tempo de reação ou reflexo do indivíduo tem início com uma mensagem enviada ao cérebro e termina quando o corpo executa uma resposta ou reação física. Por exemplo, quando o motorista avista um obstáculo (a mensagem), isso é registrado no cérebro e resulta numa reação ao perigo: numa freiada, desvio do obstáculo ou outra manobra apropriada. Para que o cérebro receba a mensagem e diga ao corpo para executar uma ação leva tempo, ou seja, o tempo de reação.

 

As duas características mais importantes do tempo de reação são o número de estímulos de possíveis ameaças e o número de respostas e a expectativa da ameaça (EVANS,1991). Se uma pessoa recebe uma instrução de tocar um único botão toda vez que for acesa uma única lâmpada e, estando essa atenta para o acendimento da lâmpada, o seu tempo de reação é cerca de 0,15 segundos. Quando o número de estímulos (lâmpadas) e respostas (botões) aumenta, o tempo de reação também aumenta.

 

O tempo de reação no trânsito depende em identificar uma variedade de eventos em um complexo ambiente. Geralmente, o motorista não está a todo tempo esperando uma ameaça, por isso o tempo de reação aumentará. É indicado considerar um tempo de reação mínimo de 2,5 segundos para que o motorista tenha condições de tomar a atitude correta a fim de evitar a colisão (EVANS, 1991).

 

A principal causa de acidentes é em virtude de falhas humanas. Dessa forma, se o motorista tivesse ao seu dispor um equipamento capaz de detectar e localizar os obstáculos e realizar a predição de possíveis colisões, informando o condutor com antecedência quanto a possíveis colisões, com certeza esse sistema poderia ajudar a reduzir de forma significativa o número de acidentes.

 

Conforme Cheng (2007), as três grandes funções do Interactive Intelligent Driver-Assistance and Safety Warning (I²DASW) são:

 

·         Fornecer informações apropriadas, em tempo real, a respeito dos veículos, motorista e trânsito para melhorar a segurança e melhorar a dirigibilidade.

·         Avisar o motorista quanto a possíveis riscos e auxiliá-los na direção do veículo. O sistema avisa o motorista sobre possíveis situações de risco. Caso o motorista não reaja em um tempo esperado, o sistema toma o controle da direção com intuito de evitar a colisão.

·         Controlar dispositivos de segurança que protegem o motorista e os passageiros. O sistema pode proteger os ocupantes do veículo, acionando com antecedência o airbag, quando constatar que a colisão é certa.

 

O projeto integrado PReVENT é liderado pela Industria Automotiva Européia e tem por objetivos contribuir com a segurança nas estradas, através do desenvolvimento de tecnologias e a inserção das mesmas no mercado.

 

APALACI e COMPOSE são dois subprojetos da PReVENT . O primeiro foca a proteção dos ocupantes do veículo, já o segundo objetiva a proteção dos demais usuários: pedestres, ciclistas e motoristas dos outros veículos.

 

O COMPOSE e o I²DASW, além de identificar os obstáculos, também assumem o controle da direção em situações de risco, caso o motorista não tome uma atitude em um tempo de segurança considerado pelo sistema.

 

A pesquisa expressa aqui representa os resultados preliminares de um trabalho de final de curso da disciplina de Sistema de Tempo Real (PCS5761 - 2008) ministrada pelo Prof. Dr. Jorge Rady de Almeida Júnior, na Escola Politécnica da Universidade de São Paulo – USP, da qual o primeiro autor deste trabalho é o Sr Danilo Habermann. Neste trabalho pretendeu-se analisar somente as funcionalidades de um sistema que auxilia o motorista, mas nunca assume o controle do veículo e será chamado de sistema de assistência ao condutor (SAC). Ele fornece ao motorista, através de uma interface homem-máquina (IHM), mostrada na figuras 13, 14 e 15, informações sobre os arredores da área de locomoção para que o mesmo possa tomar decisões, aumentando desta forma a segurança.

 

 

 

Figura 13: Imagem real exibida na IHM (KIM, 2007).

 

 

A análise das estradas requer não apenas informações a respeito dos obstáculos em um determinado momento, mas, também, a necessidade de realizar a predição desse objeto em um tempo futuro. Sensores são posicionados no veículo de forma a obter informações dos arredores do veículo, que são analisadas por programas capazes de reconhecer as possíveis ameaças.

 

Como visto anteriormente, muitos acidentes são causados em congestionamentos (filas) e mudanças de faixa. Conforme o estudo da IRU, as principais causas dessas colisões são as seguintes:

 

Principais causas das colisões em congestionamentos (figura 14);

 

·         Velocidade não compatível com a via: 22,1%;

·         Distância de segurança inadequada: 16,2%;

·         Falta de atenção:12,8%;

·         Cansaço/Sono: 2,3%;

 

 

 

Figura 14 - Sentido do fluxo dos veículos (IRU, 2007).

 

 

Principais causas das colisões em mudanças de faixa (Figura 15):

·         Manobra imprópria: 15,7%

·         Cansaço/Sono: 8,8%

·         Velocidade imprópria: 6,7%

·         Distância de segurança inadequada: 4,4%

 

 

 

Figura 15 – Tipos de manobra (IRU, 2007).

 

 

Uma outra informação relevante é que, de acordo com o Anuário Estatístico do DENATRAN - RENAEST 2006, dos 19.752 mortos em acidentes de trânsito no Brasil, 4.404 eram condutores, 4.214 eram passageiros, 4.375 eram pedestres, 3.186 eram motociclistas e 1.214 eram ciclistas. Esses dados mostram que um sistema de assistência ao condutor deve ter capacidade de detectar e rastrear pedestres, ciclistas e motociclistas, pois juntos representam 44,3% das vítimas fatais no Brasil em 2006.

 

Os veículos autônomos e os sistemas de assistência ao condutor devem ter especial atenção a objetos em movimento e, particularmente, a pessoas. Essas se movem em locais imprevisíveis. Mesmo que o sistema detecte a presença de um ser humano, isso não garante que ele não entrará no caminho do veículo. É necessário conseguir distinguir entre os objetos a pessoa, então, deve continuamente monitorar seu movimento, e prever suas futuras ações (AUFRÈRE, 2003).

 

Baseadas nessas informações, são apresentadas, a seguir, as principais funções que um sistema de assistência ao condutor deve ter:

 

1. Detecção da pista:

 

É muito importante identificar a pista com todas as faixas por onde o veículo trafega. Além disso, é necessário inserir o veículo nessa imagem na posição correta na pista onde ele se encontra. Dessa forma será possível gerar um alarme toda vez que o veículo começa a invadir as outras faixas ou a sair da pista. Para identificar a pista no momento da partida é necessário identificar a posição e a direção dos limites da faixa. Há duas maneiras de se fazer isso, uma delas é inserir marcadores magnéticos nas pistas. No entanto, há um grande custo envolvido nesta operação. O modo mais usual é pintar os limites laterais da pista e usar visão computacional para identificar o local de rodagem. Quando se toma a imagem de uma rodovia, pode-se verificar que as faixas dos limites da pista têm mais intensidade do que a área pavimentada, facilitando a identificação (CHENG, 2007).

 

2. Detecção e Rastreamento de Veículos:

 

Todos os veículos que estão nos arredores do veículo que possui o SAC devem ser detectados e rastreados. É muito importante que o sistema possa determinar as velocidades relativas dos demais veículos e realizar uma estimação sobre os riscos de haver uma colisão. Em geral, usam-se sensores do tipo LIDAR, SONAR ou RADAR para conhecer a distância e a direção em que se encontra o obstáculo e câmeras para ajudar a identificar qual é o tipo do obstáculo. Algoritmos procuram identificar alguns padrões específicos na imagem como forma e simetria.

 

3. Detecção e rastreamento de pedestres:

 

De acordo com Cheng (2007), sensores infravermelhos são essenciais para realizar uma precisa detecção de pessoas. O rastreamento de pessoas é uma das tarefas mais difíceis de ser realizada devido ao comportamento imprevisível das mesmas.

 

4. Detecção de objetos fixos:

 

É importante localizar os demais obstáculos que compõem as ruas e as rodovias, como placas de trânsito, barreiras e árvores. Em geral usam-se sensores RADAR conjugados com câmeras de vídeo.

 

5. Reconhecimento de sinais de trânsito:

 

Como mostrado anteriormente, a velocidade incompatível com a pista é causadora de inúmeros acidentes. Dessa forma, faz-se necessário identificar as placas com a sinalização da velocidade máxima permitida. Além disso, é importante identificar outros sinais como “PARE” e semáforos para evitar que motoristas distraídos passem por cruzamentos em momentos indevidos.

 

6. Predição e aviso de colisões:

 

Dada a localização dos objetos móveis e fixos inseridos na imagem virtual da pista, bem como a velocidade relativa e a direção dos mesmos, e dados como velocidade, direção e aceleração do veículo com o SAC, é possível calcular o tempo de colisão para cada objeto. Podem ser configurados dois tipos de aviso: avisos de alerta e avisos de emergência, dependendo do grau de risco.

 

Atualmente, deparamo-nos com uma quantidade crescente de aplicações que apresentam comportamentos definidos segundo restrições temporais. Alguns exemplos dessas aplicações se encontram no controle de plantas industriais, de tráfego aéreo ou ferroviário. Sistemas que apresentam tal característica, de estarem sujeitas a restrições temporais, são comumente identificadas como Sistemas de Tempo Real.

 

Um sistema de tempo real - STR deve satisfazer restrições de tempo de resposta sob o risco de falhar, provocando graves acidentes (LAPLANT,2004).

 

Um sistema de assistência ao condutor pode ser enquadrado como um sistema de tempo real, pois informações erradas ou defasadas no tempo não poderão atender às necessidades do motorista e causar um acidente. Por exemplo, suponha que o motorista esteja trafegando em longo trecho reto de uma rodovia e por estar desatento não percebe que seu veículo está se aproximando de forma perigosa de um veículo a frente, se o SAC não conseguir calcular de forma correta as informações e não enxergar o perigo, ou ainda, se não conseguir processar em um tempo suficiente para que o motorista possa diminuir a velocidade ou frear o veículo, um acidente ocorrerá, podendo trazer graves danos ao condutor e a terceiros.

 

O projeto e a implementação de Sistemas de Tempo Real requerem atenção a vários tópicos:

 

·         Seleção do Hardware e do Software.

·         Especificação e projeto de STR e a correta representação do comportamento do sistema em função do tempo.

·         Medir e prever o tempo de resposta e tentar reduzi-lo.

 

 

 

Figura 16 - Etapas de um projeto de sistema de tempo real (ALMEIDA JÚNIOR, 2008).

 

 

A figura 16 traz as etapas de um projeto de STR. Pode-se observar que o primeiro módulo é a análise dos requisitos técnicos do sistema. O presente trabalho pretende, a partir deste ponto, determinar os requisitos de um SAC.

 

A engenharia de requisitos preocupa-se em determinar objetivos, funções e restrições dos sistemas e com a representação desses aspectos de uma forma capaz de modelar e analisar o projeto. O objetivo é criar uma especificação de requisitos completa, correta e entendível aos desenvolvedores e aos clientes. Em sistemas de tempo real essa tarefa é muito complicada devido à necessidade de apresentar os requisitos em função do tempo (LAPLANT, 2004).

 

 

A norma IEEE 830 define os seguintes tipos de requisitos:

 

1. Funcionais

 

2. Interfaces externas

 

3. Desempenho

 

4. Base de Dados

 

5. Restrições do Projeto

 

6. Atributos do Software:

 

·         Confiabilidade

·         Disponibilidade

·         Segurança

·         Adaptável

 

 

Os requisitos de números dois (2) a seis (6) são considerados não funcionais.

 

Os requisitos funcionais incluem a descrição de todas as entradas do sistema e as seqüências de operação associadas com conjunto de entradas. Eles descrevem o comportamento completo do sistema. Este trabalho concentrar-se-á apenas nesse tipo de requisito. 

 

Tomando como base os trabalhos de Cheng (2007) e Kim (2007), propõe-se uma nova arquitetura para o SAC, mostrada na figura 17, com intuito de atender as funções de um SAC.

 

 

 

 

Figura 17 - Proposta de arquitetura para o SAC.

 

 

A Tabela 2 apresenta as principais funções do SAC relacionadas com as entradas do sistema e as operações do mesmo.

 

 

Tabela 2 – Funções e operações do SAC.

 

Nr

FUNÇÕES

ENTRADAS

OPERAÇÕES

1

Detecção da Pista

Câmeras de Vídeo

-Algoritmo identifica as faixas da pista

- Modelagem do ambiente virtual

- Sinal enviado à IHM

2

Detecção de Veículos

Sensores RADAR,

LIDAR e SONAR

- Algoritmo identifica o veículo (posição, velocidade relativa)

- A localização e a velocidade do veículo são expostas na IHM

3

Detecção de Pedestres

Sensor Infravermelho e Câmeras de Vídeo

-Processamento de Imagem

- Algoritmo identifica e rastreia o pedestre

- Sinal enviado a IHM

4

Detecção de Objetos Fixos

Sensores RADAR, LIDAR e SONAR

-Algoritmo identifica objeto

- A localização e a velocidade do veículo são expostas na IHM

5

Reconhecimento de Sinais de Trânsito

Câmeras de Vídeo

-Algoritmo identifica as placas e interpreta os sinais

- Sinais são comparados com a velocidade do veículo

6

Predição e aviso de  colisões

 

-Sinais processados nos blocos de detecção

-Informações sobre a velocidade e aceleração

-Algoritmo identifica os possíveis riscos de colisão

- Alarmes são enviados a IHM (sonoros e visuais). Poderão ser enviadas também instruções ao motorista.

 

 

A função mais importante do sistema é a de predição e aviso de colisões. Ela é dependente das demais funções. Em nada adianta o sistema detectar um objeto que se aproxima com grande risco ao veículo e apresentá-lo na IHM sem que se gere o alarme, alertando o motorista, pois o mesmo pode estar desatento e não terá tempo de tomar uma atitude para evitar o dano.

 

O tempo necessário para que o sistema gere os alarmes depende de muitos fatores, como: velocidade relativa entre o veículo e o objeto, massa do veículo (impacto na frenagem), tempo de reação do motorista e alcance dos sensores.

 

A figura 18 ajuda a estimarmos um tempo de processamento necessário para realizar a identificação de um veículo à frente, quando o mesmo encontra-se parado na pista, ou seja, com velocidade zero (V2=0). “V1” é a velocidade do veículo que possuí um SAC. A letra “D” é o alcance máximo dos sensores e a “d” é a distância necessária que o veículo precisa para conseguir parar com segurança. O período de tempo necessário para todo o processamento, desde o recebimento dos sinais dos sensores até a geração dos alarmes, é representado por “T1”. A letra “T2” representa o período de tempo de reação do motorista e “T3” o tempo necessário para que o veículo passe de V1 a V2, depois de serem acionados os freios, no instante de tempo t1.  

 

 

Figura 18 - Distância de segurança entre os veículos.

 

 

Para que o SAC possa atender de forma eficaz é necessário limitar a velocidade de um veículo, do contrário, provavelmente o sistema não será capaz de processar as informações em tempo hábil e alertar o condutor do veículo.

 

Acidentes de trânsito matam milhares de pessoas por ano só no Brasil e estimam-se perdas da ordem de 10 bilhões de dólares ao ano para reparar os prejuízos desses acidentes. Quase a metade do que o país investe em saúde e quase aquilo que o governo federal gasta com educação. Muitos acidentes são causados em virtude de falhas humanas, sendo a desatenção uma parcela considerável destas. Uma das formas de aumentar o nível se segurança no trânsito é um sistema de assistência ao condutor, que orienta o motorista quanto aos prováveis riscos de colisão do veículo e este, então, pode tomar medidas de evitar a colisão, podendo salvar sua vida e a dos demais usuários das ruas e rodovias.

 

 

 

Visão Computacional e LIDAR

 

 

Em geral, para sistemas de navegação autônoma e semi-autônoma, o sistema de visão é aplicado à percepção do ambiente em torno do veículo. Desta forma, inicialmente, o sistema de visão deverá ser capaz de fornecer sensoriamento para implementar as seguintes funcionalidades:

 

·         Detecção da área de navegação;

·         Detecção de linhas e sinalização de trânsito;

·         Detecção de tráfego;

 

Muitas das aplicações para controle de veículos autônomos que apresentaram bons resultados, tanto para ambientes externos quanto para ambientes internos, utilizavam a visão computacional como parte integrante do conjunto de sensores (BERTOZZI et al., 2000).

 

Para permitir a interface entre o sistema de navegação e o ambiente, diversos tipos de sensores foram utilizados pelas equipes participantes dos desafios do DARPA. Dentre os sensores, encontramos os sistemas de visão, que comumente, era composto por duas ou mais câmeras (e.g., DAHLKAMP, 2006; THRUN, 2005). Já em outros trabalhos encontramos sistemas baseados em monovisão (MIRANDA NETO, 2007). Embora a monovisão seja uma solução bastante econômica, em geral, possui por desvantagem a não obtenção de informações de profundidade, limitando a percepção do sistema.

 

O que é trivial para o sistema humano, construir cenas tridimensionais a partir de imagens bidimensionais captadas pelo sistema de visão, e a partir destas tomar decisões precisas para a navegação, pode não ser trivial para os sistemas computacionais.

 

Diferentemente do sistema humano, sistemas de processamento e análise de visão computacional mais complexos podem desencadear alguns prejuízos devido ao tempo de processamento. Como exemplo, temos a alta demanda de informações que são submetidas ao sistema de visão, em função da relação existente entre um sistema de decisão em tempo real, com um sistema de leitura de imagens que opera em uma determinada taxa de captação/leitura, isto é, quantidade de imagens geradas por segundo.

 

Durante a navegação de humanos, facilmente percebemos a importância do sistema de visão, no entanto, em virtude da sua extrema complexidade e alta demanda de informações, um grande número de informações pode ser perdido. Estima-se que apenas 90% da percepção visual humana são utilizadas por pessoas enquanto dirigem seus veículos. Desta forma, a visão computacional pode ser uma importante ferramenta para recuperar ou obter informações sobre ambientes (BERTOZZI et al., 2000).

 

Neste sentido, a decisão por um sistema de visão computacional mais complexo pode levar a um sistema lento demais para uma aplicação autônoma de tempo real. Ou ainda a escolha automática por um processo randômico de descarte de informações pelo sistema, para torná-lo suficientemente rápido, pode resultar em perda de informações importantes.

 

Para evitar o descarte de informações, muitas aplicações utilizam bases de armazenamento. No entanto, a submissão de imagens adquiridas, por exemplo, a uma rede neural para decisão, o grande número de informações não necessariamente se traduz em melhores decisões e podem inclusive prejudicar o desempenho do sistema, sobrecarregando-o.  Entretanto, na figura 19, apresenta-se no trabalho de FRANKE et al. (2000) o emprego de redes neurais artificiais para reconhecimento de semáforos, sinais de trânsito e faixas de pedestres.

 

 

 

Figura 19 – UTA II – Reconhecimento de Semáforos, Sinais de Trânsito e Faixas de Pedestres (FRANKE et al., 2000).

 

 

As aplicações mais comuns baseiam-se no processamento de duas ou mais imagens, a partir da análise do campo de fluxo óptico ou através de imagens não monoculares (HORN & SCHUNCK, 1981). Basicamente, num primeiro caso, temos sistemas de navegação em que mais de uma imagem é adquirida por uma câmera em momentos diferentes, enquanto que em um segundo caso, múltiplas câmeras são usadas para adquirem imagens simultaneamente, porém, de pontos de “vistas” diferentes.

 

Além da alta complexidade computacional intrínseca nesses modelos, causando um incremento significativo na quantidade de dados a serem processados, estas técnicas também devem ser robustas o bastante para tolerar o ruído causado pelos movimentos do veículo e provenientes da calibração de múltiplas câmeras (BERTOZZI et al., 2000).

 

A técnica baseada no fluxo-óptico requer a análise de uma sucessão de duas ou mais imagens: um vetor bidimensional é computado no domínio da imagem, calculando-se as componentes horizontais e verticais de velocidade de cada pixel. Os resultados podem ser usados para detecção de movimentos, detecção de obstáculos por análise das diferenças entre o esperado e a velocidade real dos campos, entre outros.

 

Para muitos dos projetos de visão computacional, a obtenção de informações prévias sobre o ambiente a ser explorado é de fundamental importância. Para obter tais informações temos a calibração de câmera. Para a calibração, por exemplo, encontramos o uso de “landmarks” para auxílio na localização de robôs (NAGAONKAR et al., 2005).

 

A calibração da câmera permite que um sensor câmera seja usado como um dispositivo de medidas. No entanto, para efetuar a calibração são necessários seis ou mais pontos conhecidos do ambiente, e a partir destes, relacioná-los a pontos conhecidos na imagem, considerando uma determinada posição da câmera (e.g., GONZALEZ & WOODS, 2000; TSAI, 1987). Neste contexto, vemos o uso da fusão de informações entre sistemas de visão e sistemas LIDAR (Light Detection and Ranging) (TEAM OSHKOSH, 2007). Esse tipo de estudo é de suma importância quando o sistema de navegação não possui informações prévias do ambiente.

 

Basicamente, a literatura apresenta dois tipos de sistemas de visão: visão global (vista de cima do ambiente), como apresentado na figura 20 e 21, que apresenta, respectivamente, o futebol de robôs (e.g., SCHWARTZ et al., 2003; GUPTA et al., 2005) e um controle de um trator de uso para a agricultura, e visão embarcada, como na figura 22, que apresenta o Volkswagen Touareg R5 utilizado por Stanford no Grand Challenge (STANFORD RACING TEAM’s, 2005).

 

Independente do tipo de sistema de visão que possa ser utilizado, o objetivo da visão computacional é, além da informação visual, processar dados de imagens para percepção de máquinas (GONZALEZ & WOODS, 2000). Além disso, os algoritmos da visão computacional podem realizar diversas operações sobre as imagens, e permitir, por exemplo: a redução de ruídos, realce de detalhes em uma imagem, processamento de cores, segmentação, extração de informações, classificação, etc.

 

 

 

Figura 20 – Modalidade do Futebol de Robôs (SCHWARTZ et al., 2003).

 

 

 

Figura 21 – Foto de Satélite: Trator em locomoção; Desvio de Obstáculo (DARPA: Autonomous Vehicle Technology).

 

 

 

Figura 22 – Visão embarcada: Volkswagen Touareg R5 (STANFORD RACING TEAM’s, 2005).

 

 

 

Ferramenta importante para atividades de navegação baseada em visão computacional tem especial atenção o processo de segmentação, que consiste em subdividir uma imagem em suas partes ou em objetos constituintes. Esse processo de segmentação deve seguir até que os objetos de interesse da imagem tenham sido isolados (GONZALEZ & WOODS, 2000). Tal tarefa pode ser extremamente sofisticada, e a partir de filtros bem elaborados, pode-se chegar a resultados muito eficientes (LOPES, 2003). Porém, estes resultados podem exigir um alto preço, isto é, normalmente algoritmos de segmentação robustos apresentam grande complexidade. Basicamente, a segmentação pode ser considerada como partição de imagens digitais em conjuntos de pixels, considerando-se a necessidade geral e critérios previamente definidos.

 

Para detecção da área de navegação, diversos algoritmos podem ser utilizados. Dentre estes, na figura 23 e 24, apresenta-se um método de segmentação chamado TH Finder (Threshold and Horizon Finder), que por sua vez é baseado no método de segmentação de Otsu (e.g., MIRANDA NETO, 2007; MIRANDA NETO & RITTNER, 2006).

 

 

 

Figura 23 – (a) Partes do Protótipo; (b) Câmera Embarcada; (c) Imagem Adquirida; (d) Imagem Segmentada pelo TH Finder (MIRANDA NETO et al., 2007).

 

 

 

Figura 24 – Resultados do TH Finder: (a) Imagem Original 1 (exemplo de oclusão); (b) Resultado da Segmentação 1; (c) Imagem Original 2 (exemplo de textura); (d) Resultado da Segmentação 2 (MIRANDA NETO & RITTNER, 2006).

 

 

Uma das alternativas para desafogar o processo de segmentação de imagens é em uma etapa anterior ao pré-processamento, efetuar o cálculo da correlação entre uma imagem atual submetida ao sistema e a sua anterior imediata, isto é, uma imagem que já tenha sido submetida ao processo de segmentação. Este tipo de procedimento pode trazer ganhos ao sistema computacional, pois caso a correlação entre as imagens seja alta, as respostas o sistema podem ser repetidas, sem a necessidade de se segmentar uma nova imagem. Sobre este tema, destacamos nossos resultados em trabalho anterior sobre descarte de informações redundantes (MIRANDA NETO et al., 2007).

 

Para navegação autônoma ou para alertar um condutor sobre a distância entre seu veículo em relação ao que vai à sua frente, e principalmente nos casos de baixa visibilidade, temos os sensores ópticos conhecidos como LIDAR (LIght Detection And Ranging). Baseados em detecção por luz e amplitude são capazes de detectar chuva, neblina, etc.

 

Para evitar os obstáculos com segurança, Stanley, veículo da equipe da Universidade de Stanford, precisou ser capaz de detectar com precisão a área de navegação. Quanto mais rápido estivesse o veículo, o quanto antes o sistema deveria identificar obstáculos (STANFORD RACING TEAM’s, 2005).

 

Medições precisas de distância, velocidade e posições de objetos são primordiais para a percepção do ambiente de navegação, principalmente em ambiente urbano. Na figura 25, STANFORD RACING TEAM’s (2005) apresenta um sistema LIDAR integrado que oferece um campo de visão 360 º. Para isso, o software do sistema foi adaptado para operar dentro da arquitetura do sistema. Todos os lasers operaram em um campo de 240° horizontal, desta forma, dois lasers foram posicionados na parte frontal do veículo e outro no centro da retaguarda.

 

Os resultados obtidos nas pesquisas que envolvem visão computacional também podem ser empregados como soluções voltadas à área agrícola do país, a exemplo dos resultados preliminares apresentados por TIJMEN BAKKER et al. (2008), no trabalho intitulado: “A vision based row detection system for sugar beet”. Neste caso, o objetivo foi a identificação das linhas (filas) de coletas através de um sistema de visão. O protótipo e alguns resultados podem ser observados na figura 26.

 

Segundo VIJAY SUBRAMANIAN et al. (2008) a atual produção de sistemas de navegação para veículos agrícolas confiam no GPS como o principal sensor para o comando. Porém, em algumas situações, onde árvores freqüentemente bloqueiam os sinais do satélite para o receptor GPS, um método alternativo é necessário. Para isso apresentaram um veículo trator comum com um sistema de visão e laser radar embarcado, a fim de serem utilizados para a orientação individual. Além disso, um controlador PID foi desenvolvido para minimizar o erro. Alguns dos resultados podem ser vistos na figura 27.

 

 

 

Figura 25 – Ilustração de um sensor laser: (a) Stanley possui cinco sensores, montados em cinco diferentes ângulos. (b) Cada laser adquire um mapa tridimensional (3D) do terreno ao longo do tempo. O sistema de navegação analisa estes mapas e aponta a área de navegação e potenciais obstáculos (STANFORD RACING TEAM’s, 2005).

 

           

 

Figura 26 – Protótipo; (a) (b) (c): Estimação da posição da linha de coleta (TIJMEN BAKKER et al., 2008).

 

 

 

Figura 27 – Protótipo; (a) (b) (c): Sistema de Posicionamento Individual (VIJAY SUBRAMANIAN et al., 2008).

 

 

 

Aprendizado Computacional e Fusão de Dados

 

 

O processo de aprendizagem dos sistemas autônomos e semi-autônomos é baseado na idéia que um sistema pode se tornar apto para atuar de forma eficiente diante de novas situações, sustentando-se na sua capacidade de generalizar conhecimentos adquiridos anteriormente, mesmo que sejam diversos e incompletos. Entretanto, a generalização não é a única propriedade que um sistema com aprendizagem deve possuir (CAZANGI, 2004). Alguns atributos básicos relacionados a abordagens que contemplam aprendizagem são descritos a seguir:

 

·         O sistema deve ser robusto em relação a ruídos;

·         Os mecanismos devem convergir rapidamente e têm que permitir a aprendizagem durante a operação do sistema;

·         A aprendizagem deve ser incremental e continuada;

·         O processo de aprendizagem precisa ser computacionalmente tratável, isto é, deve possibilitar sua execução em tempo real;

·         O aprendizado deve depender apenas de informações obtidas por meio de sua capacidade sensorial.

 

Não somente para o caso da navegação autônoma, a fusão de dados também será necessária para o sistema de assistência ao condutor, como exemplo, para a construção da imagem do ambiente real no ambiente de realidade virtual, no auxílio à identificação de sinalização de trânsito, auxilia a navegação, no cumprimento de tarefas (fusão das informações globais e locais) etc. Neste sentido, o estudo sobre Redes Neurais Artificiais e Sistemas Classificadores & Algoritmos Genéticos, dentre outras relevantes técnicas de aprendizado.

 

Neste contexto, temos que as primeiras informações sobre neurocomputação foram publicadas por McCulloch e Pitts em 1943. Outros autores também contribuíram para a evolução desta pesquisa, porém de 1967 a 1982 houve um período de pesquisa silenciosa. Nos anos 80, talvez o fato mais importante tenha ocorrido quando Ira Skurnick, um administrador de programas do DARPA, decidiu ouvir os argumentos da neurocomputação e seus projetistas. Este fato abriu as portas para a neurocomputação, e deu ao DARPA o status de uma das líderes mundiais em se tratando de "moda" tecnológica. Em 1987 ocorreu em São Francisco a primeira conferência de redes neurais em tempos modernos, a IEEE International Conference on Neural Networks, e também foi formada a International Neural Networks Society (INNS). A partir destes acontecimentos decorreram a fundação do INNS Journal em 1989, seguido do Neural Computation e do IEEE Transactions on Neural Networks em 1990 VON ZUBEN & ATTUX (2008).

 

As Redes Neurais Artificiais (RNA) permitem solucionar problemas de inteligência artificial, a partir de um sistema que tenha circuitos que simulem o comportamento humano (aprendendo, errando e fazendo descobertas). Porém, vale destacar que uma rede neural artificial pode ter centenas ou milhares de unidades de processamento, enquanto que o cérebro de um mamífero pode ter muitos bilhões de neurônios.

 

Basicamente, uma RNA possui sinais de entrada, que chegam através de conexões que se originam do mundo externo. As saídas da rede para o mundo externo são conexões que deixam a rede. A operação de uma célula da rede se resume em:

 

·         Sinais são apresentados à entrada;

·         Cada sinal é multiplicado por um peso que indica sua influência na saída da unidade;

·         É feita a soma ponderada dos sinais que produz um nível de atividade;

·         Se este nível excede um limite (threshold) a unidade produz uma saída;

 

Em VON ZUBEN & ATTUX (2008) destaca-se que uma grande motivação por trás deste paradigma é a possibilidade de elaborar mecanismos distintos de para problemas intratáveis ou ainda não resolvidos pela computação convencional.

 

Especialmente quanto ao emprego de mapas auto-organizáveis em sistemas de navegação, em NAGRATH et al. (1997) foi proposto um método de navegação para robôs móveis, baseado em sensor, usando mapas auto-organizáveis de Kohonen para conservação da topologia para navegação em ambientes desconhecidos. A localização do robô móvel foi conservada discretamente usando uma rede de Kohonen bidimensional. A rede foi empregada para planejamento de caminhos e conservou-se bem adaptada para resolver o problema de navegação em tempo real. Os autores ressaltam que, uma vez que o espaço foi discretizado nos pesos, e estavam sintonizados com a orientação do robô móvel, o sistema foi capaz de navegar com êxito em novas tarefas. Para os experimentos utilizou-se um robô com 7 sensores de ultrason divididos em três subconjuntos: Direita, Centro, Esquerda. As tarefas se realizaram num ambiente real de 4m x 6m. Na figura 28 são apresentadas a disposição do ambiente e o mapa topológico gerado.

 

 

 

Figura 28 – (a) Disposição do Ambiente; (b) Mapa topológico gerado (NAGRATH et al., 1997).

 

 

Em HUOSHENG & DONGBING (1999) um sistema de navegação baseado em “landmarks” foi apresentado. A partir de sua identificação por um sensor laser scanner, a cada reposicionamento do robô no ambiente, sua re-calibração manual era necessária, o que, segundo os autores, não era algo conveniente para uma aplicação prática. Para isso, utilizaram um mapa auto-organizável de Kohonen, que possuía como entrada as medições do laser, que por sua vez só podia medir os ângulos das diferentes referências, mas não podia distingui-las. Desta forma, a rede deveria determinar a correspondência entre os ângulos e as referências, a fim de proporcionar a triangulação de coordenadas. Figura 29.

 

 

 

Figura 29 – (a) Identificação de Landmarks; (b) Triangulação de coordenadas (HUOSHENG & DONGBING, 1999).

 

 

Em DIMAKOV & GOLOVKO (2000) um problema comum aos robôs móveis foi abordado, que, segundo os autores, normalmente, exigem informações prévias e detalhadas sobre o mapa de trajetórias, exigindo uma descrição detalhada de todas as possíveis vias. Para isso, descrevem uma arquitetura de sistema de rede neural para resolver o problema de menor caminho. Esta arquitetura possui uma rede Kohonen como único nível de memória do sistema de armazenamento dos principais pontos do ambiente. Como entradas do sistema foram utilizadas: Coordenada atual do Robô; Direção de Movimento; Próximo Ponto Indicador em relação à posição atual do robô. Na figura 30 apresentam os resultados dos experimentos num ambiente simulado.

 

YAMADA (2004) apresenta um robô móvel que utiliza aprendizado não-supervisionado para reconhecimento de ambientes a partir da seqüência de ações. As seqüências de ações executadas eram transformadas em vetores e serviam de entrada para auto-organizar o mapa. Segundo o autor, o aprendizado permitiu que o robô identificasse diferentes ambientes. Para os experimentos foi utilizado um robô com sensor de proximidade por infravermelho. A figura 31 apresenta o robô, um ambiente e o resultado do sensoreamento num vetor.

 

 

 

Figura 30 – (a) Trajetória 1; (b) Trajetória 2 (DIMAKOV & GOLOVKO, 2000).

 

 

 

Figura 31 – (a) Robô; (b) Ambiente; (c) Vetor gerado YAMADA (2004).

 

Por fim, ISHIKAWA et al. (2007) classifica como difícil o problema de ensinar cada ação a um robô móvel, e sugere como opção o emprego de tecnologias que usam como inspiração o cérebro. A figura 32 apresenta os resultados de uma trajetória mapeados em movimentos num mapa auto-organizável.

 

Basicamente, o problema dos sistemas de navegação autônomos ou semi-autônomos envolve o reconhecimento do ambiente, auto-localização, planejamento de trajetória e controle de movimentos do sistema no espaço. Como já citado anteriormente, um conjunto sensores pode ser usado para criar e manter uma representação do ambiente, através do qual o sistema de navegação, com certo nível de autonomia, decidirá por um movimento. Neste contexto, com emprego de mapas auto-organizáveis, numa fase supervisionada de exploração-treinamento, pretende-se que o sistema possa armazenar (memorizar) as informações inerentes ao ambiente explorado, contribuindo numa fase posterior, denominada de cumprimento de tarefa.

 

 

Figura 32 – (a) Ambiente; (b) Mapeamento dos movimentos ISHIKAWA (2007).

 

 

Para tal aplica-se o modelo de rede neural de Kohonen como uma ferramenta de auxilio à navegação autônoma e semi-autônoma. Considerando o nível de autonomia de um sistema de navegação monocular, o método proposto pretende trazer maior robustez ao sistema.

 

 

 

Rede ou Interconexão entre Dispositivos Móveis

 

 

Concebidos para interconexão entre dispositivos e também para controle em automóveis, surgem as redes de comunicação e diferentes protocolos para interface entre dispositivos. Como exemplo, as Redes Ad Hoc e também os protocolos CAN (Controller Area Network).

 

Seja para minimizar a relação desempenho-peso, principalmente para projetos experimentais, para veículos ou robôs de pequeno porte, ou ainda para os casos em que haja dificuldades em embarcar todo o hardware necessário, ou mesmo seguindo uma determinada estratégia de ação, diversos tipos de arquitetura de sistema distribuído e/ou cliente-servidor podem ser empregadas. Assim, algumas das tarefas como armazenamento e processamento de informações, podem ser compartilhadas (entre robôs ou veículos próximos) e/ou atribuídas a uma máquina servidora remota mais potente. Esse tipo de solução também permite o compartilhamento da base de dados, além de operações em cooperação. Com isto, informações adquiridas a partir da exploração de ambientes por determinado agente podem ser aproveitadas por outro (MIRANDA NETO, 2007).

 

Segundo TANENBAUM & VAN STEEN (2002) um sistema distribuído baseia-se em uma coleção de computadores independentes que se apresentam ao usuário como um sistema único e permite o compartilhamento dos recursos do sistema: hardware, software e dados. Assim, incluindo recursos das redes de computadores, um sistema de processamento paralelo interliga vários nós de processamento, por exemplo: computadores individuais não necessariamente homogêneos, de maneira que um processo de grande consumo seja executado no nó mais disponível, ou mesmo subdividido por vários nós. Desta forma, uma tarefa qualquer pode se dividir em várias subtarefas executadas em paralelo. Assim, a computação distribuída consiste em adicionar o poder computacional de diversos computadores ou em diferentes núcleos de um mesmo computador.

 

Atualmente processadores utilizam mais de um núcleo de processamento. Investindo em arquiteturas paralelas, a utilização da programação “multi-thread” consiste em colocar vários fluxos de execução (threads) dentro de um único processo. Desta forma, cresce o apelo pela programação paralela, onde o desenvolvimento de programas depende do tipo de arquitetura (OLIVEIRA et al., 2004). Além disso, tal abstração (sistemas multicamadas), além de permitir a implementação em uma arquitetura cliente-servidor e de sistema distribuído, está mais próxima às características da nova geração de computadores multiprocessados, e da estrutura dos sistemas operacionais (MIRANDA NETO & RITTNER, 2006). Outro exemplo é apresentado no projeto UTA (Mercedes-Benz E-class) onde a programação distribuída é aplicada à assistência ao condutor (e.g., GÖRZIG, 2001; FRANKE et al., 2000).

 

Usando uma rede ad hoc, que não possui uma topologia predeterminada, e nem dispõe de controle centralizado, seus nós da rede se comunicam sem a necessidade de uma conexão física, onde alguns dos dispositivos da rede apenas fazem parte da mesma durante a sessão de comunicação, ou, enquanto estão a uma certa proximidade do restante da rede. Nessa rede, cada nó atua tanto como roteador quanto como um host. Dessa forma, todos os nós individualmente participam da descoberta e manutenção de rotas para outros nós. Com a ausência de infra-estrutura fixa, a responsabilidade por organizar e controlar a rede é distribuída entre os próprios terminais (PERKINS & ROYER (1999).

 

Utilizado pela equipe TerraMax no Urban Challenge TEAM OSHKOSH (2007), e principalmente aplicados a implementos agrícolas no Brasil, o CAN surgiu na década de 1980. Desenvolvido pela BOSCH tornou-se um padrão internacional (ISO 11898) em 1994 (CAN, 2008).

 

Concebido para interconexão entre dispositivos de controle em automóveis, em poucos anos esta tecnologia migrou para outras áreas. Atualmente encontramos seu uso em outros tipos de veículos como caminhões, ônibus, barcos, satélites, máquinas agrícolas (figura 34), máquinas da construção civil e máquinas militares. Além destes, outros padrões CAN foram desenvolvidos para automação de plantas industriais, aplicações na área de robótica e para aplicações em instrumentação. Basicamente, apresentam camada física e camada de enlace de dados em acordo com o modelo de referência ISO/OSI (SOUSA et al., 2000). Na área agrícola, baseando-se no modelo de referência da ISO, desenvolveram-se protocolos de alto nível segundo as necessidades da área. No setor agrícola a utilização deste protocolo tem sido fomentada por associações de normas internacionais de expressão, como ISO, SAE e DIN, além de empresas de equipamentos agrícolas e outros grupos (SOUSA et al., 2000). Segundo o autor, a crescente popularidade de aplicações com CAN em sistemas de automação e controle é sustentada, entre outros fatores, por este possuir, em relação a outros padrões, características muito próprias para tais sistemas, das quais destacam-se:

 

·         Possibilidade de configurações para operar com taxas de comunicação de poucos Kb/s até 1 Mb/s;

·         Comunicação de dados utilizando dois fios, que reduz o custo e complexidade da implementação física, e promove proteção a interferências eletromagnéticas;

·         Tamanho de dados por quadro otimizado, que permite a transmissão de dados comuns a dispositivos de sistemas de controle e com pequeno tempo de ociosidade para cada dispositivo;

·         Utilização de um método de arbitragem para acesso ao meio para transmissão de dados que evita colisões e permite uma resposta rápida à necessidade de transmissão;

·         Possibilidade de implementação de rede com comunicação ponto a ponto (entre dois dispositivos), por multidifusão (de um dispositivo para um grupo de dispositivos) ou por difusão (de um para todos dispositivos);

·         Mecanismos de identificação de erros e de tolerância a faltas que permitem a implementação de redes bastante robustas e

·         Flexibilidade para adição, remoção e mudanças de dispositivos, que favorecem operações de manutenção e alterações no sistema.

 

 

 

Figura 34 – Exemplo de topologia de uma rede CAN em um trator segundo a norma ISO 11783 (SOUSA et al., 2000).

 

 

 

 

Comportamento Básico e Critérios de Avaliação Técnica

 

 

Os veículos que participaram do desafio do DARPA utilizaram um grande conjunto de dispositivos para permitir a navegação, dentre os quais se podem citar câmeras de vídeo, LASER (LIDAR – Light Detection and Ranging), sistemas de navegação inercial, GPS e pontos de passagem. As plataformas computacionais empregadas pelas várias equipes foram Linux e Windows, com uso de C, C++, Java, LabVIEW. Como recursos sensoriais desta proposta pretende-se, inicialmente, utilizar câmeras de vídeo, LASER e GPS. 

 

Na elaboração do projeto pretende-se definir seu comportamento básico através de Critérios de Avaliação Técnica (CAT), figura 35. De acordo com o aumento do grau desejado de autonomia do veículo, a complexidade dos critérios a serem avaliados também aumenta, bem como o tempo e os recursos necessários para a implantação do projeto. Para a proposta apresentada, serão tratados os critérios relativos a um Sistema de Navegação Autônomo e Semi-Autônomo.

 

 

 

Figura 35 – Critérios de Avaliação Técnica.

 

 

Os critérios de avaliação técnica estão organizados em cinco conjuntos com suas respectivas subdivisões, que aumentam sua complexidade de forma progressiva. Os critérios para um veículo com Sistema de Navegação Autônomo são Segurança, Navegação Básica, Tráfego Básico, Navegação Avançada e Tráfego Avançado.

 

De uma forma geral, os critérios de avaliação técnica de um Sistema de Assistência ao Condutor são semelhantes aos citados acima, exceto que para o SAC haverá apenas alertas para o condutor, não existindo atuação autônoma no comportamento do veículo. Quem vai atuar e gerir o comportamento do veículo será o piloto após processar os alertas recebidos.

 

Assim, para iniciar o projeto, são propostas as tarefas de emissão de alertas para garantir a dirigibilidade do veículo em linha reta ou curva, permitir o estacionamento do veículo e a realização do deslocamento em itinerário preestabelecido. Tais alertas serão apresentados em um sistema de realidade virtual não-imersiva. O ambiente de testes do Sistema de Navegação tem que ser previamente preparado, particularmente em relação à marcação de faixas de rolamento, posição de pontos de passagem, limites de estacionamento, delimitação das zonas, preparação de obstáculos, sinalização horizontal e vertical de trânsito.

 

Considerando que um SAC é um sistema em parte autônomo, os critérios de avaliação técnica serão apresentados abaixo, porém para um Sistema de Navegação Autônomo. Deve-se então considerar que todo critério de avaliação que indique inferência ao veículo deva ser convertido num sistema de alerta ao condutor. Para o caso do primeiro estágio, isto é, quando aplicados a robôs, será possível a inferência ao mesmo, o que não isentará a necessidade da conversão num sistema de alerta ao condutor.

 

Logo após cada apresentação de cada item dos critérios de avaliação técnica, a seguir, para um Sistema de Navegação Autônomo, será dado enfoque ao essencial a que se pretende com esta proposta de pesquisa, visto que, dependendo da plataforma robótica selecionada, será permitido que certos controles sejam implementados. Cada módulo apresentado abaixo poderá ser encontrado na figura 9.

 

 

Comportamento Básico para um Sistema de Navegação Autônomo

 

Segurança

 

Deve existir um dispositivo de parada eletrônica de emergência, denominado E-stop, que deve ter a capacidade de realizar frenagem de emergência do veículo. O veículo deve parar completamente, de modo suave e controlado, em uma distância, pré-determinada oportunamente, após ativação do E-stop.

 

Navegação Básica

 

Este critério é composto por um conjunto de atividades básicas de navegação, definidas em 12 subitens.

 

1. Preparação para Deslocar

 

O veículo está em modo autônomo e pronto para começar o deslocamento até 5 minutos após o recebimento do Arquivo de Dados da Missão (ADM).

 

2. Início da Missão

 

O veículo deve seguir os pontos de passagem do ADM.

 

3. Pontos de Passagem

 

O pára-choque do veículo deve passar sobre cada ponto de passagem no ADM na faixa correta e na seqüência prevista pelo ADM. Os pontos de passagem estarão marcados na terra/pavimento.

 

4. Permanência na Faixa

 

O veículo deve permanecer com todas as rodas na sua faixa de rolamento durante todo o trajeto, exceto quando realizar uma manobra legal de trânsito, como por exemplo, virar à direita ou manobrar para evitar um obstáculo.

 

5. Limites de Velocidade

 

O veículo deve seguir os limites de velocidade, máximos e mínimos. Quando o veículo tiver que parar devido a um obstáculo, isso não será entendido como violação desse critério.

 

6. Atraso em Excesso

 

O veículo deve obedecer a critérios de excesso de atraso na rota, subordinado àquele responsável pela condução segura (prevê a ocorrência de acidentes e/ou colisões).

 

7. Colisões

 

O veículo deve evitar colisões e quase-colisões durante todo o percurso. Este é o principal critério a ser observado. O veículo deve continuamente monitorar o caminho à frente buscando identificar veículos e obstáculos a fim de evitar colisões. O veículo não deve assumir que o comportamento de outro veículo é completamente previsível.

 

8. Faixa de Pedestre/Linha de Retenção

 

O veículo deve parar antes da Faixa de forma tal que o pára-choque do veículo deve ficar a uma distância segura do meio da Faixa. O veículo não deve parar sobre a faixa ou obstruir, ainda que parcialmente, um cruzamento.

 

9. Separação dos Veículos

 

O veículo deve manter um espaçamento mínimo dos lados e da traseira de todos os veículos e obstáculos em todas as áreas do percurso. Em áreas de segurança, o veículo deve manter uma distância mínima do veículo da frente. Nas demais aéreas do percurso, o veículo deve manter uma separação de um veículo de comprimento, sendo um veículo a separação mínima. As áreas de segurança incluem áreas de cruzamentos e distância da Faixa de Pedestre/Faixa de Parada; áreas de estacionamento e campos de obstáculos.

 

10. Início de Ultrapassagem

 

O veículo deve manter uma distância de um veículo de separação entre o veículo ou obstáculo parado à sua frente antes de iniciar a ultrapassagem do mesmo.

 

11. Retorno à Faixa Após Ultrapassagem

 

O veículo deve retornar à faixa prevista em um intervalo de distância de 1 a 4 vezes o tamanho do veículo ultrapassante para completar a manobra.

 

12. Retorno

 

O veículo deve ter habilidade para realizar retorno (curva em U), observando-se a largura em comprimento e extensão.

 

 

Tráfego Básico

 

Este critério é composto por um conjunto de atividades básicas de tráfego, definidas em 4 subitens.

 

1. Navegação Básica

 

O veículo deve satisfazer todos os critérios de navegação básica.

 

2. Precedência de Intersecção

 

O veículo deve respeitar a ordem de precedência nas intersecções. A regra básica de precedência em uma intersecção é que o primeiro veículo a parar na faixa é o primeiro veículo a sair. Ao veículo entrar na intersecção, ele deve monitorar continuamente os outros veículos e o caminho à frente para eliminar a possibilidade de colisão.

 

3. Distância Mínima a Seguir

 

O veículo deve manter a distância de veículo à frente quando em movimento no tráfego. Critério é consistente quando aplicado ao tráfego em movimento, com diferentes distâncias de separação no tráfego e em áreas de segurança.

 

4. Comportamento na Fila

 

O veículo deve exibir comportamento adequado quando em uma fila de veículos parados, sempre mantendo a distância para o veículo à frente. Esta distância deve variar de um a dois comprimentos do próprio veículo.

 

Navegação Avançada

 

Este critério é composto por um conjunto de atividades avançadas de navegação, definidas em 6 subitens.

 

1. Tráfego Básico

 

O veículo deve satisfazer todos os critérios de tráfego básico.

 

2. Campo de Obstáculos

 

O veículo deve ter capacidade para lidar com campo de obstáculos de forma eficiente e segura. O veículo deve ser capaz de operar em uma zona desestruturada onde não há definição de faixas (sinalização horizontal). Essas zonas podem ou não ser pavimentadas ou ter marcas no pavimento. O veículo deve ter capacidade de avaliar se o declive à montante ou à jusante é diferente de uma configuração semelhante a uma escada, evitando confundir, por exemplo, com algumas entradas de prédios que possuem esta característica. O veículo deve evitar colisões e manter a distância de segurança do veículo/obstáculo à frente. É possível haver obstáculos estáticos (árvores, pedras) e dinâmicos (veículos). Para evitar colisões, uma vez detectado deslocamento de outro veículo em sentido contrário, o veículo deve adotar a regra geral de desviar à direita e em seguida prosseguir em frente, consultando antes se essa possibilidade não oferece riscos adicionais.

 

3. Estacionamento

 

O veículo deve exibir comportamento adequado para realizar estacionamento. Para isso, deve entrar na vaga prevista de frente, passar por um ponto de entrada, passar por um segundo ponto de controle, ambos marcados no pavimento, e estacionar observando os limites da vaga. Para sair, deve observar o mesmo, sendo que a manobra será realizada à ré. A vaga estará delimitada por faixas no pavimento. Cuidado especial deve ser atribuído àqueles espaços onde há fosso logo à frente da vaga do estacionamento, à semelhança de estacionamentos localizados em prédios-estacionamento.

 

4. Re-planejamento Dinâmico

 

O veículo deve ser capaz de atingir os pontos de passagem previstos mesmo quando as vias estiverem bloqueadas. O bloqueio de vias não será previsto no Arquivo de Definição de Rota (ADR). A rota pode ser bloqueada por veículos estacionados, ouriços e linha de barris. Sempre haverá uma rota alternativa para permitir o prosseguimento da missão. O veículo deve se manter na via e fazer a meia-volta, planejando uma rota alternativa. O emprego de ré é limitado à distância de 3 comprimentos do veículo.

 

5. Seguimento de Via

 

O veículo deve ter habilidade para navegar em vias com pontos de passagem esparsos e permanecer na faixa de rolamento seguindo os limites da via, da própria faixa ou usar outra técnica de sensoriamento para esse fim. O veículo deve ainda poder realizar curva de 90º sem necessitar de um conjunto denso de pontos de passagem.

 

6. GPS

 

O veículo não deve demonstrar retardo excessivo ou abandonar a faixa de rolamento devido a perda intermitente de sinais de navegação do GPS. Uma unidade de navegação inercial ou outra técnica deve ser usada para permitir que o veículo prossiga com segurança na rota com faixa, possivelmente em velocidade reduzida, até que o sinal do GPS seja restaurado.

 

Tráfego Avançado

 

Este critério é composto por um conjunto de atividades avançadas de tráfego, definidas em 9 subitens.

 

1. Navegação Avançada

 

O veículo deve satisfazer todos os critérios de navegação avançada.

 

2. Fusão de Tráfego

 

O veículo deve sempre entrar no movimento do tráfego quando houver um tempo seguro antes da chegada do próximo veículo. O veículo pode se deslocar em um intervalo de tempo seguro quando as condições assim permitirem. O veículo que entra no tráfego deve acelerar de forma tal que o veículo que virá atrás consiga manter distância de segurança e velocidade constante.

 

3. Separação de Veículos durante a Fusão de Tráfego

 

O veículo deve ser capaz de entrar em faixa de rolamento entre dois veículos em um tráfego em movimento. O veículo deve manter uma distância segura do veículo à frente e o veículo que vem atrás não deve necessitar reduzir ou parar seu deslocamento.

 

4. Curva à Esquerda

 

O veículo deve permitir virar à esquerda cruzando uma faixa de rolamento que tem tráfego em sentido contrário ao seu deslocamento quando houver um tempo seguro para outro veículo que vem em sentido oposto. Se as condições permitirem, o veículo pode completar a curva num tempo indeterminado, obedecendo a regras prévias.

 

5. Separação de Veículos Durante Curva à Esquerda

 

Após fazer uma curva à esquerda e cruzar uma faixa de rolamento, o veículo deve manter a distância de segurança de pelo menos 2 veículos de comprimento para evitar colisões, sem causar redução ou parada no tráfego.

 

6. Zonas

 

O veículo deve poder navegar em zonas de forma efetiva e segura na presença de tráfego em movimento ou outros obstáculos. O tráfego

em movimento em zonas cria um desafio tendo em vista a ausência de faixas de tráfego.

 

7. Parada de Emergência

 

O veículo deve parar de forma completa e segura para evitar colisão quando um obstáculo se move subitamente na faixa de rolamento. O tempo de antecipação deve obedecer a uma margem segura de tempo. Assim, para um veículo em movimento, o sistema deve ser capaz de parar com segurança quando surgir um obstáculo à frente.

 

8. Direção Defensiva

 

O veículo deve realizar manobras de direção defensiva para evitar colisões iminentes e manter a distância entre veículos. O veículo deve lidar com situações de tráfego com velocidade de aproximação segura. O veículo deve ser capaz de detectar o veículo que se aproxima, reconhecer a ameaça e realizar manobra evasiva para evitar a colisão.

 

9. Bloqueio de Tráfego

 

O veículo deve ser capaz de realizar manobras para poder prosseguir e evitar colisão em uma intersecção parcialmente bloqueada. Em uma intersecção na qual ocorra tal bloqueio parcial, o veículo deve esperar um tempo seguro para estabelecer ordem de precedência antes de prosseguir no cruzamento e redefinir a nova rota para atingir o próximo ponto de passagem.

 

 

Arquitetura de hardware e sistemas

 

Considerando o veículo ou robô como plataforma de desenvolvimento, chama-se especial atenção aos itens a seguir:

 

·         Item A – Projeto de Hardware (Computadores; Sensores): sua ênfase está para aplicação num veículo real;

·         Item B – Arquitetura do Sistema: aplica-se aos dois estágios da proposta;

 

Para o primeiro estágio da pesquisa, pretende-se a utilização de robôs de menor escala, a exemplo das plataformas robóticas, com grande aceitação junto à comunidade científica. Além do tamanho reduzido, o robô pode ser acompanhado de diversos equipamentos adicionais, por exemplo: cordão umbilical, transmissor/receptor de rádio para comunicação, câmera de vídeo para estudos de visão embarcada, etc. Também, pode ser controlado através de softwares LabView e Matlab, ou ainda diretamente através de palavras de controle enviadas à porta de um computador, sem a necessidade de aquisição de nenhum software adicional.

 

Projeto de Hardware

 

            Computadores

 

Para suportar os Sistemas de Visão deverão ser utilizados computadores pessoais PC Quad-Core Intel, estruturados de forma sincronizada e hierarquizada, e adequados ao ambiente do veículo. A experiência de equipes que participaram de outras edições dos Darpa Challenge mostrou que normalmente é empregado um computador para cada sistema/sensor. Dessa forma, a previsão inicial é de no mínimo um e no máximo 4 (quatro) PC para o Sistema de Visão (trinocular, close range stereo, visão traseira, visão lateral). A quantidade exata de máquinas será determinada após os testes e ensaios da integração dos sistemas/sensores e a definição do escopo do projeto.

 

Sensores

 

Sensores são componentes extremamente importantes para a navegação. Inicialmente, há previsão de um Sistema de Visão e Laser.

 

Sistema de Visão

 

O Sistema de Visão (SV) tem por finalidade permitir que o sistema “enxergue” o meio exterior. Pretende-se que seja composto por Seleção de Câmera de Vídeo e o Sistema Laser.

 

Sistema LIDAR

 

O sistema LIDAR tem por finalidade realizar medidas precisas de distância, velocidade e detecção de objetos. Sua aquisição/utilização será objeto

de análise no decorrer do projeto.

 

Arquitetura do Sistema

 

A arquitetura do sistema é composta de Arquitetura Lógica e Implantação da Arquitetura, abordadas a seguir.

 

            Arquitetura Lógica

 

A arquitetura do sistema é aderente ao diagrama de arquitetura em camadas. No diagrama de arquitetura em camadas, dependências fluem sempre para baixo, ou seja, cada camada depende apenas da camada inferior. Tal arquitetura facilita uma clara separação de funcionalidade e desenvolvimento de interfaces bem definidas entre os subsistemas. Isto permitirá desenvolver os subsistemas de forma independente sem impactar na coesão do sistema (Figura 36).

 

O Controle do Sistema e Interface do Usuário é o bloco de mais alta hierarquia na arquitetura. É aqui que serão realizados o monitoramento da situação do veículo, a gerência do serviço e a visualização da rota.

 

A Navegação Autônoma é a estrutura responsável por realizar o cumprimento de tarefas e o planejamento de rotas.

 

A Gerência do Veículo e a Percepção para Navegação é o terceiro nível da hierarquia da arquitetura lógica. O primeiro bloco está relacionado a atividades tais como seguir pontos de passagem, acompanhamento e controle de estabilidade. O segundo bloco trata de questões relativas a detecção de obstáculos, detecção de vias, identificação de superfícies quanto à rugosidade, tráfego, detecção de sinalização horizontal (faixa de pedestres, direção de tráfego, etc).

 

 

 

Figura 36 - Arquitetura Lógica.

 

 

Arquitetura de Implantação

 

A arquitetura de implantação é dividida em dois grandes blocos: Serviços do Sistema e Serviços Autônomos. O primeiro engloba diagnóstico veicular sistêmico, serviço de controle e configuração e visualização. O segundo bloco abrange serviços de sensoriamento, serviços de comportamento autônomo, serviços de percepção e serviços de gerenciamento do veículo.

 

1. Serviços Autônomos

 

Serviços Autônomos é a parte do sistema responsável por obter informações do ambiente e do veículo.  É composto por Gerenciador de Veículo Autônomo, Sistema de Navegação, Servidor de Estado, Servidor de Percepção, Servidor de Navegação, e diversos sensores.

 
2. Gerenciador de Veículo Autônomo

 

O Gerenciador de Veículo Autônomo (GVA) gerencia o alto nível de operação do sistema. É responsável por realizar o planejamento de rota, planejamento de trajetória e gerência de comportamento. O GVA recebe atualizações de percepção do Servidor de Percepção de Navegação (SPN) e usa esta informação para acompanhar o estado atual do veículo e determinar seu comportamento. O GVA monitora de forma contínua os obstáculos percebidos, a informação de limite de faixa de rolamento e distribui planos de trajetória revisados.

 
3. Servidor de Estado

 

O Servidor de Estado (SE) monitora, gerencia e registra todas as condições dos modos do sistema no controle de baixo nível. O SE detecta quaisquer falhas, tenta fazer a recuperação e faz a transição para o modo de segurança, se necessário, recebendo sinais do GPS e do veículo.

 
4. Servidor de Percepção de Navegação

 

O Servidor de Percepção de Navegação (SPN) publica as atualizações de percepção contendo as informações de telemetria do veículo, obstáculos e limite de faixa de rolamento. O SPN recebe os dados que vêm dos sistemas de Visão e LIDAR. O SPN combina os dados obtidos dos sensores com os dados de telemetria do veículo recebidos do Sistema de Navegação (NAV). Obstáculos detectados pelos sistemas de Visão e LIDAR são fundidos para melhorar a precisão da descrição do ambiente percebido. O GVA utiliza as atualizações de percepção publicadas pelo SPN para determinar a próxima ação do veículo.

 

5. Serviços do Sistema

 

Os Serviços do Sistema são responsáveis por processar as informações obtidas determinando a execução de tarefas pré-programadas. É composto

por Visualizador da Rota, Gerenciador de Serviços, Diagnóstico Veicular Sistêmico, Gerenciador da Missão e seus Arquivos, e área de armazenamento de logs.

 
5.a Visualizador da Rota

 

Visualizador da Rota/Simulador de Realidade Virtual (VRSRV) é o componente dos Serviços do Sistema responsável por permitir que a rota da

viatura seja enxergada (pelo Sistema e por agentes externos ao veículo) e gerar o ambiente virtual, integrando todas as informações obtidas dos sensores com as particularidades da missão.

 
5.b Gerenciador de Serviços

 

O Gerenciador de Serviços (GS) é responsável por gerenciar a inicialização e o desligamento de todos os serviços autônomos. Durante a

inicialização do sistema, o GS coordena o processo utilizando a informação do serviço que está pronta em um arquivo de configuração. O GS

inicia ou pausa o Serviço Autônomo em resposta às notificações do Gerenciador da Missão (GM). No momento em que um serviço não mais

responder ou indicar um erro, o GS será capaz de tomar as ações adequadas, tais como tentar reiniciar o serviço ou restabelecer as configurações

originais.

 
5.c Gerenciador da Missão

 

O Gerenciador da Missão (GM) é responsável por fornecer a interface do usuário para configurar e iniciar os serviços autônomos na preparação para o modo autônomo. A aplicação permite ao usuário carregar o Arquivo de Definição de Rota (ADR) e os Arquivos de Dados da Missão (ADM), validando tais arquivos antes de darem entrada no sistema.

 
5.d Arquivo de Dados da Missão

 

É o arquivo que contém os dados da missão a ser executada pela viatura. Interage com o GM, permite a inclusão de novas tarefas a cada missão e

aborda os aspectos de navegação e aquisição de alvos.

 
5.e Arquivo de Definição de Rota

 

É o arquivo que contém os dados da rota a ser seguida pelo veículo, com os pontos de passagem e coordenadas GPS. Interage com o GM e com o VRSRV.

 
5.f Log de Eventos

 

É o registro de eventos relacionadas com ações a serem executadas pelo GS a partir de informações de estado de serviço do DVS. Além de facilitar o controle de execução de serviços, pode ser usado para identificar causas de problemas na viatura.

 

Planejamento e Comportamentos

 

Para que a viatura consiga navegar em um ambiente desestruturado é necessário que haja um planejamento de ações e comportamentos desejados.

 

 

Visão Geral dos Comportamentos do Veículo

 

 

O principal objetivo para a missão e geração de comportamento é navegar, seqüencialmente, através de um conjunto de pontos de passagem de acordo com o Arquivo de Dados da Missão (ADM). Para a execução de tarefas relativas ao comportamento da viatura autônoma, têm-se os seguintes componentes do Gerenciador de Veículo Autônomo (GVA), figura 37:

 

Gerenciador de Missão / Supervisor de Comportamento (GMSC), que gerencia a busca dos objetivos e sub-objetivos da missão, e seleciona e supervisiona o modo de comportamento adequado para execução;

 

Planejador da Rota (PR), que gera planejamentos de rota de alto nível baseados nos segmentos da estrada e nas zonas definidas no Arquivo de Definição de Rota (ADR);

 

Modos de Comportamento & Lógica, que contém os modos de comportamento, o relacionamento de transição entre eles e a lógica de execução com cada modo de comportamento;

 

Gerador de Eventos do Ambiente (GEA), que monitora as estimativas de estado do veículo e do ambiente a partir do Servidor de Percepção de Navegação (SPN) e gera os eventos apropriados para os modos de comportamento quando determinada circunstância ocorre (por exemplo: um obstáculo na faixa à frente, etc);

 

Funções de Utilidades (FU), que executam serviços comuns (por exemplo: geração de trajetória, etc) para os diferentes modos de comportamento;

Gerenciador de Pontos de Direção (GPD), que gerencia o conjunto de pontos de passagem iminentes para direção.

 

Modos de Comportamento e Supervisão

 

Como abordagem inicial para gerar e executar comportamentos de viatura autônoma sugere-se adotar um esquema de controle supervisor de eventos discretos baseado em Máquina-Estado-Finito (MEF). O esquema baseado em MEF permite uma abordagem mais simples para modelar efetivamente as regras e restrições de deslocamento / tática.

 

A figura 38 ilustra os componentes mais significativos para essa abordagem, na qual são modelados comportamentos autônomos como diferentes modos de comportamento. Tais modos de comportamento categorizam situações potenciais que a viatura poderia encontrar durante uma missão/deslocamento. Devem ser previstos modos de comportamento tais como:

 

·         Alinhamento de Faixa, onde o veículo deve seguir uma faixa de rolamento baseado na detecção de faixa ou limites da rodovia;

·         Intersecção de Vias, onde o veículo deve observar o protocolo de intersecção e regras de precedência em cruzamentos de vias, considerando o tráfego de veículos no local;

·         Mudança de Faixa, onde o veículo deve se mover da faixa de rolamento corrente para uma faixa designada;

·         Manobras Múltiplas, onde o veículo deve se re-orientar para uma determinada faixa, ou realizar uma série de manobras multi-pontos, ida-e-volta;

·         Zona de Direção, onde o veículo deve dirigir através de um conjunto de pontos de passagem em uma zona determinada.

 

Para cada modo de comportamento, um conjunto de lógicas customizadas deve ser modelado como uma máquina de estados finitos, que descreve os passos de comportamento potencial, condições e ações a serem tomadas. A lógica de comportamento pode empregar diferentes funções de utilidade durante a execução. Os diferentes modos de comportamento podem compartilhar lógicas de comportamento similares. A lógica de comportamento para o modo de Ultrapassagem pode ser vista como uma “agregação” da lógica de comportamento para Mudança de Faixa, Direção de Faixa e depois outra Mudança de Faixa. Dessa forma, a implementação da manobra de ultrapassagem como um modo de comportamento separado permite especificar condições para verificação de seqüência específica de manobra e pode melhorar a performance da seleção de modos de comportamento durante a execução.

 

 

Figura 37 – Diagrama de blocos do Gerenciador de Veículo Autônomo (GVA)

 

 

Figura 38 – Componentes para Geração e Execução de Comportamento.

 

 

A máquina de estados finitos pode sofrer alguns defeitos potenciais, entre os quais pouca confiabilidade para lidar com situações inesperadas e falta de soluções/comportamentos criativos. Dessa forma, é necessário pensar na inclusão de um modo de comportamento inesperado e na lógica para lidar com situações de exceção para tentar trazer o veículo a um estado conhecido.

 
Planejamento de Rota

 

O componente planejamento de rota tem por objetivo gerar uma lista ordenada de segmentos de rota entre aqueles que foram definidos no Arquivo de Definição de Rota (ADR). O principal objetivo é visitar um dado conjunto de pontos de passagem em seqüência, observando o menor custo percebido no ambiente sensoriado. Cita-se o algoritmo bem conhecido Dijkstra como possível base para essa atividade.

 

A utilização de tempo de viagem estimado como custo base para cada segmento da rota ao invés do comprimento físico do segmento de rota permite levar em conta o limite de velocidade do segmento de rota e as condições de tráfego que a veículo pode se deparar durante o mesmo segmento de rota.

 
Planejamento de Trajetória

 

O planejamento da trajetória deve gerar uma seqüência de pontos de passagem densos e dirigíveis a executar, a partir de um par de pontos de passagem de início/fim, e possivelmente um conjunto de pontos de passagem intermediários. Planejadores de trajetória são relacionados à lógica dos diferentes modos de comportamento que dependem da situação da viatura e da missão. Visualiza-se o emprego de três tipos de planejadores, a saber:

 

·         Planejador de Trajetória de Faixa: Este planejador deve utilizar faixa estimada e limites de rodovia detectados para gerar pontos de passagem que seguem a progressão da faixa/rodovia. Ele deve tentar gerar os pontos de passagem próximos à linha central da faixa. Inicialmente, o planejador deve gerar os pontos estimados da linha central usando os limites da faixa estimada detectada nos dois lados da faixa e complementar essa informação com limites da rodovia, largura padrão de faixa, próximo ponto de passagem. Depois, o planejador deve verificar e remover potenciais pontos de passagem fora de ordem e aplicar um algoritmo, possivelmente baseado em ranhuras cúbicas, para gerar pontos de trajetória de forma mais suave.

·         Planejadores de Trajetória Modelada: Tal conjunto de planejadores deve poder gerar pontos de trajetória baseados em instanciação de modelos com estimativas atuais de estado do ambiente e da viatura para manobras comuns tais como mudança de faixa, ultrapassagem e viradas em intersecções.

·         Planejador de Trajetória de Espaço Aberto: Este planejador deve providenciar geração de trajetória e evitar obstáculos em uma zona pré-determinada onde obstáculos podem estar presentes.