@@ -275,7 +275,6 @@ bool MoveItVisualTools::loadEEMarker(const robot_model::JointModelGroup* ee_jmg,
275275 // Keep track of how many unique markers we have between different EEs
276276 static std::size_t marker_id_offset = 0 ;
277277
278- // -----------------------------------------------------------------------------------------------
279278 // Get end effector group
280279
281280 // Create color to use for EE markers
@@ -284,13 +283,19 @@ bool MoveItVisualTools::loadEEMarker(const robot_model::JointModelGroup* ee_jmg,
284283 // Get link names that are in end effector
285284 const std::vector<std::string>& ee_link_names = ee_jmg->getLinkModelNames ();
286285
287- // -----------------------------------------------------------------------------------------------
288286 // Get EE link markers for Rviz
289-
290287 shared_robot_state_->getRobotMarkers (ee_markers_map_[ee_jmg], ee_link_names, marker_color, ee_jmg->getName (),
291288 ros::Duration ());
292289 ROS_DEBUG_STREAM_NAMED (LOGNAME, " Number of rviz markers in end effector: " << ee_markers_map_[ee_jmg].markers .size ());
293290
291+ // Error check
292+ if (ee_markers_map_[ee_jmg].markers .empty ())
293+ {
294+ ROS_ERROR_STREAM_NAMED (LOGNAME,
295+ " No links found to visualize in end effector for joint model group: " << ee_jmg->getName ());
296+ return false ;
297+ }
298+
294299 const std::string& ee_parent_link_name = ee_jmg->getEndEffectorParentGroup ().second ;
295300 // ROS_DEBUG_STREAM_NAMED(LOGNAME,"EE Parent link: " << ee_parent_link_name);
296301 const moveit::core::LinkModel* ee_parent_link = robot_model_->getLinkModel (ee_parent_link_name);
@@ -373,9 +378,6 @@ bool MoveItVisualTools::publishEEMarkers(const geometry_msgs::Pose& pose, const
373378 Eigen::Isometry3d eigen_goal_ee_pose = convertPose (pose);
374379 Eigen::Isometry3d eigen_this_marker;
375380
376- // publishArrow( pose, rviz_visual_tools::RED, rviz_visual_tools::LARGE );
377-
378- // -----------------------------------------------------------------------------------------------
379381 // Process each link of the end effector
380382 for (std::size_t i = 0 ; i < ee_markers_map_[ee_jmg].markers .size (); ++i)
381383 {
@@ -393,15 +395,23 @@ bool MoveItVisualTools::publishEEMarkers(const geometry_msgs::Pose& pose, const
393395 ee_markers_map_[ee_jmg].markers [i].lifetime = marker_lifetime_;
394396
395397 // Color
396- ee_markers_map_[ee_jmg].markers [i].color = getColor (color);
398+ if (color != rviz_visual_tools::DEFAULT)
399+ ee_markers_map_[ee_jmg].markers [i].color = getColor (color);
397400
398401 // Convert pose
399402 eigen_this_marker = eigen_goal_ee_pose * ee_poses_map_[ee_jmg][i];
400403 ee_markers_map_[ee_jmg].markers [i].pose = convertPose (eigen_this_marker);
401404 }
402405
403406 // Helper for publishing rviz markers
404- return publishMarkers (ee_markers_map_[ee_jmg]);
407+ // Does not require trigger() because publishing array auto-triggers
408+ if (!publishMarkers (ee_markers_map_[ee_jmg]))
409+ {
410+ ROS_WARN_STREAM_NAMED (LOGNAME, " Unable to publish EE markers" );
411+ return false ;
412+ }
413+
414+ return true ;
405415}
406416
407417bool MoveItVisualTools::publishGrasps (const std::vector<moveit_msgs::Grasp>& possible_grasps,
@@ -511,10 +521,8 @@ bool MoveItVisualTools::publishAnimatedGrasp(const moveit_msgs::Grasp& grasp,
511521 // Convert eigen pre-grasp position back to regular message
512522 pre_grasp_pose = tf2::toMsg (pre_grasp_pose_eigen);
513523
514- // publishArrow(pre_grasp_pose, moveit_visual_tools::BLUE);
515524 publishEEMarkers (pre_grasp_pose, ee_jmg);
516- if (batch_publishing_enabled_)
517- trigger ();
525+
518526 ros::Duration (animate_speed).sleep ();
519527
520528 // Pause more at initial pose for debugging purposes
0 commit comments