41 #include <boost/math/constants/constants.hpp>
45 visualization_msgs::InteractiveMarker
48 visualization_msgs::InteractiveMarker int_marker;
49 int_marker.header = stamped.header;
50 int_marker.name =
name;
51 int_marker.scale = scale;
52 int_marker.pose = stamped.pose;
59 visualization_msgs::Marker m;
60 m.type = visualization_msgs::Marker::ARROW;
61 m.scale.x = 0.6 * im.scale;
62 m.scale.y = 0.12 * im.scale;
63 m.scale.z = 0.12 * im.scale;
64 m.ns =
"goal_pose_arrow_marker";
66 m.action = visualization_msgs::Marker::ADD;
72 tmq.
setRPY(0, -boost::math::constants::pi<double>() / 2.0, 0);
80 visualization_msgs::Marker mc;
81 mc.type = visualization_msgs::Marker::CYLINDER;
82 mc.scale.x = 0.05 * im.scale;
83 mc.scale.y = 0.05 * im.scale;
84 mc.scale.z = 0.15 * im.scale;
85 mc.ns =
"goal_pose_arrow_marker";
87 mc.action = visualization_msgs::Marker::ADD;
88 mc.header = im.header;
92 tmq.setRPY(boost::math::constants::pi<double>() / 2.0, 0, 0);
95 mc.pose.position.x -= 0.04;
96 mc.pose.position.z += 0.01;
102 visualization_msgs::InteractiveMarkerControl m_control;
103 m_control.always_visible =
true;
104 m_control.interaction_mode = m_control.BUTTON;
105 m_control.markers.push_back(m);
106 m_control.markers.push_back(mc);
109 im.controls.push_back(m_control);
115 visualization_msgs::Marker err;
116 err.type = visualization_msgs::Marker::MESH_RESOURCE;
117 err.scale.x = 0.002 * im.scale;
118 err.scale.y = 0.002 * im.scale;
119 err.scale.z = 0.002 * im.scale;
120 err.mesh_resource =
"package://moveit_ros_planning_interface/resources/access-denied.dae";
121 err.ns =
"robot_interaction_error";
123 err.action = visualization_msgs::Marker::ADD;
124 err.header = im.header;
126 err.pose.orientation.x = err.pose.orientation.y = 0.7071067811865476;
127 err.pose.orientation.z = err.pose.orientation.w = 0.0;
133 visualization_msgs::InteractiveMarkerControl err_control;
134 err_control.always_visible =
false;
135 err_control.markers.push_back(err);
138 im.controls.push_back(err_control);
142 static const double SQRT2INV = 0.707106781;
146 visualization_msgs::InteractiveMarkerControl control;
148 if (orientation_fixed)
152 control.orientation.y = 0;
153 control.orientation.z = 0;
154 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::MOVE_AXIS;
155 int_marker.controls.push_back(control);
158 control.orientation.x = 0;
160 control.orientation.z = 0;
161 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::ROTATE_AXIS;
162 int_marker.controls.push_back(control);
165 control.orientation.x = 0;
166 control.orientation.y = 0;
168 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::MOVE_AXIS;
169 int_marker.controls.push_back(control);
172 void add6DOFControl(visualization_msgs::InteractiveMarker& int_marker,
bool orientation_fixed)
178 void addOrientationControl(visualization_msgs::InteractiveMarker& int_marker,
bool orientation_fixed)
180 visualization_msgs::InteractiveMarkerControl control;
182 if (orientation_fixed)
186 control.orientation.y = 0;
187 control.orientation.z = 0;
188 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::ROTATE_AXIS;
189 int_marker.controls.push_back(control);
192 control.orientation.x = 0;
194 control.orientation.z = 0;
195 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::ROTATE_AXIS;
196 int_marker.controls.push_back(control);
199 control.orientation.x = 0;
200 control.orientation.y = 0;
202 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::ROTATE_AXIS;
203 int_marker.controls.push_back(control);
206 void addPositionControl(visualization_msgs::InteractiveMarker& int_marker,
bool orientation_fixed)
208 visualization_msgs::InteractiveMarkerControl control;
210 if (orientation_fixed)
214 control.orientation.y = 0;
215 control.orientation.z = 0;
216 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::MOVE_AXIS;
217 int_marker.controls.push_back(control);
220 control.orientation.x = 0;
222 control.orientation.z = 0;
223 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::MOVE_AXIS;
224 int_marker.controls.push_back(control);
227 control.orientation.x = 0;
228 control.orientation.y = 0;
230 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::MOVE_AXIS;
231 int_marker.controls.push_back(control);
235 const std_msgs::ColorRGBA& color,
bool position,
bool orientation)
237 visualization_msgs::InteractiveMarkerControl control;
238 control.orientation_mode = visualization_msgs::InteractiveMarkerControl::VIEW_FACING;
239 if (position && orientation)
240 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::MOVE_ROTATE_3D;
241 else if (orientation)
242 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::ROTATE_3D;
244 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::MOVE_3D;
245 control.independent_marker_orientation =
true;
246 control.name =
"move";
248 visualization_msgs::Marker marker;
250 marker.type = visualization_msgs::Marker::SPHERE;
251 marker.scale.x = radius * 2.0;
252 marker.scale.y = radius * 2.0;
253 marker.scale.z = radius * 2.0;
254 marker.color = color;
256 control.markers.push_back(marker);
257 control.always_visible =
false;
259 int_marker.controls.push_back(control);
263 const geometry_msgs::PoseStamped& stamped,
double scale,
264 bool orientation_fixed)
271 visualization_msgs::InteractiveMarker
make6DOFMarker(
const std::string& name,
const geometry_msgs::PoseStamped& stamped,
272 double scale,
bool orientation_fixed)