class mrpt::nav::PlannerRRT_SE2_TPS

Overview

TP Space-based RRT path planning for SE(2) (planar) robots.

This planner algorithm is described in the paper:

  • M. Bellone, J.L. Blanco, A. Gimenez, “TP-Space RRT: Kinematic path planning of non-holonomic any-shape vehicles”, International Journal of Advanced Robotic Systems, 2015.

Typical usage:

mrpt::nav::PlannerRRT_SE2_TPS  planner;

// Set or load planner parameters:
//planner.loadConfig( mrpt::config::CConfigFile("config_file.cfg") );
//planner.params.... // See RRTAlgorithmParams

// Set RRT end criteria (when to stop searching for a solution)
//planner.end_criteria.... // See RRTEndCriteria

planner.initialize();  // Initialize after setting the algorithm parameters

// Set up planning problem:
PlannerRRT_SE2_TPS::TPlannerResult planner_result;
PlannerRRT_SE2_TPS::TPlannerInput planner_input;
// Start & goal:
planner_input.start_pose = mrpt::math::TPose2D(XXX,XXX,XXX);
planner_input.goal_pose  = mrpt::math::TPose2D(XXX,XXX,XXX);
// Set obtacles: (...)
// planner_input.obstacles_points ...
// Set workspace bounding box for picking random poses in the RRT algorithm:
planner_input.world_bbox_min = mrpt::math::TPoint2D(XX,YY);
planner_input.world_bbox_max = mrpt::math::TPoint2D(XX,YY);
// Do path planning:
planner.solve( planner_input, planner_result);
// Analyze contents of planner_result...
  • Changes history:

    • 06/MAR/2014: Creation (MB)

    • 06/JAN/2015: Refactoring (JLBC)

Todo Factorize into more generic path planner classes! //template <class POSE, class MOTIONS>…

#include <mrpt/nav/planners/PlannerRRT_SE2_TPS.h>

class PlannerRRT_SE2_TPS: public mrpt::nav::PlannerTPS_VirtualBase
{
public:
    // typedefs

    typedef mrpt::math::TPose2D node_pose_t;

    // structs

    struct TPlannerInput;
    struct TPlannerResult;

    // fields

    RRTAlgorithmParams params;

    // construction

    PlannerRRT_SE2_TPS();

    // methods

    void loadConfig(
        const mrpt::config::CConfigFileBase& cfgSource,
        const std::string& sSectionName = std::string("PTG_CONFIG")
        );

    void initialize();
    void solve(const TPlannerInput& pi, TPlannerResult& result);
};

Inherited Members

public:
    // structs

    struct TRenderPlannedPathOptions;

    // fields

    RRTEndCriteria end_criteria;

    // methods

    mrpt::system::CTimeLogger& getProfiler();
    const mrpt::nav::TListPTGPtr& getPTGs() const;

    template <typename node_pose_t, typename world_limits_t, typename tree_t>
    void renderMoveTree(
        mrpt::opengl::Scene& scene,
        const TPlannerInputTempl<node_pose_t, world_limits_t>& pi,
        const TPlannerResultTempl<tree_t>& result,
        const TRenderPlannedPathOptions& options
        );

Typedefs

typedef mrpt::math::TPose2D node_pose_t

The type of poses at nodes.

Fields

RRTAlgorithmParams params

Parameters specific to this path solver algorithm.

Construction

PlannerRRT_SE2_TPS()

Constructor.

Methods

void loadConfig(
    const mrpt::config::CConfigFileBase& cfgSource,
    const std::string& sSectionName = std::string("PTG_CONFIG")
    )

Load all params from a config file source.

void initialize()

Must be called after setting all params (see loadConfig()) and before calling solve()

void solve(const TPlannerInput& pi, TPlannerResult& result)

The main API entry point: tries to find a planned path from ‘goal’ to ‘target’.