kopia lustrzana https://github.com/projecthorus/chasemapper
Porównaj commity
4 Commity
Autor | SHA1 | Data |
---|---|---|
Mark Jessop | 583d141f7e | |
Mark Jessop | e6e14c38de | |
Mark Jessop | 6e3caf005a | |
Mark Jessop | 48e8eae239 |
|
@ -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).
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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": {
|
||||
|
|
|
@ -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']
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue