cmusatyalab / steeleagle

Automated drone flights for visual inspection tasks
GNU General Public License v2.0
5 stars 4 forks source link

cnc_pb2 vs openscout_pb2 #7

Closed teiszler closed 2 years ago

teiszler commented 2 years ago

When an image is sent from a DroneBrain client, both the command cognitive engine and the OpenScout engines (for object detection/face recognition) need to receive it. The command engine will store it so it can be sent back to commander clients and OpenScout will attempt to detect/recognize things. However each requires a slightly different protobuf definition at the moment. The Extras for each both include a Location object and an identifier, however in cnc it is called drone_id and in openscout, client_id. Furthermore, current OpenScout is configured such that it expects client_id to be a UUID formatted string and will fail to parse and insert the data into ELK if it does not match the UUID regex. This results in objects being detected by failing to insert either because the client_id is not a UUID or because the location is not unpackable because it is not the protobuf it was expecting.

I believe the only way to solve this is to create a slightly modified version of OpenScout that will accept a cnc_pb2 instead and change the type of the client_id that gets parsed by logstash so that it is not a UUID. We could put these modifications into a branch in the OpenScout repo and publish a Docker image with the steel-eagle tag to differentiate it from the typical stable image for OpenScout.

teiszler commented 2 years ago

Fixed in commits culminating in 0431948d9534a6fe66da297def54a1a616b121c4