A tick-tock release cycle allows easy migration to new software versions. Obsolete code is marked as deprecated for one major release. Deprecated code produces compile-time warnings. These warning serve as notification to users that their code should be upgraded. The next major release will remove the deprecated code.
- Modified:
- In the Physics system, all
*VelocityCmd
components are now deleted after each time step, whereas previously the component values were set to0
after each time step. Persistent velocity commands should be reapplied at each time step. - Default priority values are specified for the
Physics
andUserCommands
systems to ensure thatPhysics::Update
andUserCommands::PreUpdate
execute before systems with default execution priority. Several constants for system priority are defined ingz/sim/System.hh
. - The ForceTorque system has been changed from updating sensor data during
the parallelized
PostUpdate
phase to use the sequentialUpdate
phase and writing directly to the ECM if a sensor entity has aWrenchMeasured
component. The ForceTorque system priority is specified to use thegz::sim::systems::kPostPhysicsSensorPriority
constant to ensure that itsUpdate
phase executes afterPhysics::Update
and before systems with default priority.
- In the Physics system, all
- Deprecated
gz::sim::components::Factory::Register(const std::string &_type, ComponentDescriptorBase *_compDesc)
andgz::sim::components::Factory::Register(const std::string &_type, ComponentDescriptorBase *_compDesc, RegistrationObjectId _regObjId)
have been deprecated. Instead, please usegz::sim::components::Factory::Register(const char *_type, ComponentDescriptorBase *_compDesc, RegistrationObjectId _regObjId)
gz::sim::components::Factory::Unregister()
has been deprecated. Instead, please usegz::sim::components::Factory::Unregister(RegistrationObjectId _regObjId)
.
- The type of the static data member
gz::sim::components::Component::typeName
has been changed fromstd::string
toconst char*
.
-
Deprecated
- The
ParticleEmitter2
system was renamed toParticleEmitter
. TheParticleEmitter2
system is now deprecated. Please use theParticleEmitter
system.
- The
-
The
ignition::gazebo
namespace is deprecated and will be removed in future versions. Usegz::sim
instead. -
Header files under
ignition/...
are deprecated and will be removed in future versions. Usegz/...
instead. -
Configuration and log files are stored under
$HOME/.gz/sim
instead of$HOME/.ignition/gazebo
-
The following
IGN_GAZEBO_
prefixed environment variables are deprecated and will be removed in future versions. Use theGZ_SIM_
prefixed versions instead!IGN_GAZEBO_RENDER_ENGINE_PATH
->GZ_SIM_RENDER_ENGINE_PATH
IGN_GAZEBO_PHYSICS_ENGINE_PATH
->GZ_SIM_PHYSICS_ENGINE_PATH
IGN_GAZEBO_SYSTEM_PLUGIN_PATH
->GZ_SIM_SYSTEM_PLUGIN_PATH
IGN_DEBUG_COMPONENT_FACTORY
->GZ_DEBUG_COMPONENT_FACTORY
IGN_GAZEBO_RESOURCE_PATH
->GZ_SIM_RESOURCE_PATH
IGN_GAZEBO_SERVER_CONFIG_PATH
->GZ_SIM_SERVER_CONFIG_PATH
-
The following
IGN_GAZEBO_
prefixed macros variables are deprecated and will be removed in future versions. Use theGZ_SIM_
prefixed versions instead!IGN_GAZEBO_REGISTER_COMPONENT
IGN_GAZEBO_PLUGIN_INSTALL_DIR
IGN_GAZEBO_GUI_PLUGIN_INSTALL_DIR
IGN_GAZEBO_WORLD_INSTALL_DIR
-
The
gazebo
command line verb is deprecated. Usesim
instead (e.g.ign gazebo
->gz sim
). -
The shared libraries have
gz
where there used to beignition
.- Using the un-migrated version is still possible due to tick-tocks, but will be removed in future versions.
-
The WorldStatistics message published on the 'stats' topic now has a
stepping
field that should be used in place the 'step' field in the message's header. -
Breaking Changes
-
The project name has been changed to use the
gz-
prefix, you must use thegz
prefix!- This also means that any generated code that use the project name (e.g. CMake variables, in-source macros) would have to be migrated.
- Some non-exhaustive examples of this include:
GZ_<PROJECT>_<VISIBLE/HIDDEN>
- CMake
-config
files - Paths that depend on the project name
-
The
Scene3D
plugin has been removed and replaced withgz-gui
'sMinimalScene
plugin. See this same document for the instructions to replace it when it was deprecated 5.x to 6.x. Setting<legacy>false</legacy>
is no longer required forTransformControl
andViewAndle
plugins.
-
-
Python library imports such
import ignition.gazebo
andfrom ignition import gazebo
should be replaced withimport gz.sim7
andfrom gz import sim7
. Note the change fromignition
togz
and the addition of the major version number as a suffix to the package name.
- Modified:
- In the Hydrodynamics plugin, inverted the added mass contribution to make it act in the correct direction.
- Modified:
- In the Hydrodynamics plugin, inverted the added mass contribution to make it act in the correct direction.
- If no
<namespace>
is given to theThruster
plugin, the namespace now defaults to the model name, instead of an empty string.
-
The ParticleEmitter system is deprecated. Please use the ParticleEmitter2 system.
-
Marker example has been moved to Gazebo GUI.
-
Some GUI plugins have been moved to Gazebo GUI. Gazebo Sim users don't need to change their configuration files, the plugins will be loaded the same way.
- Grid Config
- Tape Measure
-
dynamic_pose/info
topic is removed fromLogRecord
andLogPlayback
since pose information is being logged in thechanged_state
topic. -
The internal management of entities and components in the
EntityComponentManager
has been updated to improve runtime performance. As a result, several methods have been deprecated, and a few types have changed.- Deprecated:
- All
EntityComponentManager
methods that useComponentKey
as an input parameter. - The
EntityComponentManager::First
method. - The
ComponentId
andComponentKey
types are now deprecated. A combination ofEntity
andComponentTypeId
should be used instead. - The
components::StorageDescriptorBase
andcomponents::StorageDescriptor<ComponentTypeT>
classes. - Methods in
components::Factory
that have deprecated input parameter types and/or deprecated return types.- The version of
components::Factory::Register
which has aStorageDescriptorBase *
input parameter. components::Factory::NewStorage
- The version of
- The
ComponentStorageBase
andComponentStorage<ComponentTypeT>
classes.
- All
- Modified:
EntityComponentManager::CreateComponent
now returns a pointer to the created component instead of aComponentKey
.ComponentKey
has been modified to be astd::pair<ComponentTypeId, Entity>
(it used to be astd::pair<ComponentTypeId, ComponentId>
) since theComponentId
type is now deprecated.ComponentKey
has also been deprecated, so usage of this type is discouraged (see the Deprecated section above for more information about how to replace usage ofComponentKey
).
- Deprecated:
-
The
GzScene3D
GUI plugin is being deprecated in favor ofMinimalScene
. In order to get the same functionality asGzScene3D
, users need to add the following plugins:MinimalScene
: base rendering functionalityGzSceneManager
: adds / removes / moves entities in the sceneEntityContextMenuPlugin
: right-click menuInteractiveViewControl
: orbit controlsCameraTracking
: Move to, follow, set camera poseMarkerManager
: Enables the use of markersSelectEntities
: Select entities clicking on the sceneSpawn
: Functionality to spawn entities into the scene via GUIVisualizationCapabilities
: View collisions, inertial, CoM, joints, etc.
SDF code for all these can be found in:
gz-sim/examples/worlds/minimal_scene.sdf
Lines 29 to 128 in ff1c82b
Moreover, legacy mode needs to be turned off for the following plugins for them to work with
MinimalScene
(set<legacy>false</legacy>
):TransformControl
: Translate and rotateViewAndle
: Move camera to preset angles
-
The
gui.config
andserver.config
files are now located in a versioned folder inside$HOME/.gz/sim
, i.e.$HOME/.gz/sim/6/gui.config
. -
The
Component::Clone
method has been markedconst
to reflect that it should not mutate internal component state. Component implementations that overrode theClone
method must also be markedconst
.
- If no
<namespace>
is given to theThruster
plugin, the namespace now defaults to the model name, instead of an empty string.
-
Use
cli
component ofgz-utils1
. -
gz::sim::RenderUtil::SelectedEntities()
now returns aconst std::vector<Entity> &
instead of forcing a copy. The calling code should create a copy if it needs to modify the vector in some way. -
Default generated topic name for thermal cameras now includes the
/image
suffix. Thecamera_info
topic has also been fixed to include the sensor name in the generated topic string. The naming scheme should be consistent with a normal camera sensor. Topic changes:/<prefix>/<sensor_name>
->/<prefix>/<sensor_name>/image
/<prefix>/camera_info
->/<prefix>/<sensor_name>/camera_info
-
Various
GuiEvent
s were deprecated in favor of their Gazebo GUI equivalents.- Deprecated
gz::sim::gui::SnapIntervals
- Replacement
gz::gui::SnapIntervals
- Deprecated
gz::sim::gui::Render
- Replacement
gz::gui::Render
- Deprecated
gz::sim::gui::SpawnPreviewModel
- Replacement
gz::gui::SpawnFromDescription
- Deprecated
gz::sim::gui::SnapPreviewPath
- Replacement
gz::gui::SnapFromPath
- Deprecated
-
The
<direction>
tag of spot lights was previously not parsed by the scene, so all spot lights shone in the direction corresponding to the default0 0 -1
. Since 5.x, the<direction>
tag is correctly processed.
- Gazebo Sim 4.0.0 enabled double sided material by default but this
caused shadow artifacts to appear on some meshes. Double sided material is
now disabled and made an opt-in feature. Users can configure this property
in SDF by setting the
<visual><material><double_sided>
SDF element.
-
The
RenderUtil::SetEnabledSensors
callback in gazebo rendering has a new required function argument for the Entity of the sensor.- Removed
public: void SetEnableSensors(bool, std::function< std::string(const sdf::Sensor &, const std::string &)>)
- Replacement
public: void SetEnableSensors(bool, std::function< std::string(const sim::Entity &, const sdf::Sensor &, const std::string &)>)
- Removed
-
Log playback using
<path>
SDF parameter is removed. Use --playback command line argument instead. -
rendering::SceneManager
- Deprecated:
Entity EntityFromNode(const rendering::NodePtr &_node) const;
- Replacement:
Entity entity = std::get<int>(visual->UserData("gazebo-entity"));
- Deprecated:
- Some sensors will only have the
SensorTopic
component after the 1st iteration.
- Use gz-rendering3, gz-sensors3 and gz-gui3.
-
Changed component data types:
Altimeter
now usessdf::Sensor
JointVelocity
now usesstd::vector<double>
-
Deprecated components:
JointVelocity2
: useJointVelocity
's vector instead.
-
The
--distributed
command line argument has been deprecated. Use--network-role
instead. -
The
-f
/--file
command line argument has been deprecated. The SDF file can now be loaded without a flag. -
The
gz-sim
command line tool is deprecated. The new tool isgz sim
, which has all the same options, except for--distributed
and--file
/-f
, which have been removed. -
The
entity_name
field in the messages published by the imu system is updated to report its scoped name. -
Log files generated from Gazebo Sim 1.X are no longer compatible with Gazebo Sim 2+ for playback. BitBucket pull request #257 added an SDF message to the start of log files.
-
Log playback using
<path>
SDF parameter is deprecated. Use--playback
command line argument instead.
-
All headers in
gazebo/network
are no longer installed. -
The ignition-gazebo1-gui library has been changed to a
gui
component of ignition-gazebo. To use the gui component downstream, update the find package call in cmake to request for the component, e.g.gz_find_package(ignition-gazebo1 REQUIRED COMPONENTS gui)
, and link to thelibgz-sim1::gui
target instead oflibgz-sim1-gui