InterfaceModel.hh
Go to the documentation of this file.
1 /*
2  * Copyright 2021 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 
18 #ifndef SDF_INTERFACE_MODEL_HH_
19 #define SDF_INTERFACE_MODEL_HH_
20 
21 #include <functional>
22 #include <string>
23 #include <memory>
24 #include <vector>
25 
26 #include <gz/math/Pose3.hh>
27 #include <gz/utils/ImplPtr.hh>
28 
29 #include "sdf/InterfaceFrame.hh"
30 #include "sdf/InterfaceJoint.hh"
31 #include "sdf/InterfaceLink.hh"
33 #include "sdf/Types.hh"
34 
35 #include "sdf/sdf_config.h"
36 #include "sdf/system_util.hh"
37 
38 namespace sdf
39 {
40 inline namespace SDF_VERSION_NAMESPACE
41 {
42 class InterfaceModel;
43 class Model;
44 struct PoseRelativeToGraph;
45 template <typename T>
46 class ScopedGraph;
47 class World;
48 
49 using InterfaceModelPtr = std::shared_ptr<InterfaceModel>;
50 using InterfaceModelConstPtr = std::shared_ptr<const InterfaceModel>;
51 
54  std::function<void(const sdf::InterfaceModelPoseGraph &)>;
55 
58 {
71  public: InterfaceModel(const std::string &_name,
72  const sdf::RepostureFunction &_repostureFunction,
73  bool _static,
74  const std::string &_canonicalLinkName,
75  const gz::math::Pose3d &_poseInParentFrame = {});
76 
79  public: const std::string &Name() const;
80 
83  public: bool Static() const;
84 
90  public: const std::string &CanonicalLinkName() const;
91 
94  public: const gz::math::Pose3d &ModelFramePoseInParentFrame() const;
95 
98  public: void AddNestedModel(sdf::InterfaceModelConstPtr _nestedModel);
99 
101  public: const std::vector<sdf::InterfaceModelConstPtr> &NestedModels() const;
102 
106  public: void AddFrame(sdf::InterfaceFrame _frame);
107 
109  public: const std::vector<sdf::InterfaceFrame> &Frames() const;
110 
114  public: void AddJoint(sdf::InterfaceJoint _joint);
115 
117  public: const std::vector<sdf::InterfaceJoint> &Joints() const;
118 
122  public: void AddLink(sdf::InterfaceLink _link);
123 
125  public: const std::vector<sdf::InterfaceLink> &Links() const;
126 
129  public: bool ParserSupportsMergeInclude() const;
130 
133  public: void SetParserSupportsMergeInclude(bool _val);
134 
138  private: void InvokeRepostureFunction(
140  const std::optional<std::string> &_name) const;
141 
142  friend World;
143  friend Model;
145  GZ_UTILS_IMPL_PTR(dataPtr)
146 };
147 }
148 }
149 
150 #endif
Interface element representing an explicit frame.
Definition: InterfaceFrame.hh:35
Interface element representing a Joint.
Definition: InterfaceJoint.hh:35
Class used in reposture callbacks of custom parsers to resolve poses.
Definition: InterfaceModelPoseGraph.hh:45
Interface element representing a Model.
Definition: InterfaceModel.hh:58
const std::vector< sdf::InterfaceModelConstPtr > & NestedModels() const
Gets registered nested models.
void SetParserSupportsMergeInclude(bool _val)
Set whether the custom parser supports merge-include.
InterfaceModel(const std::string &_name, const sdf::RepostureFunction &_repostureFunction, bool _static, const std::string &_canonicalLinkName, const gz::math::Pose3d &_poseInParentFrame={})
Constructor.
const gz::math::Pose3d & ModelFramePoseInParentFrame() const
Get the pose of this model in the parent frame.
void AddNestedModel(sdf::InterfaceModelConstPtr _nestedModel)
Provided so that hierarchy can still be leveraged from SDFormat.
void AddFrame(sdf::InterfaceFrame _frame)
Add an interface frame.
const std::string & CanonicalLinkName() const
Get the canonical link name.
const std::vector< sdf::InterfaceFrame > & Frames() const
Gets registered frames.
void AddLink(sdf::InterfaceLink _link)
Add an interface link.
bool Static() const
Get whether the model is static.
void AddJoint(sdf::InterfaceJoint _joint)
Add an interface joint.
const std::vector< sdf::InterfaceLink > & Links() const
Gets registered links.
bool ParserSupportsMergeInclude() const
Whether the custom parser supports merge-include.
const std::string & Name() const
Get the name of the model.
const std::vector< sdf::InterfaceJoint > & Joints() const
Gets registered joints.
Definition: Model.hh:55
Definition: Collision.hh:44
Definition: World.hh:59
std::function< void(const sdf::InterfaceModelPoseGraph &)> RepostureFunction
Function signature for the reposture callback function.
Definition: InterfaceModel.hh:54
std::shared_ptr< const InterfaceModel > InterfaceModelConstPtr
Definition: InterfaceModel.hh:50
std::shared_ptr< InterfaceModel > InterfaceModelPtr
Definition: InterfaceModel.hh:49
namespace for Simulation Description Format parser
Definition: Actor.hh:35
#define SDFORMAT_VISIBLE
Use to represent "symbol visible" if supported.
Definition: system_util.hh:25