Índice:

Cambus - Sistema de Coleta de Dados em Ônibus Urbanos: 8 Passos
Cambus - Sistema de Coleta de Dados em Ônibus Urbanos: 8 Passos

Vídeo: Cambus - Sistema de Coleta de Dados em Ônibus Urbanos: 8 Passos

Vídeo: Cambus - Sistema de Coleta de Dados em Ônibus Urbanos: 8 Passos
Vídeo: Coleta de Dados no Planejamento dos Transportes Aula 1 2024, Novembro
Anonim
Cambus - Sistema de Coleta de Dados em Ônibus Urbanos
Cambus - Sistema de Coleta de Dados em Ônibus Urbanos

Dentre os problemas e dificuldades conhecidos no transporte público, a população carece de informações em tempo real e com o mínimo de assertividade. A superlotação dos ônibus de transporte coletivo afasta os usuários, que preferem usar seus próprios veículos, mesmo estando no trânsito por horas. Se informações em tempo real, como o número de ônibus, estiverem facilmente disponíveis para o usuário, ele pode escolher se deseja aguardar o próximo ônibus ou se locomover de ônibus ou usar um veículo próprio. O poder de escolha torna o transporte público uma opção mais atraente para o usuário.

Contar ou estimar pessoas em ambientes fechados pode ser feito de várias maneiras, entre as quais as mais comumente empregadas são:

  • Imagens térmicas;
  • Visão computacional;
  • Contador facial;

Entre as várias dificuldades para estimar pessoas em um ambiente usando visão computacional, as principais são:

  • Oclusões de pessoas;
  • Iluminação invertida;
  • Oclusão estática, ou seja, pessoas atrás de objetos;
  • Ângulo da câmera para o ambiente;

Um desafio para este projeto é saber o ângulo correto da câmera que melhor auxiliará na subtração do fundo da imagem, bem como a luminosidade variável durante o dia dentro do ônibus.

O principal objetivo da proposta é criar um modelo robusto e configurável para estimar a superlotação e disponibilizar os resultados à população por meio de smartphones.

Etapa 1: Materiais

O material necessário para o projeto é o seguinte:

1 x Dragon Board 410c;

1 x câmera USB;

1 x Smartphone Android;

Etapa 2: Instale o Linaro no Dragonboard 410c

Instale Linaro no Dragonboard 410c
Instale Linaro no Dragonboard 410c
Instale Linaro no Dragonboard 410c
Instale Linaro no Dragonboard 410c

Siga as instruções no link abaixo para instalar o Linaro 17.09 no DragonBoard 410c. Recomendamos a instalação do Linaro 17.09 para suporte de kernel para GPS.

www.96boards.org/documentation/consumer/dr…

Etapa 3: Etapa 2: instalar bibliotecas e baixar o código-fonte do GitHub

Etapa 2: instalar bibliotecas e baixar o código-fonte do GitHub
Etapa 2: instalar bibliotecas e baixar o código-fonte do GitHub

Cambus tem uma arquitetura modular e design de código. É possível codificar seu próprio algoritmo de aprendizado de máquina, mudar para outro serviço de nuvem e criar seus próprios aplicativos de usuário.

Para executar o projeto cambus, primeiro você precisa baixar o código-fonte do github (https://github.com/bmonteiro00/cambus). Instale o python (Cambus foi o modo de execução na versão 2.7 e> 3.x) e as seguintes bibliotecas usando 'pip' (sudo apt-get install python-pip). Será necessário instalar várias bibliotecas no sistema Linaro (Além disso, é recomendável criar um ambiente virtual - pip install virtualenv - para isolar o sistema Cambus do SO). Por favor, instale as seguintes bibliotecas:

  • pip install paho-mqtt
  • pip install numpy
  • pip install opencv-python
  • pip install opencv-contrib-python
  • pip instalar twilio
  • pip instalar matplotlib

O programa principal foi dividido em classes:

  • CamBus - a classe principal;
  • Sensor - uma classe para obter dados como posição GPS, temperatura, Co2.
  • Contador - classe com algoritmo de processamento de imagem.

Certifique-se de que todas as bibliotecas foram instaladas e execute python CamBus_v1.py.

Etapa 4: Configurando AWS IoT Core, DynamoDB

Configurando AWS IoT Core, DynamoDB
Configurando AWS IoT Core, DynamoDB
Configurando AWS IoT Core, DynamoDB
Configurando AWS IoT Core, DynamoDB
Configurando AWS IoT Core, DynamoDB
Configurando AWS IoT Core, DynamoDB

Usamos o núcleo AWS IoT como um corretor MQTT com TLS e X509 e NoSQL e DynamoDB para registrar dados. Você terá que criar uma conta em https://aws.amazon.com/free.). A seguir, você terá que seguir os passos abaixo para criar uma coisa e integrar com o Dynamo:

docs.aws.amazon.com/iot/latest/developergu…

Etapa 5: Configurar APIs Twilio e Dweet

Configurar APIs Twilio e Dweet
Configurar APIs Twilio e Dweet
Configurar APIs Twilio e Dweet
Configurar APIs Twilio e Dweet

O serviço Twilio SMS também foi instalado. Consulte o URL abaixo para obter instruções para concluir esta etapa:

www.twilio.com/docs/iam/api/account

A integração entre o app android e o sistema foi feita por meio de REST na plataforma Dweet. Não é necessário cadastro.

dweet.io/

Etapa 6: Desafios

Durante nosso desenvolvimento, muitos desafios enfrentamos, desde as técnicas OpenCV até a plataforma AWS. Decidimos codificar com Python para economizar tempo de desenvolvimento em C / C ++. Durante o nosso desenvolvimento, apenas os métodos básicos do Opencv, como:

• cv2. GaussianBlur (..)

• cv2.threshold (..)

• cv2.morphologyEx (..)

• cv2.contourArea (..)

• cv2.findContours (..)

Esses métodos básicos não foram suficientes para alcançar uma boa qualidade na detecção de pessoas. Cenários com vídeo instável ML (Aprendizado de Máquina) foi usado. Então, decidimos usar a biblioteca de aprendizado de máquina OpenCV e tivemos outro problema porque encontrar uma boa entrada de dados para o algoritmo de ML era um problema que levamos muitos dias. Usamos o algoritmo OpenCV SVM, mas não funcionou. Usamos OpenCV Naive Bayses e este funcionou bem. Tentamos usar as redes neurais Tensorflow e CNN, mas não fizemos isso por agora. A CNN usa muito poder de processamento, algo que não tínhamos. Usar o OpenCV ML e os métodos básicos do OpenCV nos ajudou a atingir uma boa taxa de detecção de pessoas. Porém, para cada tipo de vídeo temos que adaptar os parâmetros do OpenCV de forma a atingir um bom índice de detecção de pessoas e evitar falsos positivos. No meio desses dois meses desenvolvemos nossa primeira ideia de fazer um centro de coleta de dados não apenas o número de passageiros e localização GPS. Decidimos não coletar dados por meio de outros sensores como temperatura e assim por diante. Criamos um arquivo.ini para parametrizar a aplicação e torná-la configurável. No arquivo Cambus.ini você pode configurar o aplicativo de várias maneiras.

Etapa 7: Resultados e trabalho futuro

Como você pode ver no vídeo, o contador está funcionando com precisão. As linhas azuis marcam o limite de entrada e a linha vermelha o limite de saída. Nesse caso, um vídeo foi usado para simular, pois não foi possível implantá-lo em um barramento.

Lembre-se de que alguma mudança deve ser feita em sua condição sobre o tamanho do vídeo, ângulo da câmera, luminosidade, etc. Cada tipo de vídeo tem que ser sua própria adaptação de parâmetros, como opencv kernel suctraction background e assim por diante.

Altere também as variáveis em cambus.ini, indicando o corretor MQTT e assim por diante.

Consideramos em futuras implementações adicionar sensores, por exemplo, temperatura, umidade e CO2 no sistema. A ideia é conseguir dados das cidades disponibilizando-os para a comunidade.

A seguir, enumeramos as próximas etapas que você pode fazer para melhorar o projeto:

  • Reescreva o código usando C / C ++;
  • Melhorar o algoritmo de ML;
  • Re-fatorar o código python;
  • Implantação em um ônibus;

Gostaríamos de agradecer à Embarcados e à Qualcomm por todo o apoio prestado.

Colaboradores:

Bruno Monteiro - [email protected]

Kleber Drobowok - [email protected]

Vinicius de Oliveira - [email protected]

Etapa 8: Referências

[1]

[2]

[3]

[4]

[5]

Recomendado: