@@ -115,12 +115,12 @@ bool MoveRelative::compute(const InterfaceState& state, planning_scene::Planning
115115 const std::string& group = props.get <std::string>(" group" );
116116 const moveit::core::JointModelGroup* jmg = robot_model->getJointModelGroup (group);
117117 if (!jmg) {
118- ROS_WARN_STREAM_NAMED ( " MoveRelative " , " Invalid joint model group: " << group);
118+ solution. markAsFailure ( " invalid joint model group: " + group);
119119 return false ;
120120 }
121121 boost::any direction = props.get (" direction" );
122122 if (direction.empty ()) {
123- ROS_WARN_NAMED ( " MoveRelative " , " direction undefined " );
123+ solution. markAsFailure ( " undefined direction" );
124124 return false ;
125125 }
126126
@@ -142,15 +142,15 @@ bool MoveRelative::compute(const InterfaceState& state, planning_scene::Planning
142142 if (value.empty ()) { // property undefined
143143 // determine IK link from group
144144 if (!(link = jmg->getOnlyOneEndEffectorTip ())) {
145- ROS_WARN_STREAM_NAMED ( " MoveRelative " , " Failed to derive IK target link " );
145+ solution. markAsFailure ( " missing ik_frame " );
146146 return false ;
147147 }
148148 ik_pose_msg.header .frame_id = link->getName ();
149149 ik_pose_msg.pose .orientation .w = 1.0 ;
150150 } else {
151151 ik_pose_msg = boost::any_cast<geometry_msgs::PoseStamped>(value);
152152 if (!(link = robot_model->getLinkModel (ik_pose_msg.header .frame_id ))) {
153- ROS_WARN_STREAM_NAMED ( " MoveRelative " , " Unknown link: " << ik_pose_msg.header .frame_id );
153+ solution. markAsFailure ( " unknown link for ik_frame : " + ik_pose_msg.header .frame_id );
154154 return false ;
155155 }
156156 }
@@ -228,7 +228,7 @@ bool MoveRelative::compute(const InterfaceState& state, planning_scene::Planning
228228 target_eigen = link_pose;
229229 target_eigen.translation () += linear;
230230 } catch (const boost::bad_any_cast&) {
231- ROS_ERROR_STREAM_NAMED ( " MoveRelative " , " Invalid type for direction : " << direction.type ().name ());
231+ solution. markAsFailure ( std::string ( " invalid direction type: " ) + direction.type ().name ());
232232 return false ;
233233 }
234234
@@ -306,20 +306,20 @@ void MoveRelative::computeForward(const InterfaceState& from) {
306306 planning_scene::PlanningScenePtr to;
307307 SubTrajectory trajectory;
308308
309- if (compute (from, to, trajectory, FORWARD))
310- sendForward (from, InterfaceState (to), std::move (trajectory));
309+ if (! compute (from, to, trajectory, FORWARD) && trajectory. comment (). empty ( ))
310+ silentFailure (); // there is nothing to report (comment is empty)
311311 else
312- silentFailure ( );
312+ sendForward (from, InterfaceState (to), std::move (trajectory) );
313313}
314314
315315void MoveRelative::computeBackward (const InterfaceState& to) {
316316 planning_scene::PlanningScenePtr from;
317317 SubTrajectory trajectory;
318318
319- if (compute (to, from, trajectory, BACKWARD))
320- sendBackward (InterfaceState (from), to, std::move (trajectory));
321- else
319+ if (!compute (to, from, trajectory, BACKWARD) && trajectory.comment ().empty ())
322320 silentFailure ();
321+ else
322+ sendBackward (InterfaceState (from), to, std::move (trajectory));
323323}
324324} // namespace stages
325325} // namespace task_constructor
0 commit comments