40 #include <boost/math/constants/constants.hpp> 45 const geometry_msgs::PoseStamped& stamped,
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;
79 visualization_msgs::Marker mc;
80 mc.type = visualization_msgs::Marker::CYLINDER;
81 mc.scale.x = 0.05 * im.scale;
82 mc.scale.y = 0.05 * im.scale;
83 mc.scale.z = 0.15 * im.scale;
84 mc.ns =
"goal_pose_arrow_marker";
86 mc.action = visualization_msgs::Marker::ADD;
87 mc.header = im.header;
93 mc.pose.position.x -= 0.04;
94 mc.pose.position.z += 0.01;
100 visualization_msgs::InteractiveMarkerControl m_control;
101 m_control.always_visible =
true;
102 m_control.interaction_mode = m_control.BUTTON;
103 m_control.markers.push_back(m);
104 m_control.markers.push_back(mc);
107 im.controls.push_back(m_control);
113 visualization_msgs::Marker err;
114 err.type = visualization_msgs::Marker::MESH_RESOURCE;
115 err.scale.x = 0.002 * im.scale;
116 err.scale.y = 0.002 * im.scale;
117 err.scale.z = 0.002 * im.scale;
118 err.mesh_resource =
"package://moveit_ros_planning_interface/resources/access-denied.dae";
119 err.ns =
"robot_interaction_error";
121 err.action = visualization_msgs::Marker::ADD;
122 err.header = im.header;
124 err.pose.orientation.x = err.pose.orientation.y = 0.7071067811865476;
125 err.pose.orientation.z = err.pose.orientation.w = 0.0;
131 visualization_msgs::InteractiveMarkerControl err_control;
132 err_control.always_visible =
false;
133 err_control.markers.push_back(err);
136 im.controls.push_back(err_control);
141 visualization_msgs::InteractiveMarkerControl control;
143 if (orientation_fixed)
145 control.orientation.w = 1;
146 control.orientation.x = 1;
147 control.orientation.y = 0;
148 control.orientation.z = 0;
149 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::MOVE_AXIS;
150 int_marker.controls.push_back(control);
152 control.orientation.w = 1;
153 control.orientation.x = 0;
154 control.orientation.y = 1;
155 control.orientation.z = 0;
156 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::ROTATE_AXIS;
157 int_marker.controls.push_back(control);
159 control.orientation.w = 1;
160 control.orientation.x = 0;
161 control.orientation.y = 0;
162 control.orientation.z = 1;
163 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::MOVE_AXIS;
164 int_marker.controls.push_back(control);
167 void add6DOFControl(visualization_msgs::InteractiveMarker& int_marker,
bool orientation_fixed)
175 visualization_msgs::InteractiveMarkerControl control;
177 if (orientation_fixed)
179 control.orientation.w = 1;
180 control.orientation.x = 1;
181 control.orientation.y = 0;
182 control.orientation.z = 0;
183 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::ROTATE_AXIS;
184 int_marker.controls.push_back(control);
186 control.orientation.w = 1;
187 control.orientation.x = 0;
188 control.orientation.y = 1;
189 control.orientation.z = 0;
190 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::ROTATE_AXIS;
191 int_marker.controls.push_back(control);
193 control.orientation.w = 1;
194 control.orientation.x = 0;
195 control.orientation.y = 0;
196 control.orientation.z = 1;
197 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::ROTATE_AXIS;
198 int_marker.controls.push_back(control);
203 visualization_msgs::InteractiveMarkerControl control;
205 if (orientation_fixed)
207 control.orientation.w = 1;
208 control.orientation.x = 1;
209 control.orientation.y = 0;
210 control.orientation.z = 0;
211 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::MOVE_AXIS;
212 int_marker.controls.push_back(control);
214 control.orientation.w = 1;
215 control.orientation.x = 0;
216 control.orientation.y = 1;
217 control.orientation.z = 0;
218 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::MOVE_AXIS;
219 int_marker.controls.push_back(control);
221 control.orientation.w = 1;
222 control.orientation.x = 0;
223 control.orientation.y = 0;
224 control.orientation.z = 1;
225 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::MOVE_AXIS;
226 int_marker.controls.push_back(control);
230 const std_msgs::ColorRGBA& color,
bool position,
bool orientation)
232 visualization_msgs::InteractiveMarkerControl control;
233 control.orientation_mode = visualization_msgs::InteractiveMarkerControl::VIEW_FACING;
234 if (position && orientation)
235 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::MOVE_ROTATE_3D;
236 else if (orientation)
237 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::ROTATE_3D;
239 control.interaction_mode = visualization_msgs::InteractiveMarkerControl::MOVE_3D;
240 control.independent_marker_orientation =
true;
241 control.name =
"move";
243 visualization_msgs::Marker marker;
245 marker.type = visualization_msgs::Marker::SPHERE;
246 marker.scale.x = radius * 2.0;
247 marker.scale.y = radius * 2.0;
248 marker.scale.z = radius * 2.0;
249 marker.color = color;
251 control.markers.push_back(marker);
252 control.always_visible =
false;
254 int_marker.controls.push_back(control);
258 const geometry_msgs::PoseStamped& stamped,
double scale,
259 bool orientation_fixed)
266 visualization_msgs::InteractiveMarker
make6DOFMarker(
const std::string& name,
const geometry_msgs::PoseStamped& stamped,
267 double scale,
bool orientation_fixed)
visualization_msgs::InteractiveMarker makeEmptyInteractiveMarker(const std::string &name, const geometry_msgs::PoseStamped &stamped, double scale)
static tf::Quaternion createQuaternionFromRPY(double roll, double pitch, double yaw)
void addPlanarXYControl(visualization_msgs::InteractiveMarker &int_marker, bool orientation_fixed=false)
void addTArrowMarker(visualization_msgs::InteractiveMarker &im)
void addPositionControl(visualization_msgs::InteractiveMarker &int_marker, bool orientation_fixed=false)
void addViewPlaneControl(visualization_msgs::InteractiveMarker &int_marker, double radius, const std_msgs::ColorRGBA &color, bool position=true, bool orientation=true)
void addOrientationControl(visualization_msgs::InteractiveMarker &int_marker, bool orientation_fixed=false)
static void quaternionMsgToTF(const geometry_msgs::Quaternion &msg, Quaternion &bt)
static void quaternionTFToMsg(const Quaternion &bt, geometry_msgs::Quaternion &msg)
void addErrorMarker(visualization_msgs::InteractiveMarker &im)
void add6DOFControl(visualization_msgs::InteractiveMarker &int_marker, bool orientation_fixed=false)
visualization_msgs::InteractiveMarker makePlanarXYMarker(const std::string &name, const geometry_msgs::PoseStamped &stamped, double scale, bool orientation_fixed=false)
visualization_msgs::InteractiveMarker make6DOFMarker(const std::string &name, const geometry_msgs::PoseStamped &stamped, double scale, bool orientation_fixed=false)