scirs2_spatial/pathplanning/
mod.rs

1//! Path planning algorithms
2//!
3//! This module provides various path planning algorithms for finding optimal
4//! paths in 2D and 3D space. These algorithms are useful for robotics, game
5//! development, logistics, and any application that requires navigating through
6//! environments with obstacles.
7//!
8//! The available algorithms include:
9//!
10//! - A* search: An efficient, best-first search algorithm that uses a heuristic
11//!   to guide the search towards the goal. Guarantees the optimal path if the
12//!   heuristic is admissible.
13//!
14//! - RRT (Rapidly-exploring Random Tree): A sampling-based algorithm that
15//!   efficiently explores high-dimensional spaces by incrementally building a
16//!   space-filling tree.
17//!
18//! - Visibility graphs: A graph-based approach that connects visible vertices
19//!   of obstacles, providing optimal paths in 2D polygonal environments.
20//!
21//! - Probabilistic roadmaps (PRM): A sampling-based method that constructs a roadmap
22//!   of the free configuration space, then uses graph search to find paths.
23//!
24//! - Potential fields: A reactive approach that uses artificial potential
25//!   fields to guide the agent towards the goal while avoiding obstacles.
26//!
27//! - Dubins paths: Shortest paths for vehicles with minimum turning radius constraint
28//!   (forward motion only).
29//!
30//! - Reeds-Shepp paths: Shortest paths for vehicles with minimum turning radius
31//!   constraint that can move both forward and backward.
32//!
33//! - Trajectory optimization: Smooth trajectory generation with kinematic and
34//!   dynamic constraints.
35
36// Re-export public modules
37pub mod astar;
38pub mod dubins;
39pub mod potentialfield;
40pub mod prm;
41pub mod reedshepp;
42pub mod rrt;
43pub mod trajectory;
44pub mod visibility;
45
46// Re-export key types and functions
47pub use astar::{
48    AStarPlanner, ContinuousAStarPlanner, GridAStarPlanner, HashableFloat2D, Node, Path,
49};
50pub use dubins::{DubinsPath, DubinsPathType, DubinsPlanner, DubinsSegment, Pose2D, SegmentType};
51pub use potentialfield::{
52    CircularObstacle, Obstacle, PolygonObstacle, PotentialConfig, PotentialField2DPlanner,
53    PotentialFieldPlanner,
54};
55pub use prm::{PRM2DPlanner, PRMConfig, PRMPlanner};
56pub use reedshepp::{
57    Motion, ReedsSheppPath, ReedsSheppPathType, ReedsSheppPlanner, ReedsSheppSegment, Turn,
58};
59pub use rrt::{RRT2DPlanner, RRTConfig, RRTPlanner};
60pub use trajectory::{
61    CircularObstacle as TrajectoryObstacle, OptimizationMethod, Trajectory, TrajectoryConstraints,
62    TrajectoryOptimizer, TrajectoryPoint,
63};
64pub use visibility::{Point2D, VisibilityGraphPlanner};