In the joint_trajectory_action JointTrajectoryExecuter class, in the function controllerStateCB, the following code executes if the end time of the goal has been reached:
if (inside_goal_constraints)
{
active_goal_.setSucceeded();
has_active_goal_ = false;
}
else if (now < end_time + ros::Duration(goal_time_constraint_))
{
// Still have some time left to make it.
}
else
{
ROS_WARN("Aborting because we wound up outside the goal constraints");
active_goal_.setAborted();
has_active_goal_ = false;
}
The final else block appears to abort the goal, however it doesn't also stop the trajectory controller as used elsewhere in the class:
// Stops the controller.
trajectory_msgs::JointTrajectory empty;
empty.joint_names = joint_names_;
pub_controller_command_.publish(empty);
active_goal_.setAborted();
has_active_goal_ = false;
ROS_WARN("Aborting because we would up outside the trajectory constraints");
In the joint_trajectory_action JointTrajectoryExecuter class, in the function controllerStateCB, the following code executes if the end time of the goal has been reached:
The final else block appears to abort the goal, however it doesn't also stop the trajectory controller as used elsewhere in the class: