ModelData.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2013-2016 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: ignition::math::Vector3d Scale() const;
127 
130  public: void SetScale(const ignition::math::Vector3d &_scale);
131 
134  public: void AddVisual(rendering::VisualPtr _visual);
135 
139  public: void AddCollision(rendering::VisualPtr _collisionVis,
140  const msgs::Collision *_msg = NULL);
141 
143  public: void UpdateConfig();
144 
148  public: LinkData *Clone(const std::string &_newName);
149 
153  public: static double ComputeVolume(const msgs::Collision &_collision);
154 
159  public: static ignition::math::Vector3d ComputeMomentOfInertia(
160  const msgs::Collision &_collision, const double _mass);
161 
164  public: double ComputeVolume() const;
165 
168  public: void SetLinkVisual(const rendering::VisualPtr _visual);
169 
172  public: rendering::VisualPtr LinkVisual() const;
173 
175  private: void Update();
176 
179  private: bool Apply();
180 
183  private slots: void OnAccept();
184 
187  private slots: void OnApply();
188 
191  private slots: void OnAddVisual(const std::string &_name);
192 
195  private slots: void OnAddCollision(const std::string &_name);
196 
199  private slots: void OnRemoveVisual(const std::string &_name);
200 
203  private slots: void OnRemoveCollision(const std::string &_name);
204 
206  private: std::vector<event::ConnectionPtr> connections;
207 
209  private: boost::recursive_mutex *updateMutex;
210 
212  public: sdf::ElementPtr linkSDF;
213 
215  private: double mass;
216 
218  private: double inertiaIxx;
219 
221  private: double inertiaIyy;
222 
224  private: double inertiaIzz;
225 
227  public: ignition::math::Vector3d scale;
228 
231 
233  public: std::map<rendering::VisualPtr, msgs::Visual> visuals;
234 
236  public: std::vector<msgs::Visual *> visualUpdateMsgs;
237 
239  public: std::vector<msgs::Collision *> collisionUpdateMsgs;
240 
242  public: std::map<rendering::VisualPtr, msgs::Collision> collisions;
243 
246 
248  public: bool nested;
249  };
250 
252  class GZ_GUI_VISIBLE ModelPluginData : public QObject
253  {
254  Q_OBJECT
255 
257  public: ModelPluginData();
258 
260  public: ~ModelPluginData();
261 
264  public: void Load(sdf::ElementPtr _pluginElem);
265 
268 
270  public: sdf::ElementPtr modelPluginSDF;
271  };
272  }
273 }
274 
275 #endif
Definition: LinkInspector.hh:40
rendering::VisualPtr modelVisual
Visual representing this model.
Definition: ModelData.hh:83
rendering::VisualPtr linkVisual
Visual representing this link.
Definition: ModelData.hh:230
std::map< rendering::VisualPtr, msgs::Visual > visuals
Visuals of the link.
Definition: ModelData.hh:233
sdf::ElementPtr linkSDF
SDF representing the link data.
Definition: ModelData.hh:212
Definition: ModelData.hh:39
std::vector< msgs::Collision * > collisionUpdateMsgs
Msgs for updating collision visuals.
Definition: ModelData.hh:239
ignition::math::Vector3d scale
Scale of link.
Definition: ModelData.hh:227
Helper class to store nested models data.
Definition: ModelData.hh:57
Inspector for model plugin properties.
Definition: ModelPluginInspector.hh:35
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:245
ModelPluginInspector * inspector
Inspector for configuring model plugin properties.
Definition: ModelData.hh:267
Helper class to store model plugin data.
Definition: ModelData.hh:252
Helper class to store link data.
Definition: ModelData.hh:94
sdf::ElementPtr modelPluginSDF
SDF representing the model plugin data.
Definition: ModelData.hh:270
#define NULL
Definition: CommonTypes.hh:31
std::shared_ptr< Visual > VisualPtr
Definition: RenderTypes.hh:112
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:248
sdf::ElementPtr modelSDF
SDF representing the model data.
Definition: ModelData.hh:80
std::vector< msgs::Visual * > visualUpdateMsgs
Msgs for updating visuals.
Definition: ModelData.hh:236
std::map< rendering::VisualPtr, msgs::Collision > collisions
Collisions of the link.
Definition: ModelData.hh:242