Projet : Navigation G.P.S. 1 Global Positionning System
Transcription
Projet : Navigation G.P.S. 1 Global Positionning System
Université Pierre & Marie Curie LM335 Calcul Numérique Matricielle B. Aymard Licence 3 Année 2013–14 Projet : Navigation G.P.S. Objectif. L’objectif de ce projet est de programmer une méthode de calcul permettant de déterminer la position d’un récepteur G.P.S. Pour en savoir plus, on pourra consulter la référence suivante : S.Bancroft, an algebraic solution of the GPS equations, IEEE Transactions on Aerospace and Electronic Systems, 21, 1985, 56-59. Le lecteur intéressé pourra aussi consulter l’excellente page Wikipedia concernant le GPS. Consigne. Ce travail peut être réalisé en binôme si vous le souhaitez. Vous aurez à présenter votre travail à l’oral, 10 minutes si vous êtes seul, 15 minutes si vous êtes en binôme. Un seul fichier Scilab (extension .sci ou .sce) doit être rendu, au plus tard le jour de la présentation. Tout document rendu doit porter en haut de page nom(s) et prénom(s) de (ou des) étudiant(s) et être nommé NOMPrenomProjet (par exemple DOEJohn-GPS.sci et si binôme DOEJohn-DUPUISJack-GPS.sci). Votre code doit être commenté. La qualité et la clarté de votre présentation entreront pour une part importante dans l’appréciation de votre travail. 1 Global Positionning System Principe du GPS Le GPS est un système d’aide à la navigation permettant de déterminer précisément sa position. Pour cela, ce système utilise plusieurs satellites en orbite qui émettent en permanence leur position dans l’espace temps. A l’aide de ces informations, on peut retrouver la position du récepteur par triangulation. Triangulation On se place dans un repère cartésien dont l’origine est au centre de la Terre. Toutes les quantités sont en unités du système international (USI). On cherche à déterminer la position (x, y, z), d’un recepteur, connaissant les positions de plusieurs satellites s1 , ..., sNs , qui émettent un quadruplet : (xi , yi , zi , ti ), avec ti le temps d’émission. Connaissant l’heure d’émission et la vitesse de propagation des ondes électromagnétiques, on peut déterminer la distance ρi entre le satellite et le récepteur. En pratique, il faut que Ns ≥ 4. Méthode de Bancroft La distance émetteur récepteur peut se calculer en utilisant la définition de la norme 2 dans l’espace Euclidien p ρi = (x − xi )2 + (y − yi )2 + (z − zi )2 + c∆t. (1) avec ∆t le décallage d’horloge (le récepteur ne disposant pas d’horloge interne assez précise), et c la célérité de la lumière dans le vide. En passant au carré, on obtient, pour tout i, l’égalité (x − xi )2 + (y − yi )2 + (z − zi )2 = (ρi − c∆t)2 . 1 On peut alors développer l’expression, pour obtenir (x2 + y 2 + z 2 − (c∆t)2 ) − 2(xxi + yyi + zzi − (c∆t)) + (x2i + yi2 + zi2 − ρ2i ) = 0 ou encore, en isolant les termes d’ordre 2 au second membre 1 (xxi + yyi + zzi − c∆tρi ) = ((x2 + y 2 + z 2 − (c∆t)2 ) + (x2i + yi2 + zi2 − ρ2i )) 2 En rassemblant toutes les équations on obtient le système (xx1 + yy1 + zz1 − c∆tρ1 ) = ... (xxi + yyi + zzi − c∆tρi ) = ... (xxNs + yyNs + zzNs − c∆tρNs ) = On peut écrire ce x1 ... xi ... xNs | 1 2 ((x + y 2 + z 2 − (c∆t)2 ) + (x21 + y12 + z12 − ρ21 )) 2 1 2 ((x + y 2 + z 2 − (c∆t)2 ) + (x2i + yi2 + zi2 − ρ2i )) 2 1 2 2 2 ((x + y 2 + z 2 − (c∆t)2 ) + (x2Ns + yN + zN − ρ2Ns )) s s 2 système sous forme matricielle ( 12 (x21 + y12 + z12 − ρ21 )) y1 z1 −ρ1 1 x ... ... ... ... ... y = ( 1 (x2 + y 2 + z 2 − ρ2 )) + Λ 1 yi zi −ρi i i i i 2 z ... ... ... ... ... c∆t 1 2 2 2 2 ( (x + yNs + zNs − ρNs )) yNs zNs −ρNs | {z } 1 {z } | 2 Ns {z } u B a+Λe avec Λ = 12 (x2 + y 2 + z 2 − (c∆t)2 ). On est donc amené à résoudre le système Bu = (a + Λe) Résolution par la méthode des moindres carrés On a vu que notre problème se ramenait à résoudre un système. Seulement, l’inconnue apparaît aussi au second membre. On fait l’hypothèse que la quantité Λ est une constante. On peut alors résoudre le système précédent, qui devient linéaire. Le système proposé est surdéterminé en général (sauf si Ns = 4). On résoud alors le pseudo système : B t Bu = B t (a + Λe) Propriété : u est pseudo solution si et seulement si Bu minimise la distance au vecteur (a + Λe). Autrement dit, une pseudo solution est une solution au sens des moindres carrés. Méthode de résolution Q.R. Posons ( A = BtB b = B t (a + Λe) Ainsi, A est symétrique positive. Nous supposerons de plus A inversible, donc A est symétrique définie positive. On va résoudre ce problème en utilisant une décomposition QR de la matrice A. Principe de QR : on décompose A = QR, avec Q orthogonale (i.e. Qt Q = I, par exemple les matrices de rotation, ou les matrices de permutation), et R triangulaire supérieure. Ensuite on peut résoudre facilement le système, car il est équivalent au système Ru = Qt b et R est triangulaire supérieure. 2 Décomposition QR : méthode de Givens On utilise des matrices de rotation de Givens pour annuler des termes sous la diagonale. En 2d par exemple, on peut écrire cos(θ) sin(θ) x r = −sin(θ) cos(θ) y 0 Ceci est vrai si et seulement si ( p r = x2 + y 2 θ = arctg( xy ) On peut généraliser cette méthode au cas de matrices de tailles n. Une telle matrice s’écrit 1 . . . . . . 1 . . . . . . cos(θ) sin(θ) . . G= . . −sin(θ) cos(θ) . . . . . . 1 . . . . . . 1 C’est une matrice identité dans laquelle il y a une matrice de rotation. Si la sous matrice de rotation a son élément inférieur droite en (i, i), alors le produit GR l’élément R(i, j) si θ est correctement choisi. Le principe de la décomposition QR par la méthode de Givens est le suivant : chaque produit par une matrice de Givens annule un terme sous la diagonale. Si l’on note ΠGi le produit des matrices de rotations de Givens, on trouve alors (ΠGi )A = R. On obtient donc que Qt = (ΠGi ). On remarque alors que dans notre étude, on n’a pas besoin de Q, mais plutot de sa transposée. Données : Matrice carrée A de taille n Résultats : Matrices Qt et R Initialiser Qt = In Initialiser R = A Pour j de 1 à n − 1 pour i de n à j + 1 Calculer la matrice de rotation de Givens G qui annule l’élément R(i, j) Mise a jour de Qt : Qt = GQt Mise a jour de R : R = GR Algorithm 1: Décomposition QR Données : Matrices Qt et R (décomposition QR de A), second membre b Résultats : Solution u du système Au = b bb = Qt b bb(n) u(n) = R(n,n) Pour i de n − 1 à 1 P 1 u(i) = R(i,i) (bb(i) − nk=i+1 R(i, k)u(k)) Algorithm 2: Résolution par décomposition QR Equation du second degré sur Λ Reste à déterminer Λ. Pour cela, on revient à la définition Λ= 1 < u, u > 2 3 en notant < v, w >= v1 w1 + v2 w2 + v3 w3 − v4 w4 , où vi est la i-ème composante du vecteur i. On remarque que u = (B t B)−1 B t (a + Λe). En injectant cette expression dans l’égalité précédente, on obtient l’équation du second degré c1 Λ2 + c2 Λ + c3 = 0 avec t −1 t t −1 t c1 =< (B B) B e, (B B) B e > c2 = 2(< (B t B)−1 B t a, (B t B)−1 B t e > −1) c3 =< (B t B)−1 B t a, (B t B)−1 B t a > Pour trouver les coefficients c1 , c2 et c3 , on réutilise la décomposition QR de la matrice A. On pose ( V1 = (B t B)−1 B t e V2 = (B t B)−1 B t a Ces vecteurs sont solution des systèmes ( B t BV1 = B t e B t BV2 = B t a que l’on peut résoudre par la méthode QR. On peut alors calculuer c1 , c2 et c3 , et ainsi résoudre l’équation polynomiale d’ordre 2. 2 Questions a) Ecrire une fonction ScilabDecompositionQR qui prend en argument une matrice A, et renvoie deux matrices Q et R, décomposition QR de cette matrice (voir Algorithme 1). b) Ecrire une fonction ResolutionQR, qui prend en argument deux matrices Q et R (issues de la décomposition QR d’une matrice A), et un vecteur b, et renvoie la solution u du système (voir Algorithme 2). c) Ecrire une fonction CasTest, qui résoud le système Au = b, avec A = In et b = (1, ..., 1)t avec ResolutionQR (cela permet de vérifier la fonction ResolutionQR). d) Ecrire une fonction PositionGPS qui prend en argument une matrice B où sont rangés par ligne les signaux émis et renvoie deux vecteurs positions possibles (correspondant aux deux valeurs de Λ). Une solution, non optimale, est de calculer d’abord les deux valeurs de Λ, puis de résoudre deux systèmes, chacun correspondant à une valeur de Λ. Il suffit pour cela de calculer une seule fois la décomposition QR de la matrice du système. e) Tester la fonction PositionGPS avec la matrice B suivante : 18290.25 5066.8049 7827.8114 10163.123 3979.8452 B= −6462.4203 −2403.5452 1830.3693 −7838.783 19137.94 −8031.6568 979.40428 −20000 −10855.279 16015.318 −20000 18064.268 −3522.4406 −20000 14.120956 17225.293 −20000 6766.478 18394.989 −20000 8924.7663 16690.886 −20000 −16056.125 11680.06 −20000 15442.865 12576.473 −20000 9279.5614 15888.462 −20000 −4873.7418 3160.0482 −20000 Où se trouve le récepteur ? 4