37 Ramping::apply(core::GlobalTrajectory& trajectory,
const float startVelocity)
const
39 std::vector<std::pair<std::size_t, float>> fixedVelocities;
41 if (config_.enableRampingStart)
43 fixedVelocities.emplace_back(0, startVelocity);
45 if (config_.enableRampingEnd)
50 fixedVelocities.emplace_back(trajectory.points().size() - 1, config_.goalVelocity);
52 if (config_.enableRampingCorners)
54 const auto& corners = trajectory.calculateCorners(config_.cornerLimit);
56 for (
const auto& [idx,
angle] : corners)
58 fixedVelocities.emplace_back(idx, config_.cornerVelocity);
65 const float rampLength = std::max(config_.rampLength, 1.F);
66 const float rampAcceleration =
68 config_.maxVel.linear * config_.maxVel.linear -
69 config_.goalVelocity * config_.goalVelocity) /
72 trajectory.applyRamping(fixedVelocities, rampLength, rampAcceleration);
This file is part of ArmarX.
double angle(const Point &a, const Point &b, const Point &c)