Skip to content
Snippets Groups Projects
Commit e9e1db3b authored by David Tiede's avatar David Tiede
Browse files

Algorithm to change velocity

parent ee7db8db
No related branches found
No related tags found
No related merge requests found
...@@ -6,7 +6,7 @@ namespace safety_planning_request_adapters ...@@ -6,7 +6,7 @@ namespace safety_planning_request_adapters
{ {
class AddSafety : public planning_request_adapter::PlanningRequestAdapter class AddSafety : public planning_request_adapter::PlanningRequestAdapter
{ {
int VELOCITY_LIMIT = 3; double VELOCITY_LIMIT = 1;
public: public:
...@@ -25,17 +25,40 @@ namespace safety_planning_request_adapters ...@@ -25,17 +25,40 @@ namespace safety_planning_request_adapters
if (result && res.trajectory_) // Only run after planning if (result && res.trajectory_) // Only run after planning
{ {
ROS_ERROR("ADAPTER PACKAGE: After planning"); ROS_ERROR("ADAPTER PACKAGE: After planning");
// ROS_DEBUG("Running '%s'", getDescription().c_str());
// if (!time_param_.computeTimeStamps(*res.trajectory_, req.max_velocity_scaling_factor, robot_trajectory::RobotTrajectory& trajectory = *res.trajectory_;
// req.max_acceleration_scaling_factor)) const robot_model::JointModelGroup* group = trajectory.getGroup();
// { if (!group)
// ROS_ERROR("Time parametrization for the solution path failed."); {
// result = false; ROS_ERROR("ADAPTER PACKAGE: It looks like the planner did not set the group the plan was computed for");
// } return false;
}
const std::vector<int>& idx = group->getVariableIndexList();
const unsigned num_joints = group->getVariableCount();
const unsigned num_points = trajectory.getWayPointCount();
std::list<Eigen::VectorXd> points;
double duration_from_start = 0;
for (size_t p = 0; p <= num_points; ++p) {
ROS_ERROR("ADAPTER PACKAGE: %zu", p);
robot_state::RobotState waypoint = trajectory.getWayPoint(p);
for (size_t j = 0; j < num_joints; ++j) {
waypoint.setVariableVelocity(idx[j], waypoint.getVariableVelocity(idx[j]) * VELOCITY_LIMIT);
waypoint.setVariableAcceleration(idx[j], waypoint.getVariableAcceleration(idx[j]) * VELOCITY_LIMIT * VELOCITY_LIMIT);
}
ROS_ERROR("ADAPTER PACKAGE: Previous %f", trajectory.getWayPointDurationFromPrevious(p));
duration_from_start = duration_from_start + (trajectory.getWayPointDurationFromPrevious(p) / VELOCITY_LIMIT);
ROS_ERROR("ADAPTER PACKAGE: Previous %f", duration_from_start);
trajectory.insertWayPoint(p, waypoint, duration_from_start);
}
} }
return result; return result;
} };
}; };
} // namespace safety_planning_request_adapters } // namespace safety_planning_request_adapters
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment