std::vector<RRTNode> final_path;
double final_path_cost = 9999;
+ unsigned int final_path_steps = 0;
double cost_from_orig_init = 0;
+ unsigned int steps_from_orig_init = 0;
RRTNode init_node;
init_node.x(jvi["init"][0].asDouble());
init_node.y(jvi["init"][1].asDouble());
init_node.sp(2.7);
init_node.st(M_PI / 32); // only for sc2_4
RRTNode last_node(init_node);
+ RRTNode orig_init(init_node);
init_node.next();
+ steps_from_orig_init++;
{
double angl_diff = std::abs(last_node.h() - init_node.h());
if (angl_diff == 0)
cc(*rrts.path().back())
+ cost_from_orig_init
;
+ final_path_steps = steps_from_orig_init;
final_path.clear();
for (auto n: rrts.path()) {
final_path.push_back(RRTNode());
}
}
}
- std::cerr << "finished 0, cost is " << final_path_cost << std::endl;
int rcnt = 0;
jvo[rcnt++] = rrts.json();
for (int i = 1; i < 5; i++) {
last_node = RRTNode(init_node);
init_node.next();
+ steps_from_orig_init++;
{
double angl_diff = std::abs(last_node.h() - init_node.h());
if (angl_diff < 0.001)
cc(*rrts2.path().back())
+ cost_from_orig_init
;
+ final_path_steps = steps_from_orig_init;
final_path.clear();
for (auto n: rrts2.path()) {
final_path.push_back(RRTNode());
}
}
}
- std::cerr << "finished " << i << ", cost is " << final_path_cost;
- std::cerr << std::endl;
jvo[rcnt++] = rrts2.json();
}
+ {
+ jvo[rcnt]["obst"] = jvo[rcnt - 1]["obst"];
+ jvo[rcnt]["cost"] = final_path_cost;
+ unsigned int ncnt = 0;
+ for (unsigned int i = 0; i < final_path_steps; i++) {
+ jvo[rcnt]["path"][ncnt][0] = orig_init.x();
+ jvo[rcnt]["path"][ncnt][1] = orig_init.y();
+ jvo[rcnt]["path"][ncnt][2] = orig_init.h();
+ orig_init.next();
+ ncnt++;
+ }
+ for (auto n: final_path) {
+ jvo[rcnt]["path"][ncnt][0] = n.x();
+ jvo[rcnt]["path"][ncnt][1] = n.y();
+ jvo[rcnt]["path"][ncnt][2] = n.h();
+ ncnt++;
+ }
+ }
std::cout << jvo << std::endl;
return 0;
}