Planification de trajectoires de pointe

Routage Intelligent

Naviguez dans des champs complexes avec précision. Notre moteur de routage gère automatiquement les obstacles, les tournières et les contraintes des équipements.

Aperçu

Notre solution de routage de pointe prend en charge des champs arbitrairement complexes, la navigation en tournière et de nombreuses autres options configurables. Sur cette page vous trouverez des exemples et des explications des différentes fonctionnalités de routage, ainsi que des prototypes expérimentaux nouveaux et passionnants.

Modélisation des virages

Nous prenons en charge différents types de virage, choisis automatiquement en fonction d'une combinaison de la géométrie du champ et des caractéristiques des équipements. Si deux voies sont à moins de 3 largeurs de passage l'une de l'autre, nous tenterons de les connecter directement par un virage. Si les voies sont plus éloignées, ou s'il n'existe aucun virage pouvant s'y adapter, nous effectuerons ce que nous appelons une traversée de tournière, expliquée plus en détail ci-dessous.

Connecteurs voie-voie

Pour une connexion directe de voie à voie, nous prenons en charge les types de virage suivants :

U-Turn visualization

Demi-tour en U

Lorsque le rayon de braquage est inférieur à 50 % de la largeur de passage, des demi-tours en U comme celui-ci seront générés pour les voies adjacentes. Il existe une option pour prolonger le segment droit jusqu'à la tournière afin de donner plus de place pour virer et minimiser le compactage.

Perfect U-Turn visualization

Demi-tour en U parfait

Lorsque le rayon de braquage est exactement 50 % de la largeur de passage, des demi-tours en U parfaits comme celui-ci seront générés pour les voies adjacentes, sans segment droit entre les deux.

Bulb Turn visualization

Virage en ampoule

Lorsque le rayon de braquage est supérieur à 50 % de la largeur de passage, un virage en ampoule est utilisé pour connecter deux voies adjacentes. Ce type ne serait utilisé que si un demi-tour en U ne peut pas s'y adapter.

P-Turn visualization

Virage en P

Si la tournière est à un angle aigu par rapport au virage et que le rayon de braquage est suffisamment grand, nous prenons en charge les virages en P pour minimiser la quantité de braquage nécessaire.

Connecteurs voie-tournière

Si une connexion directe n'est pas possible, nous nous connecterons à une tournière proche en effectuant une ou plusieurs traversées de tournière pour relier deux voies. Cela nous permet de créer des chemins entre presque toutes les deux voies du champ entier sans traverser invalablement le champ en dehors d'une zone de tournière.

Arc connector visualization

Connecteurs en arc

Par défaut, nous essayons d'utiliser des connecteurs en arc, qui ont une courbure constante et un rayon de braquage au moins aussi grand que le rayon de braquage minimum. Cela permet une transition douce de la voie vers la tournière sans mouvements brusques. Le virage peut être automatiquement raccourci s'il n'y a pas suffisamment de place pour le compléter sans que le véhicule ne quitte la limite.

Dubins headland connector visualization

Connecteurs Dubins

Si un connecteur en arc échoue, une recherche est effectuée pour connecter un connecteur Dubins à divers points de la tournière dans la direction de déplacement souhaitée, jusqu'à en trouver un valide qui minimise le changement d'angle total.

Fallback connector visualization

Connecteur de secours

En dernier recours, nous créons un connecteur de secours qui relie directement les deux points (soit entre deux voies soit voie-tournière) et apparaît dans l'interface comme une grande ligne rouge. L'utilisateur doit effectuer ce virage manuellement avant de continuer l'itinéraire.

Raccourcissement des virages

Si un virage ne peut pas s'adapter d'une voie à une autre ou vers une tournière sans qu'une partie du véhicule quitte la limite, et si le paramètre "Raccourcir les voies" est activé, le virage sera raccourci, c'est-à-dire qu'il amorcera plus tôt que la fin de la voie pour pouvoir le réaliser. Malheureusement, cela cause une zone manquée, à moins que votre véhicule puisse faire marche arrière avant d'effectuer le virage (les travaux futurs prendront en charge cette fonctionnalité si la demande existe). Si vous remarquez qu'une grande superficie est manquée, vous n'avez probablement pas suffisamment de tournières par rapport au rayon de braquage de votre véhicule et vous devrez peut-être relancer le plan avec davantage de tournières. La feuille de route prévoit de suggérer automatiquement le nombre de tournières en fonction de votre champ et de votre équipement.

Turn shorten visualization

Extension des virages

Dans certaines situations, il peut être souhaitable d'étendre vos virages davantage dans la tournière. Cela peut être activé en basculant le paramètre "Étendre les virages dans les tournières". Si un virage peut s'adapter, il sera étendu de sorte qu'il touche la tournière la plus extérieure. Cela offre plus de place pour virer et se redresser, tout en minimisant le compactage. Les travaux futurs prévoient de se raccrocher toujours aux tournières lorsque possible pour minimiser encore davantage le compactage.

Turn extend visualization

Connexions de tournière raccourcies

Les virages adjacents raccourcis pour s'adapter à la tournière seront convertis en traversées de tournière si possible. Cela peut être activé en basculant "Préférer les connexions de tournière raccourcies". Les travaux futurs prévoient d'activer cela pour toutes les connexions voie-voie.

Shortend dubins without setting

Sans paramètre

Le virage est raccourci pour toucher juste la tournière, mais ne la traverse pas.

Shortend dubins with setting

Avec paramètre

Les connexions sont faites le long de la tournière entre des connecteurs adjacents, minimisant le compactage.

Navigation en tournière

Lorsqu'un virage direct de voie à voie n'est pas possible, la solution de routage passe en mode de navigation en tournière. Des connecteurs des voies vers les tournières sont créés, suivis d'une série de traversées de tournière et de connecteurs entre tournières.

Traversées complètes de tournière

Travaillez automatiquement toutes les tournières de votre champ avec une planification supplémentaire, en trouvant efficacement un chemin aller-retour pour chaque tournière d'un groupe, minimisant la distance non travaillée parcourue tout en préservant la circulation des roues. Notre algorithme peut partir de n'importe quelle voie de départ ou d'arrivée sur la tournière. L'algorithme empêche tout virage susceptible de heurter l'obstacle, garantissant ainsi la sécurité.

Motif extérieur vers intérieur

Les tournières les plus extérieures sont travaillées en premier, en allant vers les plus intérieures.

Motif intérieur vers extérieur

Les tournières les plus intérieures sont traversées en premier, en allant vers l'extérieur.

Traversées complexes multi-trous

Plusieurs trous dans un seul "groupe" sont traversés. La première fois que l'itinéraire rencontre un groupe de tournières, il les travaille toutes, puis tous les virages futurs utilisent les tournières pour naviguer vers d'autres parties du champ. Notez qu'il y a quelques traversées un peu inhabituelles, car nous forçons toujours les connexions de tournière.

Traversées avec passage direct

Même groupe de tournières, mais avec le paramètre "Activer le passage direct en tournière" activé. Remarquez comment cela simplifie les traversées en réduisant la quantité de virages, au prix d'un potentiel compactage accru. Les passages directs en tournière ne seront exécutés que si la largeur du véhicule peut passer sans heurter quoi que ce soit.

Tournières en premier/dernier

Les utilisateurs peuvent spécifier s'ils veulent travailler les tournières extérieures en premier ou en dernier dans l'itinéraire. Si en premier, les passes seront travaillées de l'extérieur vers l'intérieur dans le sens antihoraire, et si en dernier, elles seront travaillées de l'intérieur vers l'extérieur dans le même sens après toutes les voies. La direction de conduite peut également être changée en sens horaire.

Tournières en premier

Tournières travaillées de l'extérieur vers l'intérieur en premier, puis les voies. L'itinéraire se termine sur la dernière voie.

Tournières en dernier

L'itinéraire commence par une voie, toutes les voies sont travaillées, puis les tournières de l'intérieur vers l'extérieur. L'itinéraire se termine sur la tournière.

Préférer la tournière extérieure

Lors des traversées de tournière, l'algorithme se connecte par défaut à la tournière extérieure la plus centrale, car elle offre un bon compromis entre l'espace pour virer et se redresser. Activer "Préférer la tournière la plus extérieure" permettra de se connecter à la tournière la plus extérieure.

Headlands first visualization

Comportement par défaut

Les traversées de tournière se connectent naturellement à la tournière la plus centrale.

Prefer headlands visualization

Virages connectés à la tournière la plus extérieure

Lorsque "Préférer la tournière la plus extérieure" est activé, toutes les traversées de tournière se connectent à la tournière extérieure la plus extérieure si possible.

Direction de tournière

Choisissez la direction dans laquelle vous souhaitez travailler les tournières, soit dans le sens horaire soit dans le sens antihoraire, selon ce qui convient le mieux à votre configuration. Si non spécifié, la direction antihoraire est choisie par défaut pour les tournières extérieures et la direction la mieux adaptée à la situation pour les tournières intérieures. Non exposé dans l'interface pour l'instant, mais disponible dans notre API.

Sens antihoraire (enroulement)

La direction antihoraire vous permet de décharger à droite de votre véhicule

Sens horaire (enroulement inverse)

La direction horaire vous permet de décharger à gauche de votre véhicule

Routage multi-voies internes

Exemple d'une situation complexe où le solveur d'itinéraire trouve un chemin à travers plusieurs tournières, les travaillant ainsi que toutes les voies internes.

Croisillons de tournière

Si un angle est trop aigu sur une tournière ou une voie courbe et que l'objectif est de minimiser la superficie manquée, nous prenons en charge un flux de travail en croisillons : on prolonge les lignes et on les connecte avec un arc qui respecte le rayon de braquage du véhicule. Les travaux futurs prévoient d'étendre encore davantage le virage afin que l'ensemble du véhicule se redresse avant de reculer.

Tournières directrices

Si un changement d'angle dépasse un certain seuil dans une tournière ou une voie courbe, nous le marquons comme nécessitant un lissage. Nous intégrons ensuite intelligemment des cercles avec le rayon de braquage du véhicule de façon à minimiser la superficie manquée entre les passes. Après le lissage, nous obtenons une passe de tournière qui respecte les contraintes de courbure du véhicule et minimise la superficie manquée. Les travaux futurs prévoient une décision plus intelligente entre le lissage et l'utilisation de croisillons dans un coin.

U-Turn visualization

Avant le lissage

Exemples de résultats d'un algorithme de décalage standard. Bien que la couverture soit plus grande, le véhicule ne peut physiquement pas effectuer des virages aussi serrés.

Perfect U-Turn visualization

Après le lissage

Après l'application du lissage. Les virages que l'algorithme n'a pas pu lisser sont convertis en croisillons. Tous les virages lissés respectent le rayon de braquage minimum.

Algorithmes / Motifs

Algorithme par défaut

Par défaut, nous modélisons le problème comme une instance du Problème de routage agricole (ARP), qui est la version agricole du bien connu Problème de routage de véhicules. Il s'agit de ce que l'on appelle NP-difficile, ce qui signifie qu'il n'existe aucun algorithme pouvant résoudre efficacement toutes les instances possibles du problème de manière parfaite. C'est pourquoi nous avons développé un solveur méta-heuristique personnalisé pour résoudre l'ARP, en encodant les standards des producteurs dans la matrice de coûts elle-même, générant un itinéraire capable de naviguer dans les champs les plus complexes en quelques minutes voire secondes.

Notre solveur de routage calcule les distances vers/depuis chaque paire possible de voies dans le champ, en utilisant des itinéraires exacts pour les voies dans à peu près la même zone, et des estimations intelligentes pour les voies du côté opposé du champ. Cela crée ce que l'on appelle une matrice de distances, qui est ensuite fournie à notre solveur propriétaire pour optimiser un chemin qui traverse chaque voie et tournière, tout en minimisant la distance non travaillée. Aucune hypothèse préalable n'est faite sur le motif de travail ; les résultats sont uniquement basés sur les distances calculées entre elles. Cela permet au solveur d'avoir parfois une remarquable prévoyance, en sautant une ou plusieurs voies qui ne sont pas immédiatement évidentes pour un utilisateur, pour ensuite les utiliser afin de sortir efficacement d'une situation dans laquelle une approche traditionnelle l'aurait piégé.

Départ/arrivée par défaut

Le comportement par défaut traverse le champ d'un côté à l'autre, en commençant par le bord droit s'il est défini.

Départ/arrivée personnalisé

Notre algorithme par défaut vous permet également de définir le point de départ et d'arrivée où vous le souhaitez dans le champ.

Éviter de sauter des passes

Lorsqu'activé, le coût de déplacement vers une voie adjacente est divisé par deux. Cela encourage (mais ne force en aucun cas) un motif plus rectiligne, au coût potentiel d'une distance non travaillée supplémentaire, ou dans le cas ci-dessous, d'une plus grande superficie manquée. Dans l'exemple ci-dessous, une autre tournière pourrait être préférable pour que les virages s'adaptent.

Connecteurs adjacents pondérés normalement

Les connexions en haut du champ se rattachent à la tournière en raison du coût inférieur, mais le champ n'est pas exécuté uniformément.

Distance totale : 15,15 km

Superficie manquée : 3,65 ha

Éviter de sauter des passes

Les traversées de tournière sont remplacées par des virages adjacents. En raison du grand rayon de braquage, ce sont des virages en ampoule et, parce qu'il n'y a qu'une seule tournière, ils sont raccourcis de manière significative. L'utilisateur pourrait avoir besoin de planifier deux tournières s'il veut de l'adjacence.

Distance totale : 15,45 km

Superficie manquée : 4,89 ha

Voies continues (Boustrophedon)

Un motif aller-retour prédéfini, partant d'un côté du champ et allant jusqu'à l'autre. Idéal pour les champs simples et ceux avec de petits obstacles.

Si vous remarquez qu'il y a trop de traversées de tournière, nous recommandons d'exécuter notre algorithme par défaut et d'activer "Éviter de sauter des passes". Cela évitera les cas extrêmes de traversées de tournière, au coût de la perte d'uniformité.

Spirale groupée

Un motif prédéfini qui impose toujours au moins un saut de N voies dans un motif d'avancer puis reculer. Fonctionne mieux dans les champs simples et ceux avec de petits obstacles.

Serpent

Le motif serpent couvre le champ en sautant une voie à chaque virage, puis en revenant par les voies non couvertes. Réduit le nombre de virages serrés.

Routage par capacité

Si l'utilisateur spécifie une capacité et un débit pour son véhicule, il peut accéder à nos diverses fonctionnalités de routage par capacité. Actuellement nous avons deux flux de travail distincts pour cela. Le premier est Véhicule unique, qui correspond au type d'itinéraires présenté ci-dessus, sans zone de départ et avec un seul véhicule en activité. L'autre est Multi-véhicules avec capacité, où un ou plusieurs véhicules partent d'une zone de départ et peuvent travailler des voies jusqu'à ce qu'ils atteignent leur capacité, auquel point ils traverseront les tournières jusqu'au dépôt de départ.

Exact

Si activé, l'utilisateur peut voir exactement où il sera à court dans le champ. En survolant un point, on affiche la capacité restante, la superficie totale restant à couvrir et la superficie jusqu'au prochain point.

Début de voie

Si activé, les points de remplissage précédents seront déplacés au début de la voie sur laquelle la réserve s'est épuisée. Cela garantit que le producteur ne tombe pas à court au milieu d'une voie.

Tournière extérieure la plus proche

Similaire au début de voie, mais le point sera repoussé dans l'itinéraire jusqu'à ce qu'il atteigne un côté extérieur du champ, empêchant l'utilisateur de tomber à court au milieu du champ ou près d'un obstacle, garantissant qu'il peut toujours atteindre la zone de départ.

Multi-véhicules avec zone de départ

Actuellement un paramètre expérimental en cours de développement. Les itinéraires peuvent ne pas être bien optimisés et peuvent se comporter de manière étrange voire planter complètement jusqu'à ce que nous les développions davantage.

Si activé, une zone de départ sera déterminée en étendant d'abord la voie médiane dans le champ et en choisissant un point sur la limite qui l'intersecte. L'idée est d'avoir une zone de départ approximativement centrale, mais les travaux futurs prévoient l'option de définir une ou plusieurs zones de départ possibles vers lesquelles revenir. Les zones de départ sont actuellement définies comme un seul point sur la limite.

L'itinéraire commencera et se terminera maintenant à la zone de départ, et lorsque nécessaire, le véhicule effectuera une traversée de tournière pour revenir à la zone de départ pour le remplissage/dépôt. L'optimiseur lui-même prend en compte le coût du retour vers et depuis la zone de départ, ce qui est différent des méthodes ci-dessus qui sont effectuées en post-traitement sur un itinéraire régulier sans capacité. Dans la littérature académique, cela est connu sous le nom de Problème de routage de véhicules avec capacité, ou CVRP.

Expérimental

Une collection de fonctionnalités à venir et expérimentales sur lesquelles l'équipe Verge travaille. N'hésitez pas à nous contacter pour toute question ou recommandation sur ce que vous aimeriez voir ensuite.

Plan de trajectoire par données de journal

En utilisant les données de journal de votre machine, nous pouvons reconstituer le trajet de votre véhicule, permettant la relecture d'itinéraires, l'analyse et bientôt la planification à partir de données de journal. Cela vous permet de couvrir exactement la même zone qu'une opération précédente, ou des fonctionnalités plus complexes comme le semis entre les rangs ou la gestion des rangs manquants. Des algorithmes intelligents utilisent les données de journal pour reconstruire avec précision les voies même lorsque des données sont manquantes.
Nous expérimentons actuellement la prise en charge de John Deere et Trimble PTx FarmENGAGE, mais si vous utilisez un format particulier, nous serions plus que ravis de travailler ensemble pour l'accommoder.

Log data sensors


Reconstitution de voies à partir de données de capteurs

En utilisant les données des capteurs, nous pouvons souvent récupérer la ligne centrale d'origine, même lorsque certains points sont manquants ou ont des lectures incorrectes.

Relecture d'itinéraire avec données réelles

Visualisez et analysez comment votre champ a été travaillé. Les travaux futurs pourraient inclure des analyses détaillées des opérations effectuées, par quelles machines, et des suggestions d'amélioration.

Outils tractés

Un véhicule peut avoir un ou plusieurs outils tractés attachés derrière lui. Nous modélisons actuellement le véhicule principal avec une géométrie de direction Ackermann, le point d'attelage étant à une distance fixe derrière l'essieu arrière de chaque véhicule et outil. Plusieurs outils peuvent être enchaînés, et nous supposons que tous les outils sont non motorisés. Nous exécutons des simulations cinématiques du véhicule parcourant nos virages pour montrer où se trouveront les limites de votre système d'équipement, vous alertant de toute situation dangereuse de sortie du champ. Les travaux futurs incluront l'amélioration des virages pour tenir compte de l'outil tracté, l'optimisation des virages afin de minimiser les contraintes sur l'attelage, et l'intégration de tout cela dans notre algorithme de recherche.

Représentation du champ en grille

Une approche prometteuse souvent utilisée en autonomie consiste à discrétiser la zone de travail sous forme de grille, où un type de recherche connu sous le nom de hybrid A* peut être utilisé pour trouver le chemin directeur le plus court entre deux points quelconques de la grille. Ci-dessous, un exemple d'une partie d'un champ discrétisé de cette manière. Les sections vertes sont des passes de tournière et sont considérées comme préférables pour se déplacer, le marron est un espace de tournière valide, et le rouge est une zone dangereuse qui pourrait faire sortir du champ.

Field grid visualization

Toutes les approches actuelles sont basées sur des méthodes géométriques et peuvent donc avoir du mal à trouver des raccourcis. Un exemple pourrait être la section du bas, où une approche traditionnelle "toujours suivre la tournière" pourrait amener l'utilisateur à contourner inutilement l'obstacle, causant un temps non productif supplémentaire. En exécutant un algorithme de recherche, on peut voir qu'il serait peut-être possible de traverser ici. Cette estimation approximative peut aider à guider une recherche plus fine, validant que votre véhicule ainsi que tous les outils peuvent effectivement emprunter ce raccourci.

Field grid shortcut visualization

Exemple d'un véhicule cherchant un chemin dans un système de grille plus simple. Remarquez comment le planificateur intègre les dimensions du véhicule. Les différents arcs verts et marrons correspondent à des trajectoires possibles que l'algorithme a explorées avant de trouver la solution finale. Les travaux futurs incluent une fonction de pénalisation qui évite de longer les murs de près comme dans cette vidéo, ainsi que diverses améliorations de performance, une préférence pour le déplacement le long des tournières, et l'intégration générale dans notre solution de routage complète.

Plus d'informations sur les cas d'utilisation potentiels et d'autres exemples à venir prochainement.

Options de configuration

Une liste d'options possibles à passer à l'algorithme de routage, avec une brève explication. Pour plus d'informations, veuillez consulter notre documentation API ou nous contacter.

Paramètre Valeurs possibles Explication
Algorithme / Motif d'itinéraire
algorithm
Verge / Continuous Tracks / Clustered Spiral / Snake Nouveau / Greedy Détermine le motif de travail dans le champ
Type de problème
routeProblemType
SingleVehicle / CapacitatedMultiVehicles Le type de problème de routage que nous résolvons, soit un véhicule unique sans zone de départ, soit plusieurs véhicules identiques avec zone de départ
Point de départ
startPointNodeIndex
Positive integer less than 2*trackCount Référence à l'index du nœud d'itinéraire qui spécifie le début de l'itinéraire
Point d'arrivée
endPointNodeIndex
Positive integer less than 2*trackCount Référence à l'index du nœud d'itinéraire qui spécifie la fin de l'itinéraire
Raccourcissement de voies
enableTrackShortening
true / false Active le raccourcissement des voies pour rendre possible les connecteurs de tournière entre nœuds si cela entraînerait sinon des trajectoires invalides (par exemple si le rayon de braquage est trop grand pour tourner vers une tournière). Par défaut : true.
Extension des virages
enableTurnExtending
true / false Active l'extension des virages afin qu'ils essaient de toucher la tournière la plus proche de la limite. Le seuil maximum de déplacement est 1.4*swathWidth*headlandLoopCount, donc dans certains cas une tournière plus proche pourrait être attribuée par défaut. Notez que cela ne forcera pas les traversées de tournière, seulement le fait de toucher au moins un point. Par défaut : false
Passage direct en tournière
enableHeadlandDrivethrough
true / false Si activé, les voies situées de part et d'autre d'une passe de tournière et dans un certain seuil de distance seront forcées comme connecteur droit traversant la tournière, en supposant que le connecteur tamponné n'intersecte pas la limite. Par défaut : false
Préférer l'accrochage à la tournière Nouveau
preferHeadlandLatching
true / false Si activé, tous les virages pour connecter des voies tenteront de s'accrocher à la tournière. Idéal pour CTF ou lorsque le compactage en tournière est une préoccupation. Ne fonctionnera que si le rayon de braquage est inférieur à 50 % de la largeur de passage, c'est-à-dire que les virages en ampoule ne sont pas affectés. Par défaut : true
Ordre des tournières
headlandOrder
OutToIn / InToOut Détermine si les tournières sont effectuées avant ou après les voies intérieures.
headlandsFirst
Headland First
true / false Si activé, les passes de tournière extérieures viennent en premier dans l'itinéraire. Sinon elles viennent après les voies intérieures. Par défaut : true
Préférer la tournière la plus extérieure
attachToOutermostHeadland
true / false Force les connecteurs à s'accrocher à la tournière la plus extérieure lorsque l'espace le permet.
Préférer les connexions de tournière raccourcies
preferShortenedHeadlands
true / false Force les connecteurs devant être raccourcis à s'accrocher à la tournière lorsque l'espace le permet.
Forcer la direction de tournière
forcedDirection
winding / reverseWinding La direction d'enroulement que nous sommes forcés de prendre lors de la connexion à une tournière. Non recommandé car cela réduit les choix de l'algorithme lors de la sélection du meilleur chemin. Null implique aucune direction forcée ; cependant, une direction antihoraire est toujours forcée pour la traversée extérieure initiale.
Éviter de sauter des passes
preferAdjacentConnectors
true / false Si true, définit le coût des connecteurs Dubins adjacents à la moitié de leur coût réel, ce qui amène l'optimiseur à préférer choisir les voies adjacentes, même lorsque cela peut ne pas être bénéfique pour les raisons de distance. Par défaut : true
Points de remplissage
calculateRefillPoints
true / false Détermine si les points de remplissage doivent être calculés le long d'un itinéraire. S'applique uniquement au problème de Véhicule unique. Par défaut : false
Stratégie de remplissage
refillStrategyType
ExactPoint / StartOfTrack / NearestHeadland Sélectionne le flux de remplissage (nœud exact, début de voie ou tournière extérieure la plus proche) décrit dans Routage par capacité.