Porównaj commity

...

4 Commity

Autor SHA1 Wiadomość Data
Mark Jessop 583d141f7e Add ascent rate averaging config setting, default this to 10 points 2024-05-05 17:05:02 +09:30
Mark Jessop e6e14c38de Fix stupid replay bug 2024-05-05 15:44:45 +09:30
Mark Jessop 6e3caf005a Add SV information to payload info table 2024-05-03 10:15:35 +09:30
Mark Jessop 48e8eae239 add openblas to dependencies 2023-11-02 19:53:00 +10:30
7 zmienionych plików z 32 dodań i 4 usunięć

Wyświetl plik

@ -27,7 +27,7 @@ If you are using Docker, you can skip this section.
On a Raspbian/Ubuntu/Debian system, you can get most of the required dependencies using:
```
$ sudo apt-get install git python3-numpy python3-requests python3-serial python3-dateutil python3-flask python3-pip
$ sudo apt-get install git python3-numpy python3-requests python3-serial python3-dateutil python3-flask python3-pip libatlas3-base libgfortran5 libopenblas-dev
```
On other OSes the required packages should be named something similar.
@ -194,4 +194,4 @@ My [Kraken-SDR fork](https://github.com/darksidelemm/krakensdr_doa) will emit re
Note that the bearing display (in particular the TDOA data polar plot) does put a fairly big strain on some slower devices. Currently the polar plot is generated in a fairly naive way, and definitely has room for improvement.
I make no promises as to the usefulness and/or performance of this feature in chasemapper - it's essentially a re-implementation of a radio-direction finding mapping system developed by fellow Amateur Radio Experimenters Group members a very long time ago. I've used it in a few local amateur radio direction finding competitions have found it to be useful. It's also important to note that attempting to direction-find radiosonde/high-altitude balloon payloads which are located at high relative elevations (>40 degrees or so) is likely to lead to very inaccurate results due to coning angle limitations (where a bearing cannot be resolved due to insufficient phase-delta between receive antennae).
I make no promises as to the usefulness and/or performance of this feature in chasemapper - it's essentially a re-implementation of a radio-direction finding mapping system developed by fellow Amateur Radio Experimenters Group members a very long time ago. I've used it in a few local amateur radio direction finding competitions have found it to be useful. It's also important to note that attempting to direction-find radiosonde/high-altitude balloon payloads which are located at high relative elevations (>40 degrees or so) is likely to lead to very inaccurate results due to coning angle limitations (where a bearing cannot be resolved due to insufficient phase-delta between receive antennae).

Wyświetl plik

@ -176,6 +176,11 @@ def parse_config_file(filename):
logging.info("Missing turn rate gate setting, using default (4m/s)")
chase_config["turn_rate_threshold"] = 4.0
try:
chase_config["ascent_rate_averaging"] = config.getint("predictor", "ascent_rate_averaging")
except:
logging.info("Missing ascent_rate_averaging setting, using default (10)")
chase_config["ascent_rate_averaging"] = 10
# Telemetry Source Profiles

Wyświetl plik

@ -152,7 +152,18 @@ class GenericTrack(object):
"Zero time-step encountered in ascent rate calculation - are multiple receivers reporting telemetry simultaneously?"
)
continue
# _mean2_time_delta = (
# self.track_history[-1][0] - self.track_history[-1*_num_samples][0]
# ).total_seconds()
# _mean2_altitude_delta = (
# self.track_history[-1][3] - self.track_history[-1*_num_samples][3]
# )
# _asc_rate2 = _mean2_altitude_delta / _mean2_time_delta
#print(f"asc_rates: {_asc_rates}, Mean: {np.mean(_asc_rates)}")
return np.mean(_asc_rates)
def calculate_heading(self):

Wyświetl plik

@ -134,6 +134,11 @@ predictor_enabled = True
default_burst = 30000
default_descent_rate = 5.0
# How many data points to average the payload's ascent rate over.
# Note that this is data points, not *seconds*, so you may need to tune this for your payload's
# position update rate.
# Longer averaging means a smoother ascent rate. ~10 seems ok for a typical Horus Binary payload.
ascent_rate_averaging = 10
# Offline Predictions
# Use of the offline predictor requires installing the CUSF Predictor Python Wrapper from here:

Wyświetl plik

@ -236,7 +236,7 @@ def handle_new_payload_position(data, log_position=True):
if _callsign not in current_payloads:
# New callsign! Create entries in data stores.
current_payload_tracks[_callsign] = GenericTrack()
current_payload_tracks[_callsign] = GenericTrack(ascent_averaging=chasemapper_config["ascent_rate_averaging"])
current_payloads[_callsign] = {
"telem": {

Wyświetl plik

@ -135,7 +135,7 @@ def send_balloon_telemetry(json_data, udp_port=55672):
'longitude' : json_data['lon'],
'altitude': json_data['alt'],
'callsign': json_data['callsign'],
'time': parse(json_data['time']).strftime("%H:%H:%S"),
'time': parse(json_data['time']).strftime("%H:%M:%S"),
'comment': "Log Playback",
'replay_time': json_data['log_time']
}

Wyświetl plik

@ -184,6 +184,7 @@ function initTables(){
{title:"Longitude", field:"lon", headerSort:false},
{title:"Alt (m)", field:"alt", headerSort:false},
{title:"V_rate (m/s)", field:"vel_v", headerSort:false},
{title:"SVs", field:'sats', headerSort:false, visible:false},
{title:"SNR", field:'snr', headerSort:false, visible:false},
{title:"Aux", field:'aux', headerSort:false, visible:false}
],
@ -243,6 +244,7 @@ function initTablesImperial(){
{title:"Longitude", field:"lon", headerSort:false},
{title:"Alt (ft)", field:"alt", headerSort:false},
{title:"V_rate (ft/min)", field:"vel_v", headerSort:false},
{title:"SVs", field:'sats', headerSort:false, visible:false},
{title:"SNR", field:'snr', headerSort:false, visible:false},
{title:"Aux", field:'aux', headerSort:false, visible:false}
],
@ -323,6 +325,11 @@ function updateTelemetryTable(){
}
}
if (balloon_call_data.hasOwnProperty('sats')){
balloon_call_data.sats = balloon_call_data.sats.toFixed(0);
$("#telem_table").tabulator("showColumn", "sats");
}
// Update table
telem_data.push(balloon_call_data);
}