Go to the documentation of this file.
17 #ifndef GAZEBO_PHYSICS_WORLD_HH_
18 #define GAZEBO_PHYSICS_WORLD_HH_
33 #include <boost/enable_shared_from_this.hpp>
80 class GZ_PHYSICS_VISIBLE
World :
81 public boost::enable_shared_from_this<World>
86 public:
explicit World(
const std::string &_name =
"");
94 public:
void Load(sdf::ElementPtr _sdf);
98 public:
const sdf::ElementPtr
SDF();
103 public:
void Save(
const std::string &_filename);
113 public:
void Run(
const unsigned int _iterations = 0);
135 public: std::string
Name()
const;
160 public: ignition::math::Vector3d
Gravity()
const;
164 public:
void SetGravity(
const ignition::math::Vector3d &_gravity);
282 const ignition::math::Vector3d &_pt)
const;
290 const ignition::math::Vector3d &_pt)
const;
328 public:
void Step(
const unsigned int _steps);
335 const std::string &_name,
336 sdf::ElementPtr _sdf);
465 private:
ModelPtr ModelById(
const unsigned int _id)
const;
471 private:
void LoadPlugins();
476 private:
void LoadEntities(sdf::ElementPtr _sdf,
BasePtr _parent);
504 private:
void RunLoop();
507 private:
void Step();
510 private:
void LogStep();
513 private:
void Update();
517 private:
void OnPause(
bool _p);
520 private:
void OnStep();
524 private:
void OnControl(ConstWorldControlPtr &_data);
528 private:
void OnPlaybackControl(ConstLogPlaybackControlPtr &_data);
532 private:
void OnRequest(ConstRequestPtr &_msg);
538 private:
void BuildSceneMsg(msgs::Scene &_scene,
BasePtr _entity);
542 private:
void JointLog(ConstJointPtr &_msg);
546 private:
void OnFactoryMsg(ConstFactoryPtr &_data);
550 private:
void OnModelMsg(ConstModelPtr &_msg);
553 private:
void ModelUpdateTBB();
556 private:
void ModelUpdateSingleLoop();
560 private:
void LoadPlugin(sdf::ElementPtr _sdf);
565 private:
void FillModelMsg(msgs::Model &_msg,
ModelPtr _model);
569 private:
void ProcessEntityMsgs();
573 private:
void ProcessRequestMsgs();
577 private:
void ProcessFactoryMsgs();
581 private:
void ProcessModelMsgs();
585 private:
void ProcessLightFactoryMsgs();
589 private:
void ProcessLightModifyMsgs();
593 private:
void ProcessPlaybackControlMsgs();
596 private:
bool OnLog(std::ostringstream &_stream);
600 private:
void LogModelResources();
603 private:
void ProcessMessages();
606 private:
void PublishWorldStats();
609 private:
void LogWorker();
612 private:
void RegisterIntrospectionItems();
615 private:
void UnregisterIntrospectionItems();
620 private:
void OnLightFactoryMsg(ConstLightPtr &_msg);
625 private:
void OnLightModifyMsg(ConstLightPtr &_msg);
643 private:
bool PluginInfoService(
const ignition::msgs::StringMsg &_request,
644 ignition::msgs::Plugin_V &_plugins);
648 private: std::unique_ptr<WorldPrivate> dataPtr;
void _AddDirty(Entity *_entity)
boost::shared_ptr< Actor > ActorPtr
Definition: PhysicsTypes.hh:97
A complete URI.
Definition: URI.hh:177
PhysicsEnginePtr Physics() const
Return the physics engine.
Forward declarations for the common classes.
Definition: Animation.hh:27
void PublishModelPose(physics::ModelPtr _model)
Publish pose updates for a model.
A Time class, can be used to hold wall- or sim-time. stored as sec and nano-sec.
Definition: Time.hh:48
void SetPhysicsEnabled(const bool _enable)
enable/disable physics engine during World::Update.
@ BASE
Base type.
Definition: Base.hh:83
void InsertModelSDF(const sdf::SDF &_sdf)
Insert a model using SDF.
boost::shared_ptr< Model > ModelPtr
Definition: PhysicsTypes.hh:93
std::vector< ModelPtr > Model_V
Definition: PhysicsTypes.hh:205
msgs::Scene SceneMsg() const
Get the current scene in message form.
common::SphericalCoordinatesPtr SphericalCoords() const
Return the spherical coordinates converter.
Forward declarations for transport.
void Init()
Initialize the world.
bool Running() const
Return the running state of the world.
void ResetEntities(Base::EntityType _type=Base::BASE)
Reset with options.
std::mutex & WorldPoseMutex() const
Get the set world pose mutex.
void Run(const unsigned int _iterations=0)
Run the world in a thread.
default namespace for gazebo
void SetWindEnabled(const bool _enable)
enable/disable wind.
bool IsLoaded() const
Return true if the world has been loaded.
void PublishModelScale(physics::ModelPtr _model)
Publish scale updates for a model.
void UpdateStateSDF()
Update the state SDF value from the current state.
bool WindEnabled() const
check if wind is enabled/disabled.
void Step(const unsigned int _steps)
Step the world forward in time.
void DisableAllModels()
Disable all links in all the models.
LightPtr LoadLight(const sdf::ElementPtr &_sdf, const BasePtr &_parent)
Load a light.
void PrintEntityTree()
Print Entity tree.
void InsertModelString(const std::string &_sdfString)
Insert a model from an SDF string.
void SetAtmosphereEnabled(const bool _enable)
enable/disable atmosphere model.
void EnableAllModels()
Enable all links in all the models.
void RemoveModel(const std::string &_name)
Remove a model by name.
void SetGravity(const ignition::math::Vector3d &_gravity)
Set the gravity vector.
boost::shared_ptr< Road > RoadPtr
Definition: PhysicsTypes.hh:161
This models a base atmosphere class to serve as a common interface to any derived atmosphere models.
Definition: Atmosphere.hh:43
void RemoveModel(ModelPtr _model)
Remove a model.
unsigned int LightCount() const
Get the number of lights.
boost::shared_ptr< Light > LightPtr
Definition: PhysicsTypes.hh:105
The world provides access to all other object within a simulated environment.
Definition: World.hh:82
PresetManagerPtr PresetMgr() const
Return the preset manager.
void ResetPhysicsStates()
Reset the velocity, acceleration, force and torque of all child models.
void Save(const std::string &_filename)
Save a world to a file.
void Load(sdf::ElementPtr _sdf)
Load the world using SDF parameters.
Light_V Lights() const
Get a list of all the lights.
void SetSimTime(const common::Time &_t)
Set the sim time.
boost::shared_ptr< SphericalCoordinates > SphericalCoordinatesPtr
Definition: CommonTypes.hh:121
Base class for wind.
Definition: Wind.hh:42
boost::shared_ptr< Base > BasePtr
Definition: PhysicsTypes.hh:77
void Fini()
Finalize the world.
Simbody physics engine.
Definition: SimbodyPhysics.hh:43
common::Time PauseTime() const
Get the amount of time simulation has been paused.
void Clear()
Remove all entities from the world.
void ResetTime()
Reset simulation time back to zero.
void Stop()
Stop the world.
Model_V Models() const
Get a list of all the models.
void _SetSensorsInitialized(const bool _init)
void RemovePlugin(const std::string &_name)
Remove a running plugin.
EntityPtr EntityBelowPoint(const ignition::math::Vector3d &_pt) const
Get the nearest entity below a point.
void SetMagneticField(const ignition::math::Vector3d &_mag)
Set the magnetic field vector.
EntityPtr EntityByName(const std::string &_name) const
Get a pointer to an Entity based on a name.
boost::shared_ptr< Entity > EntityPtr
Definition: PhysicsTypes.hh:85
void LoadPlugin(const std::string &_filename, const std::string &_name, sdf::ElementPtr _sdf)
Load a plugin.
bool IsPaused() const
Returns the state of the simulation true if paused.
Base class for all physics objects in Gazebo.
Definition: Entity.hh:53
common::Time StartTime() const
Get the wall time simulation was started.
void Reset()
Reset time and model poses, configurations in simulation.
void SetState(const WorldState &_state)
Set the current world state.
boost::shared_ptr< PhysicsEngine > PhysicsEnginePtr
Definition: PhysicsTypes.hh:125
void SetGravitySDF(const ignition::math::Vector3d &_gravity)
Set the gravity sdf value.
physics::Wind & Wind() const
Get a reference to the wind used by the world.
ignition::math::Vector3d Gravity() const
Return the gravity vector.
void PublishLightPose(const physics::LightPtr _light)
Publish pose updates for a light.
BasePtr BaseByName(const std::string &_name) const
Get an element by name.
uint32_t Iterations() const
Get the total number of iterations.
void InsertModelFile(const std::string &_sdfFilename)
Insert a model from an SDF file.
void ClearModels()
Remove all entities from the world.
std::string StripWorldName(const std::string &_name) const
Return a version of the name with "<world_name>::" removed.
Store state information of a physics::World object.
Definition: WorldState.hh:48
EntityType
Unique identifiers for all entity types.
Definition: Base.hh:81
common::Time RealTime() const
Get the real time (elapsed time).
ModelPtr ModelByIndex(const unsigned int _index) const
Get a model based on an index.
LightPtr LightByName(const std::string &_name) const
Get a light by name.
unsigned int ModelCount() const
Get the number of models.
World(const std::string &_name="")
Constructor.
void SetPaused(const bool _p)
Set whether the simulation is paused.
ModelPtr ModelByName(const std::string &_name) const
Get a model by name.
void RunBlocking(const unsigned int _iterations=0)
Run the world.
boost::shared_ptr< PresetManager > PresetManagerPtr
Definition: PhysicsTypes.hh:129
bool AtmosphereEnabled() const
check if atmosphere model is enabled/disabled.
const sdf::ElementPtr SDF()
Get the SDF of the world in the current state.
bool SensorsInitialized() const
Get whether sensors have been initialized.
std::string UniqueModelName(const std::string &_name)
Get a model name which doesn't equal any existing model's name, by appending numbers to the given nam...
common::Time SimTime() const
Get the world simulation time, note if you want the PC wall clock call common::Time::GetWallTime.
DART Link class.
Definition: DARTLink.hh:40
bool PhysicsEnabled() const
check if physics engine is enabled/disabled.
std::string Name() const
Get the name of the world.
common::URI URI() const
Return the URI of the world.
std::vector< LightPtr > Light_V
Definition: PhysicsTypes.hh:221
ModelPtr ModelBelowPoint(const ignition::math::Vector3d &_pt) const
Get the nearest model below and not encapsulating a point.
physics::Atmosphere & Atmosphere() const
Get a reference to the atmosphere model used by the world.
virtual ignition::math::Vector3d MagneticField() const
Return the magnetic field vector.