PROCEDE ET SYSTEME DΕVITEMENT DE COLLISION POUR ENGINS
MOBILES
La présente invention concerne de façon générale les dispositifs d'évitement de collision, et plus précisément un procédé et un système d'évitement de collision permettant d'éviter les collisions entre au moins deux engins mobiles.
Les engins de chantier tels que les grues ou les engins de levage sont bien connus dans la technique. Dans un chantier tel qu'un chantier de bâtiment, ces engins sont mis en oeuvre pour permettre le transport, d'un point à un autre du chantier, de matières premières telles que du béton ou d'éléments de construction. Dans un site tel qu'un quai de port, des grues de chargement sont utilisées pour charger et décharger du fret sur et depuis des navires, et d'une manière générale, des engins mobiles sont utilisés pour déplacer des charges sur des sites industriels.
Tous ces types d'engins comportent habituellement plusieurs degrés de liberté qui sont combinés entre eux pour permettre l'accès à telle ou telle partie du site. Habituellement, un certain nombre d'engins est nécessaire pour permettre l'accès à l'intégralité du site. Toutefois, pour permettre le transport sur tout le chantier, les zones accessibles par les différents engins doivent présenter des parties communes. Cela présente l'inconvénient que dans ces parties communes, les charges transportées par les engins et/ou certains éléments des engins peuvent entrer en collision les uns avec les autres.
En conséquence, des dispositifs de sécurité sont utilisés pour essayer d'éviter dans la mesure du possible de telles collisions.
Toutefois, les dispositifs de la technique antérieure se bornent à l'heure actuelle à effectuer des détections de proximité à l'aide de capteurs tels que des dispositifs de détection de proximité par ultrasons ou autres, ou en échangeant des informations permettant de détecter un risque de collision sur la base des positions statiques des engins ou de leur charge.
Ces dispositifs présentent divers inconvénients parmi lesquels le coût des capteurs de proximité, qui doivent équiper tous les éléments en mouvement. De même, ces divers capteurs doivent être reliés par des câbles à une centrale d'acquisition, ce qui est coûteux en main d'œuvre. En outre, la fiabilité d'ensemble décroît à mesure que le nombre de câbles et de connecteurs augmente.
Par ailleurs, le fait de détecter le risque de collision sur la seule base des positions statiques présente divers inconvénients. Par exemple, si deux engins sont en train de s'écarter l'un de l'autre après s'être trop rapprochés, la plupart des dispositifs actuels persisteront à générer une alarme, bien qu'en fait, les dispositifs soient en
train de s'écarter. Cela a pour conséquence de faire fonctionner lesdits engins dans un mode de fonctionnement dégradé dit "de sécurité", ce qui ralentit leur fonctionnement. En outre, cela aura aussi pour conséquence qu'une alarme sera sans objet sensiblement pendant une moitié de sa durée, avec les nuisances, par exemple sonores, que cela entraîne.
Egalement, la majorité des dispositifs fonctionnant sur la base de positions statiques auront tendance à générer inutilement une alarme sur la base de marges de sécurité statiques ne prenant pas en compte les spécificités dynamiques des divers éléments susceptibles d'entrer en collision.
La répétition d'alarmes intempestives présente l'inconvénient d'une accoutumance rapide des opérateurs à ces alarmes, avec le risque qu'une alarme réelle, considérée à tort comme intempestive par un opérateur, soit ignorée par ce dernier, avec les conséquences que l'on peut imaginer.
Par ailleurs, les alarmes intempestives présentent l'inconvénient de distraire inutilement l'attention des conducteurs des engins, avec le risque qu'un autre problème, bien réel, reste inaperçu, du fait que l'attention du ou des conducteurs concernés est focalisée sur un problème inexistant.
En conséquence, il existe un besoin pour un procédé et un système d'évitement de collision qui permettent d'évaluer plus finement le risque réel d'une collision, en prenant en compte les sens de déplacement et les distances d'arrêt correspondantes des différents éléments des engins de levage, avant de déclencher une alarme de risque de collision.
Plus précisément, la présente invention a pour objet un procédé d'évitement de collision entre au moins deux entités physiques, lesdites au moins deux entités physiques étant constituées d'éléments, lesdits éléments étant définis par des points, lesdits points pouvant être connus sous forme numérique, lesdits points étant susceptibles de se déplacer simultanément suivant au moins un degré de liberté, chacun desdits déplacements simultanés requérant une variation minimale dudit degré de liberté correspondant avant l'arrêt, un système de type informatique étant utilisé pour stocker et traiter lesdits points sous forme numérique, ledit au moins un système de type informatique permettant de stocker et de traiter lesdits points sous forme numérique, et qui a pour caractéristique le fait qu'un modèle numérique déformable est défini à l'intérieur dudit système de type informatique pour chacun desdits éléments desdites entités physiques, ledit modèle déformable contenant l'ensemble des positions que les points dudit élément associé sont susceptibles de prendre lors d'une combinaison quelconque de déplacements simultanés suivant
lesdits au moins un degrés de liberté lors desdites variations minimales avant l'arrêt, ledit système de type informatique calculant, pour au moins une entité, une distance entre chacun desdits modèles déformables des éléments de ladite au moins une entité et chacun desdits modèles déformables des éléments de la même entité ou d'une autre entité, ledit système de type informatique détectant un risque de collision lorsqu'au moins une desdites distances est inférieure à une distance de sécurité prédéfinie.
Dans le procédé de l'invention, lesdites entités physiques peuvent être, par exemple, des engins susceptibles d'être utilisés dans un atelier, sur un chantier de construction, de travaux publics ou de manutention, ou une zone portuaire.
De préférence, chacune desdites entités physiques comportera un système de type informatique, ledit au moins un système de type informatique comportera habituellement au moins un dispositif d'affichage permettant d'afficher lesdits modèles déformables pour un opérateur.
En outre, une alarme sera en général générée par ledit au moins un système de type informatique lors de ladite détection dudit risque de collision, ladite alarme pouvant être, par exemple, sonore ou visuelle. De préférence, ladite alarme sera destinée à au moins un des opérateurs desdits engins.
Dans le procédé de l'invention, lesdites variations minimales avant l'arrêt peuvent être déterminées ou mesurées par ledit au moins un système informatique, et dans ce cas, elles peuvent être affectées à une valeur prédéfinie d'une impossibilité de déterminer ou de mesurer lesdites variations minimales avant l'arrêt.
Le procédé de l'invention permet l'utilisation de modèles déformables bidimensionnels, ou en variante, tridimensionnels. Dans ce dernier cas, lesdits modèles déformables peuvent être approximés par un volume prismatique englobant obtenu comme l'ensemble des points parcourus par une base constituée d'un élément de surface lors d'un déplacement non compris dans ladite surface. Ladite base peut alors être plane et en particulier, son contour peut être défini par un ensemble de segments de droite et d'arcs de cercle connectés. Par ailleurs, lequel ledit déplacement peut être rectiligne, et en particulier, il peut être perpendiculaire au plan de ladite base.
De préférence, dans le procédé de l'invention, au moins deux systèmes de type informatique seront utilisés pour traiter lesdits points sous forme numérique, et plus particulièrement, un système de type informatique sera associé à chacune desdites entités physiques. Lesdits au moins deux systèmes de type informatique pourront alors échanger des informations sous forme numérique, de préférence un
moyen de communication de type informatique. En général, ledit moyen de communication de type informatique sera un réseau de type informatique.
Dans le procédé de l'invention, ledit au moins un système de type informatique pourra en outre exercer un contrôle sur la variation d'au moins un degré de liberté d'au moins une desdites au moins deux entités physiques. Par exemple, ledit contrôle pourra consister en une coupure de la variation dudit au moins un degré de liberté, ou en variante, ledit contrôle pourra consister en une réduction de la vitesse de variation dudit au moins un degré de liberté. Dans ce cas, dans lequel ladite réduction de vitesse pourra être inversement proportionnelle à l'une desdites distances entre lesdites entités physiques.
Dans le procédé de l'invention, une enveloppe globale simple peut également être définie dans ledit système de type informatique pour chacune desdites au moins deux entités physiques, deux desdites au moins deux entités physiques étant déterminées comme ne pouvant entrer en collision si leur enveloppes globales simples présentent une intersection vide.
Dans ce cas, ladite enveloppe globale simple sera de préférence un prisme obtenu par déplacement d'une surface de base le long d'un trajet, ladite surface de base étant habituellement plane, par exemple, un disque circulaire. Ledit trajet sera alors en général rectiligne et perpendiculaire à ladite base plane.
De préférence, dans le procédé de l'invention, l'un au moins desdits au moins un système de type informatique comportera une mémoire non volatile ladite mémoire non volatile permettant alors le stockage sous forme numérique de la configuration d'au moins une desdites entités, ladite mémoire non volatile étant habituellement un disque dur d'ordinateur.
L'invention propose également un système d'évitement de collision entre au moins deux entités physiques, lesdites au moins deux entités physiques étant constitués d'éléments, lesdits éléments étant définis par des points, lesdits points pouvant être connus sous forme numérique, lesdits points étant susceptibles de se déplacer simultanément suivant au moins un degré de liberté, chacun desdits déplacements simultanés requérant une variation minimale dudit degré de liberté correspondant avant l'arrêt, un système de type informatique étant utilisé pour stocker et traiter lesdits points sous forme numérique, ledit au moins un système de type informatique permettant de stocker et de traiter lesdits points sous forme numérique, et qui a pour caractéristique par le fait qu'il met en œuvre le procédé de l'invention.
On va maintenant décrire, à titre d'exemple seulement, un mode de réalisation préféré de l'invention en se référant aux dessins annexés, dans lesquels :
la figure 1 représente un exemple de deux grues portiques sur un chantier mettant en oeuvre le procédé de l'invention ; la figure 2 représente l'organigramme général du programme mettant en oeuvre le procédé de l'invention dans l'un des systèmes informatiques de la figure 1 ; la figure 3 représente l'organigramme du sous-programme "CalculQpa" apparaissant à l'étape 204 de la figure 2 ; la figure 4 représente l'organigramme du sous-programme
"ModélisationEngin" apparaissant aux étapes 205 et 209 de la figure 2 ; la figure 5 représente l'organigramme du sous-programme
"TraitementAnticollision" apparaissant à l'étape 210 de la figure 2 ; la figure 6 représente l'organigramme de la fonction "Ajouts Vz" apparaissant à l'étape 503 de la figure 5 ; la figure 7 représente l'organigramme de la fonction "Ajout Vz" apparaissant aux étapes 603 et 605 de la figure 6 ; la figure 8 représente l'organigramme du sous-programme "AjoutsVxy" apparaissant à l'étape 506 de la figure 5 ; la figure 9 représente l'organigramme du sous-programme "XY" apparaissant à l'étape 801 de la figure 8 et à l'étape 1201 de la figure 12 ; la figure 10 représente l'organigramme du sous-programme " Ajout Vxy" apparaissant aux étapes 803, 805 et 810 de la figure 8 ; la figure 11 représente l'organigramme du sous-programme
"GénérationCoupuresDynamiques" apparaissant à l'étape 213 de la figure
2 ; la figure 12 représente l'organigramme du sous-programme
"CoupuresDynamiquesVxy" apparaissant à l'étape 1105 de la figure 11 ; la figure 13 représente l'organigramme du sous-programme
"CoupuresDynamiquesVz" apparaissant à l'étape 1109 de la figure 11 ; la figure 14 représente l'organigramme du sous-programme
"EnvoiCoupuresDynamiques" apparaissant à l'étape 1112 de la figure 11
5 la figure 15 représente les vecteurs anticollision dans le plan XY associés à un point d'un des éléments des engins de la figure 1 ; la figure 16 représente la table des configurations des engins de la figure
1 ;
- la figure 17 représente la table Q des paramètres dynamiques des engins de la figure 1 ;
- la figure 18 représente la table des QPA associées aux paramètres dynamiques de la figure 17 ;
- la figure 19 représente la table Q" des paramètres dynamiques avec QPA des engins de la figure 1 ;
- la figure 20 représente la table R des changements de repère pour les engins de la figure 1 ;
- les figures 21 A et 21B représentent la table des modèles déformables des éléments des engins de la figure 1.
Dans l'exemple présenté, les deux engins utilisés présentent un plan de symétrie vertical parallèle au plan YZ du repère global. En conséquence, ce plan a été choisi comme ayant l'abscisse nulle dans le repère local de l'engin considéré. Par ailleurs, le plan XZ est celui la face proximale des éléments 11, 21 des engins 1, 2 et le plan XY est le plan commun des faces inférieures des éléments 11, 12, 21, 22.
Par ailleurs, les éléments des engins 1, 2 sont constitués par des parallélépipèdes définis par deux points diagonalement opposés AM et BM pour l'engin de numéro "M", les points A et B étant respectivement les points de plus petites et de plus grandes coordonnées dans le repère de l'engin "M" concerné.
Les dimensions de ces éléments parallélépipédiques suivant les axes x, y et z sont respectivement notées, lorsqu'elles sont constantes, LM e, FM e, HM e, où "M" représente le numéro de l'engin concerné, et "e" le numéro de l'élément considéré de l'engin "M".
Les paramètres dynamiques de positionnement de l'engin "M" sont notés dM, gM et hM, et ils sont stockés dans la ligne "M" de la "Table Q des paramètres dynamiques des engins" représentée à la figure 17. Ils représentent respectivement, pour l'engin M, la distance du plan de symétrie de l'engin au plan XY du repère global, la distance du câble 15, 25 de l'engin "M" au premier montant 11, 21 de l'engin "M", et la longueur déroulée du câble 15, 25. Ces paramètres évoluent dans le temps à mesure que les engins 1, 2 sont déplacés sur le chantier.
La présence d'un paramètre dM, gM ou hM dans une expression de la table de la figure 16 indique que la coordonnée correspondante variera en fonction du paramètre indiqué lors des déplacements de l'engin "M" concerné.
En se référant plus particulièrement à la figure 2, on va décrire l'organigramme général du programme mettant en œuvre le procédé de l'invention dans le système informatique 17 associé à la grue 1.
Le programme mettant en œuvre le procédé de l'invention commence à l'étape 201.
A l'étape 201, l'ordinateur 17 relit depuis sa mémoire non volatile le nombre total d'engins "NbM" présents sur le chantier, le numéro "P" de l'engin sur lequel il s'exécute, la distance de sécurité "DS" minimum entre les éléments des engins 1, 2 en dessous de laquelle un risque de collision sera détecté, de la période de temps "Δt" entre deux lectures successives des paramètres dynamiques des engins 1, 2, et les paramètres de configuration des "NbM" engins.
Dans le cadre de l'exemple présenté où l'ordinateur mettant en œuvre le procédé de l'invention est l'ordinateur 17 associé à l'engin 1, la variable P aura la valeur 1.
Les paramètres de configuration des "NbM" engins 1, 2 ainsi relus sont stockés dans la "Table de configuration des engins" représentée à la figure 16. Les huit colonnes de cette table contiennent respectivement le numéro de l'engin, le numéro de l'élément dans l'engin, l'abscisse, l'ordonnée et la cote du premier point A de la diagonale définissant l'élément, et l'abscisse, l'ordonnée et la cote du second point B de la diagonale définissant l'élément.
L'ordinateur 17 relit également le nombre d'éléments "NbElemM" et le nombre de paramètres dynamiques "NbParamM" de chaque engin "M".
L'ordinateur 17 relit aussi "NbParamP" valeurs "cP" qui seront décrites en relation avec la figure 3. L'ordinateur 17 relit de même "NbParamP" valeurs "εP" représentant des incréments associés aux "NbParamP" paramètres de l'engin "M", incréments qui seront décrits en relation avec la figure 12.
Ensuite, l'ordinateur 17 initialise à 0 les "NbParamP" paramètres dynamiques "qP" de l'engin "P" qu'il gère. L'ordinateur 17 passe alors à l'étape 202.
A l'étape 202, l'ordinateur 17 sauvegarde les NbParamP valeurs courantes des paramètres dynamiques "qP" de la machine "P". Ces valeurs, stockées dans la ligne de numéro "P" de la "Table Q des paramètres dynamiques des engins" représentée à la figure 17, sont recopiées dans les emplacements correspondants de la ligne de numéro "P" de la "Table Q' des paramètres dynamiques précédents des engins" (non représentée), qui possède la même structure que la table "Q". L'ordinateur 17 passe alors à l'étape 203.
À l'étape 203, l'ordinateur 17 lit, à l'aide de capteurs appropriés (non représentés), les "NbParamP" nouvelles valeurs des paramètres dynamiques "qP" de l'engin propre "P". L'ordinateur 17 stocke ces valeurs dans les emplacements correspondants de la ligne de numéro "P" de la "Table Q des paramètres dynamiques
des engins" représentée à la figure 17. Avec l'exemple de chantier représenté sur la figure 1, les paramètres "qP-1", "qP.2", "qp/ stockés dans la ligne de numéro "P" de la table "Q" ci-dessus sont respectivement les paramètres dynamiques dP, gP et hP décrits plus haut. L'ordinateur 17 passe alors à l'étape 204.
À l'étape 204, l'ordinateur 17 appelle le sous-programme "CalculQpa", qui sera décrit plus loin en relation avec la figure 3, pour calculer les Quantités à Parcourir avant l'Arrêt "QP AP" correspondant aux paramètres dynamiques "qP" de l'engin propre "P". L'ordinateur 17 passe alors à l'étape 205.
A l'étape 205, l'ordinateur 17 appelle le sous-programme de modélisation d'engin "ModélisationEngin", qui sera décrit plus loin en relation avec la figure 4, pour l'engin "P", puis il passe à l'étape 206.
À l'étape 206, l'ordinateur 17 initialise à 0 les nombres "NbVxy" et "NbVz" de vecteurs anticollision respectivement dans le plan XY et suivant l'axe des Z, qui seront décrits plus loin en relation avec la figure 5. De même, l'ordinateur 17 initialise à 1 l'indice de boucle "M" pour les engins opposés. L'ordinateur 17 passe alors à l'étape 207.
À l'étape 207, l'ordinateur 17 teste si l'indice "M" est égal à "P". Si la réponse est positive, l'ordinateur 17 passe à l'étape 211 qui sera décrite plus loin. Si la réponse est négative, c'est-à-dire, si l'engin "M" n'est pas l'engin propre "P" géré par l'ordinateur 17, celui-ci passe à l'étape 208.
À l'étape 208, l'ordinateur 17 obtient de l'engin opposé "M", via le réseau 3, les paramètres dynamiques "qM" de cet engin, et il les stocke dans les emplacements correspondants de la ligne "M" de la "Table Q des paramètres dynamiques des engins". L'ordinateur 17 obtient de même de l'engin opposé "M" les distances d'arrêt "QPAM" correspondant aux qM ci-dessus, et il stocke ces distances dans les emplacements correspondants de la ligne "M" de la "Table QPA des Quantités à Parcourir avant Arrêt des engins" représentée à la figure 18. L'ordinateur 17 passe alors à l'étape 209.
A l'étape 209, l'ordinateur 17 appelle le sous-programme de modélisation d'engin "ModélisationEngin", qui sera décrit plus loin en relation avec la figure 4, pour l'engin "M", puis il passe à l'étape 210.
A l'étape 210, l'ordinateur 17 appelle le sous-programme de traitement anticollision "TraitementAnticollision", qui sera décrit plus loin en relation avec la figure 5, pour les engins "M" et "P", puis il passe à l'étape 211.
A l'étape 211, l'ordinateur 17 incrémente d'une unité l'indice de boucle "M" pour les engins opposés, puis il passe à l'étape 212.
A l'étape 212, l'ordinateur 17 teste si l'indice de boucle "M" est supérieur au nombre total d'engins "NbM". Si la réponse est négative, l'ordinateur 17 retourne à l'étape 207 précédemment, décrite. Si la réponse est positive, c'est à dire, si les "NbM" engins ont été traités, l'ordinateur 17 passe à l'étape 213.
A l'étape 213, l'ordinateur 17 appelle le sous-programme de génération des coupures dynamiques "GénérationCoupuresDynamiques", qui sera décrit plus loin en relation avec la figure 11. L'ordinateur 17 passe alors à l'étape 214.
A l'étape 214, l'ordinateur 17 attend que la période de temps "Δt", relue à l'étape 201, se soit écoulée depuis le début de la boucle commencée à l'étape 202. Le but de cette attente est de laisser une bande passante réseau suffisante pour les autres engins, et également, de faire en sorte qu'un intervalle de temps "Δt" constant s'écoule entre deux lectures successives des paramètres dynamiques de l'engin "P". Une fois cette période de temps "Δt" prédéfinie écoulée, l'ordinateur 17 retourne à l'étape 202 précédemment décrite.
En se référant plus particulièrement à la figure 3, on va maintenant décrire le sous-programme "CalculQpa" apparaissant à l'étape 204 de la figure 2.
Ce sous-programme calcule les Quantités à Parcourir avant l'Arrêt "QP AP" pour les "NbParamP" paramètres dynamiques de l'engin propre "P". Ces valeurs "QPAp" représentent les quantités de déplacement, mesurées dans les même unités que les paramètres "qP" correspondants, nécessaires à l'arrêt du déplacement de la machine "P" selon le degré de liberté considéré.
Dans le mode de réalisation préféré de l'invention, la distance à parcourir avant l'arrêt pour chacun des "NbParamM" paramètres dynamiques "qM" de l'engin "M" est modélisée comme étant le produit d'un coefficient "cM /', choisi de façon conservative, par la vitesse de variation du seul paramètre dynamique "qM,;".
Toutefois, dans ce mode de réalisation, les capteurs utilisés ne fournissent que les valeurs courantes des paramètres dynamiques, et non les vitesses de variation souhaitées. Pour résoudre cette difficulté, l'ordinateur 17 mettant en œuvre le procédé de l'invention estime numériquement la vitesse de variation de chaque paramètre dynamique comme étant le rapport entre la différence des deux dernières valeurs mesurées et la période de temps constante "Δt" séparant ces deux mesures successives.
Le sous-programme "CalculQpa" commence à l'étape 301 de la figure 3, où l'ordinateur 17 initialise l'indice de boucle "i" à la valeur 1. L'ordinateur 17 passe alors à l'étape 302.
A l'étape 302, l'ordinateur 17 calcule la valeur "QPAP i" par la formule "cP ;*(qP rq'p ;)/Δt", dans laquelle "cP i" est une constante relue à l'étape 201 de la figure 2, où "qP i" et "q'P>i" représentent respectivement la dernière et l'avant-dernière valeur mesurée du paramètre dynamique de numéro "i" de l'engin "P", et où "Δt" est la période de temps constante décrite plus haut en relation avec la figure 2. En conséquence, la quantité
représente une valeur numériquement approchée de la vitesse moyenne de variation du paramètre "qP i" de l'engin "P" pendant la période "Δt". L'ordinateur 17 stocke la valeur "QPAP i" ainsi calculée dans l'emplacement correspondant de la table "Table QPA des Quantités à Parcourir avant Arrêt des engins" représentée à la figure 18, puis il passe à l'étape 303.
A l'étape 303, l'ordinateur 17 augmente d'une unité l'indice de boucle "i", puis il passe à l'étape 304.
A l'étape 304, l'ordinateur 17 teste si l'indice de boucle "i" est supérieur au nombre de paramètres dynamiques "NbParamP" de l'engin "P". Si la réponse est négative, l'ordinateur 17 retourne à l'étape 302 précédemment décrite. Si la réponse est positive, c'est-à-dire, si les "NbParamP" valeurs "QP AP" ont été calculées pour les "NbParamP" paramètres dynamiques "qp" de l'engin "P", alors le sous-programme "CalculQpa" est alors terminé.
En se référant plus particulièrement à la figure 4, on va maintenant décrire le sous-programme "ModélisationEngin" apparaissant aux étapes 205 et 209 de la figure 2.
Le sous-programme "ModélisationEngin" reçoit dans en paramètre le numéro "M" de l'engin à modéliser. Cela signifie que la valeur notée "M" dans le sous-programme "ModélisationEngin" aura la valeur "P" du programme appelant si ce sous-programme a été appelé depuis l'étape 205 de la figure 2, et aura la valeur "M" du programme appelant si ce sous-programme a été appelé depuis l'étape 209 de la figure 2.
La fonction du sous-programme "ModélisationEngin" est de définir, pour chacun des éléments "e" de l'engin de numéro "M" passé en paramètre, un "modèle déformable" constitué de l'ensemble des positions de l'espace que l'élément "e" peut prendre, lors de variations simultanées, indépendantes et quelconques des "NbParamM" paramètres "qM" dans leurs intervalles de variation "qMii" à "qM i+QPAM i" correspondants. Plus précisément, le modèle déformable associé à l'élément "e" de l'engin "M" est un parallélépipède de diagonale (AL, BL), où les points AL et BL sont les points de coordonnées respectivement minimales et
maximales lors de la variation des "NbParamM" paramètres "qM-i" de l'engin "M" dans leurs intervalles de variation respectifs "qM i" à "qM,i+QPAM i".
Le fait d'envisager le cas d'une variation simultanée quelconque des paramètres dynamiques est conservateur, car en pratique, les paramètres dynamiques qM varient d'une façon très corrélée dans le parallélépipède défini par leurs plages de variation. Plus précisément, ces paramètres varient d'une façon sensiblement linéaire le long d'une diagonale du parallélépipède défini par les intervalles de variation des paramètres dynamiques. Toutefois, dans le mode de réalisation préféré de l'invention, la possibilité d'une variation simultanée quelconque dans le parallélépipède défini par leurs intervalles de variation a été retenue pour des raisons de sécurité.
Dans le cas de l'exemple de la figure 1, les coordonnées des points extrêmes A et B de tous les éléments des engins 1, 2 ne dépendent que d'un seul paramètre à la fois. En conséquence, les valeurs minimales des coordonnées du point A et les valeurs maximales des coordonnées du point B peuvent être obtenues en faisant varier un seul paramètre à la fois. Dans un cas plus général où au moins certaines des coordonnées des points extrêmes A et B dépendraient de plusieurs paramètres, il serait nécessaire de considérer toutes les combinaisons de variations simultanées des paramètres concernés pour déterminer les valeurs minimales des coordonnées du point A et les valeurs maximales des coordonnées du point B.
Le sous-programme "ModélisationEngin" commence à l'étape 401.
A l'étape 401, l'ordinateur 17 initialise à 1 l'indice de boucle "e" pour les "NbElemM" éléments de l'engin "M", puis il passe à l'étape 402.
A l'étape 402, l'ordinateur 17 initialise les points ALM e et BLM e respectivement aux points AM β et BM e de l'élément "e" de l'engin "M" en évaluant les expressions correspondantes figurant dans la "Table de configuration des engins" présentée à la figure 16, pour les valeurs courantes des "NbParamM" paramètres "qM,i" de l'engin M. L'ordinateur 17 passe alors à l'étape 403.
A l'étape 403, l'ordinateur 17 initialise à 1 l'indice de boucle "i" pour les "NbParamM" paramètres de l'engin "M", puis il passe à l'étape 404.
A l'étape 404, l'ordinateur 17 augmente tout d'abord le paramètre "qM-i" de la quantité "QPAM /'. Ensuite, il calcule chacune des coordonnées locales du point ALM e comme le minimum de la valeur courante de cette coordonnée de ALM e et de la valeur correspondante obtenue pour le paramètre qM ; augmenté de la quantité QP AM i5 en utilisant les expressions correspondantes des coordonnées des points AM e de l'élément "e" de l'engin "M" figurant dans la "Table de configuration des engins" présentée à la figure 16.
De façon analogue, l'ordinateur 17 calcule chacune des coordonnées locales du point BLM e comme le maximum de la valeur courante de cette coordonnée de BLM e et de la valeur correspondante obtenue pour le paramètre "qM)i" augmenté de la quantité "QPAM i" en utilisant les expressions correspondantes des coordonnées des points BM e de l'élément "e" de l'engin "M" figurant dans la "Table de configuration des engins" présentée à la figure 16. L'ordinateur 17 restaure alors le paramètre "qMii" à sa valeur initiale, c'est-à-dire qu'il diminue le paramètre "qM i" de la quantité "QPAM ;". L'ordinateur 17 passe alors à l'étape 405.
A l'étape 405, l'ordinateur 17 augmente d'une unité l'indice de boucle "i", puis il passe à l'étape 406.
A l'étape 406, l'ordinateur 17 teste si l'indice de boucle "i" est supérieur au nombre de paramètres dynamiques "NbParamM" de l'engin "M". Si la réponse est négative, l'ordinateur 17 retourne à l'étape 404 précédemment décrite. Si la réponse est positive, c'est-à-dire si les "NbParamM" paramètres "qM,i" ont été traités, alors l'ordinateur 17 passe à l'étape 407.
A l'étape 407, l'ordinateur 17 augmente d'une unité l'indice de boucle "e", puis il passe à l'étape 408.
A l'étape 408, l'ordinateur 17 teste si l'indice de boucle "e" est supérieur au nombre d'éléments "NbElemM" de l'engin "M". Si la réponse est négative, l'ordinateur 17 retourne à l'étape 402 précédemment décrite. Si la réponse est positive, c'est-à-dire si les "NbElemM" éléments de l'engin "M" ont été traités, alors l'ordinateur 17 passe à l'étape 410.
A l'étape 410, l'ordinateur 17 initialise à 1 l'indice de boucle "e" pour les "NbElemM" éléments de l'engin "M", puis il passe à l'étape 411.
A l'étape 411, l'ordinateur 17 calcule les coordonnées des points extrêmes AGM e et BGM e de l'élément "e" de l'engin "M" dans le repère global du chantier à partir des coordonnées des points ALM e et BLM e dans le repère local de l'engin "M". Compte tenu de ce que, dans l'exemple considéré, les repères R1 et R2 des engins 1, 2 sont obtenus par translation du repère global du chantier, les coordonnées des points extrêmes AGM e et BGM e de l'élément "e" de l'engin "M" dans le repère global du chantier sont obtenues simplement en additionnant les coordonnées de l'origine RM du repère de l'engin "M" aux coordonnées des points ALM e et BLM e dans le repère local de l'engin "M". L'ordinateur 17 passe alors à l'étape 412.
A l'étape 412, l'ordinateur 17 augmente d'une unité l'indice de boucle "e", puis il passe à l'étape 413.
A l'étape 413, l'ordinateur 17 teste si l'indice de boucle "e" est supérieur au nombre d'éléments "NbElemM" de l'engin "M". Si la réponse est négative, l'ordinateur 17 retourne à l'étape 411 précédemment décrite. Si la réponse est positive, c'est-à-dire si les coordonnées globales des "NbElemM" éléments de l'engin "M" ont toutes été calculées, le sous-programme "ModélisationEngin" apparaissant aux étapes 205 et 209 de la figure 2 est alors terminé.
Les résultats calculés à l'étape 411 sont stockés dans les "NbElemM" lignes correspondant aux "NbElemM" éléments de l'engin de numéro "M" de la "Table des modèles déformables des éléments des engins" représentée dans les figures 22A et 22B.
En se référant plus particulièrement à la figure 5, on va maintenant décrire le sous-programme "TraitementAnticollision" apparaissant à l'étape 210 de la figure 2.
Le sous-programme "TraitementAnticollision" reçoit un paramètre "M" indiquant le numéro "M" de l'engin opposé pour lequel doit être effectué le traitement anti collision avec l'engin propre de numéro "P". Le numéro "P" est celui décrit plus haut en relation avec la figure 2. Le sous-programme "TraitementAnticollision" commence à l'étape 501.
A l'étape 501, l'ordinateur 17 initialise à 1 la variable de boucle "EP" décrivant les numéros des éléments de l'engin propre "P", puis il passe à l'étape 502.
A l'étape 502, l'ordinateur 17 initialise à 1 la variable de boucle "EM" décrivant les numéros des éléments de l'engin opposé "M", puis il passe à l'étape 503.
A l'étape 503, l'ordinateur 17 appelle la fonction "Ajouts Vz" avec les arguments "Er, "M" et "EM,,. Cette fonction, qui sera décrite plus loin en relation avec la figure 6, retourne la valeur booléenne "vrai" si elle a ajouté de nouveaux vecteurs anticollision à la table "Vz" (non représentée) des vecteurs anticollision suivant l'axe Z.
Si au moins un vecteur anticollision a été ajouté par la fonction "Ajouts Vz", c'est-à-dire, si existe un risque de collision suivant l'axe Z du fait d'une trop grande proximité verticale entre les engins "P" et "M", l'ordinateur 17 passe à l'étape 504 décrite ci-après. Si aucun vecteur anticollision n'a été ajouté suivant l'axe Z, l'ordinateur 17 passe à l'étape 511 qui sera décrite ci-après, ce qui signifie qu'il saute toute recherche de collision dans le plan XY, car une telle collision ne peut se produire, du fait d'une distance verticale suffisante entre les engins "P" et "M".
A l'étape 504, l'ordinateur 17 initialise à 1 l'indice "KP" des points de la base rectangulaire de l'élément "EP" de l'engin "P", puis il passé à l'étape 505. L'indice
"Kp" prend les valeurs 1, 2, 3 et 4 respectivement pour les points de coordonnées
(XAL,P,Ep> YAL1P1Ep)* (XBL,P,Ep> YAL1P1Ep)' (XBL,P,Ep5 YBL1P1Ep) G^ (XAL,P,Ep> YBL1P1Ep)-
A l'étape 505, l'ordinateur 17 initialise à 1 l'indice "KM" des points de la base rectangulaire de l'élément "EM" de l'engin "M", puis il passe à l'étape 506. L'indice "KM" prend les valeurs 1, 2, 3 et 4 respectivement pour les points de coordonnées
(XAL,M,EmJ YAL1M1Em)' (XBL,M,Em5 YAL1M1Em)' (XBL,M,Em5 YBL1M1Em) e^ (XAL,M,Em5 YBL1M1Em)-
A l'étape 506, l'ordinateur 17 appelle le sous-programme " Ajouts Vxy", qui sera décrit plus loin en relation avec la figure 8, avec les arguments "EP", "KP", "M", "EM" et "KM". Il passe alors à l'étape 507.
A l'étape 507, l'ordinateur 17 augmente d'une unité l'indice de boucle "KM" pour les points de la base rectangulaire de l'élément "EM" de l'engin "M", puis il passe à l'étape 508.
A l'étape 508, l'ordinateur 17 teste si l'indice de boucle "KM" est supérieur à 4. Si la réponse est négative, l'ordinateur retourne à l'étape 506 précédemment décrite. Si la réponse est positive, c'est-à-dire, si les quatre points de la base rectangulaire de l'élément "EM" de l'engin "M" ont été traités, l'ordinateur passe à l'étape 509.
A l'étape 509, l'ordinateur 17 augmente d'une unité l'indice de boucle "KP" pour les points de la base rectangulaire de l'élément "EP" de l'engin "P", puis il passe à l'étape 510.
A l'étape 510, l'ordinateur 17 teste si l'indice de boucle "KP" est supérieur à 4. Si la réponse est négative, l'ordinateur retourne à l'étape 505 précédemment décrite. Si la réponse est positive, c'est-à-dire, si les quatre points de la base rectangulaire de l'élément "EP" de l'engin "P" ont été traités, l'ordinateur passe à l'étape 511.
A l'étape 511, l'ordinateur 17 augmente d'une unité l'indice de boucle "EM" pour les éléments de l'engin "M", puis il passe à l'étape 512.
A l'étape 512, l'ordinateur 17 teste si l'indice de boucle "EM" est supérieur au nombre "NbElemM" d'éléments de la machine "M". Si la réponse est négative, l'ordinateur 17 retourne à l'étape 503 précédemment décrite. Si la réponse est positive, c'est-à-dire, si les "NbElemM" éléments de l'engin "M" ont été traités, l'ordinateur passe à l'étape 513.
A l'étape 513, l'ordinateur 17 augmente d'une unité l'indice de boucle "EP" pour les éléments de l'engin P, puis il passe à l'étape 512.
A l'étape 512, l'ordinateur 17 teste si l'indice de boucle "EP" est supérieur au nombre NbElemP d'éléments de la machine "P". Si la réponse est négative,
l'ordinateur 17 retourne à l'étape 502 précédemment décrite. Si la réponse est positive, c'est-à-dire, si les "NbElemP" éléments de l'engin "P" ont été traités, le sous- programme "TraitementAnticollision" est alors terminé.
En se référant plus particulièrement à la figure 6, on va maintenant décrire la fonction "Ajouts Vz" apparaissant à l'étape 503 de la figure 5.
La fonction "AjoutsVz" reçoit du programme appelant les paramètres "e", "M" et "f indiquant respectivement le numéro de l'élément à traiter dans l'engin "P", le numéro "M" de l'engin opposé à traiter, et le numéro "f ' de l'élément à traiter dans l'engin "M". Son objet est d'ajouter un vecteur anticollision suivant l'axe Z à la table "Vz" (non représentée) s'il existe un risque de collision suivant l'axe Z entre les éléments "e" et "P des engins respectifs "P" et "M".
Cette fonction retourne un indicateur booléen ayant la valeur "vrai" si elle a ajouté au moins un vecteur anticollision à la table "Vz" des vecteurs anticollision suivant Z, et "faux" dans le cas contraire. La fonction "AjoutsVz" commence à l'étape 601.
A l'étape 601, l'ordinateur 17 initialise à la valeur booléenne "faux" la variable "cr" contenant la valeur booléenne qui sera retournée par la fonction "AjoutsVz", puis il passe à l'étape 602.
A l'étape 602, l'ordinateur 17 teste si la cote inférieure de l'élément "f de l'engin "M" est inférieure à la cote supérieure de l'élément "e" de l'engin propre "P" augmentée de la distance de sécurité "DS" précédemment décrite en relation avec la figure 2. Si la réponse est négative, alors l'ordinateur 17 passe à l'étape 604 décrite ci- dessous. Si la réponse est positive, alors il existe un risque de collision entre la partie supérieure de l'élément "e" de l'engin "P" et la partie inférieure de l'élément "f de l'engin "M", et l'ordinateur 17 passe alors à l'étape 603.
A l'étape 603, l'ordinateur 17 appelle le sous-programme "AjoutVz", qui sera décrit plus loin en relation avec la figure 7, avec les arguments "e", "vrai" et "z AG,M,rz BG,p,e"- L' argument "vrai" ci-dessus indique que la face supérieure de l'élément "e" de l'engin "P" est celle concernée par le risque de collision. Par ailleurs, l'ordinateur 17 stocke la valeur booléenne "vrai" dans la variable "cr" pour indiquer qu'un vecteur anticollision en Z a été ajouté. Il passe alors à l'étape 604.
A l'étape 604, l'ordinateur 17 teste si la cote supérieure de l'élément "f de l'engin "M" est supérieure à la cote inférieure de l'élément "e" de l'engin propre "P" diminuée de la distance de sécurité "DS". Si la réponse est négative, alors l'ordinateur 17 retourne la valeur "cr" au programme appelant, et le sous-programme "AjoutsVz" est alors terminé. Si la réponse est positive, alors il existe un risque de collision entre
la partie inférieure de l'élément "e" de l'engin "P" et la partie supérieure de l'élément "f" de l'engin M, et l'ordinateur 17 passe alors à l'étape 605.
A l'étape 605, l'ordinateur 17 appelle la fonction "Ajout Vz" avec les arguments "e", "faux" et "zBG M rzAG P e". L'argument "faux" ci-dessus indique que la face inférieure de l'élément "e" de l'engin "P" est celle concernée par le risque de collision. Par ailleurs, l'ordinateur 17 stocke la valeur booléenne "vrai" dans la variable "cr" pour indiquer qu'un vecteur anticollision en Z a été ajouté. L'ordinateur 17 retourne alors la valeur "cr" au programme appelant, et le sous-programme "Ajouts Vz" est alors terminé.
En se référant plus particulièrement à la figure 7, on va maintenant décrire le sous-programme "AjoutVz" apparaissant aux étapes 603 et 605 de la figure 6.
Le sous-programme "AjoutVxy" reçoit les paramètres "e", "h" et "z" passés par le programme appelant. Il a pour fonction d'ajouter un vecteur anticollision à la table "Vz" (non représentée) à trois colonnes des vecteurs anticollision parallèlement à l'axe Z .
Le sous-programme "AjoutVz" est constitué de l'unique étape 701.
Dans cette étape, l'ordinateur 17 augmente d'une unité le nombre "NbVz" de vecteurs anticollision suivant l'axe Z, puis il stocke dans les trois emplacements de la ligne "NbVz" correspondante de la table "Vz" les trois paramètres "e", "h" et "z" qui lui ont été passés par le programme appelant.
Le sous-programme "AjoutVz" est alors terminé.
En se référant plus particulièrement à la figure 8, on va maintenant décrire le sous-programme " Ajouts Vxy" apparaissant à l'étape 506 de la figure 5.
Le sous-programme "Ajouts Vxy" reçoit du programme appelant les paramètres "e", "k", "M", "f et "1", et sa fonction est de déterminer les vecteurs anticollision de longueur inférieure à "DS" associés au point "k" de la base dans le plan XY de l'élément "e" de l'engin "P", vis-à-vis du segment de la base de l'élément "f de l'engin "M" commençant au point de numéro "1" de cette base. Ces vecteurs sont les vecteurs SM0, SH et SM1 apparaissant sur la figure 15, où S est le point de numéro "k" de l'élément, M0 est le point de numéro "1" de l'élément "f de l'engin "M", M1 est le point suivant M0 sur le contour fermé de la base de l'élément "f ' de l'engin "M", et H est le pied de la perpendiculaire issue du point S abaissée sur le segment M0M1.
Le sous-programme "Ajouts Vxy" commence à l'étape 801.
A l'étape 801, l'ordinateur 17 retrouve les coordonnées "xP" et "yP" du point S de numéro "k" dans l'élément "e" de l'engin "P" à l'aide du sous-programme "XY"
qui sera décrit plus loin en relation avec la figure 9. De même, il retrouve les coordonnées "xM0" et "yM0" du premier point M0 de numéro "1" du segment de la base plane de l'élément "F de l'engin "M" à l'aide du même sous-programme "XY".
L'ordinateur 17 détermine le numéro du second point M1 du segment de la base de l'élément "f de l'engin "M" à l'aide de la formule "mod(l,4)+l", où "mod" représente la fonction modulo, ou reste de la division, de son premier argument par le second. Le résultat de cette formule vaut 1 si la variable "1" vaut 4 et "1+1" dans le cas contraire. En conséquence, compte tenu de la convention de numérotation des points décrite précédemment en relation avec l'étape 505 de la figure 5, le numéro de point ainsi déterminé est bien le point M1 suivant le point M0 sur le contour fermé de la base de l'élément "F de l'engin "M".
L'ordinateur 17 retrouve alors, à l'aide de ce numéro, les coordonnées "xMi" et "yM1" du second point M1 du segment de la base plane de l'élément "F de l'engin "M" à l'aide du même sous-programme "XY", puis il passe à l'étape 802.
A l'étape 802, l'ordinateur 17 teste si la distance euclidienne dans le plan XY entre le point S et le point M0 de coordonnées respectives "xP", "yP" et "xM0", "yMo" ci- dessus déterminées est inférieure à la distance de sécurité "DS". Si la réponse est négative, alors l'ordinateur passe à l'étape 804 décrite ci-dessous. Si la réponse est positive, alors il y a un risque de collision entre le point S et le segment M0M1, et l'ordinateur passe à l'étape 803.
A l'étape 803, l'ordinateur 17 appelle le sous-programme "AjoutVxy", qui sera décrit plus loin en relation avec la figure 10, avec les arguments "e", "k", "xM0- Xp" et "yMo-yp"j puis l'ordinateur 17 passe à l'étape 804.
A l'étape 804, l'ordinateur 17 teste si la distance euclidienne dans le plan XY entre le point S de coordonnées "xP" et "yP" et le point M1 de coordonnées "xM1" et "yM1" ci-dessus déterminés est inférieure à la distance de sécurité "DS". Si la réponse est négative, alors l'ordinateur passe à l'étape 806 décrite ci-dessous. Si la réponse est positive, alors il y a un risque de collision entre le point S et le segment M0M1, et l'ordinateur passe à l'étape 805.
A l'étape 805, l'ordinateur 17 appelle le sous-programme "AjoutVxy" avec les arguments "e", "k", "xM1-xP" et "yM1-yP", puis l'ordinateur 17 passe à l'étape 806.
A l'étape 806, l'ordinateur 17 calcule le paramètre "λ" définissant le point H dans l'équation paramétrique du segment de droite M0M1 :
SH = (l-λ)*SM0 + λ*SMl, 0 < λ < 1
Le vecteur SH sera perpendiculaire au vecteur M0M1 si et seulement si le produit scalaire de ces deux vecteurs est nul. En conséquence, un développement
élémentaire pour l'homme de l'art montre que le segment SH est perpendiculaire au segment M0M1 pour la valeur de "λ" figurant à l'étape 806. L'ordinateur 17 passe alors à l'étape 807.
A l'étape 807, l'ordinateur 17 teste si la valeur de "λ" déterminée à l'étape 806 est comprise entre 0 et 1. Si la réponse est négative, alors le point H est situé en dehors du segment M0M1, ce qui signifie que le point S est plus proche d'un des points M0 ou M1 que de n'importe quel autre point du segment M0M1 et que par conséquent, il n'y pas de risque de collision entre le point S et un point intérieur au segment. Le sous-programme "AjoutsVxy" est alors terminé. Si la réponse est positive, alors l'ordinateur 17 passe à l'étape 808.
A l'étape 808, l'ordinateur 17 calcule les coordonnées "hx" et "hy" obtenues en remplaçant, dans l'équation paramétrique du segment SH, le paramètre "λ" par la valeur obtenue à l'étape 806. Il passe alors à l'étape 809.
A l'étape 809, l'ordinateur 17 teste si la longueur du segment SH est inférieure à la distance de sécurité "DS". Si la réponse est négative, alors il n'y a pas de risque de collision, et le sous-programme "AjoutsVxy" est terminé. Si la réponse est positive, alors l'ordinateur 17 passe à l'étape 810.
A l'étape 810, l'ordinateur 17 appelle le sous-programme "AjoutVxy" avec les arguments "e", "k", "Jix", et "hy", puis le sous-programme "AjoutsVxy" est terminé.
En se référant plus particulièrement à la figure 9, on va maintenant décrire le sous-programme "XY" apparaissant à l'étape 801 de la figure 8.
Le sous-programme "XY" reçoit les paramètres "M", "e", k", "x" et "y" du programme appelant. Il a pour fonction de retrouver les coordonnées "x" et "y" du point de numéro "k" dans la base plane de l'élément de numéro "e" de l'engin de numéro "M". Le sous-programme "XY" commence à l'étape 901.
A l'étape 901, l'ordinateur 17 teste si la valeur du paramètre "k", indiquant le numéro du point dans la base de l'élément "e" de l'engin "P", vaut 1 ou 4. Si la réponse est négative, l'ordinateur passe à l'étape 903 décrite ci-après, sinon il passe à l'étape 902.
A l'étape 902, l'ordinateur 17 affecte la valeur minimale "xAG,M,e" correspondant au cas "k=l ou k=4", compte tenu de la convention de numérotation définie à l'étape 505 de la figure 5, à la variable "x" passée en paramètre, puis il passe à l'étape 904.
A l'étape 903, atteinte lorsque la réponse au test de l'étape 901 est négative, l'ordinateur 17 affecte la valeur maximale "xBG,M,e" à la variable "x", puis il passe à l'étape 904.
A l'étape 904, l'ordinateur 17 teste si la valeur du paramètre "k", indiquant le numéro du point S dans la base de l'élément "e" de l'engin "P", vaut 1 ou 2. Si la réponse est négative, l'ordinateur passe à l'étape 906 décrite ci-après, sinon il passe à l'étape 905.
A l'étape 905, l'ordinateur 17 affecte la valeur minimale "yAG,M,e" correspondant au cas "k=l ou k=2", compte tenu de la convention de numérotation définie à l'étape 505 de la figure 5, à la variable "y" passée en paramètre. Le sous- programme "XY" est alors terminé.
A l'étape 906, atteinte lorsque la réponse au test de l'étape 904 est négative, l'ordinateur 17 affecte la valeur maximale "yBG,M,e" à la variable "y". Le sous- programme "XY" est alors terminé.
En se référant plus particulièrement à la figure 10, on va maintenant décrire le sous-programme "AjoutVxy" apparaissant aux étapes 803, 805 et 810 de la figure 8.
Le sous-programme "AjoutVxy" reçoit les paramètres "e", "k", "x" et "y" passés par le programme appelant. Il a pour fonction d'ajouter un vecteur anticollision à la table "Vxy" (non représentée) à quatre colonnes des vecteurs anticollision dans le plan XY .
Le sous-programme "AjoutVxy" est constitué de l'unique étape 1001.
Dans cette étape, l'ordinateur 17 augmente d'une unité le nombre "Nb Vxy" de vecteurs anticollision dans le plan XY, puis il stocke dans les quatre emplacements de la ligne "Nb Vxy" correspondante de la table "Vxy" les quatre paramètres "e", "k", "x" et "y" qui lui ont été passés en paramètres par le programme appelant.
Le sous-programme "AjoutVxy" est alors terminé.
En se référant plus particulièrement à la figure 11, on va maintenant décrire le sous-programme "GénérationCoupuresDynamiques" apparaissant à l'étape 213 de la figure 2.
La fonction de ce sous-programme est de déterminer quels degrés de liberté de l'engin "P", et dans quel sens, doivent arrêtés pour éviter d'augmenter les vecteurs anticollision déterminés précédemment, c'est-à-dire pour arrêter les mouvements avant qu'une collision ne se produise.
Le sous-programme "GénérationCoupuresDynamiques" commence à l'étape 1101.
A l'étape 1101, l'ordinateur 17 test si les nombres de vecteurs anticollision "NbVxy" dans le plan XZ et "NbVz" sur l'axe des Z sont tous les deux nuls. Si la réponse est positive, c'est-à-dire, s'il n'y a pas de vecteurs anticollision et donc pas de risque de collision, le sous-programme "GénérationCoupuresDynamiques" est terminé. Si la réponse est négative, alors l'ordinateur 17 passe à l'étape 1102.
A l'étape 1102, l'ordinateur 17 génère une alarme, visuelle ou sonore, pour l'opérateur de l'engin propre "P" qu'il gère, puis il passe à l'étape 1103.
A l'étape 1103, l'ordinateur 17 remet à 0 les coupures dynamiques dans le sens positif "C+" et dans le sens négatif "C"" pour les "NbParamP" degrés de liberté de l'engin propre "P", puis il passe à l'étape 1104.
A l'étape 1104, l'ordinateur 17 initialise l'indice de boucle "n" des vecteurs anticollision dans le plan XY à la valeur 1, puis il passe à l'étape 1105.
A l'étape 1105, l'ordinateur 17 appelle le sous-programme de détermination des coupures dynamiques dans le plan XY "CoupuresDynamiquesVxy", qui sera décrit plus loin en relation avec la figure 12, en lui passant en argument le numéro "n" du vecteur anticollision "Vxy" à traiter. L'ordinateur 17 passe alors à l'étape 1106.
A l'étape 1106, l'ordinateur 17 incrémente d'une unité l'indice de boucle "n", puis il passe à l'étape 1107.
A l'étape 1107, l'ordinateur 17 teste si de l'indice de boucle "n" est supérieur au nombre "Nb Vxy" des vecteurs anticollision "Vxy" dans le plan XY. Si la réponse est négative, l'ordinateur 17 retourne à l'étape 1105 précédemment décrite, sinon c'est-à-dire si les "Nb Vxy" vecteurs anticollision "Vxy" dans le plan XY ont été traités, l'ordinateur 17 passe à l'étape 1108.
A l'étape 1108, l'ordinateur 17 initialise l'indice de boucle "n" des vecteurs anticollision selon l'axe Z à la valeur 1, puis il passe à l'étape 1109.
A l'étape 1109, l'ordinateur 17 appelle le sous-programme "CoupuresDynamiquesVz" déterminant les coupures dynamiques selon l'axe Z, qui sera décrit plus loin en relation avec la figure 13, en passant à ce sous-programme un argument constitué du numéro "n" du vecteur anticollision "Vz" à traiter. L'ordinateur 17 passe alors à l'étape 1110.
A l'étape 1110, l'ordinateur 17 incrémente d'une unité l'indice de boucle "n", puis il passe à l'étape 1111.
A l'étape 1111, l'ordinateur 17 teste si l'indice de boucle "n" est supérieur au nombre "NbVz" de vecteurs anticollision "Vz" parallèlement à l'axe Z. Si la réponse est négative, l'ordinateur 17 retourne à l'étape 1109 précédemment décrite, sinon, c'est-à-dire si tous les vecteurs anticollision "Vz" parallèlement à l'axe Z ont été traités, l'ordinateur 17 passe à l'étape 1112.
A l'étape 1112, l'ordinateur 17 appelle le sous-programme "EnvoiCoupuresDyamiques" qui sera décrit plus loin en relation avec la figure 14, puis, puis le sous-programme "GénérationCoupuresDynamiques" est terminé.
En se référant plus particulièrement aux figures 12 et 15, on va maintenant décrire le sous-programme "CoupuresDynamiquesVxy" apparaissant à l'étape 1105 de la figure 11.
La fonction de ce sous-programme est de générer les coupures dynamiques nécessaires pour le vecteur "Vxy" de numéro "n" passé en paramètre, pour les "NbParamP" paramètres "qP" de l'engin propre "P", et dans les deux sens de déplacement du degré de liberté de l'engin "P" associé de chacun de ces paramètres.
Le sous-programme "CoupuresDynamiquesVxy" commence à l'étape de 1201.
A l'étape 1201, l'ordinateur 17 initialise la variable temporaire "e" à la valeur se trouvant dans le premier emplacement de la ligne "n" de la table "Vxy", c'est-à- dire que la variable "e" reçoit le numéro de l'élément de l'engin "P" auquel appartient le point d'origine S du vecteur anticollision "n", tel qu'il a été sauvegardé à l'étape 1001 de la figure 10. De même, l'ordinateur 17 initialise une variable temporaire "k" à la valeur se trouvant dans le second emplacement de la ligne "n" de la table "Vxy", c'est-à-dire que la variable "k" reçoit le numéro, dans l'élément "e" de l'engin "P", du point d'origine S du vecteur anticollision "n".
L'ordinateur 17 appelle alors le sous-programme "XY", décrit précédemment en relation avec la figure 9, avec les arguments "P", "e", "k", "x" et "y", ce qui a pour effet d'initialiser les variables "x" et "y" aux valeurs des coordonnées XY du point "k" de la base de l'élément "e" de l'engin "P". En d'autres termes, l'ordinateur 17 retrouve ainsi les coordonnées du point d'origine S du vecteur anticollision "Vxyn", pour les valeurs courantes des paramètres "qP" de l'engin "P".
L'ordinateur 17 initialise également l'indice de boucle "i" à la valeur 1, puis il passe à l'étape 1202.
A l'étape 1202, l'ordinateur 17 ajoute à la valeur du paramètre "qP i" la quantité "εP i" positive qui a été relue à l'étape 201 de la figure 2. La valeur "εP i" associée au paramètre "qP i" est une valeur prédéterminée, choisie de façon à être
suffisamment faible pour que les déplacements des éléments de l'engin "P" associés à cet incrément du paramètre "qP i" restent petits, tout en garantissant une précision numérique suffisante pour les calculs ultérieurs.
L'ordinateur 17 retrouve alors les coordonnées V" et "y"' du point d'origine S' du vecteur anticollision "Vxyn" pour la valeur "qP,i+ε P,i" du paramètre "i" de l'engin "P", en appelant le sous-programme "XY" avec les paramètres "P", "e", "k", "x"' et "y"'. L'ordinateur restaure ensuite le paramètre "qP i" à sa valeur courante en soustrayant de "qP i" la quantité "εP i", puis il calcule le produit scalaire "PS" du vecteur SS' et du vecteur anticollision "Vxyn". L'ordinateur 17 passe alors à l'étape 1203.
A l'étape 1203, l'ordinateur 17 teste si le produit scalaire "PS" déterminé à l'étape 1202 est positif. Si la réponse est négative, alors l'ordinateur 17 passe à l'étape 1205 décrite ci-après. Si la réponse est positive, alors une variation positive du paramètre "qP i" tendra à réduire le vecteur anticollision "Vxyn", c'est-à-dire à augmenter le risque d'une collision. Dans ce cas, l'ordinateur 17 passe à l'étape 1204, où l'indicateur de coupure "C+;" est positionné à la valeur "vrai" pour indiquer que le mouvement suivant le degré de liberté "i" de l'engin "P" doit être interdit dans le sens positif. L'ordinateur 17 passe alors à l'étape 1205.
A l'étape 1205, l'ordinateur 17 teste si le produit scalaire "PS" déterminé à l'étape 1202 est négatif. Si la réponse est négative, alors l'ordinateur 17 passe à l'étape 1207 décrite ci-après. Si la réponse est positive, alors une variation négative du paramètre "qP;i" tendra à réduire le vecteur anticollision "Vxyn", c'est-à-dire à augmenter le risque d'une collision. Dans ce cas, l'ordinateur 17 passe à l'étape 1206, où l'indicateur de coupure "C" ;" est positionné à la valeur "vrai" pour indiquer que le mouvement "i" de l'engin "P" dans le sens négatif doit être coupé. L'ordinateur 17 passe alors à l'étape 1207.
À l'étape 1207, l'ordinateur 17 augmente d'une unité l'indice de boucle "i", puis il passe à l'étape 1208.
À l'étape 1208, l'ordinateur 17 teste si l'indice de boucle "i" est supérieur au nombre "NbParamP" de paramètres de l'engin "P". Si la réponse est négative, alors l'ordinateur 17 retourne à l'étape 1202 décrite ci-dessus. Si la réponse est positive, c'est-à-dire, si les "NbParamP" paramètres "qP" de l'engin propre "P" ont été traités, le sous-programme "CoupuresDynamiquesVxy" est terminé.
En se référant plus particulièrement à la figure 13, on va maintenant décrire le sous-programme "CoupuresDynamiquesVz" apparaissant à l'étape 1109 de la figure 11.
La fonction de ce sous-programme est de générer les coupures dynamiques nécessaires pour le vecteur Vz de numéro "n" passé en paramètre, pour les "NbParamP" paramètres "qP" de l'engin propre "P", et dans les deux sens de déplacement du degré de liberté de l'engin "P" associé de chacun de ces paramètres.
Le sous-programme "CoupuresDynamiquesVz" commence à l'étape de 1301.
A l'étape 1301, l'ordinateur 17 initialise la variable temporaire "e" à la valeur se trouvant dans le premier emplacement de la ligne "n" de la table "Vz", c'est-à-dire que la variable "e" reçoit le numéro de l'élément de l'engin "P" auquel appartient le point d'origine S du vecteur anticollision "n", tel qu'il a été sauvegardé à l'étape 701 de la figure 7. L'ordinateur 17 initialise également l'indice de boucle "i" à la valeur 1, puis il passe à l'étape 1302.
A l'étape 1302, l'ordinateur 17 teste la valeur de la variable booléenne stockée dans la seconde colonne de la ligne "n" de la table des vecteurs anticollision "Vz". Cette valeur, stockée à l'étape 701 de la figure 7, a la valeur booléenne "vrai" si le risque de collision concerne la face supérieure de l'élément "e", et la valeur booléenne "faux" si le risque de collision concerne la face inférieure de l'élément "e". Si la valeur "Vz112" a la valeur booléenne "vrai", alors l'ordinateur 17 passe à l'étape 1304 qui sera décrite ci-après, sinon l'ordinateur 17 passe à l'étape 1303.
A l'étape 1303, atteinte si la variable "Vzn 2" a la valeur booléenne "faux", c'est-à-dire si le risque de collision indiqué par "Vzn" concerne la face inférieure de l'élément "e" de l'engin "P", l'ordinateur 17 initialise la variable temporaire "z", représentant la cote du point S origine du vecteur anticollision "Vzn", à la valeur de la cote "zAG P e" de la face inférieure de l'élément "e" de l'engin "P". L'ordinateur 17 ajoute ensuite à la valeur du paramètre "qPji" la quantité "εP>i" positive qui a été relue à l'étape 201 de la figure 2. La valeur "εP>i" associée au paramètre "qP ;" est la même que celle décrite en relation avec l'étape 1202 de la figure 12. L'ordinateur 17 initialise alors la variable temporaire "z"', représentant la cote du point d'origine S' du vecteur anticollision "Vz11" pour la valeur "qPii+εP i" du paramètre "i" de l'engin "P", à la valeur de la cote "zAG P e" de la face inférieure de l'élément "e" de l'engin "P" obtenue pour la valeur "qPii+εP i" du paramètre "i" de l'engin "P". L'ordinateur restaure ensuite le paramètre "qP i" à sa valeur initiale en soustrayant de "qP i" la quantité "εP i". L'ordinateur 17 passe alors à l'étape 1305.
A l'étape 1304, atteinte si la variable "Vz112" a la valeur booléenne "vrai", c'est-à-dire si le risque de collision indiqué par "Vzn" concerne la face supérieure de l'élément "e" de l'engin "P", l'ordinateur 17 initialise la variable temporaire "z",
représentant la cote du point S origine du vecteur anticollision "Vzn", à la valeur de la cote "zBG P e" de la face supérieure de l'élément "e" de l'engin "P". L'ordinateur 17 ajoute ensuite à la valeur du paramètre "qP i" la quantité "εP i". L'ordinateur 17 initialise alors la variable temporaire "z"', représentant la cote du point d'origine S' du vecteur anticollision "Vzn" pour la valeur "qP)i+εP " du paramètre "i" de l'engin "P", à la valeur de la cote "zAG P e" de la face inférieure de l'élément "e" de l'engin "P" obtenue pour la valeur "qPii+εP>i" du paramètre "i" de l'engin "P". L'ordinateur restaure ensuite le paramètre "qP i" à sa valeur initiale en soustrayant de "qP i" la quantité "εP i". L'ordinateur 17 passe alors à l'étape 1305.
A l'étape 1305, l'ordinateur 17 teste si le produit "(z'-z)* Vzn-3", où "z" et "z"' sont les valeurs déterminées à l'étape 1302 ou 1303 et "Vzn-3" est la longueur du vecteur anticollision "Vzn" telle que déterminée à l'étape 701 de la figure 7, est positif. Si la réponse est négative, alors l'ordinateur 17 passe à l'étape 1307 qui sera décrite ci-après. Si la réponse est positive, alors le vecteur SS' a le même sens que le vecteur anticollision "Vzn", c'est-à-dire qu'une une variation positive du paramètre "qP ;" tendra à réduire le vecteur anticollision "Vzn", donc à augmenter le risque d'une collision. En conséquence, l'ordinateur 17 passe à l'étape 1306, où l'indicateur de coupure "C+i" est positionné à la valeur "vrai" pour indiquer que le mouvement "i" de l'engin "P" dans le sens positif du paramètre "qP i" doit être interdit. L'ordinateur 17 passe alors à l'étape 1307.
A l'étape 1307, l'ordinateur 17 teste si le produit "(z'-z)*Vzn 3" est négatif. Si la réponse est négative, alors l'ordinateur 17 passe à l'étape 1309 qui sera décrite ci- après. Si la réponse est positive, alors le vecteur SS' a un sens opposé à celui du vecteur anticollision "Vzn", c'est-à-dire qu'une une variation négative du paramètre "qP i" tendra à réduire le vecteur anticollision "Vzn", donc à augmenter le risque d'une collision. En conséquence, l'ordinateur 17 passe à l'étape 1308, où l'indicateur de coupure "CV' est positionné à la valeur "vrai" pour indiquer que le mouvement "i" de l'engin "P" dans le sens négatif du paramètre "qP i" doit être interdit. L'ordinateur 17 passe alors à l'étape 1309.
A l'étape 1309, l'ordinateur 17 augmente d'une unité l'indice de boucle "i", puis il passe à l'étape 1310.
A l'étape 1310, l'ordinateur 17 teste si l'indice de boucle "i" est supérieur au nombre "NbParamP" de paramètres de l'engin "P". Si la réponse est négative, alors l'ordinateur 17 retourne à l'étape 1302 décrite ci-dessus. Si la réponse est positive, c'est-à-dire, si les "NbParamP" paramètres "qP" de l'engin propre "P" ont été traités, le sous-programme "CoupuresDynamiquesVz" est terminé.
En se référant plus particulièrement à la figure 14, on va maintenant décrite le sous-programme "EnvoiCoupuresDynamiques" apparaissant à l'étape 1112 de la figure 11.
Le sous-programme "EnvoiCoupuresDynamiques" commence à l'étape 1401.
A l'étape 1401, l'ordinateur 17 initialise l'indice de boucle "i" à la valeur 1, puis il passe à l'étape 1402.
A l'étape 1402, l'ordinateur 17 teste si la variable "C+/' est à la valeur booléenne "vrai". Si la réponse est négative, alors l'ordinateur 17 passe à l'étape 1404 qui sera décrite ci-après. Si la réponse est positive, l'ordinateur passe à l'étape 1403.
A l'étape 1403, atteinte si la variable "C+," est à la valeur "vrai", c'est-à-dire si l'ordinateur 17 a déterminé au moyen du procédé décrit plus haut que le mouvement du degré de liberté "i" de l'engin "P" devait être interdit dans le sens de variation positive du paramètre "qPjI", l'ordinateur 17 envoie à l'actionneur "i" concerné de l'engin "P" un ordre d'arrêt du mouvement dans le sens positif. L'ordinateur 17 passe alors à l'étape 1404.
A l'étape 1404, l'ordinateur 17 teste si la variable "C"," est à la valeur booléenne "vrai". Si la réponse est négative, alors l'ordinateur 17 passe à l'étape 1406 qui sera décrite ci-après. Si la réponse est positive, l'ordinateur passe à l'étape 1405.
A l'étape 1405, atteinte si la variable "C"," est à la valeur "vrai", c'est-à-dire si l'ordinateur 17 a déterminé au moyen du procédé décrit plus haut que le mouvement du degré de liberté "i" de l'engin "P" devait être interdit dans le sens de variation négative du paramètre "qP)1", l'ordinateur 17 envoie à l'actionneur "i" concerné de l'engin "P" un ordre d'arrêt du mouvement dans le sens négatif. L'ordinateur 17 passe alors à l'étape 1406.
A l'étape 1406, l'ordinateur 17 augmente d'une unité l'indice de boucle "i", puis il passe à l'étape 1407.
A l'étape 1407, l'ordinateur 17 teste si l'indice de boucle "i" est supérieur au nombre "NbParamP" de paramètres de l'engin propre P. Si la réponse est négative, l'ordinateur 17 retourne à l'étape 1402 précédemment décrite. Si la réponse est positive, c'est-à-dire si toutes les coupures dynamiques ont été envoyées aux actionneurs correspondants, alors le sous-programme "EnvoiCoupuresDynamiques" est terminé.
Le programme exécuté par le système informatique 27 est en tous points semblable à celui exécuté par le système informatique 17 ci-dessus. En conséquence, il ne sera pas décrit.
Dans ce qui précède, on a décrit le mode de réalisation préféré du procédé de l'invention permettant de détecter les risques de collision entre les éléments des engins sur un même chantier.
L'homme de l'art pourra sans difficulté apporter des modifications et/ou des améliorations au mode de réalisation ci-dessus décrit du procédé de l'invention.
En particulier, dans un souci de clarté, l'exemple a été volontairement restreint à un cas simple constitué de deux engins. De même, les structures de données de l'exemple décrit ont été simplifiées, le type des engins traités a été restreint à celui de grues portiques modélisées comme étant constituées de cinq éléments parallélépipédiques, les changements de repère ont été limités à des translations, et le nombre des paramètres dynamiques a été limité à trois par engin.
Dans la pratique, l'homme de l'art pourra sans difficulté étendre l'exemple décrit à un nombre important d'engins sur un même chantier, les éléments des engins pouvant être prismatiques, cylindriques, etc.. De même, les engins considérés pourront avoir d'autres types : grues tournantes, grues levantes, engins sur rails, engins de terrassement, chariots de manutention, ponts roulants, etc., les changements de repère pourront facilement être généralisés au cas de changements de repère quelconques, et le nombre des paramètres dynamiques de chaque engin pourra être diminué ou augmenté en fonction du type d'engin utilisé.
De même, dans l'exemple présenté, les recherches de risque de collision ont été limitées à des couples d'éléments dont chacun appartient à des engins distincts. Toutefois, il est parfaitement possible d'étendre le procédé de l'invention à des éléments appartenant à un même engin, par exemple, pour éviter une collision entre la charge d'une grue et des éléments de cette dernière.
En conséquence, il sera évident pour le lecteur que le procédé de l'invention ne se limite pas à la description du mode de réalisation et/ou à l'exemple présentés ci- dessus, le procédé de l'invention n'étant limité que par les revendications annexées.