12 #include <mrpt/core/bits_math.h> 13 #include <mrpt/poses/CPose2DGridTemplate.h> 14 #include <mrpt/system/COutputLogger.h> 15 #include <mrpt/system/CTimeLogger.h> 18 #include <unordered_map> 54 std::numeric_limits<duration_seconds_t>::max();
56 mrpt::containers::yaml
as_yaml();
90 cost_t default_heuristic_SE2(
91 const SE2_KinState& from,
const mrpt::math::TPose2D& goal)
const;
92 cost_t default_heuristic_R2(
93 const SE2_KinState& from,
const mrpt::math::TPoint2D& goal)
const;
97 return this->default_heuristic(from, goal);
107 : idxX(ix), idxY(iy), idxYaw(iphi)
115 idxYaw.value() + o.
idxYaw.value()};
121 r += std::to_string(idxX);
123 r += std::to_string(idxY);
124 if (idxYaw.has_value())
127 r += std::to_string(*idxYaw);
135 if (idxX != o.
idxX || idxY != o.
idxY)
return false;
136 if (idxYaw.has_value() != o.
idxYaw.has_value())
return false;
137 if (idxYaw.has_value() && idxYaw.value() != o.
idxYaw.value())
149 if (idxX != o.
idxX || idxY != o.
idxY)
return false;
150 if (idxYaw.has_value() && o.
idxYaw.has_value())
151 return idxYaw.value() == o.
idxYaw.value();
157 int32_t idxX = 0, idxY = 0;
168 res = res * 31 + std::hash<int32_t>()(x.
idxX);
169 res = res * 31 + std::hash<int32_t>()(x.
idxY);
171 res = res * 31 + std::hash<int32_t>()(x.
idxYaw.value());
177 using nodes_with_exact_coordinates_t =
178 std::unordered_map<NodeCoords, SE2_KinState, NodeCoordsHash>;
182 std::unordered_map<NodeCoords, normalized_speed_t, NodeCoordsHash>;
188 return grid_.getSizeX() * grid_.getSizeY() * n.
idxYaw.value() +
193 mrpt::math::TPose2D nodeCoordsToPose(
195 const nodes_with_exact_coordinates_t& specialNodes)
const 197 if (
const auto it = specialNodes.find(n); it != specialNodes.end())
198 return it->second.pose;
201 grid_.idx2x(n.
idxX), grid_.idx2y(n.
idxY),
202 grid_.idx2phi(n.
idxYaw.value())};
212 std::optional<mrpt::graphs::TNodeID>
id;
218 cost_t gScore = std::numeric_limits<cost_t>::max();
221 cost_t fScore = std::numeric_limits<cost_t>::max();
226 bool pendingInOpenSet =
false;
227 bool visited =
false;
230 mrpt::poses::CPose2DGridTemplate<Node>
grid_;
238 if (!n.
id.has_value())
251 grid_.x2idx(p.x), grid_.y2idx(p.y), grid_.phi2idx(p.phi));
255 return NodeCoords(grid_.x2idx(p.x), grid_.y2idx(p.y));
309 const std::vector<mrpt::maps::CPointsMap::Ptr>& globalObstacles,
310 double MAX_XY_OBSTACLES_CLIPPING_DIST,
313 mrpt::maps::CPointsMap::Ptr cached_local_obstacles(
314 const mrpt::math::TPose2D& queryPose,
315 const std::vector<mrpt::maps::CPointsMap::Ptr>& globalObstacles,
316 double MAX_PTG_XY_DIST);
Definition: TPS_Astar.h:25
mrpt::containers::yaml as_yaml()
std::optional< ptg_index_t > ptgIndex
Definition: TPS_Astar.h:291
Definition: TPS_Astar.h:65
double cost_t
Definition: basic_types.h:25
std::vector< path_to_neighbor_t > list_paths_to_neighbors_t
Definition: TPS_Astar.h:301
std::string asString() const
Definition: TPS_Astar.h:118
mrpt::poses::CPose2DGridTemplate< Node > grid_
Definition: TPS_Astar.h:230
Node & operator*()
Definition: TPS_Astar.h:275
void load_from_yaml(const mrpt::containers::yaml &c)
Definition: bestTrajectory.h:15
NodePtr(Node *p)
Definition: TPS_Astar.h:263
double duration_seconds_t
Definition: basic_types.h:36
NodeCoords nodeGridCoords(const mrpt::math::TPoint2D &p) const
Definition: TPS_Astar.h:253
std::optional< ptg_t::TNavDynamicState > ptgDynState
Definition: TPS_Astar.h:294
Definition: TPS_Astar.h:163
Definition: TPS_Astar.h:207
bool operator==(const NodeCoords &o) const
Definition: TPS_Astar.h:133
Definition: TrajectoriesAndRobotShape.h:25
uint32_t max_ptg_trajectories_to_explore
Definition: TPS_Astar.h:37
Node * operator->()
Definition: TPS_Astar.h:265
Definition: SE2_KinState.h:65
NodeCoords(int32_t ix, int32_t iy, int32_t iphi)
Definition: TPS_Astar.h:106
duration_seconds_t maximumComputationTime
Definition: TPS_Astar.h:53
std::optional< int32_t > idxYaw
Definition: TPS_Astar.h:160
double heuristic_heading_weight
[0,1]
Definition: TPS_Astar.h:35
double distance_t
Definition: basic_types.h:16
TPS_Astar_Parameters()=default
bool sameLocation(const NodeCoords &o) const
Definition: TPS_Astar.h:147
mrpt::containers::yaml params_as_yaml() override
Definition: TPS_Astar.h:77
bool debugVisualizationShowEdgeCosts
Definition: TPS_Astar.h:50
static TPS_Astar_Parameters FromYAML(const mrpt::containers::yaml &c)
double SE2_metricAngleWeight
Definition: TPS_Astar.h:33
NodeCoords nodeGridCoords(const mrpt::math::TPose2D &p) const
throws on out of grid limits.
Definition: TPS_Astar.h:248
const Node & operator*() const
Definition: TPS_Astar.h:280
int32_t idxX
Definition: TPS_Astar.h:157
std::unordered_map< NodeCoords, normalized_speed_t, NodeCoordsHash > nodes_with_desired_speed_t
Definition: TPS_Astar.h:182
Definition: PlannerOutput.h:19
mrpt::math::TPose2D pose
global pose (x,y,phi)
Definition: SE2_KinState.h:69
mrpt::math::TPose2D relReconstrPose
Definition: TPS_Astar.h:297
size_t saveDebugVisualizationDecimation
Definition: TPS_Astar.h:49
Definition: TPS_Astar.h:101
double normalized_speed_t
Definition: basic_types.h:33
size_t absolute_cell_index_t
Definition: TPS_Astar.h:184
bool operator!=(const NodeCoords &o) const
Definition: TPS_Astar.h:141
uint32_t max_ptg_speeds_to_explore
Definition: TPS_Astar.h:39
absolute_cell_index_t nodeCoordsToAbsIndex(const NodeCoords &n) const
Definition: TPS_Astar.h:186
double grid_resolution_yaw
Definition: TPS_Astar.h:31
size_t operator()(const NodeCoords &x) const
Definition: TPS_Astar.h:165
std::optional< uint32_t > relTrgStep
traj step index
Definition: TPS_Astar.h:293
NodeCoords operator+(const NodeCoords &o) const
Definition: TPS_Astar.h:111
std::optional< mrpt::graphs::TNodeID > id
exact pose and velocity (no binning here)
Definition: TPS_Astar.h:212
void params_from_yaml(const mrpt::containers::yaml &c) override
Definition: TPS_Astar.h:82
std::vector< duration_seconds_t > ptg_sample_timestamps
Definition: TPS_Astar.h:38
std::optional< trajectory_index_t > ptgTrajIndex
Definition: TPS_Astar.h:292
Node & getOrCreateNodeByPose(const mpp::SE2_KinState &p, mrpt::graphs::TNodeID &nextFreeId)
Definition: TPS_Astar.h:234
SE2_KinState state
Definition: TPS_Astar.h:215
Definition: TPS_Astar.h:289
NodeCoords neighborNodeCoords
Definition: TPS_Astar.h:298
const Node * operator->() const
Definition: TPS_Astar.h:270
int32_t idxY
Definition: TPS_Astar.h:157
TPS_Astar_Parameters params_
Definition: TPS_Astar.h:73
Definition: TPS_Astar.h:258
std::function< cost_t(const SE2_KinState &, const SE2orR2_KinState &)> astar_heuristic_t
Definition: TPS_Astar.h:23
double grid_resolution_xy
Definition: TPS_Astar.h:30
Definition: SE2_KinState.h:75
size_t pathInterpolatedSegments
Definition: TPS_Astar.h:46
NodeCoords(int32_t ix, int32_t iy)
Definition: TPS_Astar.h:105
std::optional< const Node * > cameFrom
parent (precedent) of this node in the path.
Definition: TPS_Astar.h:224