17 #ifndef GAZEBO_PHYSICS_WORLD_HH_
18 #define GAZEBO_PHYSICS_WORLD_HH_
27 #include <boost/enable_shared_from_this.hpp>
75 class GZ_PHYSICS_VISIBLE
World :
76 public boost::enable_shared_from_this<World>
81 public:
explicit World(
const std::string &_name =
"");
89 public:
void Load(sdf::ElementPtr _sdf);
93 public:
const sdf::ElementPtr
SDF();
102 public:
void Save(
const std::string &_filename);
118 public:
void Run(const
unsigned int _iterations = 0);
122 public:
bool Running() const;
136 public:
void Clear();
140 public: std::
string Name() const;
169 public:
void SetGravity(const
ignition::math::Vector3d &_gravity);
173 public:
void SetGravitySDF(const
ignition::math::Vector3d &_gravity);
177 public:
ignition::math::Vector3d MagneticField() const;
181 public:
void SetMagneticField(const
ignition::math::Vector3d &_mag);
185 public:
unsigned int ModelCount() const;
192 public:
ModelPtr ModelByIndex(const
unsigned int _index) const;
200 public:
unsigned int LightCount() const;
210 public:
void ResetEntities(
Base::EntityType _type =
Base::BASE);
213 public:
void ResetTime();
216 public:
void Reset();
220 public:
void PrintEntityTree();
229 public:
void SetSimTime(const
common::Time &_t);
245 public:
bool IsPaused() const;
249 public:
void SetPaused(const
bool _p);
256 public:
BasePtr BaseByName(const std::
string &_name) const;
263 public:
ModelPtr ModelByName(const std::
string &_name) const;
270 public:
LightPtr LightByName(const std::
string &_name) const;
277 public:
EntityPtr EntityByName(const std::
string &_name) const;
287 const
ignition::math::Vector3d &_pt) const;
295 const
ignition::math::Vector3d &_pt) const;
304 public:
void InsertModelFile(const std::
string &_sdfFilename);
309 public:
void InsertModelString(const std::
string &_sdfString);
314 public:
void InsertModelSDF(const sdf::SDF &_sdf);
319 public: std::
string StripWorldName(const std::
string &_name) const;
324 public:
void EnableAllModels();
329 public:
void DisableAllModels();
333 public:
void Step(const
unsigned int _steps);
339 public:
void LoadPlugin(const std::
string &_filename,
340 const std::
string &_name,
341 sdf::ElementPtr _sdf);
345 public:
void RemovePlugin(const std::
string &_name);
349 public: std::mutex &WorldPoseMutex() const;
353 public:
bool PhysicsEnabled() const;
357 public:
void SetPhysicsEnabled(const
bool _enable);
361 public:
bool WindEnabled() const;
365 public:
void SetWindEnabled(const
bool _enable);
369 public:
bool AtmosphereEnabled() const;
373 public:
void SetAtmosphereEnabled(const
bool _enable);
376 public:
void UpdateStateSDF();
380 public:
bool IsLoaded() const;
384 public:
void ClearModels();
390 public:
void PublishModelPose(physics::
ModelPtr _model);
396 public:
void PublishModelScale(physics::
ModelPtr _model);
402 public:
void PublishLightPose(const physics::
LightPtr _light);
406 public: uint32_t Iterations() const;
410 public: msgs::Scene SceneMsg() const;
416 public:
void RunBlocking(const
unsigned int _iterations = 0);
428 public:
void RemoveModel(const std::
string &_name);
432 public:
void ResetPhysicsStates();
444 public:
bool SensorsInitialized() const;
450 public:
void _SetSensorsInitialized(const
bool _init);
461 public: std::
string UniqueModelName(const std::
string &_name);
465 public:
void SetSensorWaitFunc(std::function<
void(
double,
double)> _func);
474 private:
ModelPtr ModelById(const
unsigned int _id) const;
480 private:
void LoadPlugins();
485 private:
void LoadEntities(sdf::ElementPtr _sdf,
BasePtr _parent);
497 public:
LightPtr LoadLight(const sdf::ElementPtr &_sdf,
513 private:
void RunLoop();
516 private:
void Step();
519 private:
void LogStep();
522 private:
void Update();
526 private:
void OnPause(
bool _p);
529 private:
void OnStep();
533 private:
void OnControl(ConstWorldControlPtr &_data);
537 private:
void OnPlaybackControl(ConstLogPlaybackControlPtr &_data);
541 private:
void OnRequest(ConstRequestPtr &_msg);
547 private:
void BuildSceneMsg(msgs::Scene &_scene,
BasePtr _entity);
551 private:
void JointLog(ConstJointPtr &_msg);
555 private:
void OnFactoryMsg(ConstFactoryPtr &_data);
559 private:
void OnModelMsg(ConstModelPtr &_msg);
562 private:
void ModelUpdateTBB();
565 private:
void ModelUpdateSingleLoop();
569 private:
void LoadPlugin(sdf::ElementPtr _sdf);
574 private:
void FillModelMsg(msgs::
Model &_msg,
ModelPtr _model);
578 private:
void ProcessEntityMsgs();
582 private:
void ProcessRequestMsgs();
586 private:
void ProcessFactoryMsgs();
590 private:
void ProcessModelMsgs();
594 private:
void ProcessLightFactoryMsgs();
598 private:
void ProcessLightModifyMsgs();
602 private:
void ProcessPlaybackControlMsgs();
605 private:
bool OnLog(std::ostringstream &_stream);
609 private:
void LogModelResources();
612 private:
void ProcessMessages();
615 private:
void PublishWorldStats();
618 private:
void LogWorker();
621 private:
void RegisterIntrospectionItems();
624 private:
void UnregisterIntrospectionItems();
629 private:
void OnLightFactoryMsg(ConstLightPtr &_msg);
634 private:
void OnLightModifyMsg(ConstLightPtr &_msg);
652 private:
bool PluginInfoService(const
ignition::msgs::StringMsg &_request,
653 ignition::msgs::Plugin_V &_plugins);
658 private:
bool SceneInfoService(msgs::Scene &_response);
663 private:
bool ShadowCasterMaterialNameService(
664 ignition::msgs::StringMsg &_response);
671 private:
bool ShadowCasterRenderBackFacesService(
672 ignition::msgs::Boolean &_response);
676 private: std::unique_ptr<WorldPrivate> dataPtr;
common
Definition: FuelModelDatabase.hh:42
default namespace for gazebo
Forward declarations for transport.
This models a base atmosphere class to serve as a common interface to any derived atmosphere models.
Definition: Atmosphere.hh:43
Base class for most physics classes.
Definition: Base.hh:73
DART Link class.
Definition: DARTLink.hh:40
Base class for all physics objects in Gazebo.
Definition: Entity.hh:53
A model is a collection of links, joints, and plugins.
Definition: Model.hh:60
Simbody physics engine.
Definition: SimbodyPhysics.hh:43
Base class for wind.
Definition: Wind.hh:42
Store state information of a physics::World object.
Definition: WorldState.hh:48
The world provides access to all other object within a simulated environment.
Definition: World.hh:77
void Save(const std::string &_filename)
Save a world to a file.
const sdf::ElementPtr SDF()
Get the SDF of the world in the current state.
const sdf::World * GetSDFDom() const
Get the SDF DOM for the world.
void Load(sdf::ElementPtr _sdf)
Load the world using SDF parameters.
void Init() GAZEBO_DEPRECATED(11.0)
Initialize the world.
World(const std::string &_name="")
Constructor.
GAZEBO_VISIBLE void Init(google::protobuf::Message &_message, const std::string &_id="")
Initialize a message.
boost::shared_ptr< SphericalCoordinates > SphericalCoordinatesPtr
Definition: CommonTypes.hh:121
std::vector< ModelPtr > Model_V
Definition: PhysicsTypes.hh:206
boost::shared_ptr< Light > LightPtr
Definition: PhysicsTypes.hh:106
boost::shared_ptr< PhysicsEngine > PhysicsEnginePtr
Definition: PhysicsTypes.hh:126
boost::shared_ptr< Actor > ActorPtr
Definition: PhysicsTypes.hh:98
boost::shared_ptr< Base > BasePtr
Definition: PhysicsTypes.hh:78
std::vector< LightPtr > Light_V
Definition: PhysicsTypes.hh:222
boost::shared_ptr< PresetManager > PresetManagerPtr
Definition: PhysicsTypes.hh:130
std::function< void(const std::string &, const msgs::PosesStamped &)> UpdateScenePosesFunc
Function signature for API that updates scene poses.
Definition: PhysicsTypes.hh:252
boost::shared_ptr< Entity > EntityPtr
Definition: PhysicsTypes.hh:86
boost::shared_ptr< Road > RoadPtr
Definition: PhysicsTypes.hh:162
boost::shared_ptr< Model > ModelPtr
Definition: PhysicsTypes.hh:94
Forward declarations for the common classes.
Definition: Animation.hh:27
#define GAZEBO_DEPRECATED(version)
Definition: system.hh:328