namespace RobotNet10.GlobalPathPlanner;
///
/// Factory interface for creating path planner instances optimized for different robot types.
/// Each planner type uses algorithms and strategies tailored to the specific kinematics and constraints of the robot.
///
public interface IPathPlannerFactory
{
///
/// Creates a path planner optimized for differential drive robots.
/// Differential drive robots have two independently driven wheels on a common axis.
///
/// An instance of configured for differential drive robots.
IPathPlanner CreateDifferentialPlanner();
///
/// Creates a path planner optimized for forklift robots (version 1).
/// Forklift robots have specific constraints related to their lifting mechanism and turning radius.
///
/// An instance of configured for forklift robots.
IPathPlanner CreateForkliftPlanner();
///
/// Creates an enhanced path planner optimized for forklift robots (version 2).
/// This version uses improved algorithms (SSE A*) for better performance and path quality.
///
/// An instance of configured for forklift robots with enhanced algorithms.
IPathPlanner CreateForkliftPlannerV2();
///
/// Creates a path planner optimized for omni-directional drive robots.
/// Omni-drive robots can move in any direction without changing orientation.
/// Note: Currently uses the same planner as differential drive.
///
/// An instance of configured for omni-directional drive robots.
IPathPlanner CreateOmniDrivePlanner();
}