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