@@ -66,6 +66,7 @@ typename AnalyticExpansion<NodeT>::NodePtr AnalyticExpansion<NodeT>::tryAnalytic
6666
6767 AnalyticExpansionNodes current_best_analytic_nodes = {};
6868 NodePtr current_best_goal = nullptr ;
69+ NodePtr current_best_node = nullptr ;
6970 float current_best_score = std::numeric_limits<float >::max ();
7071
7172 closest_distance = std::min (
@@ -97,13 +98,15 @@ typename AnalyticExpansion<NodeT>::NodePtr AnalyticExpansion<NodeT>::tryAnalytic
9798 current_node->motion_table .state_space );
9899 if (!analytic_nodes.empty ()) {
99100 found_valid_expansion = true ;
100- bool score = refineAnalyticPath (
101- current_node, current_goal_node, getter, analytic_nodes);
101+ NodePtr node = current_node;
102+ float score = refineAnalyticPath (
103+ node, current_goal_node, getter, analytic_nodes);
102104 // Update the best score if we found a better path
103105 if (score < current_best_score) {
104106 current_best_analytic_nodes = analytic_nodes;
105107 current_best_goal = current_goal_node;
106108 current_best_score = score;
109+ current_best_node = node;
107110 }
108111 }
109112 }
@@ -116,13 +119,15 @@ typename AnalyticExpansion<NodeT>::NodePtr AnalyticExpansion<NodeT>::tryAnalytic
116119 current_node, current_goal_node, getter,
117120 current_node->motion_table .state_space );
118121 if (!analytic_nodes.empty ()) {
119- bool score = refineAnalyticPath (
120- current_node, current_goal_node, getter, analytic_nodes);
122+ NodePtr node = current_node;
123+ float score = refineAnalyticPath (
124+ node, current_goal_node, getter, analytic_nodes);
121125 // Update the best score if we found a better path
122126 if (score < current_best_score) {
123127 current_best_analytic_nodes = analytic_nodes;
124128 current_best_goal = current_goal_node;
125129 current_best_score = score;
130+ current_best_node = node;
126131 }
127132 }
128133 }
@@ -131,7 +136,7 @@ typename AnalyticExpansion<NodeT>::NodePtr AnalyticExpansion<NodeT>::tryAnalytic
131136
132137 if (!current_best_analytic_nodes.empty ()) {
133138 return setAnalyticPath (
134- current_node , current_best_goal,
139+ current_best_node , current_best_goal,
135140 current_best_analytic_nodes);
136141 }
137142 analytic_iterations--;
@@ -273,12 +278,11 @@ typename AnalyticExpansion<NodeT>::AnalyticExpansionNodes AnalyticExpansion<Node
273278
274279template <typename NodeT>
275280float AnalyticExpansion<NodeT>::refineAnalyticPath(
276- const NodePtr & current_node ,
281+ NodePtr & node ,
277282 const NodePtr & goal_node,
278283 const NodeGetter & getter,
279284 AnalyticExpansionNodes & analytic_nodes)
280285{
281- NodePtr node = current_node;
282286 NodePtr test_node = node;
283287 AnalyticExpansionNodes refined_analytic_nodes;
284288 for (int i = 0 ; i < 8 ; i++) {
@@ -407,7 +411,7 @@ getAnalyticPath(
407411
408412template <>
409413float AnalyticExpansion<Node2D>::refineAnalyticPath(
410- const NodePtr &,
414+ NodePtr &,
411415 const NodePtr &,
412416 const NodeGetter &,
413417 AnalyticExpansionNodes &)
0 commit comments