6#include "../TrajectoryMetric.h"
8#pragma warning "The JerkMetric is not supported at the moment."
11class JerkMetric :
public TMetric<JerkMetric> {
13 static double evaluateMetric(
const ompl::geometric::PathGeometric &trajectory,
32 unsigned long vsize = trajectory->getV().size();
33 double *vel =
new double[vsize];
34 for (
auto vi : trajectory->getV()) {
41 for (
int k = 0; k < vsize; k++) {
42 if (vel[k] > vel[maxV]) maxV = k;
48 if (path.size() > 3) {
49 for (std::size_t i = 0; i < path.size() - 1; i++) {
50 v_x[i] = (path[i + 1].x - path[i].x);
51 v_y[i] = (path[i + 1].y - path[i].y);
54 for (std::size_t i = 0; i < path.size() - 2; i++) {
55 acc_x[i] = (v_x[i + 1] - v_x[i]);
56 acc_y[i] = (v_y[i + 1] - v_y[i]);
61 for (std::size_t i = 1; i < path.size() - 3; i++) {
62 jerk_x[i] = (acc_x[i + 1] - acc_x[i - 1]) / (2 * dt);
63 jerk_y[i] = (acc_y[i + 1] - acc_y[i - 1]) / (2 * dt);
66 for (std::size_t i = 1; i < path.size() - 3; i++) {
68 std::sqrt(jerk_x[i] * jerk_x[i] + jerk_y[i] * jerk_y[i]) * dt);
71 jerk_ = -pjerk / (T * Vmax);
82 static const bool MoreIsBetter =
false;
Definition: TrajectoryMetric.h:10
static std::vector< Point > fromPath(const ompl::geometric::PathGeometric &p, bool interpolate=false)
Definition: Primitives.cpp:25