Tabla de contenido:

Cambus - Sistema de recopilación de datos en autobuses urbanos: 8 pasos
Cambus - Sistema de recopilación de datos en autobuses urbanos: 8 pasos

Video: Cambus - Sistema de recopilación de datos en autobuses urbanos: 8 pasos

Video: Cambus - Sistema de recopilación de datos en autobuses urbanos: 8 pasos
Video: CJTA2020 CONTROL DE CUADRO DE INSTRUMENTOS MEDIANTE CAN BUS 2024, Mes de julio
Anonim
Cambus - Sistema de recopilación de datos en autobuses urbanos
Cambus - Sistema de recopilación de datos en autobuses urbanos

Entre los problemas y dificultades que se conocen en el transporte público, la población carece de información en tiempo real y con la menor asertividad. El hacinamiento de los autobuses de transporte público aleja a los usuarios, que prefieren utilizar sus propios vehículos, a pesar de que todavía están en el tráfico durante horas. Si la información en tiempo real, como el número de autobuses, está fácilmente disponible para un usuario, puede elegir si esperar al siguiente autobús, desplazarse en autobús o utilizar un vehículo propio. El poder de elección hace que el transporte público sea una opción más atractiva para el usuario.

El conteo o la estimación de personas en el interior se pueden realizar de muchas formas, entre las que se encuentran las más comúnmente empleadas:

  • Imágenes térmicas;
  • Visión por computador;
  • Contador de caras;

Entre las diversas dificultades para estimar personas en un entorno utilizando visión artificial, las principales son:

  • Oclusiones de personas;
  • Iluminación inversora;
  • Oclusión estática, es decir, personas detrás de objetos;
  • Ángulo de la cámara al entorno;

Un desafío para este proyecto es conocer el ángulo correcto de la cámara que mejor ayudará en la sustracción del fondo de la imagen, así como la luminosidad variable durante el día dentro del autobús.

El objetivo principal de la propuesta es crear un modelo robusto y configurable para estimar el hacinamiento y poner los resultados a disposición de la población a través de teléfonos inteligentes.

Paso 1: Materiales

El material necesario para el proyecto es el siguiente:

1 x tablero de dragón 410c;

1 x cámara USB;

1 x teléfono inteligente Android;

Paso 2: Instale Linaro en Dragonboard 410c

Instalar Linaro en Dragonboard 410c
Instalar Linaro en Dragonboard 410c
Instalar Linaro en Dragonboard 410c
Instalar Linaro en Dragonboard 410c

Siga las instrucciones del enlace siguiente para instalar Linaro 17.09 en DragonBoard 410c. Recomendamos instalar Linaro 17.09 para el soporte del kernel para GPS.

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

Paso 3: Paso 2: Instale las bibliotecas y descargue el código fuente de GitHub

Paso 2: instalar bibliotecas y descargar el código fuente de GitHub
Paso 2: instalar bibliotecas y descargar el código fuente de GitHub

Cambus tiene una arquitectura modular y un diseño de código. Es posible codificar su propio algoritmo de aprendizaje automático, cambiar a otro servicio en la nube y crear sus propias aplicaciones de usuario.

Para ejecutar el proyecto cambus, primero debe descargar el código fuente de github (https://github.com/bmonteiro00/cambus). Instale python (Cambus estaba en modo para ejecutarse en la versión 2.7 y> 3.x) y las siguientes bibliotecas usando 'pip' (sudo apt-get install python-pip). Será necesario instalar un montón de bibliotecas en el sistema Linaro (Además, se recomienda crear un entorno virtual - pip install virtualenv - para aislar el sistema Cambus del SO). Instale las siguientes bibliotecas:

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

El programa principal se dividió en clases:

  • CamBus: la clase principal;
  • Sensor: una clase para obtener datos como posición GPS, temperatura, Co2.
  • Contador - clase con algoritmo de procesamiento de imágenes.

Asegúrese de que todas las bibliotecas estén instaladas y ejecute python CamBus_v1.py.

Paso 4: configuración de AWS IoT Core, DynamoDB

Configuración de AWS IoT Core, DynamoDB
Configuración de AWS IoT Core, DynamoDB
Configuración de AWS IoT Core, DynamoDB
Configuración de AWS IoT Core, DynamoDB
Configuración de AWS IoT Core, DynamoDB
Configuración de AWS IoT Core, DynamoDB

Usamos el núcleo de AWS IoT como un agente MQTT con TLS y X509 y NoSQL y DynamoDB para registrar datos. Deberá crear una cuenta en https://aws.amazon.com/free.). A continuación, deberá seguir los pasos a continuación para crear una cosa e integrarla con Dynamo:

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

Paso 5: Configurar las API de Twilio y Dweet

Configurar las API de Twilio y Dweet
Configurar las API de Twilio y Dweet
Configurar las API de Twilio y Dweet
Configurar las API de Twilio y Dweet

También se configuró el servicio Twilio SMS. Consulte la URL a continuación para obtener instrucciones para completar este paso:

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

La integración entre la aplicación de Android y el sistema se realizó a través de REST utilizando la plataforma Dweet. No es necesario registrarse.

dweet.io/

Paso 6: Desafíos

Durante nuestro desarrollo, enfrentamos muchos desafíos, desde técnicas OpenCV hasta la plataforma AWS. Decidimos codificar con Python para ahorrar tiempo desarrollando en C / C ++. Durante nuestro desarrollo solo los métodos básicos de Opencv como:

• cv2. GaussianBlur (..)

• cv2.threshold (..)

• cv2.morphologyEx (..)

• cv2.contourArea (..)

• cv2.findContours (..)

Estos métodos básicos no fueron suficientes para alcanzar una buena calidad en la detección de personas. Se utilizaron escenarios con video inestable ML (Machine Learning). Entonces, decidimos usar la biblioteca de aprendizaje automático OpenCV y tuvimos otro problema porque encontrar una buena entrada de datos para el algoritmo ML fue un problema que pasamos muchos días. Hemos utilizado el algoritmo OpenCV SVM pero no funcionó. Usamos OpenCV Naive Bayses y este funcionó bien. Intentamos usar Tensorflow y las redes neuronales de CNN, sin embargo, no lo hicimos posible por ahora. CNN usa mucha potencia de procesamiento, algo que no teníamos. El uso de OpenCV ML y los métodos básicos de OpenCV nos ayudó a alcanzar una buena tasa de detección de personas. No obstante, para cada tipo de vídeo tenemos que adaptar los parámetros de OpenCV con el fin de alcanzar una buena tasa de detección de personas y evitar falsos positivos. A mediados de estos dos meses evolucionamos nuestra primera idea de hacer un centro de recogida de datos no solo el número de pasajeros y la ubicación del GPS. Decidimos recolectar no datos usando otros sensores como temperatura, etc. Creamos un archivo.ini para parametrizar la aplicación y hacerla configurable. En el archivo Cambus.ini puede configurar la aplicación de muchas formas.

Paso 7: Resultados y trabajo futuro

Como puede ver en el video, el contador funciona con precisión. Las líneas azules marcan el límite de entrada y la línea roja el límite de salida. En este caso, se usó un video para simular porque no pudimos implementarlo en un bus.

Tenga en cuenta que se debe realizar algún cambio en su condición sobre el tamaño del video, el ángulo de la cámara, la luminosidad, etc. Cada tipo de video debe ser su propia adaptación de parámetros, como el fondo de succión del kernel opencv, etc.

También cambie las variables en cambus.ini, indicando corredor MQTT y así sucesivamente.

Consideramos en futuras implementaciones agregar sensores, por ejemplo, de temperatura, humedad y CO2 en el sistema. La idea es obtener datos de las ciudades y ponerlos a disposición de la comunidad.

A continuación, enumeramos los siguientes pasos que puede seguir para mejorar el proyecto:

  • Vuelva a escribir el código usando C / C ++;
  • Mejorar el algoritmo de ML;
  • Vuelva a factorizar el código de Python;
  • Despliegue en un autobús;

Queremos agradecer a Embarcados y Qualcomm por todo el apoyo brindado.

Colaboradores:

Bruno Monteiro - [email protected]

Kleber Drobowok - [email protected]

Vinicius de Oliveira - [email protected]

Paso 8: referencias

[1]

[2]

[3]

[4]

[5]

Recomendado: