Sistema de Monitoramento de Transporte: Uma solução de baixo custo Isaac F. C. Marques 1, Marcos A. B. Costa 1, Rafael F. Lopes 2 1 Departamento Acadêmico de Informática INSTITUTO FEDERAL DO MARANHÃO São Luís, MA 2 Laboratório de Sistemas Distribuídos Inteligentes Universidade Federal do Maranhão São Luís, MA isaacfrancis-cm@hotmail.com, marcosandrecosta.ma@gmail.com rafaelf@lsdi.ufma.br Abstract. An ITS (Intelligent Transportation System) is an application that without having embedded intelligence itself provides control and analysis data services so the traffic and transportation management can be improved. In this sense, this paper introduces DroidBus, an ITS developed to improve the experience of the public transportation system user. Technologies like DDS (Data Distribution Service) and mobile computing allow DroidBus to provide information about the transportation system itself, like the itinerary of the buses lines, their location and a route helper, which provides locomotion options. Resumo. Um Sistema de Transporte Inteligente (STI) pode ser definido como uma aplicação que, sem necessariamente encorporar inteligência propriamente dita, provê serviços de controle e análise de dados para um melhor gerenciamento de transporte e tráfego. Nesse contexto, este trabalho apresenta o Droid- Bus, um STI desenvolvido para melhorar a experiência do usuário do transporte público de São Luís, MA, disponibilizando publicamente, a partir do uso de tecnologias como computação distribuída (Data Distribution Service DDS) e computação móvel, informações de localização em tempo real das unidades móveis, itinerários de linhas de ônibus e um assistente de rotas mostrando planos de locomoção pela cidade. Introdução Os STI (sistema de transporte inteligente) são soluções que visam complementar, ou mesmo melhorar, a experiência dos usuários ao se locomoverem pela cidade, geralmente mostrando informações que ajudam o usuário a se planejar. Tendo isso em mente, foi desenvolvido o DroidBus, que é um STI cujo objetivo é oferecer ambientes nos quais a população possa acessar esse tipo de informação. A proposta do DroidBus é que se tenha smartphones distribuídos geograficamente pelas unidades de transporte coletivo, circulando normalmente pela cidade, coletando e enviando as informações necessárias para o núcleo de processamento. Depois disso, esses dados são devidamente tratados, armazenados e disponibilizados para consumo. Uma interface Web acessa estes recursos e os apresenta para os usuários do transporte público de São Luís.
Este artigo está organizado conforme a seguir. A seção Fundamentação Teórica apresenta as definições a respeito das principais tecnologias utilizadas no desenvolvimento da solução. Em Metodologia são descritas as ferramentas que foram utilizadas e a forma como foram abordadas no desenvolvimento da arquitetura do sistema. Na seção Desenvolvimento é descrito o processo de criação propriamente dito, onde são descritos os procedimentos realizados e a operacionalização da etapa de produção. Na seção Trabalhos Relacionados são citados projetos que foram desenvolvidos na mesma área específica de conhecimento e têm abordagem semelhante. Os resultados obtidos são apresentados na seção Resultados e finalmente é abordada a seção Considerações Finais. Fundamentação teórica O SDDL (Scalable Data Distributuion Layer) [David et al. 2012] é um middleware de comunicação projetado para ser escalável, permitindo a adição de novas máquinas dinamicamente para distribuir a carga de processamento. Essa escalabilidade está associada ao uso do padrão DDS [Pardo-Castellote 2003], que especifica uma arquitetura de middleware robusta, escalável e de alto desempenho para distribuição de dados em tempo-real. Serviços de distribuição de dados podem fazer uso de diversas implementações do padrão. O SDDL é uma tecnologia de comunicação distribuída que usa uma implementação open source do DDS (OpenSplice [PrismTech 2016]) e foi utilizado no sistema para aplicação da comunicação distribuída. A arquitetura do SDDL é constituída de nós centrais e estacionários, além de ser baseada na especificação DDS e utilizar o Real-Time Publish-Subscribe [Deng et al. 2007] e o Mobile Reliable UDP (MR-UDP) [Goncalves et al. 2013] como protocolos de comunicação. Os nós móveis, ou periféricos, são responsáveis por coletar e enviar informações geolocalizadas para os nós centrais do middleware, que são responsáveis por processar os dados de acordo com as regras de negócio. A utilização do SDDL em projetos deste tipo permite que se abstraia questões mais complexas da comunicação entre os nós estacionários e o núcleo do middleware. Metodologia Este trabalho aborda o desenvolvimento de uma infraestrutura de software que permita monitorar e fornecer informações a respeito do sistema público de transporte, baseados no uso de dispositivos portáteis. Para tanto, a infraestrutura proposta deve ser capaz de gerenciar e processar fluxos de dados em larga escala provenientes das frotas monitoradas. Os serviços disponibilizados pelo DroidBus permitirão gerar um novo paradigma na utilização do sistema público de transporte. O desenvolvimento consiste na escolha de uma arquitetura e, então, no desenvolvimento de cada um dos módulos. Arquitetura A arquitetura do DroidBus é unidirecional quanto ao fluxo de dados e composta por três principais produtos, DroidBus Client, DroidBus Server e DroidBus Web, conforme visto na Figura 1. Em 1(a), os dispositivos móveis Android coletam os dados de contexto e enviam para 1(b), o núcleo do SDDL, que por sua vez as processa e armazena em banco de dados MySql. Com os dados armazenados, um sistema Web PHP dispõe as informações necessárias à apresentação do conteúdo exibido pela interface Web 1(c).
Figura 1. Arquitetura do DroidBus. a) Coleta dos dados de contexto; b) Processamento e armazenamento; c) Apresentação dos dados Tecnologias Para a construção de um sistema que opere com a arquitetura proposta foram utilizadas algumas tecnologias na implementação da comunicação distribuída, manipulação da plataforma móvel e na construção da aplicação Web que é responsável por disponibilizar as informações para os usuários do sistema. A aplicação que opera nos dispositivos móveis é desenvolvida exclusivamente para plataformas Android tendo em vista o fato da API do SDDL ser oferecida apenas para a linguagem JAVA. A aplicação Web foi desenvolvida utilizando a linguagem de programação backend PHP (para implementação das aplicações do lado do servidor) e a interface e scripts client-side construídos com HTML/CSS e JavaScript, respectivamente. Os dados são persistidos em banco de dados MySQL compartilhado entre a aplicação Web e o núcleo de processamento desenvolvido. Desenvolvimento DroidBus Server Para a implementação da comunicação entre os nós móveis (ônibus) e os nós processadores foi utilizado o SDDL, o middleware de comunicação e distribuição de dados desenvolvido pelo LAC (Laboratory for Advanced Collaboration) da PUC-RIO. A utilização do middleware se deu por conta de algumas características muito importantes que uma aplicação distribuída móvel deve ter: alta disponibilidade, alto desempenho e excelente controle de concorrência, bem como lidar com a instabilidade das conexões sem fio e a variação intrínseca no número de participantes. Com o SDDL é possível focar-se apenas na implementação da aplicação em si, pois o middleware já implementa funcionalidades que nos permitem abstrair as questões levantadas a cima. A tarefa dos servidores que rodam o SDDL é receber as mensagens dos nós móveis, que neste caso são as localizações dos ônibus, e então armazenar em uma base de dados apenas a posição atual de cada ônibus. Para que isso ocorra, cada ônibus precisa de um identificador único, que pode ser a placa ou um UUID, assim, mesmo com a variação intrínseca do número de participantes, se mantém um estado consistente de suas localizações. Desta forma, um snapshot (configuração de localizações dos ônibus em um determinado intervalo de tempo) fica disponível em uma estrutura que suporta múltiplos acessos concorrentes. DroidBus Client A escolha de se utilizar smartphones ocorreu devido à conveniência de diversos serviços (conexão com a internet, localização, periféricos como câmera, microfone, etc.) dispostos em um mesmo ambiente. Então foi escolhido o sistema operacional móvel Android para
a implementação dos serviços de coleta de dados de contexto pelos fatos de ser gratuito, open source e de suportar aplicações baseadas na linguagem de programação Java (que é a linguagem da única implementação do SDDL disponível até o momento). A tarefa dos nós móveis é apenas coletar e enviar as informações de contexto. Com relação à coleta, o sistema operacional Android oferece diversos serviços em sua API para desenvolvimento de aplicações para acesso de seus mais variados recursos. A primeira versão do DroidBus coleta apenas a localização instantânea dos ônibus, mas o sistema foi desenvolvido de modo que a evolução não seja muto custosa e se possa incluir facilmente mais dados de contexto. Após a coleta tem-se a etapa de envio os dados. Toda a comunicação da aplicação móvel com os nós processadores é gerenciada pela API cliente do SDDL. DroidBus Web No DroidBus Web serão disponibilizadas duas funcionalidades: o monitoramento da localização em tempo real (utilizando os dados coletados pelo DDS) e um assistente de rotas. Este último tem por objetivo utilizar dados pré cadastrados a respeito dos itinerários da linhas a circularem na cidade para fornecer sugestões de ônibus a se utilizar para locomoção dentro de São Luís com base num deslocamento desejado. Aplicação Servidor A aplicação servidor foi toda construída utilizando a linguagem de programação PHP em servidor Apache/Win64, tecnologia específica para o desenvolvimento web, tendo em vista sua maior simplicidade e flexibilidade, características que facilitaram o desenvolvimento da aplicação e proporcionaram maior agilidade na implementação dos códigos. Os principais módulos construídos são o snapshot e o assistente. Módulo Snapshot Nessa seção da aplicação são servidos os dados de localização que possibilitam a realização do monitoramento de frota. Como já citado em sessão anterior, os dados recebidos pelo DroidBus Server são armazenados em uma tabela de banco de dados MySQL, sendo a mesma utilizada apenas como unidade compartilhada para o acesso aos dados, uma vez que as informações de localização das unidades móveis são sempre sobrepostas a cada ciclo de comunicação com os nós móveis, de maneira que os dados de localização presentes na tabela sempre correspondam à posição mais atual de cada ônibus ativo no sistema. Como saída, o sistema entrega os dados de latitude, longitude e de identificação dos ônibus em circulação e pertencentes à linha. Para efeito de rastreamento o cliente repetirá essa operação dentro de um intervalo ligeiramente maior que o do ciclo de comunicação dos nós móveis com o DroidBus Server, de maneira que os dados de localização entregues sejam sempre os mais atualizados possíveis. Módulo Assistente Neste módulo, primeiramente são calculados os extremos NE e SW que definem as coordenadas limite para que a relação de contingência entre a região permitida e as rotas possa ser verificada. A partir das coordenadas limite geradas com auxílio do MapServer, é possível realizar as consultas no banco de forma otimizada, utilizando uma série de verificações nas cláusulas where que reduzem o conjunto de registros retornados para
apenas os satisfatórios e dispensam o uso de funções externas para filtragem, sendo toda ela realizada diretamente na consulta SQL, o que nos proporciona um grande ganho em termos de tempo de processamento, tendo em vista que a tabela que registra todas as coordenadas de cada rota poderá chegar a possuir mais de 400.000 registros, em um ambiente plenamente operacional. Essas verificações levam em consideração a soma das diferenças absolutas entre os valores dos pares latitude,longitude dos registros da rota para com os pares origem e destino fornecidos como entrada. Aplicação Cliente A aplicação client-side tem scripts desenvolvidos com JavaScript e realiza toda comunicação com a aplicação server-side de forma assíncrona, através de requisições AJAX pontuais e temporizadas. Para o funcionamento do monitoramento em tempo real, uma função definida para um intervalo de repetições é responsável por refazer a solicitação de ônibus ativos ao servidor remoto e, desta forma, atualizar a posição geográfica dos mesmos, constituindo assim a característica de rastreamento das unidades móveis. Figura 2. DroidBus Web: funcionalidade de acompanhamento em tempo real de linha de ônibus O assistente de rotas, com base nos itinerários cadastrados dentro do sistema, realiza a intercalação dos dados de trajeto desejado e rotas disponíveis, considerando fatores como: proximidade entre percurso do ônibus e pontos de origem e destino desejados, tempo e distância estimados para o percurso, definindo assim as linhas mais indicadas para a realização do percurso. Resultados As execuções mostraram um percentual de entrega de mensagens de aproximadamente 50%, sendo que a cada um minuto de execução, de doze mensagens enviadas pelo nó móvel, apenas 6, em média, chegam ao núcleo do SDDL e, consequentemente, são armazenados no banco de dados. Os testes foram realizados com todo o núcleo SDDL rodando em uma mesma máquina, inclusive o Gateway, e com um smartphone android rodando o DroidBus Client. Considerações Finais O DroidBus é um sistema em desenvolvimento já tendo vários módulos concluídos, como o de coleta de dados de contexto, o módulo de processamento, a interface WEB o que já
Figura 3. DroidBus Web: funcionalidade de assistente de rotas proporciona algumas das funcionalidades dentre as propostas, como o monitoramento em tempo real da frota, exibição do itinerário das linhas pré-cadastradas e o assistente de rotas. Entretanto, alguns pontos podem ser levantados, como: os testes de campo são comprometidos pela necessidade de se ter uma estrutura passível de acesso externo plenamente configurável; embora o DroidBus possa ser considerado uma solução de baixo custo, é necessário ressaltar que a aquisição de smartphones é imprescindível para o funcionamento da arquitetura do sistema; o DroidBus WEB está evoluindo para uma nova versão, a qual oferecerá planos de locomoção com rotas compostas (cruzamento de diferentes itinerários). Com base no que foi exposto ao longo deste trabalho, pode-se dizer que o sistema encontra-se em estado de desenvolvimento, embora funcional. Trabalhos futuros incluem a inclusão de novos dados de contexto, como a quantidade de passageiros, a velocidade média e o ETA (Estimated Time Arrival). Referências David, L., Vasconcelos, R., Alves, L., André, R., Baptista, G., and Endler, M. (2012). A communication middleware for scalable real-time mobile collaboration. In Enabling Technologies: Infrastructure for Collaborative Enterprises (WETICE), 2012 IEEE 21st International Workshop on, pages 54 59. IEEE. Deng, G., Xiong, M., Gokhale, A., and Edwards, G. (2007). Evaluating real-time publish/subscribe service integration approaches in qos-enabled component middleware. In 10th IEEE International Symposium on Object and Component-Oriented Real-Time Distributed Computing (ISORC 07), pages 222 227. IEEE. Goncalves, J. F., da Silva e Silva, F. J., Vasconcelos, R. O., Baptista, G. L. B., and Endler, M. (2013). A security infrastructure for massive mobile data distribution. In Proceedings of the 11th ACM international symposium on Mobility management and wireless access, pages 41 50. ACM. Pardo-Castellote, G. (2003). Omg data-distribution service: Architectural overview. In Distributed Computing Systems Workshops, 2003. Proceedings. 23rd International Conference on, pages 200 206. IEEE. PrismTech (2016). Vortex OpenSplice DDS description.