Ejemplo n.º 1
0
def reception(coordSat, Pexacte, indvisi, nbvisi, t):
    """
    Reception du signal
    function [TGps,TRecep,X,Y,Z] = mesure

    Parameters
    ----------
    coordSat : array_like
        Coordonnées des satellites
    Pexacte : array_like
        Position exacte de l'utilisateur
    indvisi : array_like
        Indices des satellites visibles
    nbvisi : int
        Nombre de satellites visibles (len(indvisi)...)
    t : int

    Return
    ------
    TGps : vecteur colonne de taille le nombre de satellites visibles
        indiquant le temps GPS à l'émission du signal
    TRecep : vecteur colonne de taille le nombre de satellites visibles
        indiquant le temps Recepteur à la réception du signal
    X : vecteur colonne de taille le nombre de satellites visibles
        indiquant la coordonnée X des satellites visibles
    Y : vecteur colonne de taille le nombre de satellites visibles
        indiquant la coordonnée Y des satellites visibles
    Z : vecteur colonne de taille le nombre de satellites visibles
        indiquant la coordonnée Z des satellites visibles
    """
    from params import c, sigma

    # Distance reelle ut-sat (sans erreur de mesure, sans biais d'horloge)
    sat = coordSat[:, indvisi]

    TGps = t * np.ones((nbvisi, 1))
    TRecep = np.zeros((nbvisi, 1))  # init
    for i in range(nbvisi):
        D = sat[:, i:i+1] - Pexacte[:3]
        N = np.linalg.norm(D, 2)
        TRecep[i] = TGps[i] + N / c + Pexacte[3]

    EPS = np.zeros((nbvisi, 1))
    EPS = algos.normrnd(0, sigma, nbvisi, 1)
    X = np.array([coordSat[0, indvisi]]).T + EPS
    EPS = algos.normrnd(0, sigma, nbvisi, 1)
    Y = np.array([coordSat[1, indvisi]]).T + EPS
    EPS = algos.normrnd(0, sigma, nbvisi, 1)
    Z = np.array([coordSat[2, indvisi]]).T + EPS

    return TGps, TRecep, X, Y, Z
Ejemplo n.º 2
0
H_UT = H_UT_DEP + IT * PAS_H

# vars locales
DUT = H_UT + Re
r_ut = DUT * np.cos(LAT_UT)

Pexacte = np.zeros((4, 1))
Pexacte[0] = r_ut * np.cos(LON_UT)  # X
Pexacte[1] = r_ut * np.sin(LON_UT)  # Y
Pexacte[2] = DUT * np.sin(LAT_UT)   # Z
Pexacte[3] = BH
### XXX XXX

## init_pos
# Tirage d'un point initial proche de la solution
P0 = Pexacte
EPS = np.zeros((4, 1))
EPS[:3] = algos.normrnd(0, 200000, 3, 1)  # fct
P0 = P0 + EPS
P0[3] = 0
LAT_INI = np.arcsin(P0[2] / np.linalg.norm(P0[:3], 2))
LON_INI = np.arccos(P0[0] / np.linalg.norm(P0[:2], 2))
if P0[1] < 0:
    LON_INI = 2 * np.pi - LON_INI

# XXX
POSINIT = P0
LON_SOL = []
LAT_SOL = []
PSOL = []