MRPT  1.9.9
PlannerRRT_common.h
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2018, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #pragma once
11 
17 #include <mrpt/graphs/TNodeID.h>
18 #include <string>
19 #include <cstdlib> // size_t
20 
21 namespace mrpt::nav
22 {
23 /** \addtogroup nav_planners Path planning
24 * \ingroup mrpt_nav_grp
25 * @{ */
26 
27 template <typename node_pose_t, typename world_limits_t>
29 {
30  node_pose_t start_pose, goal_pose;
31  /** Bounding box of the world, used to draw uniform random pose samples */
32  world_limits_t world_bbox_min, world_bbox_max;
33  /** World obstacles, as a point cloud */
35 };
36 
37 template <typename tree_t>
39 {
40  /** Whether the target was reached or not */
41  bool success;
42  /** Time spent (in secs) */
44  /** Distance from best found path to goal */
45  double goal_distance;
46  /** Total cost of the best found path (cost ~~ Euclidean distance) */
47  double path_cost;
48  /** The ID of the best target node in the tree */
50  /** The set of target nodes within an acceptable distance to target
51  * (including `best_goal_node_id` and others) */
52  std::set<mrpt::graphs::TNodeID> acceptable_goal_node_ids;
53  /** The generated motion tree that explores free space starting at "start"
54  */
55  tree_t move_tree;
56 
58  : success(false),
60  goal_distance(std::numeric_limits<double>::max()),
61  path_cost(std::numeric_limits<double>::max()),
63  {
64  }
65 };
66 
68 {
69  /** Maximum distance from a pose to target to accept it as a valid solution
70  * (meters). (Both acceptedDistToTarget & acceptedAngToTarget must be
71  * satisfied) */
73  /** Maximum angle from a pose to target to accept it as a valid solution
74  * (rad). (Both acceptedDistToTarget & acceptedAngToTarget must be
75  * satisfied) */
77 
78  /** In seconds. 0 means no limit until a solution is found. */
80  /** In seconds. 0 means the first valid path will be returned. Otherwise,
81  * the algorithm will try to refine and find a better one. */
83 
85  : acceptedDistToTarget(0.1),
87  maxComputationTime(0.0),
89  {
90  }
91 };
92 
94 {
95  /** The robot shape used when computing collisions; it's loaded from the
96  * config file/text as a single 2xN matrix in MATLAB format, first row are
97  * Xs, second are Ys, e.g:
98  * \code
99  * robot_shape = [-0.2 0.2 0.2 -0.2; -0.1 -0.1 0.1 0.1]
100  * \endcode
101  * \note PTGs will use only one of either `robot_shape` or
102  * `robot_shape_circular_radius`
103  */
105  /** The radius of a circular-shape-model of the robot shape.
106  * \note PTGs will use only one of either `robot_shape` or
107  * `robot_shape_circular_radius`
108  */
110 
111  /** (Default: ".") */
113 
114  /** Probabily of picking the goal as random target (in [0,1], default=0.05)
115  */
116  double goalBias;
117  /** (Very sensitive parameter!) Max length of each edge path (in meters,
118  * default=1.0) */
119  double maxLength;
120  /** Minimum distance [meters] to nearest node to accept creating a new one
121  * (default=0.10). (Any of minDistanceBetweenNewNodes and
122  * minAngBetweenNewNodes must be satisfied) */
124  /** Minimum angle [rad] to nearest node to accept creating a new one
125  * (default=15 deg) (Any of minDistanceBetweenNewNodes and
126  * minAngBetweenNewNodes must be satisfied) */
128  /** Display PTG construction info (default=true) */
130 
131  /** Frequency (in iters) of saving tree state to debug log files viewable in
132  * SceneViewer3D (default=0, disabled) */
134 
136 };
137 
138 /** Virtual base class for TP-Space-based path planners */
140 {
141  public:
143  /** Parameters specific to this path solver algorithm */
145 
146  /** ctor */
148 
150  const mrpt::nav::TListPTGPtr& getPTGs() const { return m_PTGs; }
151  /** Options for renderMoveTree() */
153  {
154  /** Highlight the path from root towards this node (usually, the target)
155  */
157  /** (Default=1) Draw one out of N vehicle shapes along the highlighted
158  * path */
160 
165 
166  /** A scale factor to all XYZ corners (default=0, means auto determien
167  * from vehicle shape) */
169  /** (Default=false) */
171  /** (Default=10 meters) Set to 0 to disable */
173 
174  /** Robot color */
176  /** obstacles color */
178  /** local obstacles color */
180  /** START indication color */
182  /** END indication color */
193 
194  /** (Default=0.01) Height (Z coordinate) for the vehicle shapes. Helps
195  * making it in the "first plane" */
197  /** Robot line width for visualization - default 2.0 */
199  /** (Default=true) */
201 
205 
209  x_rand_pose(NULL),
210  x_nearest_pose(NULL),
212  new_state(NULL),
213  xyzcorners_scale(0),
216  color_vehicle(0xFF, 0x00, 0x00, 0xFF),
217  color_obstacles(0x00, 0x00, 0xFF, 0x40),
218  color_local_obstacles(0x00, 0x00, 0xFF),
219  color_start(0x00, 0x00, 0x00, 0x00),
220  color_goal(0x00, 0x00, 0x00, 0x00),
221  color_ground_xy_grid(0xFF, 0xFF, 0xFF),
222  color_normal_edge(0x22, 0x22, 0x22, 0x40),
223  color_last_edge(0xff, 0xff, 0x00),
224  color_optimal_edge(0x00, 0x00, 0x00),
225  width_last_edge(3.f),
226  width_normal_edge(1.f),
227  width_optimal_edge(4.f),
230  vehicle_shape_z(0.01),
231  vehicle_line_width(2.0),
232  draw_obstacles(true),
233  log_msg_position(0, 0, 0),
234  log_msg_scale(0.2)
235  {
236  }
237 
239  };
240 
241  template <typename node_pose_t, typename world_limits_t, typename tree_t>
242  void renderMoveTree(
245  const TPlannerResultTempl<tree_t>& result,
246  const TRenderPlannedPathOptions& options);
247 
248  protected:
252  mrpt::maps::CSimplePointsMap m_local_obs; // Temporary map. Defined as a
253  // member to save realloc time
254  // between calls
255 
256  /** Load all PTG params from a config file source */
258  const mrpt::config::CConfigFileBase& cfgSource,
259  const std::string& sSectionName = std::string("PTG_CONFIG"));
260 
261  /** Must be called after setting all params (see
262  * `internal_loadConfig_PTG()`) and before calling `solve()` */
264 
266  const mrpt::maps::CPointsMap& in_map, mrpt::maps::CPointsMap& out_map,
267  const mrpt::poses::CPose2D& asSeenFrom, const double MAX_DIST_XY);
268 
269  void spaceTransformer(
270  const mrpt::maps::CSimplePointsMap& in_obstacles,
272  const double MAX_DIST, std::vector<double>& out_TPObstacles);
273 
275  const int tp_space_k_direction,
276  const mrpt::maps::CSimplePointsMap& in_obstacles,
278  const double MAX_DIST, double& out_TPObstacle_k);
279 
280 }; // end class PlannerTPS_VirtualBase
281 /** @} */
282 }
283 #include "impl_renderMoveTree.h"
284 
285 
double minComputationTime
In seconds.
double vehicle_shape_z
(Default=0.01) Height (Z coordinate) for the vehicle shapes.
double minDistanceBetweenNewNodes
Minimum distance [meters] to nearest node to accept creating a new one (default=0.10).
void internal_loadConfig_PTG(const mrpt::config::CConfigFileBase &cfgSource, const std::string &sSectionName=std::string("PTG_CONFIG"))
Load all PTG params from a config file source.
std::set< mrpt::graphs::TNodeID > acceptable_goal_node_ids
The set of target nodes within an acceptable distance to target (including best_goal_node_id and othe...
mrpt::graphs::TNodeID best_goal_node_id
The ID of the best target node in the tree.
mrpt::system::CTimeLogger m_timelogger
double DEG2RAD(const double x)
Degrees to radians.
double maxLength
(Very sensitive parameter!) Max length of each edge path (in meters, default=1.0) ...
double minAngBetweenNewNodes
Minimum angle [rad] to nearest node to accept creating a new one (default=15 deg) (Any of minDistance...
void spaceTransformerOneDirectionOnly(const int tp_space_k_direction, const mrpt::maps::CSimplePointsMap &in_obstacles, const mrpt::nav::CParameterizedTrajectoryGenerator *in_PTG, const double MAX_DIST, double &out_TPObstacle_k)
void spaceTransformer(const mrpt::maps::CSimplePointsMap &in_obstacles, const mrpt::nav::CParameterizedTrajectoryGenerator *in_PTG, const double MAX_DIST, std::vector< double > &out_TPObstacles)
world_limits_t world_bbox_min
Bounding box of the world, used to draw uniform random pose samples.
A cloud of points in 2D or 3D, which can be built from a sequence of laser scans. ...
STL namespace.
size_t save_3d_log_freq
Frequency (in iters) of saving tree state to debug log files viewable in SceneViewer3D (default=0...
double xyzcorners_scale
A scale factor to all XYZ corners (default=0, means auto determien from vehicle shape) ...
double acceptedAngToTarget
Maximum angle from a pose to target to accept it as a valid solution (rad).
#define MAX_DIST(s)
Definition: deflate.h:285
mrpt::img::TColor color_start
START indication color.
double robot_shape_circular_radius
The radius of a circular-shape-model of the robot shape.
std::vector< mrpt::nav::CParameterizedTrajectoryGenerator::Ptr > TListPTGPtr
A list of PTGs (smart pointers)
A cloud of points in 2D or 3D, which can be built from a sequence of laser scans or other sensors...
Definition: CPointsMap.h:64
This is the base class for any user-defined PTG.
This class allows loading and storing values and vectors of different types from a configuration text...
bool success
Whether the target was reached or not.
Virtual base class for TP-Space-based path planners.
double vehicle_line_width
Robot line width for visualization - default 2.0.
const mrpt::nav::TListPTGPtr & getPTGs() const
double acceptedDistToTarget
Maximum distance from a pose to target to accept it as a valid solution (meters). ...
GLsizei const GLchar ** string
Definition: glext.h:4101
double ground_xy_grid_frequency
(Default=10 meters) Set to 0 to disable
double path_cost
Total cost of the best found path (cost ~~ Euclidean distance)
void internal_initialize_PTG()
Must be called after setting all params (see internal_loadConfig_PTG()) and before calling solve() ...
double maxComputationTime
In seconds.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
mrpt::maps::CSimplePointsMap obstacles_points
World obstacles, as a point cloud.
RRTAlgorithmParams params
Parameters specific to this path solver algorithm.
double goal_distance
Distance from best found path to goal.
double computation_time
Time spent (in secs)
static void transformPointcloudWithSquareClipping(const mrpt::maps::CPointsMap &in_map, mrpt::maps::CPointsMap &out_map, const mrpt::poses::CPose2D &asSeenFrom, const double MAX_DIST_XY)
A versatile "profiler" that logs the time spent within each pair of calls to enter(X)-leave(X), among other stats.
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle...
Definition: CPose2D.h:38
mrpt::maps::CSimplePointsMap m_local_obs
bool ptg_verbose
Display PTG construction info (default=true)
This class allows the user to create, load, save, and render 3D scenes using OpenGL primitives...
Definition: COpenGLScene.h:59
uint64_t TNodeID
A generic numeric type for unique IDs of nodes or entities.
Definition: TNodeID.h:16
size_t draw_shape_decimation
(Default=1) Draw one out of N vehicle shapes along the highlighted path
mrpt::math::TPolygon2D robot_shape
The robot shape used when computing collisions; it&#39;s loaded from the config file/text as a single 2xN...
double goalBias
Probabily of picking the goal as random target (in [0,1], default=0.05)
#define INVALID_NODEID
Definition: TNodeID.h:19
mrpt::system::CTimeLogger & getProfiler()
A RGB color - 8bit.
Definition: TColor.h:20
mrpt::graphs::TNodeID highlight_path_to_node_id
Highlight the path from root towards this node (usually, the target)
void renderMoveTree(mrpt::opengl::COpenGLScene &scene, const TPlannerInputTempl< node_pose_t, world_limits_t > &pi, const TPlannerResultTempl< tree_t > &result, const TRenderPlannedPathOptions &options)
Lightweight 3D point.
std::string ptg_cache_files_directory
(Default: ".")
2D polygon, inheriting from std::vector<TPoint2D>.
mrpt::img::TColor color_local_obstacles
local obstacles color
tree_t move_tree
The generated motion tree that explores free space starting at "start".



Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 7d5e6d718 Fri Aug 24 01:51:28 2018 +0200 at lun nov 2 08:35:50 CET 2020