Gazebo Sim

API Reference

9.0.0
Breadcrumbs.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_SYSTEMS_BREADCRUMBS_HH_
18#define GZ_SIM_SYSTEMS_BREADCRUMBS_HH_
19
20#include <memory>
21#include <optional>
22#include <set>
23#include <string>
24#include <unordered_map>
25#include <vector>
26
27#include <sdf/Element.hh>
28#include <sdf/Geometry.hh>
29#include <sdf/Root.hh>
30
31#include <gz/transport/Node.hh>
32#include <gz/math/Pose3.hh>
33
34#include "gz/sim/Model.hh"
36#include "gz/sim/System.hh"
37
38namespace gz
39{
40namespace sim
41{
42// Inline bracket to help doxygen filtering.
43inline namespace GZ_SIM_VERSION_NAMESPACE {
44namespace systems
45{
89 : public System,
90 public ISystemConfigure,
91 public ISystemPreUpdate
92 {
94 public: Breadcrumbs() = default;
95
96 // Documentation inherited
97 public: void Configure(const Entity &_entity,
100 EventManager &_eventMgr) override;
101
102 // Documentation inherited
103 public: void PreUpdate(
104 const gz::sim::UpdateInfo &_info,
105 gz::sim::EntityComponentManager &_ecm) override;
106
108 private: void OnDeploy(const msgs::Empty &_msg);
109
114 public: bool MakeStatic(Entity _entity, EntityComponentManager &_ecm);
115
117 private: bool initialized{false};
118
120 private: transport::Node node;
121
123 private: Model model{kNullEntity};
124
127
129 public: std::unique_ptr<SdfEntityCreator> creator{nullptr};
130
132 private: int maxDeployments{-1};
133
135 private: int numDeployments{0};
136
138 private: sdf::Root modelRoot;
139
141 private: bool isPerformer{false};
142
145 private: bool allowRenaming{false};
146
148 private: std::optional<sdf::Geometry> performerGeometry;
149
151 private: std::vector<bool> pendingCmds;
152
154 private: std::set<Entity> pendingGeometryUpdate;
155
157 private: std::mutex pendingCmdsMutex;
158
160 private: std::chrono::steady_clock::duration disablePhysicsTime =
161 std::chrono::steady_clock::duration::zero();
162
165 autoStaticEntities;
166
168 private: sdf::Model staticModelToSpawn;
169
172
174 public: bool topicStatistics{false};
175
178 };
179 }
180}
181}
182}
183
184#endif