Configuración de los drones¶
Para agregar un dron al programa de detección, es necesario enviar un stream de video a la dirección IP de la VM de detección, esto mediante un archivo la redirección del stream mediante gstreamer, y el archivo sdp que contiene el puerto al cual se va a retransmitir, adicionalmente, es necesario crear un archivo de configuración JSON en el cual se establecen los parámetros para la detección en el stream.
Nota
Para la administración de los streams existe una API que está en proceso de desarrollo, la cual permite agregar, modificar y eliminar drones de la lista de detección. En general, esta se encarga de crear los sdp solo cuando es necesario detectar objetos en el stream, y eliminarlos cuando no se requiera.
Por el momento, la configuración de los drones es manual y se realiza de la siguiente manera. Todo se realiza en la VM janus-testing.
Redireccionamiento del stream
La configuracion del stream lleva por objetivo el poder obtener el stream original (al que viene directamente del drone) y llevarlo a distintos lugares para cada una de las aplicaciones. Con ayuda del script launch.sh podremos lanzar una instancia de gstreamer que nos ayudara en la obtención del stream original y sus redirecciones.
launch.sh --host streamrtp.therobox.io --port {original stream port} --janus-port {janus port} --target-ip {ai server ip} --target-port {sdp port} -v
En la siguiente lista se describen los parametros necesarios:
–port: Este es el puerto que se abrirá para obtener el stream original proveniente del drone.
–janus-port: En la configuración del servidor janus se tendrá que agregar este puerto para el dispositivo.
–target-ip y –target-port: Con estos parametros se configura hacia que servidor será redirigido y en que puerto se va a consumir, para que la aplicación de AI procese el stream.
El script ejecutará el comando de gstreamer correspondiente para que se cree la redirección. Se sugiere crear un service para que la redirección siempre este activa, aunque reinicie el servidor.
Crear un archivo de configuración JSON
El archivo de configuración tiene los siguientes parámetros
username: Nombre de usuario de Thingsboard.
password: Contraseña del usuario de Thingsboard.
frame_count: Cada cuántos frames se va a analizar con el modelo de detección (60 = detecta cada 60 frames).
frame_detection: Cada cuántos frames se va a enviar un email de alerta (10 = Cuando haya 10 frames donde se haya detectado algo, se envía el correo).
emails: Lista de correos a los cuales se enviarán las alertas.
polygons: Lista de polígonos que representan las áreas de detección (cada polígono es una lista de coordenadas en formato [latitud, longitud]. Se pueden agregar tantos polígonos como se requiera para la detección de objetos en diferentes áreas.
El archivo json debería verse de la siguiente manera:
{ "username": "usuario_testing", "password": "test1234", "frame_count": 60, "frame_detection": 10, "emails": [ "testing@mail.com" ], "polygons": [ [[37.7749, -122.4194], [37.7895, -122.4194], [37.7895, -122.4062], [37.7749, -122.4062]], [[22.070856, -100.894000], [22.068758, -100.898758], [22.063571, -100.898346], [22.066777, -100.891566]], [[40.7488, -73.9814], [40.7613, -73.9814], [40.7613, -73.9647], [40.7488, -73.9647]], [[19.428877041870095, -99.20988170137882], [19.4282994923989, -99.21187207543684], [19.41679517392652, -99.20864365636007], [19.418701117094045, -99.20712798729012]], [[19.303415, -99.383035], [19.303543, -99.382549], [19.303045, -99.382382], [19.302921, -99.382912]] ] }
Este archivo debe guardarse con el formato
<device-id>.jsonen el directorio/etc/robox/configs. Para comprobar que se cargó correctamente este debe de aparecer en los contenidos al hacer una petición mediantecurlde la siguiente manera:$ curl http://localhost/configs/
<html> <head><title>Index of /configs/</title></head> <body> <h1>Index of /configs/</h1><hr><pre><a href="../">../</a> <a href="42667b10-104e-11ee-8ee1-6162c0f5d209.json">42667b10-104e-11ee-8ee1-6162c0f5d209.json</a> 18-Jun-2024 1 6:50 3965 <a href="61e5cf20-dc4c-11ee-be7a-a906b5b8fe41.json">61e5cf20-dc4c-11ee-be7a-a906b5b8fe41.json</a> 28-Jun-2024 2 0:05 3752 <a href="default.json">default.json</a> 14-May-2024 18:56 928 </pre><hr></body> </html>
Crear el archivo sdp
De manera similar, se debe crear un archivo sdp con el siguiente contenido
v=0 o=- 0 0 IN IP4 127.0.0.1 s=Video Stream c=IN IP4 127.0.0.1 t=0 0 m=video <puerto de retrasnmisión> RTP/AVP 96 a=rtpmap:96 H264/90000
Este se debe de guardar en
/etc/robox/sdpcon el nombre<device-id>.sdp. Para comprobar que se cargó correctamente este debe de aparecer en los contenidos al hacer una petición mediantecurlde la siguiente manera:$ curl http://localhost/sdp/
<html> <head><title>Index of /sdp/</title></head> <body> <h1>Index of /sdp/</h1><hr><pre><a href="../">../</a> <a href="61e5cf20-dc4c-11ee-be7a-a906b5b8fe41.sdp">61e5cf20-dc4c-11ee-be7a-a906b5b8fe41.sdp</a> 20-May-2024 19 :34 117 </pre><hr></body> </html>
Una vez creado el archivo sdp, el programa de detección automáticamente comenzará a analizar las coordenadas donde se encuentre el dron, y en cuanto este se localice dentro de una zona de detección, comenzará el algoritmo para analizar el stream de video que se reciba.