Skip to main content

Crate embedded_astar

Crate embedded_astar 

Source
Expand description

§embedded-astar

Bibliothèque de recherche de chemin A* no_std pour systèmes embarqués.

Conçue pour les microcontrôleurs et les environnements à ressources limitées, cette crate fournit une implémentation complète d’A* sans allocation sur le tas, reposant uniquement sur des structures de taille fixe allouées sur la pile grâce à heapless.

§Fonctionnalités

  • Compatible no_std — aucun tas, aucun allocateur requis
  • Dimensions configurablesLARGEUR, HAUTEUR et CAPACITE_MAX fixés à la compilation
  • Heuristique de Manhattan — optimale pour les grilles à 4 directions
  • Sécurité mémoire — dépassement de l’open set géré sans panique
  • Zéro code unsafe

§Démarrage rapide

use embedded_astar::{trouver_chemin, Point};

// Grille 8×8 : true = obstacle, false = case libre
// Indexée sous la forme grille[y][x]
let mut grille = [[false; 8]; 8];
grille[1][2] = true; // obstacle en (x=2, y=1)

let depart  = Point::nouveau(0, 0);
let arrivee = Point::nouveau(7, 7);

// Paramètres de type : <LARGEUR, HAUTEUR, CAPACITE_MAX>
if let Some(chemin) = trouver_chemin::<8, 8, 64>(depart, arrivee, &grille) {
    for p in chemin.iter() {
        // utiliser p.x, p.y
    }
}

§Convention de grille

La grille est indexée sous la forme grille[y][x] :

  • true → obstacle (case infranchissable)
  • false → case libre (franchissable)

§Réglage des capacités

Trois génériques constants pilotent l’utilisation mémoire :

ParamètreRôleRecommandation
LARGEURLargeur de la grille (axe X)= largeur de votre carte
HAUTEURHauteur de la grille (axe Y)= hauteur de votre carte
CAPACITE_MAXCapacité de l’open set et du chemin retourné≥ 2 × √(L × H)

Une grille 32×32 fonctionne bien avec CAPACITE_MAX = 128. Une grille 64×64 nécessite CAPACITE_MAX = 256 ou plus.

Structs§

Point
Coordonnée entière 2D sur la grille.

Functions§

trouver_chemin
Exécute l’algorithme A* sur une grille booléenne d’obstacles.