Skip to content

Commit 25bd32b

Browse files
committed
Fix for missing end effector markers because clear
- Do not change the default color to clear - Addresses issues in moveit_grasps - Minor cleanup of EE functions
1 parent 883beb7 commit 25bd32b

File tree

2 files changed

+25
-15
lines changed

2 files changed

+25
-15
lines changed

include/moveit_visual_tools/moveit_visual_tools.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,26 +222,26 @@ class MoveItVisualTools : public rviz_visual_tools::RvizVisualTools
222222
*/
223223
bool publishEEMarkers(const Eigen::Isometry3d& pose, const robot_model::JointModelGroup* ee_jmg,
224224
const std::vector<double>& ee_joint_pos,
225-
const rviz_visual_tools::colors& color = rviz_visual_tools::CLEAR,
225+
const rviz_visual_tools::colors& color = rviz_visual_tools::DEFAULT,
226226
const std::string& ns = "end_effector")
227227
{
228228
return publishEEMarkers(convertPose(pose), ee_jmg, ee_joint_pos, color, ns);
229229
}
230230
bool publishEEMarkers(const Eigen::Isometry3d& pose, const robot_model::JointModelGroup* ee_jmg,
231-
const rviz_visual_tools::colors& color = rviz_visual_tools::CLEAR,
231+
const rviz_visual_tools::colors& color = rviz_visual_tools::DEFAULT,
232232
const std::string& ns = "end_effector")
233233
{
234234
return publishEEMarkers(convertPose(pose), ee_jmg, {}, color, ns);
235235
}
236236
bool publishEEMarkers(const geometry_msgs::Pose& pose, const robot_model::JointModelGroup* ee_jmg,
237-
const rviz_visual_tools::colors& color = rviz_visual_tools::CLEAR,
237+
const rviz_visual_tools::colors& color = rviz_visual_tools::DEFAULT,
238238
const std::string& ns = "end_effector")
239239
{
240240
return publishEEMarkers(pose, ee_jmg, {}, color, ns);
241241
}
242242
bool publishEEMarkers(const geometry_msgs::Pose& pose, const robot_model::JointModelGroup* ee_jmg,
243243
const std::vector<double>& ee_joint_pos,
244-
const rviz_visual_tools::colors& color = rviz_visual_tools::CLEAR,
244+
const rviz_visual_tools::colors& color = rviz_visual_tools::DEFAULT,
245245
const std::string& ns = "end_effector");
246246

247247
/**
@@ -255,6 +255,7 @@ class MoveItVisualTools : public rviz_visual_tools::RvizVisualTools
255255

256256
/**
257257
* \brief Display an animated vector of grasps including its approach movement in Rviz
258+
* Note this function calls trigger() automatically in order to achieve animations
258259
* \param possible_grasps - a set of grasp positions to visualize
259260
* \param ee_jmg - the set of joints to use, e.g. the MoveIt planning group, e.g. "left_arm"
260261
* \param animate_speed - how fast the gripper approach is animated, optional
@@ -264,6 +265,7 @@ class MoveItVisualTools : public rviz_visual_tools::RvizVisualTools
264265

265266
/**
266267
* \brief Animate a single grasp in its movement direction
268+
* Note this function calls trigger() automatically in order to achieve animations
267269
* \param grasp
268270
* \param ee_jmg - the set of joints to use, e.g. the MoveIt planning group, e.g. "left_arm"
269271
* \param animate_speed - how fast the gripper approach is animated

src/moveit_visual_tools.cpp

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

407417
bool 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

Comments
 (0)