ModelData.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2013 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16 */
17 #ifndef _GAZEBO_MODEL_DATA_HH_
18 #define _GAZEBO_MODEL_DATA_HH_
19 
20 #include <map>
21 #include <string>
22 #include <vector>
23 
26 
27 namespace boost
28 {
29  class recursive_mutex;
30 }
31 
32 namespace gazebo
33 {
34  namespace gui
35  {
36  class LinkInspector;
37  class ModelPluginInspector;
38 
39  class GZ_GUI_VISIBLE ModelData
40  {
43  public: static std::string GetTemplateSDFString();
44 
47  public: static double GetEditTransparency();
48 
53  public: static void UpdateRenderGroup(rendering::VisualPtr _visual);
54  };
55 
57  class GZ_GUI_VISIBLE NestedModelData
58  {
61  public: void SetName(const std::string &_name);
62 
65  public: std::string Name() const;
66 
69  public: void SetPose(const ignition::math::Pose3d &_pose);
70 
73  public: ignition::math::Pose3d Pose() const;
74 
77  public: int Depth() const;
78 
80  public: sdf::ElementPtr modelSDF;
81 
84 
86  public: std::map<std::string, rendering::VisualWeakPtr> models;
87 
89  public: std::map<std::string, rendering::VisualWeakPtr> links;
90  };
91 
94  class GZ_GUI_VISIBLE LinkData : public QObject
95  {
96  Q_OBJECT
97 
99  public: LinkData();
100 
102  public: ~LinkData();
103 
106  public: std::string Name() const;
107 
110  public: void SetName(const std::string &_name);
111 
114  public: ignition::math::Pose3d Pose() const;
115 
118  public: void SetPose(const ignition::math::Pose3d &_pose3d);
119 
122  public: void Load(sdf::ElementPtr _sdf);
123 
126  public: const std::map<std::string, ignition::math::Vector3d> &Scales()
127  const;
128 
134  public: void UpdateInspectorScale();
135 
140  public: void SetScales(
141  const std::map<std::string, ignition::math::Vector3d> &_scales);
142 
145  public: void AddVisual(rendering::VisualPtr _visual);
146 
150  public: void AddCollision(rendering::VisualPtr _collisionVis,
151  const msgs::Collision *_msg = NULL);
152 
154  public: void UpdateConfig();
155 
159  public: LinkData *Clone(const std::string &_newName);
160 
163  public slots: void ShowCollisions(const bool _show);
164 
167  public slots: void ShowVisuals(const bool _show);
168 
171  public slots: void ShowLinkFrame(const bool _show);
172 
176  public: static double ComputeVolume(const msgs::Collision &_collision);
177 
182  public: static ignition::math::Vector3d ComputeMomentOfInertia(
183  const msgs::Collision &_collision, const double _mass);
184 
187  public: double ComputeVolume() const;
188 
191  public: void SetLinkVisual(const rendering::VisualPtr _visual);
192 
195  public: rendering::VisualPtr LinkVisual() const;
196 
198  private: void Update();
199 
202  private: bool Apply();
203 
206  private slots: void OnAccept();
207 
210  private slots: void OnApply();
211 
214  private slots: void OnAddVisual(const std::string &_name);
215 
218  private slots: void OnAddCollision(const std::string &_name);
219 
222  private slots: void OnRemoveVisual(const std::string &_name);
223 
226  private slots: void OnRemoveCollision(const std::string &_name);
227 
231  private slots: void OnShowCollision(const bool _show,
232  const std::string &_name);
233 
237  private slots: void OnShowVisual(const bool _show,
238  const std::string &_name);
239 
241  private slots: void OnInspectorOpened();
242 
244  private: std::vector<event::ConnectionPtr> connections;
245 
247  private: boost::recursive_mutex *updateMutex;
248 
250  public: sdf::ElementPtr linkSDF;
251 
253  private: double mass;
254 
256  private: double inertiaIxx;
257 
259  private: double inertiaIyy;
260 
262  private: double inertiaIzz;
263 
266  public: std::map<std::string, ignition::math::Vector3d> scales;
267 
269  private: rendering::VisualPtr linkVisual;
270 
272  public: std::map<rendering::VisualPtr, msgs::Visual> visuals;
273 
275  public: std::map<rendering::VisualPtr, msgs::Visual> deletedVisuals;
276 
278  public: std::vector<msgs::Visual *> visualUpdateMsgs;
279 
281  public: std::vector<msgs::Collision *> collisionUpdateMsgs;
282 
284  public: std::map<rendering::VisualPtr, msgs::Collision> collisions;
285 
287  public: std::map<rendering::VisualPtr, msgs::Collision> deletedCollisions;
288 
291 
294 
296  public: bool nested;
297 
299  public: bool showCollisions = true;
300 
302  public: bool showVisuals = true;
303 
305  public: bool showLinkFrame = true;
306  };
307 
309  class GZ_GUI_VISIBLE ModelPluginData : public QObject
310  {
311  Q_OBJECT
312 
314  public: ModelPluginData();
315 
317  public: ~ModelPluginData();
318 
321  public: void Load(sdf::ElementPtr _pluginElem);
322 
325 
327  public: sdf::ElementPtr modelPluginSDF;
328  };
329  }
330 }
331 
332 #endif
std::map< std::string, ignition::math::Vector3d > scales
Scale of all collisions and visuals in the link, indexed by their visual's names. ...
Definition: ModelData.hh:266
Definition: LinkInspector.hh:39
rendering::VisualPtr modelVisual
Visual representing this model.
Definition: ModelData.hh:83
std::map< rendering::VisualPtr, msgs::Visual > visuals
Visuals of the link.
Definition: ModelData.hh:272
sdf::ElementPtr linkSDF
SDF representing the link data.
Definition: ModelData.hh:250
Definition: ModelData.hh:39
std::map< rendering::VisualPtr, msgs::Collision > deletedCollisions
Deleted collisions of the link.
Definition: ModelData.hh:287
std::vector< msgs::Collision * > collisionUpdateMsgs
Msgs for updating collision visuals.
Definition: ModelData.hh:281
Helper class to store nested models data.
Definition: ModelData.hh:57
Inspector for model plugin properties.
Definition: ModelPluginInspector.hh:34
std::map< std::string, rendering::VisualWeakPtr > links
Links inside this model.
Definition: ModelData.hh:89
LinkInspector * inspector
Inspector for configuring link properties.
Definition: ModelData.hh:293
ModelPluginInspector * inspector
Inspector for configuring model plugin properties.
Definition: ModelData.hh:324
Helper class to store model plugin data.
Definition: ModelData.hh:309
rendering::LinkFrameVisualPtr linkFrameVis
Link frame visual.
Definition: ModelData.hh:290
Helper class to store link data.
Definition: ModelData.hh:94
sdf::ElementPtr modelPluginSDF
SDF representing the model plugin data.
Definition: ModelData.hh:327
std::shared_ptr< LinkFrameVisual > LinkFrameVisualPtr
Definition: RenderTypes.hh:182
#define NULL
Definition: CommonTypes.hh:31
std::shared_ptr< Visual > VisualPtr
Definition: RenderTypes.hh:114
std::map< rendering::VisualPtr, msgs::Visual > deletedVisuals
Deleted visuals of the link.
Definition: ModelData.hh:275
std::map< std::string, rendering::VisualWeakPtr > models
Models inside this model.
Definition: ModelData.hh:86
bool nested
Flag set to true if this is a link of a nested model.
Definition: ModelData.hh:296
sdf::ElementPtr modelSDF
SDF representing the model data.
Definition: ModelData.hh:80
std::vector< msgs::Visual * > visualUpdateMsgs
Msgs for updating visuals.
Definition: ModelData.hh:278
std::map< rendering::VisualPtr, msgs::Collision > collisions
Collisions of the link.
Definition: ModelData.hh:284