Sur le point de rapprochement maximal

Le point de rapprochement maximal.
Le point de rapprochement maximal.

J’ai récemment noté une fonction très utile sur l’ordinateur de navigation, à savoir les calculs de point de rapprochement maximal (ci-après CPA, venant de l’anglais « closest point of approach »). Le CPA indique la distance la plus courte qui sera atteinte entre deux bateaux. L’ordinateur de bord indique également l’heure à laquelle le CPA arrivera (ci-après TCPA).

À titre d’exemple, la figure en haut de ce texte montre deux voiliers, A et B, chacun avec une vitesse au sol de six nœuds. Le voilier A a un cap au sol de 45 degrés (vrai) alors que l’autre a un cap au sol de 270 degrés (vrai). Au moment du calcul du CPA, le voilier A se trouve à la coordonnée (1,1), chaque coordonnée étant mesurée en milles nautiques à partir de l’origine. Le voilier B se trouve à la coordonnée (9,8). Dans ce cas, le CPA est d’environ 4,7 milles nautiques et devrait se produire environ 51 minutes après le moment du calcul. En d’autres termes, 51 minutes après le calcul, les deux bateaux seront le plus près l’un de l’autre, à 4.7 mille nautiques. Le CPA est indiqué sur la Figure, ainsi que l’endroit où les deux bateaux devraient se trouver au moment où il se produira.

L’usage pratique du CPA/TCPA est l’évaluation de risque de collision. Si le CPA entre deux bateaux est nul (ou proche de zéro), il y a alors risque de collision et le skipper devrait modifier sa route actuelle pour augmenter le CPA. Comme la route et la vitesse des bateaux ont tendance à changer en fonction des conditions, le CPA et le TCPA changent souvent avec de nouvelles données (et les nouveaux calculs). Il convient donc d’examiner les informations plusieurs fois – si le temps le permet – avant d’agir.

Il convient également de noter que le CPA et le TCPA sont calculés à partir des données AIS reçues. Ils ne renseignent donc pas sur les bateaux qui n’émettent pas et ne peuvent donc pas remplacer une veille humaine.

Ceci étant dit, j’ai récemment traversé l’entrée du détroit de Gibraltar du côté de l’Atlantique. Bien que nous nous trouvions à plus de 200 mille nautiques de la côte, il y avait un nombre important de pétroliers et d’autres grands navires commerciaux. La CPA et la TCPA nous ont aidés à établir l’ordre de priorité dans lequel nous devions éviter les pétroliers quelques heures à l’avance. Ils nous ont également aidés à organiser nos appels VHF aux pétroliers qui allaient être trop proches, garantissant qu’ils nous surveilleraient. Cela ne remplace pas une veille active, mais c’est un outil puissant pour anticiper et établir des priorités.


Comment le trouve-t-on ?

J’ai exploré les mathématiques du CPA et ai découvert que sa version la plus simple revenait à trouver le minimum d’une équation quadratique. La fameuse parabole que la plupart d’entre nous ont apprise à l’école secondaire devient d’usage pratique! Il s’avère que le (carré) de la distance entre les bateaux s’exprime sous la forme d’une parabole :

D^2(t) = c + bt + at^2

Si vous avez été attentif en classe, vous vous souvenez peut-être que le minimum de cette fonction se produit à la valeur t_{cpa}=-b/2a.

Il s’avère que cette valeur est également le minimum de la distance elle-même (la CPA). Ainsi, tout ce qui est nécessaire pour trouver la paire CPA/TCPA, c’est d’identifier les valeurs “a” et “b” de la parabole, ce qui nous donne le TCPA. On peut alors trouver la CPA en utilisant l’équation de distance (cpa\equiv D(t_{cpa})). Dans la section suivante, je montre que la CPA et la TCPA satisfont aux équations :

t_{cpa}= -\frac{\Delta V_x\Delta x + \Delta V_y \Delta y}{(\Delta V_x)^2 + (\Delta V_y)^2},
cpa=\frac{\left| \Delta V_x \Delta y - \Delta V_y \Delta x\right|}{\sqrt{(\Delta V_x)^2+(\Delta V_y)^2}},

\Delta V_x est la vitesse relative (en nœuds) des deux bateaux dans la dimension est-ouest et \Delta x est la distance relative (en milles nautiques) dans la dimension est-ouest. \Delta V_y et \Delta y ont une interprétation similaire dans la dimension nord-sud.

La section suivante – qui peut très bien être omise si les mathématiques ne sont pas pour vous – détaille comment ces expressions sont trouvées.

Deux bateaux et un CPA

Pour faciliter l’exposé, j’emploie une surface plane (cartésienne) dont l’axe horizontal est la dimension est-ouest et l’axe vertical la dimension nord-sud (voir la Figure). C’est exactement comme sur une carte qui emploie une projection de Mercator et je suppose que l’échelle est suffisamment grande pour que les distorsions nord-sud induites par la projection soient constantes.

Dans cet espace, deux bateaux A et B ont chacun un relèvement au sol (\theta_A, \theta_B) et une vitesse au sol (V_A, V_B) donnés. De plus, chaque bateau a une position déterminée par un couple (y_A, x_A) et (y_B, x_B). C’est toute l’information nécessaire pour calculer la CPA et la TCPA. Ces informations sont normalement fournies par un récepteur AIS et les calculs sont mis à jour à chaque fois que de nouvelles données sont reçues.

Il est utile de décomposer la vitesse de chaque bateau en termes de dimensions x et y. Ainsi, V_{xA}\equiv V_A\cos(\theta_A) et V_{yA}\equiv V_A\sin(\theta_A) représentent respectivement la vitesse est-ouest et la vitesse nord-sud du bateau A. De même, V_{xB}\equiv V_B\cos(\theta_B) et V_{yB}\equiv V_B\sin(\theta_B) désignent la vitesse du bateau B selon les mêmes dimensions. Il convient de noter que ces vitesses sont signées, signifiant qu’une vitesse positive est dans la direction est (pour la dimension est-ouest) ou est dans la direction nord (pour la dimension nord-sud). Les vitesses négatives désignent respectivement un mouvement vers l’ouest ou vers le sud. Ceci est important car les vitesses relatives sont additives : si deux bateaux ont des caps opposés, la vitesse relative augmente.

Pour un temps écoulé t donné, la position du bateau A dans la dimension est-ouest est donnée par x_A+V_{xA}t. De même, la position du bateau A dans la dimension nord-sud est donnée par y_A+V_{yA}t. Pour le bateau B, la position au même instant t est donnée par le couple (y_B+V_{yB}t, x_B+V_{xB}t)). Ainsi, la distance euclidienne entre les deux bateaux à l’instant t est donnée par :

D(t)=\sqrt{(x_A+V_{xA}t-x_B-V_{xB}t)^2+(y_A+V_{yA}t-y_B-V_{yB}t)^2}.

Un peu de notation additionnelle pour exprimer les positions et vitesses relatives peut simplifier cette expression. Soit \Delta V_x\equiv V_{xA}-V_{xB}, \Delta V_y\equiv V_{yA}-V_{yB}, \Delta \equiv x_A - x_B et \Delta y \equiv y_A - y_B. On peut alors écrire la distance par:

D(t) = \sqrt{(\Delta x + \Delta V_xt)^2+(\Delta y + \Delta V_yt)^2}

Si l’on a envie de faire du calcul différentiel, maintenant serait le temps de prendre la dérivée de cette expression et de l’égaliser à zéro pour trouver l’équation caractérisant le TCPA. Cependant, en élevant l’expression de la distance au carré, on obtient une forme quadratique (une parabole) et le minimum de la distance sera également le minimum de cette forme quadratique. Je me sers de ce truc pour résoudre le problème en employant des mathématique du niveau du secondaire:

\begin{align*}
D^2(t) &= (\Delta x + \Delta V_xt)^2+(\Delta y + \Delta V_yt)^2\\
&= \underbrace{(\Delta x)^2+(\Delta y)^2}_{c} + \underbrace{2(\Delta V_x \Delta x + \Delta V_y \Delta y)}_{b}t+\underbrace{((\Delta V_x)^2+(\Delta V_y)^2)}_{a}t^2.
\end{align*}

Tel qu’indiqué en introduction, il s’agit d’une expression quadratique dont le minimum se trouve à t_{cpa}=-b / 2a . Ainsi, le minimum se trouve à :

t_{cpa}=-\frac{\Delta V_x \Delta x + \Delta V_y \Delta y}{(\Delta V_x)^2+(\Delta V_y)^2}

Il ne reste plus qu’à introduire cette expression dans la formule de distance originale pour trouver D(t_{cpa}). Quelques manipulations algébriques permettent alors d’obtenir l’expression présentée en introduction.

Un simple script

Supposons que nous venons de recevoir les données suivantes de notre récepteur AIS :

Nom du bateauCOG (degrés vrais)SOG (noeuds)Position (x,y)
Nous506(0,0)
A2706(5,5)
B2007(3,2)
C2020(-3,-4)

On peut alors facilement écrire un script python qui calculera la CPA et la TCPA. Je suppose ci-dessous que le tableau de données est encodé dans des listes python.

from math import pi, cos, sin
bateaux = ["Us", "A", "B", "C"]
vitesse = {'Us' : 6, 'A' : 5, 'B' : 7, 'C':20}
palier = {'Us' : 50, 'A' : 270, 'B' : 200, 'C':100}
position = {'Us' : (0,0), 'A' : (5,5), 'B' : (3,2), 'C' :(-3,-4)}

for some_boat in boats[1 :]: 
    DVx = vitesse[some_boat]*cos(cap[some_boat]*2*pi/360) - vitesse["Nous"]*cos(cap["Nous"]*2*pi/360) 
    DVy = vitesse[some_boat]*sin(cap[some_boat]*2*pi/360) - vitesse["Us"]*sin(cap["Us"]*2*pi/360) 
    Dx = position[some_boat][0] - position['Us'][0]
    Dy = position[some_boat][1] - position['Us'][1]

    tcpa = -(Dy*DVy+Dx*DVx)/(DVy**2 + DVx**2)
    cpa = abs(Dx*DVy - Dy*DVx) / pow(DVy**2 + DVx**2, 0.5)
    print("Le point le plus proche du bateau "+ some_boat +" est : " +str(cpa) + " miles nautiques.")
    print("Le CPA aura lieu dans : " +str(tcpa) + " heures.")

Un tel programme imprimera ensuite :

Le point le plus proche du bateau A est : 2.7747959776445734 nautical miles.
Le CPA aura lieu dans : 0.6288639179481108 heures.
Le point le plus proche du bateau B est : 0.008127181074962114 nautical miles.
Le CPA aura lieu dans : 0.28707224836596984 heures.
Le point le plus proche du bateau C est : 4.445583406151827 nautical miles.
Le CPA aura lieu dans : 0.13633746219194873 heures.

Il serait évidemment nécessaire de présenter ces données de manière plus attrayante, mais l’essentiel de l’information est là. Il est intéressant de noter que le CPA du bateau B est peut-être trop proche à notre goût, à 0,008 milles nautiques (14 mètres ou 49 pieds) après 30 minutes. Une correction de cap pourrait être justifiée.

Est-ce important?

Avant l’ordinateur, c’était au navigateur d’évaluer les risques de collision. Grâce aux ordinateurs de bord, plus personne n’a à les calculer à la main. Peut-être que si je devais analyser des données brutes, je pourrais, à un moment donné, programmer de telles fonctions dans un logiciel statistique, mais c’est le seul cas où je peux penser à utiliser ces formules moi-même.

Cela dit, j’aime comprendre comment fonctionnent les outils que j’utilise. C’est probablement ainsi qu’un traceur de cartes calcule un CPA et un TCPA à chaque mise à jour des données AIS (ici pour une suggestion plus avancée). La compréhension de ces informations permet de savoir comment le traceur de cartes fonctionne et ce que l’on peut en attendre.

C’est autrement un apprentissage utile. Il m’a définitivement aidé à tuer le temps lors de deux veilles de nuit (sans incident). De toute évidence, ces veilles n’étaient pas celles proche du détroit de Gibraltar.