Source code for ADCS.satellite_factory.sensors.create_cubesat_GPS
__all__ = ['create_pumpkinspace_GPSRM1']
import numpy as np
from typing import Optional, List
from ADCS.satellite_hardware.sensors import GPS
from ADCS.satellite_hardware.errors import Noise, Bias
from ADCS.helpers.math_helpers import random_n_unit_vec
[docs]
def create_pumpkinspace_GPSRM1(bias: Bias | None = None, noise: Noise | None = None, estimate_bias: bool = False) -> List[GPS]:
# https://www.pumpkinspace.com/store/p58/GNSS_Receiver_Module_%28GPSRM_1%29_Kit.html
# As used on BeaverCube 1 & 2
if bias is None:
e_bias_position = random_n_unit_vec(3)*np.random.uniform(1, 10)
e_bias_velocity = random_n_unit_vec(3)*np.random.uniform(0.1, 1)
e_bias = np.stack([e_bias_position, e_bias_velocity])
std_bias_position = 0.01*np.ones(3)
std_bias_velocity = 0.0001*np.ones(3)
std_bias = np.stack([std_bias_position, std_bias_velocity])
bias = Bias(bias=e_bias, std_bias=std_bias)
if noise is None:
e_noise = np.zeros(6)
std_noise_position = 0.1*np.ones(3)
std_noise_velocity = 0.1*np.ones(3)
std_noise = np.stack([std_noise_position, std_noise_velocity])
noise = Noise(noise=e_noise, std_noise=std_noise)
return [GPS(bias=bias, noise=noise, estimate_bias=estimate_bias)]