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};