Gazebo Sim

API Reference

9.0.0~pre1
Util.hh
Go to the documentation of this file.
1/*
2 * Copyright (C) 2019 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 GZ_SIM_UTIL_HH_
18#define GZ_SIM_UTIL_HH_
19
20#include <gz/msgs/entity.pb.h>
21
22#include <memory>
23#include <string>
24#include <unordered_set>
25#include <vector>
26
27#include <gz/common/Mesh.hh>
28#include <gz/math/Pose3.hh>
29#include <sdf/Mesh.hh>
30
32#include "gz/sim/config.hh"
33#include "gz/sim/Entity.hh"
35#include "gz/sim/Export.hh"
36#include "gz/sim/Types.hh"
37
38
39namespace gz
40{
41 namespace sim
42 {
43 // Inline bracket to help doxygen filtering.
44 inline namespace GZ_SIM_VERSION_NAMESPACE {
45 //
50 math::Pose3d GZ_SIM_VISIBLE worldPose(const Entity &_entity,
51 const EntityComponentManager &_ecm);
52
57 math::Vector3d GZ_SIM_VISIBLE relativeVel(const Entity &_entity,
58 const EntityComponentManager &_ecm);
59
66 std::string GZ_SIM_VISIBLE scopedName(const Entity &_entity,
67 const EntityComponentManager &_ecm, const std::string &_delim = "/",
68 bool _includePrefix = true);
69
94 const std::string &_scopedName, const EntityComponentManager &_ecm,
95 Entity _relativeTo = kNullEntity,
96 const std::string &_delim = "::");
97
118 ComponentTypeId GZ_SIM_VISIBLE entityTypeId(const Entity &_entity,
119 const EntityComponentManager &_ecm);
120
138 std::string GZ_SIM_VISIBLE entityTypeStr(const Entity &_entity,
139 const EntityComponentManager &_ecm);
140
145 Entity GZ_SIM_VISIBLE worldEntity(const Entity &_entity,
146 const EntityComponentManager &_ecm);
147
151 Entity GZ_SIM_VISIBLE worldEntity(
152 const EntityComponentManager &_ecm);
153
160 const std::string &_name, const std::string &_delim);
161
170 std::string GZ_SIM_VISIBLE asFullPath(const std::string &_uri,
171 const std::string &_filePath);
172
176
181 void GZ_SIM_VISIBLE addResourcePaths(
182 const std::vector<std::string> &_paths = {});
183
190 const Entity &_entity,
191 const EntityComponentManager &_ecm);
192
205 std::string GZ_SIM_VISIBLE validTopic(
206 const std::vector<std::string> &_topics);
207
224 const Entity &_entity,
225 const EntityComponentManager &_ecm,
226 bool _excludeWorld = true);
227
244 const std::string &_sdfFilename,
245 const std::string &_fuelResourceCache = "");
246
255 template <class ComponentType>
257 Entity _entity, bool _enable = true)
258 {
259 bool changed{false};
260
261 auto exists = _ecm.Component<ComponentType>(_entity);
262 if (_enable && !exists)
263 {
264 _ecm.CreateComponent(_entity, ComponentType());
265 changed = true;
266 }
267 else if (!_enable && exists)
268 {
269 _ecm.RemoveComponent<ComponentType>(_entity);
270 changed = true;
271 }
272 return changed;
273 }
274
292 Entity GZ_SIM_VISIBLE entityFromMsg(
293 const EntityComponentManager &_ecm, const msgs::Entity &_msg);
294
301 std::optional<math::Vector3d> GZ_SIM_VISIBLE sphericalCoordinates(
302 Entity _entity, const EntityComponentManager &_ecm);
303
309 std::optional<math::Vector3d> GZ_SIM_VISIBLE getGridFieldCoordinates(
310 const EntityComponentManager &_ecm,
311 const math::Vector3d& _worldPosition,
313
317 GZ_SIM_VISIBLE const common::Mesh *loadMesh(const sdf::Mesh &_meshSdf);
318
323 GZ_SIM_VISIBLE const common::Mesh *optimizeMesh(const sdf::Mesh &_meshSdf,
324 const common::Mesh &_mesh);
325
327 const std::string kResourcePathEnv{"GZ_SIM_RESOURCE_PATH"};
328
331 const std::string kSdfPathEnv{"SDF_PATH"};
332
334 const std::string kServerConfigPathEnv{"GZ_SIM_SERVER_CONFIG_PATH"};
335
338 const std::string kRenderPluginPathEnv{"GZ_SIM_RENDER_ENGINE_PATH"};
339 }
340 }
341}
342#endif