homotopy_class_planner.h
Go to the documentation of this file.
1 /*********************************************************************
2  *
3  * Software License Agreement (BSD License)
4  *
5  * Copyright (c) 2016,
6  * TU Dortmund - Institute of Control Theory and Systems Engineering.
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * * Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  * * Redistributions in binary form must reproduce the above
16  * copyright notice, this list of conditions and the following
17  * disclaimer in the documentation and/or other materials provided
18  * with the distribution.
19  * * Neither the name of the institute nor the names of its
20  * contributors may be used to endorse or promote products derived
21  * from this software without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34  * POSSIBILITY OF SUCH DAMAGE.
35  *
36  * Author: Christoph Rösmann
37  *********************************************************************/
38 
39 #ifndef HOMOTOPY_CLASS_PLANNER_H_
40 #define HOMOTOPY_CLASS_PLANNER_H_
41 
42 #include <math.h>
43 #include <algorithm>
44 #include <functional>
45 #include <vector>
46 #include <iterator>
47 #include <random>
48 
49 #include <boost/shared_ptr.hpp>
50 
51 #include <visualization_msgs/Marker.h>
52 #include <geometry_msgs/Point.h>
53 #include <std_msgs/ColorRGBA.h>
54 
55 #include <ros/console.h>
56 #include <ros/ros.h>
57 
66 
67 
68 namespace teb_local_planner
69 {
70 
72 inline std::complex<long double> getCplxFromVertexPosePtr(const VertexPose* pose)
73 {
74  return std::complex<long double>(pose->x(), pose->y());
75 };
76 
77 
79 inline std::complex<long double> getCplxFromMsgPoseStamped(const geometry_msgs::PoseStamped& pose)
80 {
81  return std::complex<long double>(pose.pose.position.x, pose.pose.position.y);
82 };
83 
109 {
110 public:
111 
112  using EquivalenceClassContainer = std::vector< std::pair<EquivalenceClassPtr, bool> >;
113 
118 
127  TebVisualizationPtr visualization = TebVisualizationPtr(), const ViaPointContainer* via_points = NULL);
128 
132  virtual ~HomotopyClassPlanner();
133 
141  void initialize(const TebConfig& cfg, ObstContainer* obstacles = NULL,
142  TebVisualizationPtr visualization = TebVisualizationPtr(), const ViaPointContainer* via_points = NULL);
143 
144 
147 
160  virtual bool plan(const std::vector<geometry_msgs::PoseStamped>& initial_plan, const geometry_msgs::Twist* start_vel = NULL, bool free_goal_vel=false);
161 
173  virtual bool plan(const tf::Pose& start, const tf::Pose& goal, const geometry_msgs::Twist* start_vel = NULL, bool free_goal_vel=false);
174 
186  virtual bool plan(const PoseSE2& start, const PoseSE2& goal, const geometry_msgs::Twist* start_vel = NULL, bool free_goal_vel=false);
187 
197  virtual bool getVelocityCommand(double& vx, double& vy, double& omega, int look_ahead_poses) const;
198 
207  TebOptimalPlannerPtr bestTeb() const {return tebs_.empty() ? TebOptimalPlannerPtr() : tebs_.size()==1 ? tebs_.front() : best_teb_;}
208 
222  virtual bool isTrajectoryFeasible(base_local_planner::CostmapModel* costmap_model, const std::vector<geometry_msgs::Point>& footprint_spec,
223  double inscribed_radius = 0.0, double circumscribed_radius=0.0, int look_ahead_idx=-1, double feasibility_check_lookahead_distance=-1.0);
224 
232 
238  TebOptPlannerContainer::iterator removeTeb(TebOptimalPlannerPtr& teb);
239 
241 
244 
250  void setVisualization(TebVisualizationPtr visualization);
251 
258  virtual void visualize();
259 
261 
264 
265 
282  void exploreEquivalenceClassesAndInitTebs(const PoseSE2& start, const PoseSE2& goal, double dist_to_obst, const geometry_msgs::Twist* start_vel, bool free_goal_vel = false);
283 
299  template<typename BidirIter, typename Fun>
300  TebOptimalPlannerPtr addAndInitNewTeb(BidirIter path_start, BidirIter path_end, Fun fun_position, double start_orientation, double goal_orientation, const geometry_msgs::Twist* start_velocity, bool free_goal_vel = false);
301 
310  TebOptimalPlannerPtr addAndInitNewTeb(const PoseSE2& start, const PoseSE2& goal, const geometry_msgs::Twist* start_velocity, bool free_goal_vel = false);
311 
319  TebOptimalPlannerPtr addAndInitNewTeb(const std::vector<geometry_msgs::PoseStamped>& initial_plan, const geometry_msgs::Twist* start_velocity, bool free_goal_vel = false);
320 
327  void updateAllTEBs(const PoseSE2* start, const PoseSE2* goal, const geometry_msgs::Twist* start_velocity);
328 
329 
337  void optimizeAllTEBs(int iter_innerloop, int iter_outerloop);
338 
344 
353 
355 
361  virtual void clearPlanner() {clearGraph(); equivalence_classes_.clear(); tebs_.clear(); initial_plan_ = NULL;}
362 
363 
372  virtual void setPreferredTurningDir(RotType dir);
373 
387  template<typename BidirIter, typename Fun>
388  EquivalenceClassPtr calculateEquivalenceClass(BidirIter path_start, BidirIter path_end, Fun fun_cplx_point, const ObstContainer* obstacles = NULL,
389  boost::optional<TimeDiffSequence::iterator> timediff_start = boost::none, boost::optional<TimeDiffSequence::iterator> timediff_end = boost::none);
390 
395  const TebOptPlannerContainer& getTrajectoryContainer() const {return tebs_;}
396 
397  bool hasDiverged() const override;
398 
407  virtual void computeCurrentCost(std::vector<double>& cost, double obst_cost_scale=1.0, double viapoint_cost_scale=1.0, bool alternative_time_cost=false);
408 
415  inline static bool isHSignatureSimilar(const std::complex<long double>& h1, const std::complex<long double>& h2, double threshold)
416  {
417  double diff_real = std::abs(h2.real() - h1.real());
418  double diff_imag = std::abs(h2.imag() - h1.imag());
419  if (diff_real<=threshold && diff_imag<=threshold)
420  return true; // Found! Homotopy class already exists, therefore nothing added
421  return false;
422  }
430  void deletePlansDetouringBackwards(const double orient_threshold, const double len_orientation_vector);
440  bool computeStartOrientation(const TebOptimalPlannerPtr plan, const double len_orientation_vector, double& orientation);
441 
442 
447  const TebConfig* config() const {return cfg_;}
448 
453  const ObstContainer* obstacles() const {return obstacles_;}
454 
458  bool isInitialized() const {return initialized_;}
459 
463  void clearGraph() {if(graph_search_) graph_search_->clearGraph();}
464 
470  int bestTebIdx() const;
471 
472 
479  bool addEquivalenceClassIfNew(const EquivalenceClassPtr& eq_class, bool lock=false);
480 
486 
487  bool isInBestTebClass(const EquivalenceClassPtr& eq_class) const;
488 
489  int numTebsInClass(const EquivalenceClassPtr& eq_class) const;
490 
491  int numTebsInBestTebClass() const;
492 
504  void randomlyDropTebs();
505 
506 protected:
507 
510 
516  bool hasEquivalenceClass(const EquivalenceClassPtr& eq_class) const;
517 
518 
528  void renewAndAnalyzeOldTebs(bool delete_detours);
529 
538  void updateReferenceTrajectoryViaPoints(bool all_trajectories);
539 
541 
542 
543  // external objects (store weak pointers)
544  const TebConfig* cfg_;
547 
548  // internal objects (memory management owned)
552 
553  const std::vector<geometry_msgs::PoseStamped>* initial_plan_;
556 
558 
560  // The second parameter denotes whether to exclude the class from detour deletion or not (true: force keeping).
561 
563 
565 
566  std::default_random_engine random_;
567  bool initialized_;
568 
570 
571 
572 
573 public:
574  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
575 
576 
577 };
578 
581 
582 
583 } // namespace teb_local_planner
584 
585 // include template implementations / definitions
587 
588 #endif /* HOMOTOPY_CLASS_PLANNER_H_ */
teb_local_planner::HomotopyClassPlanner::obstacles
const ObstContainer * obstacles() const
Access current obstacle container (read-only)
Definition: homotopy_class_planner.h:489
teb_local_planner::HomotopyClassPlanner::addEquivalenceClassIfNew
bool addEquivalenceClassIfNew(const EquivalenceClassPtr &eq_class, bool lock=false)
Internal helper function that adds a new equivalence class to the list of known classes only if it is...
Definition: homotopy_class_planner.cpp:225
cmd_vel_to_ackermann_drive.Twist
Twist
Definition: cmd_vel_to_ackermann_drive.py:56
teb_local_planner::HomotopyClassPlanner::config
const TebConfig * config() const
Access config (read-only)
Definition: homotopy_class_planner.h:483
teb_local_planner::HomotopyClassPlanner::getVelocityCommand
virtual bool getVelocityCommand(double &vx, double &vy, double &omega, int look_ahead_poses) const
Get the velocity command from a previously optimized plan to control the robot at the current samplin...
Definition: homotopy_class_planner.cpp:163
teb_local_planner::HomotopyClassPlanner::isInBestTebClass
bool isInBestTebClass(const EquivalenceClassPtr &eq_class) const
Definition: homotopy_class_planner.cpp:423
teb_local_planner::HomotopyClassPlanner::bestTeb
TebOptimalPlannerPtr bestTeb() const
Access current best trajectory candidate (that relates to the "best" homotopy class).
Definition: homotopy_class_planner.h:243
boost::shared_ptr< TebVisualization >
via_points
ViaPointContainer via_points
Definition: test_optim_node.cpp:55
teb_local_planner::HomotopyClassPlanner::visualize
virtual void visualize()
Publish the local plan, pose sequence and additional information via ros topics (e....
Definition: homotopy_class_planner.cpp:180
teb_local_planner::HomotopyClassPlanner::isTrajectoryFeasible
virtual bool isTrajectoryFeasible(base_local_planner::CostmapModel *costmap_model, const std::vector< geometry_msgs::Point > &footprint_spec, double inscribed_radius=0.0, double circumscribed_radius=0.0, int look_ahead_idx=-1, double feasibility_check_lookahead_distance=-1.0)
Check whether the planned trajectory is feasible or not.
Definition: homotopy_class_planner.cpp:722
teb_local_planner::HomotopyClassPlanner::computeCurrentCost
virtual void computeCurrentCost(std::vector< double > &cost, double obst_cost_scale=1.0, double viapoint_cost_scale=1.0, bool alternative_time_cost=false)
Definition: homotopy_class_planner.cpp:794
teb_local_planner::HomotopyClassPlanner::via_points_
const ViaPointContainer * via_points_
Store the current list of via-points.
Definition: homotopy_class_planner.h:582
equivalence_relations.h
ros.h
teb_local_planner::HomotopyClassPlanner::initial_plan_
const std::vector< geometry_msgs::PoseStamped > * initial_plan_
Store the initial plan if available for a better trajectory initialization.
Definition: homotopy_class_planner.h:589
teb_local_planner::HomotopyClassPlanner::EquivalenceClassContainer
std::vector< std::pair< EquivalenceClassPtr, bool > > EquivalenceClassContainer
Definition: homotopy_class_planner.h:148
teb_local_planner::HomotopyClassPlanner::last_eq_class_switching_time_
ros::Time last_eq_class_switching_time_
Store the time at which the equivalence class changed recently.
Definition: homotopy_class_planner.h:600
teb_local_planner::HomotopyClassPlanner::obstacles_
ObstContainer * obstacles_
Store obstacles that are relevant for planning.
Definition: homotopy_class_planner.h:581
teb_local_planner::getCplxFromMsgPoseStamped
std::complex< long double > getCplxFromMsgPoseStamped(const geometry_msgs::PoseStamped &pose)
Inline function used for calculateHSignature() in combination with geometry_msgs::PoseStamped.
Definition: homotopy_class_planner.h:115
teb_local_planner::HomotopyClassPlanner::hasDiverged
bool hasDiverged() const override
Returns true if the planner has diverged.
Definition: homotopy_class_planner.cpp:785
teb_local_planner::HomotopyClassPlanner::numTebsInBestTebClass
int numTebsInBestTebClass() const
Definition: homotopy_class_planner.cpp:442
teb_local_planner::HomotopyClassPlanner::getEquivalenceClassRef
const EquivalenceClassContainer & getEquivalenceClassRef() const
Return the current set of equivalence erelations (read-only)
Definition: homotopy_class_planner.h:521
teb_local_planner::HomotopyClassPlanner::addAndInitNewTeb
TebOptimalPlannerPtr addAndInitNewTeb(BidirIter path_start, BidirIter path_end, Fun fun_position, double start_orientation, double goal_orientation, const geometry_msgs::Twist *start_velocity, bool free_goal_vel=false)
Add a new Teb to the internal trajectory container, if this teb constitutes a new equivalence class....
Definition: homotopy_class_planner.hpp:102
teb_local_planner::HomotopyClassPlanner::initial_plan_eq_class_
EquivalenceClassPtr initial_plan_eq_class_
Store the equivalence class of the initial plan.
Definition: homotopy_class_planner.h:590
teb_local_planner::HomotopyClassPlanner::initialize
void initialize(const TebConfig &cfg, ObstContainer *obstacles=NULL, TebVisualizationPtr visualization=TebVisualizationPtr(), const ViaPointContainer *via_points=NULL)
Initialize the HomotopyClassPlanner.
Definition: homotopy_class_planner.cpp:96
teb_local_planner::HomotopyClassPlanner::isHSignatureSimilar
static bool isHSignatureSimilar(const std::complex< long double > &h1, const std::complex< long double > &h2, double threshold)
Check if two h-signatures are similar (w.r.t. a certain threshold)
Definition: homotopy_class_planner.h:451
teb_local_planner::RotType
RotType
Symbols for left/none/right rotations
Definition: misc.h:89
teb_local_planner::HomotopyClassPlanner::getInitialPlanTEB
TebOptimalPlannerPtr getInitialPlanTEB()
Returns a shared pointer to the TEB related to the initial plan.
Definition: homotopy_class_planner.cpp:531
teb_local_planner::HomotopyClassPlanner::visualization_
TebVisualizationPtr visualization_
Instance of the visualization class (local/global plan, obstacles, ...)
Definition: homotopy_class_planner.h:585
console.h
teb_local_planner::TebOptimalPlannerPtr
boost::shared_ptr< TebOptimalPlanner > TebOptimalPlannerPtr
Abbrev. for shared instances of the TebOptimalPlanner.
Definition: optimal_planner.h:734
base_local_planner::CostmapModel
teb_local_planner::HomotopyClassPlanner::computeStartOrientation
bool computeStartOrientation(const TebOptimalPlannerPtr plan, const double len_orientation_vector, double &orientation)
Given a plan, computes its start orientation using a vector of length >= len_orientation_vector start...
Definition: homotopy_class_planner.cpp:855
teb_local_planner::HomotopyClassPlanner::calculateEquivalenceClass
EquivalenceClassPtr calculateEquivalenceClass(BidirIter path_start, BidirIter path_end, Fun fun_cplx_point, const ObstContainer *obstacles=NULL, boost::optional< TimeDiffSequence::iterator > timediff_start=boost::none, boost::optional< TimeDiffSequence::iterator > timediff_end=boost::none)
Calculate the equivalence class of a path.
Definition: homotopy_class_planner.hpp:83
obstacles.h
teb_local_planner::HomotopyClassPlanner::plan
virtual bool plan(const std::vector< geometry_msgs::PoseStamped > &initial_plan, const geometry_msgs::Twist *start_vel=NULL, bool free_goal_vel=false)
Plan a trajectory based on an initial reference plan.
Definition: homotopy_class_planner.cpp:121
teb_local_planner::HomotopyClassPlanner::last_best_teb_
TebOptimalPlannerPtr last_best_teb_
Points to the plan used in the previous control cycle.
Definition: homotopy_class_planner.h:605
teb_config.h
teb_local_planner::HomotopyClassPlanner::random_
std::default_random_engine random_
Definition: homotopy_class_planner.h:602
teb_local_planner::ObstContainer
std::vector< ObstaclePtr > ObstContainer
Abbrev. for containers storing multiple obstacles.
Definition: obstacles.h:333
planner_interface.h
robot_footprint_model.h
teb_local_planner::getCplxFromVertexPosePtr
std::complex< long double > getCplxFromVertexPosePtr(const VertexPose *pose)
< Inline function used for calculateHSignature() in combination with VertexPose pointers
Definition: homotopy_class_planner.h:108
teb_local_planner::HomotopyClassPlanner::selectBestTeb
TebOptimalPlannerPtr selectBestTeb()
In case of multiple, internally stored, alternative trajectories, select the best one according to th...
Definition: homotopy_class_planner.cpp:600
teb_local_planner::HomotopyClassPlanner::clearPlanner
virtual void clearPlanner()
Reset the planner.
Definition: homotopy_class_planner.h:397
teb_local_planner::HomotopyClassPlanner::hasEquivalenceClass
bool hasEquivalenceClass(const EquivalenceClassPtr &eq_class) const
Check if a h-signature exists already.
Definition: homotopy_class_planner.cpp:214
teb_local_planner::TebVisualizationPtr
boost::shared_ptr< TebVisualization > TebVisualizationPtr
Abbrev. for shared instances of the TebVisualization.
Definition: visualization.h:311
teb_local_planner::HomotopyClassPlanner::deletePlansDetouringBackwards
void deletePlansDetouringBackwards(const double orient_threshold, const double len_orientation_vector)
Checks if the orientation of the computed trajectories differs from that of the best plan of more tha...
Definition: homotopy_class_planner.cpp:802
teb_local_planner::EquivalenceClassPtr
boost::shared_ptr< EquivalenceClass > EquivalenceClassPtr
Definition: equivalence_relations.h:133
tf::Transform
teb_local_planner::HomotopyClassPlanner::updateAllTEBs
void updateAllTEBs(const PoseSE2 *start, const PoseSE2 *goal, const geometry_msgs::Twist *start_velocity)
Update TEBs with new pose, goal and current velocity.
Definition: homotopy_class_planner.cpp:479
teb_local_planner::HomotopyClassPlanner::initialized_
bool initialized_
Keeps track about the correct initialization of this class.
Definition: homotopy_class_planner.h:603
teb_local_planner::PlannerInterface
This abstract class defines an interface for local planners.
Definition: planner_interface.h:103
teb_local_planner::HomotopyClassPlanner::best_teb_eq_class_
EquivalenceClassPtr best_teb_eq_class_
Store the equivalence class of the current best teb.
Definition: homotopy_class_planner.h:587
teb_local_planner::TebConfig
Config class for the teb_local_planner and its components.
Definition: teb_config.h:62
homotopy_class_planner.hpp
teb_local_planner::HomotopyClassPlanner::isInitialized
bool isInitialized() const
Returns true if the planner is initialized.
Definition: homotopy_class_planner.h:494
teb_local_planner::HomotopyClassPlanner::HomotopyClassPlanner
HomotopyClassPlanner()
Default constructor.
Definition: homotopy_class_planner.cpp:82
teb_local_planner::HomotopyClassPlanner
Local planner that explores alternative homotopy classes, create a plan for each alternative and fina...
Definition: homotopy_class_planner.h:144
teb_local_planner::HomotopyClassPlanner::~HomotopyClassPlanner
virtual ~HomotopyClassPlanner()
Destruct the HomotopyClassPlanner.
Definition: homotopy_class_planner.cpp:92
teb_local_planner::PoseSE2
This class implements a pose in the domain SE2: The pose consist of the position x and y and an orie...
Definition: pose_se2.h:93
teb_local_planner::HomotopyClassPlanner::setVisualization
void setVisualization(TebVisualizationPtr visualization)
Register a TebVisualization class to enable visiualization routines (e.g. publish the local plan and ...
Definition: homotopy_class_planner.cpp:116
ros::Time
teb_local_planner::HomotopyClassPlanner::tebs_
TebOptPlannerContainer tebs_
Container that stores multiple local teb planners (for alternative equivalence classes) and their cor...
Definition: homotopy_class_planner.h:593
teb_local_planner::HomotopyClassPlanner::removeTeb
TebOptPlannerContainer::iterator removeTeb(TebOptimalPlannerPtr &teb)
Removes the specified teb and the corresponding homotopy class from the list of available ones.
Definition: homotopy_class_planner.cpp:754
teb_local_planner::HomotopyClassPlanner::graph_search_
boost::shared_ptr< GraphSearchInterface > graph_search_
Definition: homotopy_class_planner.h:598
teb_local_planner::HomotopyClassPlanner::randomlyDropTebs
void randomlyDropTebs()
Randomly drop non-optimal TEBs to so we can explore other alternatives.
Definition: homotopy_class_planner.cpp:575
teb_local_planner::HomotopyClassPlanner::best_teb_
TebOptimalPlannerPtr best_teb_
Store the current best teb.
Definition: homotopy_class_planner.h:586
teb_local_planner::HomotopyClassPlanner::getTrajectoryContainer
const TebOptPlannerContainer & getTrajectoryContainer() const
Read-only access to the internal trajectory container.
Definition: homotopy_class_planner.h:431
teb_local_planner::HomotopyClassPlanner::setPreferredTurningDir
virtual void setPreferredTurningDir(RotType dir)
Prefer a desired initial turning direction (by penalizing the opposing one)
Definition: homotopy_class_planner.cpp:776
teb_local_planner::HomotopyClassPlanner::renewAndAnalyzeOldTebs
void renewAndAnalyzeOldTebs(bool delete_detours)
Renew all found h-signatures for the new planning step based on existing TEBs. Optionally detours can...
Definition: homotopy_class_planner.cpp:250
teb_local_planner::HomotopyClassPlanner::optimizeAllTEBs
void optimizeAllTEBs(int iter_innerloop, int iter_outerloop)
Optimize all available trajectories by invoking the optimizer on each one.
Definition: homotopy_class_planner.cpp:502
teb_local_planner::HomotopyClassPlanner::exploreEquivalenceClassesAndInitTebs
void exploreEquivalenceClassesAndInitTebs(const PoseSE2 &start, const PoseSE2 &goal, double dist_to_obst, const geometry_msgs::Twist *start_vel, bool free_goal_vel=false)
Explore paths in new equivalence classes (e.g. homotopy classes) and initialize TEBs from them.
Definition: homotopy_class_planner.cpp:373
teb_local_planner::TebOptPlannerContainer
std::vector< TebOptimalPlannerPtr > TebOptPlannerContainer
Abbrev. for containers storing multiple teb optimal planners.
Definition: optimal_planner.h:738
teb_local_planner::HomotopyClassPlanner::initial_plan_teb_
TebOptimalPlannerPtr initial_plan_teb_
Store pointer to the TEB related to the initial plan (use method getInitialPlanTEB() since it checks ...
Definition: homotopy_class_planner.h:591
teb_local_planner::HomotopyClassPlanner::cfg_
const TebConfig * cfg_
Config class that stores and manages all related parameters.
Definition: homotopy_class_planner.h:580
teb_local_planner::HomotopyClassPlanner::bestTebIdx
int bestTebIdx() const
find the index of the currently best TEB in the container
Definition: homotopy_class_planner.cpp:705
teb_local_planner::HomotopyClassPlanner::equivalence_classes_
EquivalenceClassContainer equivalence_classes_
Store all known quivalence classes (e.g. h-signatures) to allow checking for duplicates after finding...
Definition: homotopy_class_planner.h:595
optimal_planner.h
teb_local_planner::HomotopyClassPlanner::clearGraph
void clearGraph()
Clear any existing graph of the homotopy class search.
Definition: homotopy_class_planner.h:499
teb_local_planner::HomotopyClassPlannerPtr
boost::shared_ptr< HomotopyClassPlanner > HomotopyClassPlannerPtr
Abbrev. for a shared pointer of a HomotopyClassPlanner instance.
Definition: homotopy_class_planner.h:616
teb_local_planner
Definition: distance_calculations.h:46
teb_local_planner::ViaPointContainer
std::vector< Eigen::Vector2d, Eigen::aligned_allocator< Eigen::Vector2d > > ViaPointContainer
Typedef for a container storing via-points.
Definition: optimal_planner.h:118
teb_local_planner::HomotopyClassPlanner::updateReferenceTrajectoryViaPoints
void updateReferenceTrajectoryViaPoints(bool all_trajectories)
Associate trajectories with via-points.
Definition: homotopy_class_planner.cpp:340
visualization.h
teb_local_planner::HomotopyClassPlanner::numTebsInClass
int numTebsInClass(const EquivalenceClassPtr &eq_class) const
Definition: homotopy_class_planner.cpp:431
teb_local_planner::HomotopyClassPlanner::findBestTeb
TebOptimalPlannerPtr findBestTeb()
In case of empty best teb, scores again the available plans to find the best one. The best_teb_ varia...
Definition: homotopy_class_planner.cpp:745
graph_search.h


teb_local_planner
Author(s): Christoph Rösmann
autogenerated on Sun Jan 7 2024 03:45:15