mirror of
https://gitlab.com/obbart/universal_robots_ros_driver.git
synced 2026-04-10 10:00:48 +02:00
Merge pull request #31 from hemes/master
Added check to ensure robot pose matches initial trajectory point.
This commit is contained in:
@@ -298,7 +298,7 @@ private:
|
|||||||
print_error(result_.error_string);
|
print_error(result_.error_string);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!has_velocities()) {
|
if (!has_velocities()) {
|
||||||
result_.error_code = result_.INVALID_GOAL;
|
result_.error_code = result_.INVALID_GOAL;
|
||||||
result_.error_string = "Received a goal without velocities";
|
result_.error_string = "Received a goal without velocities";
|
||||||
@@ -326,6 +326,14 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
reorder_traj_joints(goal.trajectory);
|
reorder_traj_joints(goal.trajectory);
|
||||||
|
|
||||||
|
if (!start_positions_match(goal.trajectory, 0.01)) {
|
||||||
|
result_.error_code = result_.INVALID_GOAL;
|
||||||
|
result_.error_string = "Goal start doesn't match current pose";
|
||||||
|
gh.setRejected(result_, result_.error_string);
|
||||||
|
print_error(result_.error_string);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<double> timestamps;
|
std::vector<double> timestamps;
|
||||||
std::vector<std::vector<double> > positions, velocities;
|
std::vector<std::vector<double> > positions, velocities;
|
||||||
@@ -476,6 +484,19 @@ private:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool start_positions_match(const trajectory_msgs::JointTrajectory &traj, double eps)
|
||||||
|
{
|
||||||
|
for (unsigned int i = 0; i < traj.points[0].positions.size(); i++)
|
||||||
|
{
|
||||||
|
std::vector<double> qActual = robot_.rt_interface_->robot_state_->getQActual();
|
||||||
|
if( fabs(traj.points[0].positions[i] - qActual[i]) > eps )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool has_limited_velocities() {
|
bool has_limited_velocities() {
|
||||||
actionlib::ActionServer<control_msgs::FollowJointTrajectoryAction>::Goal goal =
|
actionlib::ActionServer<control_msgs::FollowJointTrajectoryAction>::Goal goal =
|
||||||
*goal_handle_.getGoal();
|
*goal_handle_.getGoal();
|
||||||
|
|||||||
Reference in New Issue
Block a user