mirror of
https://git.intern.spaceteamaachen.de/ALPAKA/SPATZ.git
synced 2025-09-29 05:17:33 +00:00
Unified groundstation offset
TX Gain and Pathloss sensors now recieve the groundstation offset the same way. Allso added constants file for ease of use
This commit is contained in:
6
spatz/sensors/antenna/constants.py
Normal file
6
spatz/sensors/antenna/constants.py
Normal file
@@ -0,0 +1,6 @@
|
||||
import numpy as np
|
||||
STAHR_GS_OFFSET = np.array([-1810,-1500,100]) #Radar hill is approx 1.81km west. 1.5km south, 100higher
|
||||
|
||||
STAHR_LORA_FREQ = 2.45e9
|
||||
STAHR_BEACON_FREQ = 144.8e6
|
||||
STAHR_TELEMEGA_FREQ = 433e6
|
@@ -125,9 +125,10 @@ Returns the gain in dBi per timestep.
|
||||
|
||||
class AntennaTxGain(Sensor):
|
||||
|
||||
def __init__(self, dataset: Dataset, logger: Logger, transforms: List[Transform] = [], gain_pattern_path = "data/gain_pattern/farfield.txt", step_size=1):
|
||||
def __init__(self, dataset: Dataset, logger: Logger, transforms: List[Transform] = [], gain_pattern_path = "data/gain_pattern/farfield.txt", step_size=1, rx_antenna_offset: ArrayLike = np.array([0,0,0])):
|
||||
super().__init__(dataset, logger, transforms)
|
||||
self._pattern = GainPattern(gain_pattern_path,step_size)
|
||||
self._rx_antenna_offset = rx_antenna_offset
|
||||
|
||||
def _get_data(self) -> ArrayLike | float:
|
||||
magic_matrix = np.array([
|
||||
@@ -139,8 +140,7 @@ class AntennaTxGain(Sensor):
|
||||
# Get current position of rocket in FL Frame (Launcher Frame).
|
||||
pos_fl = self._dataset.fetch_values(['x', 'y', 'z']) #X,Y,Z is in FL (Launcher frame) -> Z is up, X is east
|
||||
|
||||
gs_offset_fl = np.array([-1810,-1500,100]) #Radar hill is approx 1.81km west. 1.5km south, 100higher
|
||||
rocket_to_gs_fl = pos_fl-gs_offset_fl
|
||||
rocket_to_gs_fl = pos_fl-self._rx_antenna_offset
|
||||
rocket_to_gs_fl_n = rocket_to_gs_fl/np.linalg.norm(rocket_to_gs_fl)
|
||||
|
||||
# Rocket in body frame is simply [1,0,0]^T by definition
|
||||
@@ -163,15 +163,15 @@ class AntennaTxGain(Sensor):
|
||||
#return phi
|
||||
|
||||
#Get Theta cut for this angle
|
||||
angles, gains = self._pattern.get_theta_cut(np.round(theta))
|
||||
#angles, gains = self._pattern.get_theta_cut(np.round(theta))
|
||||
|
||||
min_gain = np.min(gains)
|
||||
#min_gain = np.min(gains)
|
||||
#min_ix = np.argmin(gains)
|
||||
#min_angle = angles[min_ix]
|
||||
#self._log("works_case_angle",min_angle)
|
||||
|
||||
|
||||
#min_gain = self._pattern.get_gain(45,theta)
|
||||
min_gain = self._pattern.get_gain(45,theta)
|
||||
|
||||
# Fetch gain in this direction
|
||||
return min_gain
|
||||
|
Reference in New Issue
Block a user