Skip to content

Commit

Permalink
Merge pull request #995 from anarkiwi/defaults
Browse files Browse the repository at this point in the history
better defaults for testing, inference reporting should be non-blocking.
  • Loading branch information
anarkiwi authored Nov 27, 2023
2 parents 0e7f026 + ede3784 commit 91b900f
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 33 deletions.
63 changes: 49 additions & 14 deletions gamutrf/grinference2mqtt.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import queue
import sys
import threading
import time
import numpy as np

Expand All @@ -24,6 +26,7 @@ def __init__(
self,
name,
mqtt_server,
compass,
gps_server,
use_external_gps,
use_external_heading,
Expand All @@ -32,18 +35,23 @@ def __init__(
log_path,
):
self.yaml_buffer = ""
self.start_time = time.time()
self.mqtt_reporter = MQTTReporter(
name=name,
mqtt_server=mqtt_server,
gps_server=gps_server,
compass=True,
use_external_gps=use_external_gps,
use_external_heading=use_external_heading,
external_gps_server=external_gps_server,
external_gps_server_port=external_gps_server_port,
self.mqtt_reporter = None
self.q = queue.Queue()
self.mqtt_reporter_thread = threading.Thread(
target=self.reporter_thread,
args=(
name,
mqtt_server,
gps_server,
compass,
use_external_gps,
use_external_heading,
external_gps_server,
external_gps_server_port,
log_path,
),
)
self.log_path = log_path
self.mqtt_reporter_thread.start()

gr.sync_block.__init__(
self,
Expand All @@ -52,6 +60,35 @@ def __init__(
out_sig=None,
)

def reporter_thread(
self,
name,
mqtt_server,
gps_server,
compass,
use_external_gps,
use_external_heading,
external_gps_server,
external_gps_server_port,
log_path,
):
start_time = time.time()
mqtt_reporter = MQTTReporter(
name=name,
mqtt_server=mqtt_server,
gps_server=gps_server,
compass=compass,
use_external_gps=use_external_gps,
use_external_heading=use_external_heading,
external_gps_server=external_gps_server,
external_gps_server_port=external_gps_server_port,
)
while True:
item = self.q.get()
mqtt_reporter.publish("gamutrf/inference", item)
mqtt_reporter.log(log_path, "inference", start_time, item)
self.q.task_done()

def work(self, input_items, output_items):
n = 0
for input_item in input_items:
Expand All @@ -69,6 +106,4 @@ def work(self, input_items, output_items):
return n

def process_item(self, item):
self.mqtt_reporter.publish("gamutrf/inference", item)
self.mqtt_reporter.log(self.log_path, "inference", self.start_time, item)
return
self.q.put(item)
34 changes: 22 additions & 12 deletions gamutrf/grscan.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ class grscan(gr.top_block):
def __init__(
self,
bucket_range=1.0,
compass=False,
db_clamp_ceil=50,
db_clamp_floor=-200,
dc_block_len=0,
Expand Down Expand Up @@ -187,7 +188,6 @@ def __init__(
logging.info("serving FFT on %s", zmq_addr)
self.fft_blocks.append((zeromq.pub_sink(1, 1, zmq_addr, 100, False, 65536, "")))

self.inference_blocks = [blocks.null_sink(gr.sizeof_float * nfft)]
if inference_output_dir:
x = 640
y = 640
Expand All @@ -210,18 +210,28 @@ def __init__(
model_server=inference_model_server,
model_name=inference_model_name,
confidence=inference_min_confidence,
),
inference2mqtt(
"inference2mqtt",
mqtt_server,
gps_server,
use_external_gps,
use_external_heading,
external_gps_server,
external_gps_server_port,
inference_output_dir,
),
)
]
if mqtt_server:
self.inference_blocks.extend(
[
inference2mqtt(
"inference2mqtt",
mqtt_server,
compass,
gps_server,
use_external_gps,
use_external_heading,
external_gps_server,
external_gps_server_port,
inference_output_dir,
)
]
)
else:
self.inference_blocks.extend([blocks.null_sink(1)])
if not self.inference_blocks:
self.inference_blocks = [blocks.null_sink(gr.sizeof_float * nfft)]

if pretune:
self.msg_connect((self.retune_pre_fft, "tune"), (self.sources[0], cmd_port))
Expand Down
13 changes: 10 additions & 3 deletions gamutrf/scan.py
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,13 @@ def argument_parser():
action=BooleanOptionalAction,
help="send tag:now command when retuning",
)
parser.add_argument(
"--compass",
dest="compass",
default=False,
action=BooleanOptionalAction,
help="use compass",
)
parser.add_argument(
"--use_external_gps",
dest="use_external_gps",
Expand All @@ -337,7 +344,7 @@ def argument_parser():
parser.add_argument(
"--external_gps_server",
dest="external_gps_server",
default="127.0.0.1",
default="",
type=str,
help="server to query for external GPS data",
)
Expand All @@ -351,13 +358,13 @@ def argument_parser():
parser.add_argument(
"--mqtt_server",
help="MQTT server to report RSSI",
default="127.0.0.1",
default="mqtt",
type=str,
)
parser.add_argument(
"--gps_server",
help="GPS Server to get lat,long, and heading",
default="127.0.0.1",
default="",
type=str,
)
parser.add_argument(
Expand Down
10 changes: 6 additions & 4 deletions orchestrator.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,14 @@ services:
- --igain=40
- '--freq-start=${FREQ_START}'
- '--freq-end=${FREQ_END}'
- --samp-rate=8.192e6
- --nfft=256
- --tune-dwell-ms=100
- --tune-step-fft=0
- --samp-rate=20.48e6
- --nfft=1024
- --tune-dwell-ms=0
- --tune-step-fft=512
- --db_clamp_floor=-150
- --fft_batch_size=256
- --mqtt_server=mqtt
- --no-compass
- --use_external_gps
- --use_external_heading
- --inference_min_confidence=0.8
Expand Down

0 comments on commit 91b900f

Please sign in to comment.