From 6686c0317c7ae1d91a8f599c6fb33355e1db34b2 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Thu, 12 Oct 2023 09:18:13 -0700 Subject: [PATCH 01/80] Bumps in Ionic: gz-sim9 (#2205) Signed-off-by: Ian Chen Signed-off-by: Addisu Z. Taddese Co-authored-by: Addisu Z. Taddese --- .github/workflows/ci.yml | 1 - CMakeLists.txt | 4 ++-- Changelog.md | 4 ++++ README.md | 6 +++--- examples/plugin/command_actor/CMakeLists.txt | 4 ++-- examples/plugin/custom_component/CMakeLists.txt | 4 ++-- .../plugin/custom_sensor_system/CMakeLists.txt | 6 +++--- examples/plugin/gui_system_plugin/CMakeLists.txt | 4 ++-- examples/plugin/hello_world/CMakeLists.txt | 4 ++-- examples/plugin/rendering_plugins/CMakeLists.txt | 4 ++-- examples/plugin/reset_plugin/CMakeLists.txt | 4 ++-- examples/plugin/system_plugin/CMakeLists.txt | 4 ++-- examples/scripts/python_api/systems/test_system.py | 2 +- examples/scripts/python_api/testFixture.py | 2 +- .../standalone/acoustic_comms_demo/CMakeLists.txt | 4 ++-- examples/standalone/custom_server/CMakeLists.txt | 4 ++-- .../standalone/each_performance/CMakeLists.txt | 4 ++-- examples/standalone/external_ecm/CMakeLists.txt | 4 ++-- examples/standalone/gtest_setup/CMakeLists.txt | 4 ++-- examples/standalone/light_control/CMakeLists.txt | 4 ++-- examples/standalone/lrauv_control/CMakeLists.txt | 4 ++-- .../standalone/multi_lrauv_race/CMakeLists.txt | 4 ++-- python/test/gz_test_deps/sim.py | 2 +- .../CiVctCascadePrivate.cc | 2 -- .../CiVctCascadePrivate.hh | 14 ++------------ tutorials/blender_distort_meshes.md | 2 +- tutorials/blender_sdf_exporter.md | 2 +- tutorials/migrating_ardupilot_plugin.md | 2 +- tutorials/python_interfaces.md | 4 ++-- tutorials/triggered_publisher.md | 4 ++-- 30 files changed, 54 insertions(+), 63 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 15fd1be29c..6d32e68367 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,7 +4,6 @@ on: pull_request: push: branches: - - 'gz-sim8' - 'main' # Every time you make a push to your PR, it cancel immediately the previous checks, diff --git a/CMakeLists.txt b/CMakeLists.txt index 8157799113..4b662b78b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,8 +3,8 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) #============================================================================ # Initialize the project #============================================================================ -project(gz-sim8 VERSION 8.0.0) -set (GZ_DISTRIBUTION "Harmonic") +project(gz-sim9 VERSION 9.0.0) +set (GZ_DISTRIBUTION "Ionic") #============================================================================ # Find gz-cmake diff --git a/Changelog.md b/Changelog.md index 4d7d22df7a..2da7d20b94 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,7 @@ +## Gazebo Sim 9.x + +### Gazebo Sim 9.0.0 (2024-XX-XX) + ## Gazebo Sim 8.x ### Gazebo Sim 8.0.0 (2023-09-29) diff --git a/README.md b/README.md index f12f19f841..8c4a8c9f63 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ introspection and control. # Install -See the [installation tutorial](https://gazebosim.org/api/sim/8/install.html). +See the [installation tutorial](https://gazebosim.org/api/sim/9/install.html). # Usage @@ -125,11 +125,11 @@ This issue is tracked [here](https://github.com/gazebosim/gz-tools/issues/8). # Documentation -See the [installation tutorial](https://gazebosim.org/api/sim/8/install.html). +See the [installation tutorial](https://gazebosim.org/api/sim/9/install.html). # Testing -See the [installation tutorial](https://gazebosim.org/api/sim/8/install.html). +See the [installation tutorial](https://gazebosim.org/api/sim/9/install.html). See the [Writing Tests section of the contributor guide](https://github.com/gazebosim/gz-sim/blob/main/CONTRIBUTING.md#writing-tests) for help creating or modifying tests. diff --git a/examples/plugin/command_actor/CMakeLists.txt b/examples/plugin/command_actor/CMakeLists.txt index a01caa9607..e73b0d74c1 100644 --- a/examples/plugin/command_actor/CMakeLists.txt +++ b/examples/plugin/command_actor/CMakeLists.txt @@ -7,9 +7,9 @@ project(CommandActor) find_package(gz-plugin2 REQUIRED COMPONENTS register) set(GZ_PLUGIN_VER ${gz-plugin2_VERSION_MAJOR}) -find_package(gz-sim8 REQUIRED) +find_package(gz-sim9 REQUIRED) add_library(CommandActor SHARED CommandActor.cc) set_property(TARGET CommandActor PROPERTY CXX_STANDARD 17) target_link_libraries(CommandActor PRIVATE gz-plugin${GZ_PLUGIN_VER}::gz-plugin${GZ_PLUGIN_VER} - PRIVATE gz-sim8::gz-sim8) + PRIVATE gz-sim9::gz-sim9) diff --git a/examples/plugin/custom_component/CMakeLists.txt b/examples/plugin/custom_component/CMakeLists.txt index d7f6a23ae6..912ba8b1c1 100644 --- a/examples/plugin/custom_component/CMakeLists.txt +++ b/examples/plugin/custom_component/CMakeLists.txt @@ -7,11 +7,11 @@ project(CustomComponentPlugin) find_package(gz-plugin2 REQUIRED COMPONENTS register) set(GZ_PLUGIN_VER ${gz-plugin2_VERSION_MAJOR}) -find_package(gz-sim8 REQUIRED) +find_package(gz-sim9 REQUIRED) add_library(CustomComponentPlugin SHARED CustomComponentPlugin.cc ) set_property(TARGET CustomComponentPlugin PROPERTY CXX_STANDARD 17) target_link_libraries(CustomComponentPlugin PRIVATE gz-plugin${GZ_PLUGIN_VER}::gz-plugin${GZ_PLUGIN_VER} - PRIVATE gz-sim8::gz-sim8) + PRIVATE gz-sim9::gz-sim9) diff --git a/examples/plugin/custom_sensor_system/CMakeLists.txt b/examples/plugin/custom_sensor_system/CMakeLists.txt index 66ceb25192..128253a38f 100644 --- a/examples/plugin/custom_sensor_system/CMakeLists.txt +++ b/examples/plugin/custom_sensor_system/CMakeLists.txt @@ -7,8 +7,8 @@ project(OdometerSystem) gz_find_package(gz-plugin2 REQUIRED COMPONENTS register) set(GZ_PLUGIN_VER ${gz-plugin2_VERSION_MAJOR}) -gz_find_package(gz-sim8 REQUIRED) -set(GZ_SIM_VER ${gz-sim8_VERSION_MAJOR}) +gz_find_package(gz-sim9 REQUIRED) +set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) find_package(gz-sensors8 REQUIRED) set(GZ_SENSORS_VER ${gz-sensors8_VERSION_MAJOR}) @@ -20,7 +20,7 @@ include(FetchContent) FetchContent_Declare( sensors_clone GIT_REPOSITORY https://github.com/gazebosim/gz-sensors - GIT_TAG main + GIT_TAG gz-sensors8 ) FetchContent_Populate(sensors_clone) add_subdirectory(${sensors_clone_SOURCE_DIR}/examples/custom_sensor ${sensors_clone_BINARY_DIR}) diff --git a/examples/plugin/gui_system_plugin/CMakeLists.txt b/examples/plugin/gui_system_plugin/CMakeLists.txt index 3a682f11ff..53ba9dc4ce 100644 --- a/examples/plugin/gui_system_plugin/CMakeLists.txt +++ b/examples/plugin/gui_system_plugin/CMakeLists.txt @@ -8,7 +8,7 @@ project(GuiSystemPlugin) set(CMAKE_AUTOMOC ON) -find_package(gz-sim8 REQUIRED COMPONENTS gui) +find_package(gz-sim9 REQUIRED COMPONENTS gui) QT5_ADD_RESOURCES(resources_RCC ${PROJECT_NAME}.qrc) @@ -17,5 +17,5 @@ add_library(${PROJECT_NAME} SHARED ${resources_RCC} ) target_link_libraries(${PROJECT_NAME} - PRIVATE gz-sim8::gui + PRIVATE gz-sim9::gui ) diff --git a/examples/plugin/hello_world/CMakeLists.txt b/examples/plugin/hello_world/CMakeLists.txt index 135d6288ce..0720a3ccd8 100644 --- a/examples/plugin/hello_world/CMakeLists.txt +++ b/examples/plugin/hello_world/CMakeLists.txt @@ -7,8 +7,8 @@ project(Hello_world) gz_find_package(gz-plugin2 REQUIRED COMPONENTS register) set(GZ_PLUGIN_VER ${gz-plugin2_VERSION_MAJOR}) -gz_find_package(gz-sim8 REQUIRED) -set(GZ_SIM_VER ${gz-sim8_VERSION_MAJOR}) +gz_find_package(gz-sim9 REQUIRED) +set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) add_library(HelloWorld SHARED HelloWorld.cc) set_property(TARGET HelloWorld PROPERTY CXX_STANDARD 17) diff --git a/examples/plugin/rendering_plugins/CMakeLists.txt b/examples/plugin/rendering_plugins/CMakeLists.txt index 8668676cf0..0435e17633 100644 --- a/examples/plugin/rendering_plugins/CMakeLists.txt +++ b/examples/plugin/rendering_plugins/CMakeLists.txt @@ -32,13 +32,13 @@ target_link_libraries(${GUI_PLUGIN} set(SERVER_PLUGIN RenderingServerPlugin) find_package(gz-plugin2 REQUIRED COMPONENTS register) -find_package(gz-sim8 REQUIRED) +find_package(gz-sim9 REQUIRED) add_library(${SERVER_PLUGIN} SHARED ${SERVER_PLUGIN}.cc) set_property(TARGET ${SERVER_PLUGIN} PROPERTY CXX_STANDARD 17) target_link_libraries(${SERVER_PLUGIN} PRIVATE gz-plugin2::gz-plugin2 - gz-sim8::gz-sim8 + gz-sim9::gz-sim9 gz-rendering8::gz-rendering8 ) diff --git a/examples/plugin/reset_plugin/CMakeLists.txt b/examples/plugin/reset_plugin/CMakeLists.txt index 824d84176a..3e1040aefe 100644 --- a/examples/plugin/reset_plugin/CMakeLists.txt +++ b/examples/plugin/reset_plugin/CMakeLists.txt @@ -5,8 +5,8 @@ project(ResetPlugins) find_package(gz-plugin2 REQUIRED COMPONENTS register) set(GZ_PLUGIN_VER ${gz-plugin2_VERSION_MAJOR}) -find_package(gz-sim8 REQUIRED) -set(GZ_SIM_VER ${gz-sim8_VERSION_MAJOR}) +find_package(gz-sim9 REQUIRED) +set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) add_library(JointPositionRandomizer SHARED JointPositionRandomizer.cc) target_link_libraries(JointPositionRandomizer diff --git a/examples/plugin/system_plugin/CMakeLists.txt b/examples/plugin/system_plugin/CMakeLists.txt index 0a0e5ba789..b887cf7708 100644 --- a/examples/plugin/system_plugin/CMakeLists.txt +++ b/examples/plugin/system_plugin/CMakeLists.txt @@ -7,9 +7,9 @@ project(SampleSystem) find_package(gz-plugin2 REQUIRED COMPONENTS register) set(GZ_PLUGIN_VER ${gz-plugin2_VERSION_MAJOR}) -find_package(gz-sim8 REQUIRED) +find_package(gz-sim9 REQUIRED) add_library(SampleSystem SHARED SampleSystem.cc SampleSystem2.cc) set_property(TARGET SampleSystem PROPERTY CXX_STANDARD 17) target_link_libraries(SampleSystem PRIVATE gz-plugin${GZ_PLUGIN_VER}::gz-plugin${GZ_PLUGIN_VER} - PRIVATE gz-sim8::gz-sim8) + PRIVATE gz-sim9::gz-sim9) diff --git a/examples/scripts/python_api/systems/test_system.py b/examples/scripts/python_api/systems/test_system.py index b5d03347b0..7dd34a2ce4 100644 --- a/examples/scripts/python_api/systems/test_system.py +++ b/examples/scripts/python_api/systems/test_system.py @@ -13,7 +13,7 @@ # limitations under the License. from gz.math7 import Vector3d -from gz.sim8 import Model, Link +from gz.sim9 import Model, Link import random diff --git a/examples/scripts/python_api/testFixture.py b/examples/scripts/python_api/testFixture.py index 5be3afa6dc..363c040b4e 100755 --- a/examples/scripts/python_api/testFixture.py +++ b/examples/scripts/python_api/testFixture.py @@ -25,7 +25,7 @@ import os from gz.common5 import set_verbosity -from gz.sim8 import TestFixture, World, world_entity +from gz.sim9 import TestFixture, World, world_entity from gz.math7 import Vector3d set_verbosity(4) diff --git a/examples/standalone/acoustic_comms_demo/CMakeLists.txt b/examples/standalone/acoustic_comms_demo/CMakeLists.txt index 2129e946e1..9beb0308f5 100644 --- a/examples/standalone/acoustic_comms_demo/CMakeLists.txt +++ b/examples/standalone/acoustic_comms_demo/CMakeLists.txt @@ -5,8 +5,8 @@ project(gz-sim-acoustic-comms-demo) find_package(gz-transport13 QUIET REQUIRED OPTIONAL_COMPONENTS log) set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) -find_package(gz-sim8 REQUIRED) -set(GZ_SIM_VER ${gz-sim8_VERSION_MAJOR}) +find_package(gz-sim9 REQUIRED) +set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) add_executable(acoustic_comms_demo acoustic_comms_demo.cc) target_link_libraries(acoustic_comms_demo diff --git a/examples/standalone/custom_server/CMakeLists.txt b/examples/standalone/custom_server/CMakeLists.txt index cf1e917e89..0b29df1802 100644 --- a/examples/standalone/custom_server/CMakeLists.txt +++ b/examples/standalone/custom_server/CMakeLists.txt @@ -3,8 +3,8 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(gz-sim-custom-server) if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - find_package(gz-sim8 REQUIRED) - set(GZ_SIM_VER ${gz-sim8_VERSION_MAJOR}) + find_package(gz-sim9 REQUIRED) + set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) add_executable(custom_server custom_server.cc) target_link_libraries(custom_server diff --git a/examples/standalone/each_performance/CMakeLists.txt b/examples/standalone/each_performance/CMakeLists.txt index 6f756f12e5..fbcbf246df 100644 --- a/examples/standalone/each_performance/CMakeLists.txt +++ b/examples/standalone/each_performance/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(gz-sim-each-performance) -find_package(gz-sim8 QUIET REQUIRED) +find_package(gz-sim9 QUIET REQUIRED) add_executable(each each.cc) target_link_libraries(each - gz-sim8::core) + gz-sim9::core) diff --git a/examples/standalone/external_ecm/CMakeLists.txt b/examples/standalone/external_ecm/CMakeLists.txt index d06850d284..6dc89463d7 100644 --- a/examples/standalone/external_ecm/CMakeLists.txt +++ b/examples/standalone/external_ecm/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(gz-sim-external-ecm) -find_package(gz-sim8 REQUIRED) +find_package(gz-sim9 REQUIRED) add_executable(external_ecm external_ecm.cc) target_link_libraries(external_ecm - gz-sim8::core) + gz-sim9::core) diff --git a/examples/standalone/gtest_setup/CMakeLists.txt b/examples/standalone/gtest_setup/CMakeLists.txt index 376497eeaf..444b069b09 100644 --- a/examples/standalone/gtest_setup/CMakeLists.txt +++ b/examples/standalone/gtest_setup/CMakeLists.txt @@ -3,8 +3,8 @@ cmake_minimum_required(VERSION 3.11.0 FATAL_ERROR) project(GTestSetup) # Find Gazebo -find_package(gz-sim8 REQUIRED) -set(GZ_SIM_VER ${gz-sim8_VERSION_MAJOR}) +find_package(gz-sim9 REQUIRED) +set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) # Fetch and configure GTest include(FetchContent) diff --git a/examples/standalone/light_control/CMakeLists.txt b/examples/standalone/light_control/CMakeLists.txt index 0f3de2e3e7..b54b5f8a5f 100644 --- a/examples/standalone/light_control/CMakeLists.txt +++ b/examples/standalone/light_control/CMakeLists.txt @@ -5,8 +5,8 @@ project(gz-sim-light-control) find_package(gz-transport13 QUIET REQUIRED OPTIONAL_COMPONENTS log) set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) -find_package(gz-sim8 REQUIRED) -set(GZ_SIM_VER ${gz-sim8_VERSION_MAJOR}) +find_package(gz-sim9 REQUIRED) +set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) add_executable(light_control light_control.cc) target_link_libraries(light_control diff --git a/examples/standalone/lrauv_control/CMakeLists.txt b/examples/standalone/lrauv_control/CMakeLists.txt index f0cbc94a03..cd17e2c16a 100644 --- a/examples/standalone/lrauv_control/CMakeLists.txt +++ b/examples/standalone/lrauv_control/CMakeLists.txt @@ -5,8 +5,8 @@ project(gz-sim-lrauv-control) find_package(gz-transport13 QUIET REQUIRED OPTIONAL_COMPONENTS log) set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) -find_package(gz-sim8 REQUIRED) -set(GZ_SIM_VER ${gz-sim8_VERSION_MAJOR}) +find_package(gz-sim9 REQUIRED) +set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) add_executable(lrauv_control lrauv_control.cc) target_link_libraries(lrauv_control diff --git a/examples/standalone/multi_lrauv_race/CMakeLists.txt b/examples/standalone/multi_lrauv_race/CMakeLists.txt index 6bffdef142..f34fd7b584 100644 --- a/examples/standalone/multi_lrauv_race/CMakeLists.txt +++ b/examples/standalone/multi_lrauv_race/CMakeLists.txt @@ -5,8 +5,8 @@ project(gz-sim-multi-lrauv-race) find_package(gz-transport13 QUIET REQUIRED OPTIONAL_COMPONENTS log) set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) -find_package(gz-sim8 REQUIRED) -set(GZ_SIM_VER ${gz-sim8_VERSION_MAJOR}) +find_package(gz-sim9 REQUIRED) +set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) add_executable(multi_lrauv_race multi_lrauv_race.cc) target_link_libraries(multi_lrauv_race diff --git a/python/test/gz_test_deps/sim.py b/python/test/gz_test_deps/sim.py index 38c3164e14..c41dc0aff9 100644 --- a/python/test/gz_test_deps/sim.py +++ b/python/test/gz_test_deps/sim.py @@ -1 +1 @@ -from gz.sim8 import * +from gz.sim9 import * diff --git a/src/gui/plugins/global_illumination_civct/CiVctCascadePrivate.cc b/src/gui/plugins/global_illumination_civct/CiVctCascadePrivate.cc index de9149b5b1..97a2912208 100644 --- a/src/gui/plugins/global_illumination_civct/CiVctCascadePrivate.cc +++ b/src/gui/plugins/global_illumination_civct/CiVctCascadePrivate.cc @@ -21,8 +21,6 @@ #include "GlobalIlluminationCiVct.hh" -#include "gz/rendering/GlobalIlluminationCiVct.hh" - using namespace gz; using namespace sim; diff --git a/src/gui/plugins/global_illumination_civct/CiVctCascadePrivate.hh b/src/gui/plugins/global_illumination_civct/CiVctCascadePrivate.hh index 13f53e45dc..eacde8b043 100644 --- a/src/gui/plugins/global_illumination_civct/CiVctCascadePrivate.hh +++ b/src/gui/plugins/global_illumination_civct/CiVctCascadePrivate.hh @@ -26,18 +26,8 @@ #include "Tsa.hh" -namespace gz -{ - namespace rendering - { - inline namespace GZ_SIM_VERSION_NAMESPACE - { - /// Forward declare the only ptr we need - class CiVctCascade; - typedef std::shared_ptr CiVctCascadePtr; - } // namespace GZ_SIM_GAZEBO_VERSION_NAMESPACE - } // namespace rendering -} // namespace gz + +#include "gz/rendering/GlobalIlluminationCiVct.hh" namespace gz { diff --git a/tutorials/blender_distort_meshes.md b/tutorials/blender_distort_meshes.md index 5f619be97f..3db2f88722 100644 --- a/tutorials/blender_distort_meshes.md +++ b/tutorials/blender_distort_meshes.md @@ -25,7 +25,7 @@ If newer versions do not work for you, Blender 2.92 can be found ## Usage Locate or download the Blender Python -[script](https://github.com/gazebosim/gz-sim/blob/gz-sim8/examples/scripts/blender/distort_mesh.py). +[script](https://github.com/gazebosim/gz-sim/blob/main/examples/scripts/blender/distort_mesh.py). Launch the Blender GUI. diff --git a/tutorials/blender_sdf_exporter.md b/tutorials/blender_sdf_exporter.md index 604ea41d0c..e1b193c7cf 100644 --- a/tutorials/blender_sdf_exporter.md +++ b/tutorials/blender_sdf_exporter.md @@ -12,7 +12,7 @@ mesh/materials/lights feature set. As such feel free to customize the script as ## Using the Blender SDF Exporter -1. Download the blender script in [sdf_exporter.py](https://github.com/gazebosim/gz-sim/tree/gz-sim8/examples/scripts/blender/sdf_exporter.py). +1. Download the blender script in [sdf_exporter.py](https://github.com/gazebosim/gz-sim/tree/main/examples/scripts/blender/sdf_exporter.py). 2. Open the script under Blender's Scripting tab and run it. diff --git a/tutorials/migrating_ardupilot_plugin.md b/tutorials/migrating_ardupilot_plugin.md index e58dd764b2..20f834ca8f 100644 --- a/tutorials/migrating_ardupilot_plugin.md +++ b/tutorials/migrating_ardupilot_plugin.md @@ -729,7 +729,7 @@ In the new code we explicitly reference each Gazebo package that we use: # NEW find_package(sdformat14 REQUIRED) find_package(gz-common5-all REQUIRED) -find_package(gz-sim8-all REQUIRED) +find_package(gz-sim9-all REQUIRED) find_package(gz-math7-all REQUIRED) find_package(gz-msgs10-all REQUIRED) find_package(gz-physics7-all REQUIRED) diff --git a/tutorials/python_interfaces.md b/tutorials/python_interfaces.md index a696512dc0..e35e7b2492 100644 --- a/tutorials/python_interfaces.md +++ b/tutorials/python_interfaces.md @@ -43,7 +43,7 @@ server.run(True, 1000, False) ## Run the example In the -[examples/scripts/python_api](https://github.com/gazebosim/gz-sim/tree/gz-sim8/examples/scripts/python_api) +[examples/scripts/python_api](https://github.com/gazebosim/gz-sim/tree/main/examples/scripts/python_api) folder there is a Python script that shows how to make use of this API. If you compiled Gazebo from source you should modify your `PYTHONPATH`: @@ -97,7 +97,7 @@ Example python system: ```python from gz.math7 import Vector3d -from gz.sim8 import Model, Link +from gz.sim9 import Model, Link import random diff --git a/tutorials/triggered_publisher.md b/tutorials/triggered_publisher.md index 5d497dda86..ffad764809 100644 --- a/tutorials/triggered_publisher.md +++ b/tutorials/triggered_publisher.md @@ -16,10 +16,10 @@ Publisher systems can be chained together by showing how the falling of the box can trigger another box to fall. Last, it covers how a service call can be triggered to reset the robot pose. The finished world SDFormat file for this tutorial can be found in -[examples/worlds/triggered_publisher.sdf](https://github.com/gazebosim/gz-sim/blob/gz-sim8/examples/worlds/triggered_publisher.sdf) +[examples/worlds/triggered_publisher.sdf](https://github.com/gazebosim/gz-sim/blob/main/examples/worlds/triggered_publisher.sdf) We will use the differential drive vehicle from -[examples/worlds/diff_drive.sdf](https://github.com/gazebosim/gz-sim/blob/gz-sim8/examples/worlds/diff_drive.sdf), +[examples/worlds/diff_drive.sdf](https://github.com/gazebosim/gz-sim/blob/main/examples/worlds/diff_drive.sdf), but modify the input topic of the `DiffDrive` system to `cmd_vel`. A snippet of the change to the `DiffDrive` system is shown below: From 7a460cd76e1150b0a3884cf94d2db4590107863e Mon Sep 17 00:00:00 2001 From: "Addisu Z. Taddese" Date: Wed, 18 Oct 2023 13:43:37 -0500 Subject: [PATCH 02/80] Bumps in ionic : ci_matching_branch/bump_ionic_gz-sim9 (#2211) Signed-off-by: Addisu Z. Taddese --- .github/ci/packages.apt | 34 ++++++------ CMakeLists.txt | 52 +++++++++---------- README.md | 2 +- docker/Dockerfile.nightly | 24 ++++----- docker/scripts/build_gz.sh | 2 +- docker/scripts/upload_json_benchmark.sh | 2 +- examples/plugin/command_actor/CMakeLists.txt | 6 +-- .../plugin/custom_component/CMakeLists.txt | 6 +-- .../custom_sensor_system/CMakeLists.txt | 12 ++--- examples/plugin/hello_world/CMakeLists.txt | 6 +-- .../plugin/rendering_plugins/CMakeLists.txt | 14 ++--- examples/plugin/reset_plugin/CMakeLists.txt | 4 +- examples/plugin/system_plugin/CMakeLists.txt | 6 +-- .../scripts/python_api/systems/test_system.py | 2 +- examples/scripts/python_api/testFixture.py | 4 +- .../acoustic_comms_demo/CMakeLists.txt | 4 +- examples/standalone/comms/CMakeLists.txt | 4 +- .../standalone/entity_creation/CMakeLists.txt | 4 +- .../standalone/joy_to_twist/CMakeLists.txt | 8 +-- examples/standalone/joystick/CMakeLists.txt | 8 +-- examples/standalone/keyboard/CMakeLists.txt | 16 +++--- .../standalone/light_control/CMakeLists.txt | 4 +- .../standalone/lrauv_control/CMakeLists.txt | 4 +- .../standalone/lrauv_control/lrauv_control.py | 8 +-- examples/standalone/marker/CMakeLists.txt | 12 ++--- .../multi_lrauv_race/CMakeLists.txt | 4 +- .../multi_lrauv_race/multi_lrauv_race.py | 4 +- .../standalone/scene_requester/CMakeLists.txt | 4 +- python/test/gz_test_deps/common.py | 2 +- python/test/gz_test_deps/math.py | 2 +- python/test/gz_test_deps/msgs.py | 4 +- python/test/gz_test_deps/sdformat.py | 2 +- python/test/gz_test_deps/transport.py | 2 +- src/CMakeLists.txt | 6 +-- tutorials/create_system_plugins.md | 4 +- tutorials/migrating_ardupilot_plugin.md | 14 ++--- tutorials/python_interfaces.md | 2 +- 37 files changed, 149 insertions(+), 149 deletions(-) diff --git a/.github/ci/packages.apt b/.github/ci/packages.apt index 8c85a08a1b..8bcba178ad 100644 --- a/.github/ci/packages.apt +++ b/.github/ci/packages.apt @@ -2,34 +2,34 @@ freeglut3-dev libbenchmark-dev libfreeimage-dev libglew-dev -libgz-cmake3-dev -libgz-common5-dev -libgz-fuel-tools9-dev -libgz-gui8-dev -libgz-math7-eigen3-dev -libgz-msgs10-dev -libgz-physics7-dev -libgz-plugin2-dev -libgz-rendering8-dev -libgz-sensors8-dev +libgz-cmake4-dev +libgz-common6-dev +libgz-fuel-tools10-dev +libgz-gui9-dev +libgz-math8-eigen3-dev +libgz-msgs11-dev +libgz-physics8-dev +libgz-plugin3-dev +libgz-rendering9-dev +libgz-sensors9-dev libgz-tools2-dev -libgz-transport13-dev -libgz-utils2-cli-dev +libgz-transport14-dev +libgz-utils3-cli-dev libogre-1.9-dev libogre-next-2.3-dev libprotobuf-dev libprotoc-dev -libsdformat14-dev +libsdformat15-dev libtinyxml2-dev libxi-dev libxmu-dev python3-distutils -python3-gz-math7 -python3-gz-msgs10 -python3-gz-transport13 +python3-gz-math8 +python3-gz-msgs11 +python3-gz-transport14 python3-pybind11 python3-pytest -python3-sdformat14 +python3-sdformat15 qml-module-qt-labs-folderlistmodel qml-module-qt-labs-settings qml-module-qtgraphicaleffects diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b662b78b4..ac957230b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,7 @@ set (GZ_DISTRIBUTION "Ionic") # Find gz-cmake #============================================================================ # If you get an error at this line, you need to install gz-cmake -find_package(gz-cmake3 REQUIRED) +find_package(gz-cmake4 REQUIRED) #============================================================================ # Configure the project @@ -74,28 +74,28 @@ set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) # as protobuf could be find transitively by any dependency set(protobuf_MODULE_COMPATIBLE TRUE) -gz_find_package(sdformat14 REQUIRED) -set(SDF_VER ${sdformat14_VERSION_MAJOR}) +gz_find_package(sdformat15 REQUIRED) +set(SDF_VER ${sdformat15_VERSION_MAJOR}) #-------------------------------------- # Find gz-plugin -gz_find_package(gz-plugin2 REQUIRED COMPONENTS loader register) -set(GZ_PLUGIN_VER ${gz-plugin2_VERSION_MAJOR}) +gz_find_package(gz-plugin3 REQUIRED COMPONENTS loader register) +set(GZ_PLUGIN_VER ${gz-plugin3_VERSION_MAJOR}) #-------------------------------------- # Find gz-transport -gz_find_package(gz-transport13 REQUIRED COMPONENTS log parameters) -set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) +gz_find_package(gz-transport14 REQUIRED COMPONENTS log parameters) +set(GZ_TRANSPORT_VER ${gz-transport14_VERSION_MAJOR}) #-------------------------------------- # Find gz-msgs -gz_find_package(gz-msgs10 REQUIRED) -set(GZ_MSGS_VER ${gz-msgs10_VERSION_MAJOR}) +gz_find_package(gz-msgs11 REQUIRED) +set(GZ_MSGS_VER ${gz-msgs11_VERSION_MAJOR}) #-------------------------------------- # Find gz-common # Always use the profiler component to get the headers, regardless of status. -gz_find_package(gz-common5 +gz_find_package(gz-common6 COMPONENTS av events @@ -104,17 +104,17 @@ gz_find_package(gz-common5 profiler REQUIRED ) -set(GZ_COMMON_VER ${gz-common5_VERSION_MAJOR}) +set(GZ_COMMON_VER ${gz-common6_VERSION_MAJOR}) #-------------------------------------- # Find gz-fuel_tools -gz_find_package(gz-fuel_tools9 REQUIRED) -set(GZ_FUEL_TOOLS_VER ${gz-fuel_tools9_VERSION_MAJOR}) +gz_find_package(gz-fuel_tools10 REQUIRED) +set(GZ_FUEL_TOOLS_VER ${gz-fuel_tools10_VERSION_MAJOR}) #-------------------------------------- # Find gz-gui -gz_find_package(gz-gui8 REQUIRED) -set(GZ_GUI_VER ${gz-gui8_VERSION_MAJOR}) +gz_find_package(gz-gui9 REQUIRED) +set(GZ_GUI_VER ${gz-gui9_VERSION_MAJOR}) gz_find_package (Qt5 COMPONENTS Core @@ -125,18 +125,18 @@ gz_find_package (Qt5 #-------------------------------------- # Find gz-physics -gz_find_package(gz-physics7 +gz_find_package(gz-physics8 COMPONENTS heightmap mesh sdf REQUIRED ) -set(GZ_PHYSICS_VER ${gz-physics7_VERSION_MAJOR}) +set(GZ_PHYSICS_VER ${gz-physics8_VERSION_MAJOR}) #-------------------------------------- # Find gz-sensors -gz_find_package(gz-sensors8 REQUIRED +gz_find_package(gz-sensors9 REQUIRED # component order is important COMPONENTS # non-rendering @@ -164,17 +164,17 @@ gz_find_package(gz-sensors8 REQUIRED thermal_camera wide_angle_camera ) -set(GZ_SENSORS_VER ${gz-sensors8_VERSION_MAJOR}) +set(GZ_SENSORS_VER ${gz-sensors9_VERSION_MAJOR}) #-------------------------------------- # Find gz-rendering -gz_find_package(gz-rendering8 REQUIRED) -set(GZ_RENDERING_VER ${gz-rendering8_VERSION_MAJOR}) +gz_find_package(gz-rendering9 REQUIRED) +set(GZ_RENDERING_VER ${gz-rendering9_VERSION_MAJOR}) #-------------------------------------- # Find gz-math -gz_find_package(gz-math7 REQUIRED COMPONENTS eigen3) -set(GZ_MATH_VER ${gz-math7_VERSION_MAJOR}) +gz_find_package(gz-math8 REQUIRED COMPONENTS eigen3) +set(GZ_MATH_VER ${gz-math8_VERSION_MAJOR}) #-------------------------------------- # Find if gz command is available @@ -190,8 +190,8 @@ set(GZ_TOOLS_VER 2) #-------------------------------------- # Find gz-utils -gz_find_package(gz-utils2 REQUIRED COMPONENTS cli) -set(GZ_UTILS_VER ${gz-utils2_VERSION_MAJOR}) +gz_find_package(gz-utils3 REQUIRED COMPONENTS cli) +set(GZ_UTILS_VER ${gz-utils3_VERSION_MAJOR}) #-------------------------------------- # Find protobuf @@ -199,7 +199,7 @@ gz_find_package(GzProtobuf REQUIRED COMPONENTS all PRETTY Protobuf) -set(Protobuf_IMPORT_DIRS ${gz-msgs10_INCLUDE_DIRS}) +set(Protobuf_IMPORT_DIRS ${gz-msgs11_INCLUDE_DIRS}) #-------------------------------------- # Find python diff --git a/README.md b/README.md index 8c4a8c9f63..006190b7c7 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,7 @@ line is using symbolic links to each library's YAML file. mkdir ~/.gz/tools/configs -p cd ~/.gz/tools/configs/ ln -s /usr/local/share/gz/fuel8.yaml . -ln -s /usr/local/share/gz/transport13.yaml . +ln -s /usr/local/share/gz/transport14.yaml . ln -s /usr/local/share/gz/transportlog13.yaml . ... export GZ_CONFIG_PATH=$HOME/.gz/tools/configs diff --git a/docker/Dockerfile.nightly b/docker/Dockerfile.nightly index 6fb0d6bf7b..4dee43a1d5 100644 --- a/docker/Dockerfile.nightly +++ b/docker/Dockerfile.nightly @@ -11,19 +11,19 @@ RUN scripts/enable_nightly.sh RUN apt-get update \ && apt-get install -y \ - libgz-cmake3-dev \ - libgz-common5-dev \ - libgz-fuel-tools9-dev \ - libgz-math7-eigen3-dev \ - libgz-plugin2-dev \ - libgz-physics7-dev \ - libgz-rendering8-dev \ + libgz-cmake4-dev \ + libgz-common6-dev \ + libgz-fuel-tools10-dev \ + libgz-math8-eigen3-dev \ + libgz-plugin3-dev \ + libgz-physics8-dev \ + libgz-rendering9-dev \ libgz-tools2-dev \ - libgz-transport13-dev \ - libgz-gui8-dev \ - libgz-msgs10-dev \ - libgz-sensors8-dev \ - libsdformat14-dev + libgz-transport14-dev \ + libgz-gui9-dev \ + libgz-msgs11-dev \ + libgz-sensors9-dev \ + libsdformat15-dev COPY . gz-sim RUN cd gz-sim \ diff --git a/docker/scripts/build_gz.sh b/docker/scripts/build_gz.sh index 914705f60f..d1ed98317e 100755 --- a/docker/scripts/build_gz.sh +++ b/docker/scripts/build_gz.sh @@ -2,7 +2,7 @@ # Command line parameters: # 1 - github organization name. For example gazebosim or osrf. # 2 - the name of the Gazebo repository. For example gz-math. -# 3 - the name of the branch. For example gz-math7 +# 3 - the name of the branch. For example gz-math8 set -o errexit set -o verbose diff --git a/docker/scripts/upload_json_benchmark.sh b/docker/scripts/upload_json_benchmark.sh index 1cbe1e8cef..10fb0a4349 100755 --- a/docker/scripts/upload_json_benchmark.sh +++ b/docker/scripts/upload_json_benchmark.sh @@ -2,7 +2,7 @@ # Command line parameters: # 1 - github organization name. For example gazebosim or osrf. # 2 - the name of the Gazebo repository. For example gz-math. -# 3 - the name of the branch. For example gz-math7 +# 3 - the name of the branch. For example gz-math8 set -o errexit set -o verbose diff --git a/examples/plugin/command_actor/CMakeLists.txt b/examples/plugin/command_actor/CMakeLists.txt index e73b0d74c1..23fba669eb 100644 --- a/examples/plugin/command_actor/CMakeLists.txt +++ b/examples/plugin/command_actor/CMakeLists.txt @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) -find_package(gz-cmake3 REQUIRED) +find_package(gz-cmake4 REQUIRED) project(CommandActor) -find_package(gz-plugin2 REQUIRED COMPONENTS register) -set(GZ_PLUGIN_VER ${gz-plugin2_VERSION_MAJOR}) +find_package(gz-plugin3 REQUIRED COMPONENTS register) +set(GZ_PLUGIN_VER ${gz-plugin3_VERSION_MAJOR}) find_package(gz-sim9 REQUIRED) add_library(CommandActor SHARED CommandActor.cc) diff --git a/examples/plugin/custom_component/CMakeLists.txt b/examples/plugin/custom_component/CMakeLists.txt index 912ba8b1c1..a1e8a8dc50 100644 --- a/examples/plugin/custom_component/CMakeLists.txt +++ b/examples/plugin/custom_component/CMakeLists.txt @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) -find_package(gz-cmake3 REQUIRED) +find_package(gz-cmake4 REQUIRED) project(CustomComponentPlugin) -find_package(gz-plugin2 REQUIRED COMPONENTS register) -set(GZ_PLUGIN_VER ${gz-plugin2_VERSION_MAJOR}) +find_package(gz-plugin3 REQUIRED COMPONENTS register) +set(GZ_PLUGIN_VER ${gz-plugin3_VERSION_MAJOR}) find_package(gz-sim9 REQUIRED) add_library(CustomComponentPlugin SHARED diff --git a/examples/plugin/custom_sensor_system/CMakeLists.txt b/examples/plugin/custom_sensor_system/CMakeLists.txt index 128253a38f..60bc0d3c63 100644 --- a/examples/plugin/custom_sensor_system/CMakeLists.txt +++ b/examples/plugin/custom_sensor_system/CMakeLists.txt @@ -1,17 +1,17 @@ cmake_minimum_required(VERSION 3.11.0 FATAL_ERROR) -find_package(gz-cmake3 REQUIRED) +find_package(gz-cmake4 REQUIRED) project(OdometerSystem) -gz_find_package(gz-plugin2 REQUIRED COMPONENTS register) -set(GZ_PLUGIN_VER ${gz-plugin2_VERSION_MAJOR}) +gz_find_package(gz-plugin3 REQUIRED COMPONENTS register) +set(GZ_PLUGIN_VER ${gz-plugin3_VERSION_MAJOR}) gz_find_package(gz-sim9 REQUIRED) set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) -find_package(gz-sensors8 REQUIRED) -set(GZ_SENSORS_VER ${gz-sensors8_VERSION_MAJOR}) +find_package(gz-sensors9 REQUIRED) +set(GZ_SENSORS_VER ${gz-sensors9_VERSION_MAJOR}) # Fetch the custom sensor example from gz-sensors # Users won't commonly use this to fetch their sensors. The sensor may be part @@ -20,7 +20,7 @@ include(FetchContent) FetchContent_Declare( sensors_clone GIT_REPOSITORY https://github.com/gazebosim/gz-sensors - GIT_TAG gz-sensors8 + GIT_TAG gz-sensors9 ) FetchContent_Populate(sensors_clone) add_subdirectory(${sensors_clone_SOURCE_DIR}/examples/custom_sensor ${sensors_clone_BINARY_DIR}) diff --git a/examples/plugin/hello_world/CMakeLists.txt b/examples/plugin/hello_world/CMakeLists.txt index 0720a3ccd8..488050665e 100644 --- a/examples/plugin/hello_world/CMakeLists.txt +++ b/examples/plugin/hello_world/CMakeLists.txt @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) -find_package(gz-cmake3 REQUIRED) +find_package(gz-cmake4 REQUIRED) project(Hello_world) -gz_find_package(gz-plugin2 REQUIRED COMPONENTS register) -set(GZ_PLUGIN_VER ${gz-plugin2_VERSION_MAJOR}) +gz_find_package(gz-plugin3 REQUIRED COMPONENTS register) +set(GZ_PLUGIN_VER ${gz-plugin3_VERSION_MAJOR}) gz_find_package(gz-sim9 REQUIRED) set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) diff --git a/examples/plugin/rendering_plugins/CMakeLists.txt b/examples/plugin/rendering_plugins/CMakeLists.txt index 0435e17633..f8c8bd14b8 100644 --- a/examples/plugin/rendering_plugins/CMakeLists.txt +++ b/examples/plugin/rendering_plugins/CMakeLists.txt @@ -7,14 +7,14 @@ endif() project(RenderingPlugins) # Common to both plugins -find_package(gz-rendering8 REQUIRED) +find_package(gz-rendering9 REQUIRED) # GUI plugin set(GUI_PLUGIN RenderingGuiPlugin) set(CMAKE_AUTOMOC ON) -find_package(gz-gui8 REQUIRED) +find_package(gz-gui9 REQUIRED) QT5_ADD_RESOURCES(resources_RCC ${GUI_PLUGIN}.qrc) @@ -24,21 +24,21 @@ add_library(${GUI_PLUGIN} SHARED ) target_link_libraries(${GUI_PLUGIN} PRIVATE - gz-gui8::gz-gui8 - gz-rendering8::gz-rendering8 + gz-gui9::gz-gui9 + gz-rendering9::gz-rendering9 ) # Server plugin set(SERVER_PLUGIN RenderingServerPlugin) -find_package(gz-plugin2 REQUIRED COMPONENTS register) +find_package(gz-plugin3 REQUIRED COMPONENTS register) find_package(gz-sim9 REQUIRED) add_library(${SERVER_PLUGIN} SHARED ${SERVER_PLUGIN}.cc) set_property(TARGET ${SERVER_PLUGIN} PROPERTY CXX_STANDARD 17) target_link_libraries(${SERVER_PLUGIN} PRIVATE - gz-plugin2::gz-plugin2 + gz-plugin3::gz-plugin3 gz-sim9::gz-sim9 - gz-rendering8::gz-rendering8 + gz-rendering9::gz-rendering9 ) diff --git a/examples/plugin/reset_plugin/CMakeLists.txt b/examples/plugin/reset_plugin/CMakeLists.txt index 3e1040aefe..3fb659aed3 100644 --- a/examples/plugin/reset_plugin/CMakeLists.txt +++ b/examples/plugin/reset_plugin/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(ResetPlugins) -find_package(gz-plugin2 REQUIRED COMPONENTS register) -set(GZ_PLUGIN_VER ${gz-plugin2_VERSION_MAJOR}) +find_package(gz-plugin3 REQUIRED COMPONENTS register) +set(GZ_PLUGIN_VER ${gz-plugin3_VERSION_MAJOR}) find_package(gz-sim9 REQUIRED) set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) diff --git a/examples/plugin/system_plugin/CMakeLists.txt b/examples/plugin/system_plugin/CMakeLists.txt index b887cf7708..08be7e0d48 100644 --- a/examples/plugin/system_plugin/CMakeLists.txt +++ b/examples/plugin/system_plugin/CMakeLists.txt @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) -find_package(gz-cmake3 REQUIRED) +find_package(gz-cmake4 REQUIRED) project(SampleSystem) -find_package(gz-plugin2 REQUIRED COMPONENTS register) -set(GZ_PLUGIN_VER ${gz-plugin2_VERSION_MAJOR}) +find_package(gz-plugin3 REQUIRED COMPONENTS register) +set(GZ_PLUGIN_VER ${gz-plugin3_VERSION_MAJOR}) find_package(gz-sim9 REQUIRED) add_library(SampleSystem SHARED SampleSystem.cc SampleSystem2.cc) diff --git a/examples/scripts/python_api/systems/test_system.py b/examples/scripts/python_api/systems/test_system.py index 7dd34a2ce4..a10aef1fec 100644 --- a/examples/scripts/python_api/systems/test_system.py +++ b/examples/scripts/python_api/systems/test_system.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from gz.math7 import Vector3d +from gz.math8 import Vector3d from gz.sim9 import Model, Link import random diff --git a/examples/scripts/python_api/testFixture.py b/examples/scripts/python_api/testFixture.py index 363c040b4e..820d281dd3 100755 --- a/examples/scripts/python_api/testFixture.py +++ b/examples/scripts/python_api/testFixture.py @@ -24,9 +24,9 @@ import os -from gz.common5 import set_verbosity +from gz.common6 import set_verbosity from gz.sim9 import TestFixture, World, world_entity -from gz.math7 import Vector3d +from gz.math8 import Vector3d set_verbosity(4) diff --git a/examples/standalone/acoustic_comms_demo/CMakeLists.txt b/examples/standalone/acoustic_comms_demo/CMakeLists.txt index 9beb0308f5..7e6f6582cd 100644 --- a/examples/standalone/acoustic_comms_demo/CMakeLists.txt +++ b/examples/standalone/acoustic_comms_demo/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(gz-sim-acoustic-comms-demo) -find_package(gz-transport13 QUIET REQUIRED OPTIONAL_COMPONENTS log) -set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) +find_package(gz-transport14 QUIET REQUIRED OPTIONAL_COMPONENTS log) +set(GZ_TRANSPORT_VER ${gz-transport14_VERSION_MAJOR}) find_package(gz-sim9 REQUIRED) set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) diff --git a/examples/standalone/comms/CMakeLists.txt b/examples/standalone/comms/CMakeLists.txt index 19d11f99f6..f909bbbeea 100644 --- a/examples/standalone/comms/CMakeLists.txt +++ b/examples/standalone/comms/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(gz-sim-comms) -find_package(gz-transport13 QUIET REQUIRED) -set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) +find_package(gz-transport14 QUIET REQUIRED) +set(GZ_TRANSPORT_VER ${gz-transport14_VERSION_MAJOR}) add_executable(publisher publisher.cc) target_link_libraries(publisher diff --git a/examples/standalone/entity_creation/CMakeLists.txt b/examples/standalone/entity_creation/CMakeLists.txt index d41479eafa..29efcc96df 100644 --- a/examples/standalone/entity_creation/CMakeLists.txt +++ b/examples/standalone/entity_creation/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(gz-sim-entity-creation) -find_package(gz-transport13 QUIET REQUIRED OPTIONAL_COMPONENTS log) -set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) +find_package(gz-transport14 QUIET REQUIRED OPTIONAL_COMPONENTS log) +set(GZ_TRANSPORT_VER ${gz-transport14_VERSION_MAJOR}) add_executable(entity_creation entity_creation.cc) target_link_libraries(entity_creation diff --git a/examples/standalone/joy_to_twist/CMakeLists.txt b/examples/standalone/joy_to_twist/CMakeLists.txt index 2344583176..4f77908aa1 100644 --- a/examples/standalone/joy_to_twist/CMakeLists.txt +++ b/examples/standalone/joy_to_twist/CMakeLists.txt @@ -2,11 +2,11 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(gz-sim-joy-to-twist) -find_package(gz-transport13 QUIET REQUIRED OPTIONAL_COMPONENTS log) -set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) +find_package(gz-transport14 QUIET REQUIRED OPTIONAL_COMPONENTS log) +set(GZ_TRANSPORT_VER ${gz-transport14_VERSION_MAJOR}) -find_package(sdformat14 REQUIRED) -set(SDF_VER ${sdformat14_VERSION_MAJOR}) +find_package(sdformat15 REQUIRED) +set(SDF_VER ${sdformat15_VERSION_MAJOR}) add_executable(joy_to_twist joy_to_twist.cc) target_link_libraries(joy_to_twist diff --git a/examples/standalone/joystick/CMakeLists.txt b/examples/standalone/joystick/CMakeLists.txt index 2a4f593633..6168fdef1f 100644 --- a/examples/standalone/joystick/CMakeLists.txt +++ b/examples/standalone/joystick/CMakeLists.txt @@ -4,11 +4,11 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(gz-sim-joystick) if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - find_package(gz-transport13 QUIET REQUIRED OPTIONAL_COMPONENTS log) - set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) + find_package(gz-transport14 QUIET REQUIRED OPTIONAL_COMPONENTS log) + set(GZ_TRANSPORT_VER ${gz-transport14_VERSION_MAJOR}) - find_package(sdformat14 REQUIRED) - set(SDF_VER ${sdformat14_VERSION_MAJOR}) + find_package(sdformat15 REQUIRED) + set(SDF_VER ${sdformat15_VERSION_MAJOR}) add_executable(joystick joystick.cc) target_link_libraries(joystick diff --git a/examples/standalone/keyboard/CMakeLists.txt b/examples/standalone/keyboard/CMakeLists.txt index 04227710c7..7f5f25c3d5 100644 --- a/examples/standalone/keyboard/CMakeLists.txt +++ b/examples/standalone/keyboard/CMakeLists.txt @@ -3,17 +3,17 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(gz-sim-keyboard) if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - find_package(gz-transport13 QUIET REQUIRED OPTIONAL_COMPONENTS log) - set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) + find_package(gz-transport14 QUIET REQUIRED OPTIONAL_COMPONENTS log) + set(GZ_TRANSPORT_VER ${gz-transport14_VERSION_MAJOR}) - find_package(sdformat14 REQUIRED) - set(SDF_VER ${sdformat14_VERSION_MAJOR}) + find_package(sdformat15 REQUIRED) + set(SDF_VER ${sdformat15_VERSION_MAJOR}) - find_package(gz-msgs10 REQUIRED) - set(GZ_MSGS_VER ${gz-msgs10_VERSION_MAJOR}) + find_package(gz-msgs11 REQUIRED) + set(GZ_MSGS_VER ${gz-msgs11_VERSION_MAJOR}) - find_package(gz-common5 REQUIRED) - set(GZ_COMMON_VER ${gz-common5_VERSION_MAJOR}) + find_package(gz-common6 REQUIRED) + set(GZ_COMMON_VER ${gz-common6_VERSION_MAJOR}) add_executable(keyboard keyboard.cc) target_link_libraries(keyboard diff --git a/examples/standalone/light_control/CMakeLists.txt b/examples/standalone/light_control/CMakeLists.txt index b54b5f8a5f..9464d76bdf 100644 --- a/examples/standalone/light_control/CMakeLists.txt +++ b/examples/standalone/light_control/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(gz-sim-light-control) -find_package(gz-transport13 QUIET REQUIRED OPTIONAL_COMPONENTS log) -set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) +find_package(gz-transport14 QUIET REQUIRED OPTIONAL_COMPONENTS log) +set(GZ_TRANSPORT_VER ${gz-transport14_VERSION_MAJOR}) find_package(gz-sim9 REQUIRED) set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) diff --git a/examples/standalone/lrauv_control/CMakeLists.txt b/examples/standalone/lrauv_control/CMakeLists.txt index cd17e2c16a..e55e371d8d 100644 --- a/examples/standalone/lrauv_control/CMakeLists.txt +++ b/examples/standalone/lrauv_control/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(gz-sim-lrauv-control) -find_package(gz-transport13 QUIET REQUIRED OPTIONAL_COMPONENTS log) -set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) +find_package(gz-transport14 QUIET REQUIRED OPTIONAL_COMPONENTS log) +set(GZ_TRANSPORT_VER ${gz-transport14_VERSION_MAJOR}) find_package(gz-sim9 REQUIRED) set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) diff --git a/examples/standalone/lrauv_control/lrauv_control.py b/examples/standalone/lrauv_control/lrauv_control.py index 8f7ad2cf21..56eb0088aa 100644 --- a/examples/standalone/lrauv_control/lrauv_control.py +++ b/examples/standalone/lrauv_control/lrauv_control.py @@ -26,10 +26,10 @@ # $ python3 lrauv_control.py 0.5 0.78 0.174 # -from gz.msgs10.double_pb2 import Double -from gz.msgs10.odometry_pb2 import Odometry -from gz.math7 import Quaterniond, Vector3d -from gz.transport13 import Node +from gz.msgs11.double_pb2 import Double +from gz.msgs11.odometry_pb2 import Odometry +from gz.math8 import Quaterniond, Vector3d +from gz.transport14 import Node from threading import Lock diff --git a/examples/standalone/marker/CMakeLists.txt b/examples/standalone/marker/CMakeLists.txt index bbca4e481d..29a590bae9 100644 --- a/examples/standalone/marker/CMakeLists.txt +++ b/examples/standalone/marker/CMakeLists.txt @@ -3,14 +3,14 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(gz-sim-marker) if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - find_package(gz-transport13 QUIET REQUIRED) - set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) + find_package(gz-transport14 QUIET REQUIRED) + set(GZ_TRANSPORT_VER ${gz-transport14_VERSION_MAJOR}) - find_package(gz-common5 REQUIRED) - set(GZ_COMMON_VER ${gz-common5_VERSION_MAJOR}) + find_package(gz-common6 REQUIRED) + set(GZ_COMMON_VER ${gz-common6_VERSION_MAJOR}) - find_package(gz-msgs10 REQUIRED) - set(GZ_MSGS_VER ${gz-msgs10_VERSION_MAJOR}) + find_package(gz-msgs11 REQUIRED) + set(GZ_MSGS_VER ${gz-msgs11_VERSION_MAJOR}) add_executable(marker marker.cc) target_link_libraries(marker diff --git a/examples/standalone/multi_lrauv_race/CMakeLists.txt b/examples/standalone/multi_lrauv_race/CMakeLists.txt index f34fd7b584..d80e811934 100644 --- a/examples/standalone/multi_lrauv_race/CMakeLists.txt +++ b/examples/standalone/multi_lrauv_race/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(gz-sim-multi-lrauv-race) -find_package(gz-transport13 QUIET REQUIRED OPTIONAL_COMPONENTS log) -set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) +find_package(gz-transport14 QUIET REQUIRED OPTIONAL_COMPONENTS log) +set(GZ_TRANSPORT_VER ${gz-transport14_VERSION_MAJOR}) find_package(gz-sim9 REQUIRED) set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) diff --git a/examples/standalone/multi_lrauv_race/multi_lrauv_race.py b/examples/standalone/multi_lrauv_race/multi_lrauv_race.py index fa565feed1..aff979c158 100644 --- a/examples/standalone/multi_lrauv_race/multi_lrauv_race.py +++ b/examples/standalone/multi_lrauv_race/multi_lrauv_race.py @@ -26,8 +26,8 @@ # before for other python examples. You can use then following: # $ export PYTHONPATH=$PYTHONPATH:/install/lib/python -from gz.msgs10.double_pb2 import Double -from gz.transport13 import Node +from gz.msgs11.double_pb2 import Double +from gz.transport14 import Node import random import time diff --git a/examples/standalone/scene_requester/CMakeLists.txt b/examples/standalone/scene_requester/CMakeLists.txt index e47e8eac87..542f3a9491 100644 --- a/examples/standalone/scene_requester/CMakeLists.txt +++ b/examples/standalone/scene_requester/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) project(gz-sim-scene-requester) -find_package(gz-transport13 QUIET REQUIRED OPTIONAL_COMPONENTS log) -set(GZ_TRANSPORT_VER ${gz-transport13_VERSION_MAJOR}) +find_package(gz-transport14 QUIET REQUIRED OPTIONAL_COMPONENTS log) +set(GZ_TRANSPORT_VER ${gz-transport14_VERSION_MAJOR}) add_executable(scene_requester scene_requester.cc) target_link_libraries(scene_requester diff --git a/python/test/gz_test_deps/common.py b/python/test/gz_test_deps/common.py index d28e66e5e5..60f802749d 100644 --- a/python/test/gz_test_deps/common.py +++ b/python/test/gz_test_deps/common.py @@ -1 +1 @@ -from gz.common5 import * +from gz.common6 import * diff --git a/python/test/gz_test_deps/math.py b/python/test/gz_test_deps/math.py index cb2860c798..d84d0a4777 100644 --- a/python/test/gz_test_deps/math.py +++ b/python/test/gz_test_deps/math.py @@ -1 +1 @@ -from gz.math7 import * +from gz.math8 import * diff --git a/python/test/gz_test_deps/msgs.py b/python/test/gz_test_deps/msgs.py index e91bef7942..c28bb81ef3 100644 --- a/python/test/gz_test_deps/msgs.py +++ b/python/test/gz_test_deps/msgs.py @@ -1,3 +1,3 @@ import sys -import gz.msgs10 -sys.modules["gz_test_deps.msgs"] = gz.msgs10 +import gz.msgs11 +sys.modules["gz_test_deps.msgs"] = gz.msgs11 diff --git a/python/test/gz_test_deps/sdformat.py b/python/test/gz_test_deps/sdformat.py index 51cec2889b..5d34df703e 100644 --- a/python/test/gz_test_deps/sdformat.py +++ b/python/test/gz_test_deps/sdformat.py @@ -1 +1 @@ -from sdformat14 import * +from sdformat15 import * diff --git a/python/test/gz_test_deps/transport.py b/python/test/gz_test_deps/transport.py index 242eeb064a..0c95691f87 100644 --- a/python/test/gz_test_deps/transport.py +++ b/python/test/gz_test_deps/transport.py @@ -1 +1 @@ -from gz.transport13 import * +from gz.transport14 import * diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6e666dafc9..176fdf1039 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -11,11 +11,11 @@ get_target_property(msgs_desc_file gz_msgs_generate_messages_impl( MSGS_GEN_SCRIPT - ${gz-msgs10_PROTO_GENERATOR_SCRIPT} + ${gz-msgs11_PROTO_GENERATOR_SCRIPT} FACTORY_GEN_SCRIPT - ${gz-msgs10_FACTORY_GENERATOR_SCRIPT} + ${gz-msgs11_FACTORY_GENERATOR_SCRIPT} GZ_PROTOC_PLUGIN - ${gz-msgs10_PROTO_GENERATOR_PLUGIN} + ${gz-msgs11_PROTO_GENERATOR_PLUGIN} INPUT_PROTOS ${gz_msgs_proto_files} PROTO_PACKAGE diff --git a/tutorials/create_system_plugins.md b/tutorials/create_system_plugins.md index dec24591d0..62b0beb4e8 100644 --- a/tutorials/create_system_plugins.md +++ b/tutorials/create_system_plugins.md @@ -85,8 +85,8 @@ Implement the system class as usual, for example: In your `CMakeLists.txt` add the following ``` -gz_find_package(gz-plugin2 REQUIRED COMPONENTS register) -set(GZ_PLUGIN_VER ${gz-plugin2_VERSION_MAJOR}) +gz_find_package(gz-plugin3 REQUIRED COMPONENTS register) +set(GZ_PLUGIN_VER ${gz-plugin3_VERSION_MAJOR}) # Add sources for each plugin to be registered. add_library(SampleSystem SampleSystem.cc SampleSystem2.cc) diff --git a/tutorials/migrating_ardupilot_plugin.md b/tutorials/migrating_ardupilot_plugin.md index 20f834ca8f..69bebd3245 100644 --- a/tutorials/migrating_ardupilot_plugin.md +++ b/tutorials/migrating_ardupilot_plugin.md @@ -727,14 +727,14 @@ In the new code we explicitly reference each Gazebo package that we use: ``` # NEW -find_package(sdformat14 REQUIRED) -find_package(gz-common5-all REQUIRED) +find_package(sdformat15 REQUIRED) +find_package(gz-common6-all REQUIRED) find_package(gz-sim9-all REQUIRED) -find_package(gz-math7-all REQUIRED) -find_package(gz-msgs10-all REQUIRED) -find_package(gz-physics7-all REQUIRED) -find_package(gz-sensors8-all REQUIRED) -find_package(gz-transport13-all REQUIRED) +find_package(gz-math8-all REQUIRED) +find_package(gz-msgs11-all REQUIRED) +find_package(gz-physics8-all REQUIRED) +find_package(gz-sensors9-all REQUIRED) +find_package(gz-transport14-all REQUIRED) ``` In the old code we need only refer to the build configuration retrieved from the Gazebo package: diff --git a/tutorials/python_interfaces.md b/tutorials/python_interfaces.md index e35e7b2492..e314280a43 100644 --- a/tutorials/python_interfaces.md +++ b/tutorials/python_interfaces.md @@ -96,7 +96,7 @@ Example python system: ```python -from gz.math7 import Vector3d +from gz.math8 import Vector3d from gz.sim9 import Model, Link import random From efc3bed2c28f8b4a96e6e9460005b3f1cf75c7b2 Mon Sep 17 00:00:00 2001 From: Steve Peters Date: Fri, 10 Nov 2023 11:21:41 -0800 Subject: [PATCH 03/80] Use sdf FindElement API to avoid const_cast (#2231) Several systems use const_cast in order to call sdf::Element::GetElement with const ElementPtrs, but the FindElement API can be used instead. Also fix gz-sensors branch in custom sensor example Signed-off-by: Steve Peters --- .../plugin/custom_sensor_system/CMakeLists.txt | 2 +- src/systems/diff_drive/DiffDrive.cc | 8 ++------ .../JointStatePublisher.cc | 3 +-- .../JointTrajectoryController.cc | 3 +-- src/systems/log/LogRecord.cc | 3 +-- .../log_video_recorder/LogVideoRecorder.cc | 14 +++++--------- src/systems/mecanum_drive/MecanumDrive.cc | 12 ++++-------- src/systems/shader_param/ShaderParam.cc | 17 +++++++---------- src/systems/tracked_vehicle/TrackedVehicle.cc | 12 ++++-------- src/systems/velocity_control/VelocityControl.cc | 8 ++------ 10 files changed, 28 insertions(+), 54 deletions(-) diff --git a/examples/plugin/custom_sensor_system/CMakeLists.txt b/examples/plugin/custom_sensor_system/CMakeLists.txt index 60bc0d3c63..6682fed462 100644 --- a/examples/plugin/custom_sensor_system/CMakeLists.txt +++ b/examples/plugin/custom_sensor_system/CMakeLists.txt @@ -20,7 +20,7 @@ include(FetchContent) FetchContent_Declare( sensors_clone GIT_REPOSITORY https://github.com/gazebosim/gz-sensors - GIT_TAG gz-sensors9 + GIT_TAG main ) FetchContent_Populate(sensors_clone) add_subdirectory(${sensors_clone_SOURCE_DIR}/examples/custom_sensor ${sensors_clone_BINARY_DIR}) diff --git a/src/systems/diff_drive/DiffDrive.cc b/src/systems/diff_drive/DiffDrive.cc index 7da57a118c..700e342743 100644 --- a/src/systems/diff_drive/DiffDrive.cc +++ b/src/systems/diff_drive/DiffDrive.cc @@ -187,18 +187,14 @@ void DiffDrive::Configure(const Entity &_entity, return; } - // Ugly, but needed because the sdf::Element::GetElement is not a const - // function and _sdf is a const shared pointer to a const sdf::Element. - auto ptr = const_cast(_sdf.get()); - // Get params from SDF - sdf::ElementPtr sdfElem = ptr->GetElement("left_joint"); + auto sdfElem = _sdf->FindElement("left_joint"); while (sdfElem) { this->dataPtr->leftJointNames.push_back(sdfElem->Get()); sdfElem = sdfElem->GetNextElement("left_joint"); } - sdfElem = ptr->GetElement("right_joint"); + sdfElem = _sdf->FindElement("right_joint"); while (sdfElem) { this->dataPtr->rightJointNames.push_back(sdfElem->Get()); diff --git a/src/systems/joint_state_publisher/JointStatePublisher.cc b/src/systems/joint_state_publisher/JointStatePublisher.cc index f1aa0c59d8..c8085198f4 100644 --- a/src/systems/joint_state_publisher/JointStatePublisher.cc +++ b/src/systems/joint_state_publisher/JointStatePublisher.cc @@ -64,8 +64,7 @@ void JointStatePublisher::Configure( // specified joints. Otherwise, publish all the joints. if (_sdf->HasElement("joint_name")) { - sdf::Element *ptr = const_cast(_sdf.get()); - sdf::ElementPtr elem = ptr->GetElement("joint_name"); + auto elem = _sdf->FindElement("joint_name"); while (elem) { std::string jointName = elem->Get(); diff --git a/src/systems/joint_traj_control/JointTrajectoryController.cc b/src/systems/joint_traj_control/JointTrajectoryController.cc index d6882f9796..58647463b4 100644 --- a/src/systems/joint_traj_control/JointTrajectoryController.cc +++ b/src/systems/joint_traj_control/JointTrajectoryController.cc @@ -811,8 +811,7 @@ std::vector JointParameters::Parse( if (_sdf->HasElement(_parameterName)) { - sdf::ElementPtr param = const_cast( - _sdf.get())->GetElement(_parameterName); + auto param = _sdf->FindElement(_parameterName); while (param) { output.push_back(param->Get()); diff --git a/src/systems/log/LogRecord.cc b/src/systems/log/LogRecord.cc index e545ff7baa..8cbeadbfb1 100644 --- a/src/systems/log/LogRecord.cc +++ b/src/systems/log/LogRecord.cc @@ -338,8 +338,7 @@ bool LogRecordPrivate::Start(const std::string &_logPath, // Get the topics to record, if any. if (this->sdf->HasElement("record_topic")) { - auto ptr = const_cast(this->sdf.get()); - sdf::ElementPtr recordTopicElem = ptr->GetElement("record_topic"); + auto recordTopicElem = this->sdf->FindElement("record_topic"); // This is used to determine if a topic is a regular expression. std::regex regexMatch(".*[\\*\\?\\[\\]\\(\\)\\.]+.*"); diff --git a/src/systems/log_video_recorder/LogVideoRecorder.cc b/src/systems/log_video_recorder/LogVideoRecorder.cc index beb0abd655..7be53f67f5 100644 --- a/src/systems/log_video_recorder/LogVideoRecorder.cc +++ b/src/systems/log_video_recorder/LogVideoRecorder.cc @@ -171,13 +171,9 @@ void LogVideoRecorder::Configure( this->dataPtr->node.Advertise( "/log_video_recorder/status"); - // Ugly, but needed because the sdf::Element::GetElement is not a const - // function and _sdf is a const shared pointer to a const sdf::Element. - auto ptr = const_cast(_sdf.get()); - if (_sdf->HasElement("entity")) { - auto entityElem = ptr->GetElement("entity"); + auto entityElem = _sdf->FindElement("entity"); while (entityElem) { this->dataPtr->modelsToRecord.insert(entityElem->Get()); @@ -187,7 +183,7 @@ void LogVideoRecorder::Configure( if (_sdf->HasElement("region")) { - sdf::ElementPtr regionElem = ptr->GetElement("region"); + auto regionElem = _sdf->FindElement("region"); while (regionElem) { auto min = regionElem->Get("min"); @@ -201,14 +197,14 @@ void LogVideoRecorder::Configure( if (_sdf->HasElement("start_time")) { - auto t = ptr->Get("start_time"); + auto t = _sdf->Get("start_time"); this->dataPtr->startTime = std::chrono::milliseconds(static_cast(t * 1000.0)); } if (_sdf->HasElement("end_time")) { - auto t = ptr->Get("end_time"); + auto t = _sdf->Get("end_time"); std::chrono::milliseconds ms(static_cast(t * 1000.0)); if (this->dataPtr->startTime > ms) { @@ -222,7 +218,7 @@ void LogVideoRecorder::Configure( if (_sdf->HasElement("exit_on_finish")) { - this->dataPtr->exitOnFinish = ptr->Get("exit_on_finish"); + this->dataPtr->exitOnFinish = _sdf->Get("exit_on_finish"); } this->dataPtr->loadTime = std::chrono::system_clock::now(); diff --git a/src/systems/mecanum_drive/MecanumDrive.cc b/src/systems/mecanum_drive/MecanumDrive.cc index c1b084bce3..6d77de4c77 100644 --- a/src/systems/mecanum_drive/MecanumDrive.cc +++ b/src/systems/mecanum_drive/MecanumDrive.cc @@ -194,31 +194,27 @@ void MecanumDrive::Configure(const Entity &_entity, return; } - // Ugly, but needed because the sdf::Element::GetElement is not a const - // function and _sdf is a const shared pointer to a const sdf::Element. - auto ptr = const_cast(_sdf.get()); - // Get params from SDF - sdf::ElementPtr sdfElem = ptr->GetElement("front_left_joint"); + auto sdfElem = _sdf->FindElement("front_left_joint"); while (sdfElem) { this->dataPtr->frontLeftJointNames.push_back(sdfElem->Get()); sdfElem = sdfElem->GetNextElement("front_left_joint"); } - sdfElem = ptr->GetElement("front_right_joint"); + sdfElem = _sdf->FindElement("front_right_joint"); while (sdfElem) { this->dataPtr->frontRightJointNames.push_back(sdfElem->Get()); sdfElem = sdfElem->GetNextElement("front_right_joint"); } - sdfElem = ptr->GetElement("back_left_joint"); + sdfElem = _sdf->FindElement("back_left_joint"); while (sdfElem) { this->dataPtr->backLeftJointNames.push_back(sdfElem->Get()); sdfElem = sdfElem->GetNextElement("back_left_joint"); } - sdfElem = ptr->GetElement("back_right_joint"); + sdfElem = _sdf->FindElement("back_right_joint"); while (sdfElem) { this->dataPtr->backRightJointNames.push_back(sdfElem->Get()); diff --git a/src/systems/shader_param/ShaderParam.cc b/src/systems/shader_param/ShaderParam.cc index 7c12f0ded2..d89cd57ddb 100644 --- a/src/systems/shader_param/ShaderParam.cc +++ b/src/systems/shader_param/ShaderParam.cc @@ -144,14 +144,11 @@ void ShaderParam::Configure(const Entity &_entity, EventManager &_eventMgr) { GZ_PROFILE("ShaderParam::Configure"); - // Ugly, but needed because the sdf::Element::GetElement is not a const - // function and _sdf is a const shared pointer to a const sdf::Element. - auto sdf = const_cast(_sdf.get()); - if (sdf->HasElement("param")) + if (_sdf->HasElement("param")) { // loop and parse all shader params - sdf::ElementPtr paramElem = sdf->GetElement("param"); + auto paramElem = _sdf->FindElement("param"); while (paramElem) { if (!paramElem->HasElement("shader") || @@ -176,7 +173,7 @@ void ShaderParam::Configure(const Entity &_entity, if (paramElem->HasElement("arg")) { - sdf::ElementPtr argElem = paramElem->GetElement("arg"); + auto argElem = paramElem->FindElement("arg"); while (argElem) { spv.args.push_back(argElem->Get()); @@ -197,14 +194,14 @@ void ShaderParam::Configure(const Entity &_entity, } // parse path to shaders - if (!sdf->HasElement("shader")) + if (!_sdf->HasElement("shader")) { gzerr << "Unable to load shader param system. " << "Missing SDF element." << std::endl; return; } // allow mulitple shader SDF element for different shader languages - sdf::ElementPtr shaderElem = sdf->GetElement("shader"); + auto shaderElem = _sdf->FindElement("shader"); while (shaderElem) { if (!shaderElem->HasElement("vertex") || @@ -223,11 +220,11 @@ void ShaderParam::Configure(const Entity &_entity, ShaderParamPrivate::ShaderUri shader; shader.language = api; - sdf::ElementPtr vertexElem = shaderElem->GetElement("vertex"); + auto vertexElem = shaderElem->FindElement("vertex"); shader.vertexShaderUri = common::findFile( asFullPath(vertexElem->Get(), this->dataPtr->modelPath)); - sdf::ElementPtr fragmentElem = shaderElem->GetElement("fragment"); + auto fragmentElem = shaderElem->FindElement("fragment"); shader.fragmentShaderUri = common::findFile( asFullPath(fragmentElem->Get(), this->dataPtr->modelPath)); diff --git a/src/systems/tracked_vehicle/TrackedVehicle.cc b/src/systems/tracked_vehicle/TrackedVehicle.cc index 4afc223033..848c672f43 100644 --- a/src/systems/tracked_vehicle/TrackedVehicle.cc +++ b/src/systems/tracked_vehicle/TrackedVehicle.cc @@ -233,17 +233,13 @@ void TrackedVehicle::Configure(const Entity &_entity, if (!links.empty()) this->dataPtr->canonicalLink = Link(links[0]); - // Ugly, but needed because the sdf::Element::GetElement is not a const - // function and _sdf is a const shared pointer to a const sdf::Element. - auto ptr = const_cast(_sdf.get()); - - std::unordered_map tracks; + std::unordered_map tracks; if (_sdf->HasElement("body_link")) this->dataPtr->bodyLinkName = _sdf->Get("body_link"); // Get params from SDF - sdf::ElementPtr sdfElem = ptr->GetElement("left_track"); + auto sdfElem = _sdf->FindElement("left_track"); while (sdfElem) { const auto& linkName = sdfElem->Get("link"); @@ -251,7 +247,7 @@ void TrackedVehicle::Configure(const Entity &_entity, tracks[linkName] = sdfElem; sdfElem = sdfElem->GetNextElement("left_track"); } - sdfElem = ptr->GetElement("right_track"); + sdfElem = _sdf->FindElement("right_track"); while (sdfElem) { const auto& linkName = sdfElem->Get("link"); @@ -294,7 +290,7 @@ void TrackedVehicle::Configure(const Entity &_entity, if (!_sdf->HasElement(tag)) continue; - auto sdf = ptr->GetElement(tag); + auto sdf = _sdf->FindElement(tag); // Parse speed limiter parameters. bool hasVelocityLimits = false; diff --git a/src/systems/velocity_control/VelocityControl.cc b/src/systems/velocity_control/VelocityControl.cc index 92728a11b4..68224b3bab 100644 --- a/src/systems/velocity_control/VelocityControl.cc +++ b/src/systems/velocity_control/VelocityControl.cc @@ -154,14 +154,10 @@ void VelocityControl::Configure(const Entity &_entity, << modelTopic << "]" << std::endl; - // Ugly, but needed because the sdf::Element::GetElement is not a const - // function and _sdf is a const shared pointer to a const sdf::Element. - auto ptr = const_cast(_sdf.get()); - - if (!ptr->HasElement("link_name")) + if (!_sdf->HasElement("link_name")) return; - sdf::ElementPtr sdfElem = ptr->GetElement("link_name"); + auto sdfElem = _sdf->FindElement("link_name"); while (sdfElem) { this->dataPtr->linkNames.push_back(sdfElem->Get()); From 451dcf3834d3ab98b11ad0da53c903523d1be381 Mon Sep 17 00:00:00 2001 From: Jose Luis Rivero Date: Mon, 18 Dec 2023 18:53:46 +0100 Subject: [PATCH 04/80] Enable HIDE_SYMBOLS_BY_DEFAULT + linux patches (#2248) * Added missing visible attributes * Enable HIDE_SYMBOLS_BY_DEFAULT --------- Signed-off-by: Jose Luis Rivero --- CMakeLists.txt | 3 ++- .../JointPositionController.hh | 17 +++++++++++++++-- src/gui/plugins/plot_3d/Plot3D.hh | 12 +++++++++++- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ac957230b7..27023d35af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -235,7 +235,8 @@ set(GZ_SIM_GUI_PLUGIN_INSTALL_DIR #============================================================================ # Configure the build #============================================================================ -gz_configure_build(QUIT_IF_BUILD_ERRORS) +gz_configure_build(QUIT_IF_BUILD_ERRORS + HIDE_SYMBOLS_BY_DEFAULT) add_subdirectory(examples) diff --git a/src/gui/plugins/joint_position_controller/JointPositionController.hh b/src/gui/plugins/joint_position_controller/JointPositionController.hh index 0e23ca4bc9..172f893f65 100644 --- a/src/gui/plugins/joint_position_controller/JointPositionController.hh +++ b/src/gui/plugins/joint_position_controller/JointPositionController.hh @@ -25,6 +25,17 @@ #include #include +#ifndef _WIN32 +# define JointPositionController_EXPORTS_API \ + __attribute__ ((visibility ("default"))) +#else +# if (defined(JointPositionController_EXPORTS)) +# define JointPositionController_EXPORTS_API __declspec(dllexport) +# else +# define JointPositionController_EXPORTS_API __declspec(dllimport) +# endif +#endif + Q_DECLARE_METATYPE(gz::sim::Entity) namespace gz @@ -36,7 +47,8 @@ namespace gui class JointPositionControllerPrivate; /// \brief Model holding information about joints - class JointsModel : public QStandardItemModel + class JointPositionController_EXPORTS_API JointsModel : + public QStandardItemModel { Q_OBJECT @@ -88,7 +100,8 @@ namespace gui /// ``: Load the widget pointed at the given model, so it's not /// necessary to select it. If a model is given at startup, the plugin starts /// in locked mode. - class JointPositionController : public sim::GuiSystem + class JointPositionController_EXPORTS_API JointPositionController : + public sim::GuiSystem { Q_OBJECT diff --git a/src/gui/plugins/plot_3d/Plot3D.hh b/src/gui/plugins/plot_3d/Plot3D.hh index d3d7836e5a..180f68a785 100644 --- a/src/gui/plugins/plot_3d/Plot3D.hh +++ b/src/gui/plugins/plot_3d/Plot3D.hh @@ -24,6 +24,16 @@ #include "gz/gui/qt.h" +#ifndef _WIN32 +# define Plot3D_EXPORTS_API __attribute__ ((visibility ("default"))) +#else +# if (defined(Plot3D_EXPORTS)) +# define Plot3D_EXPORTS_API __declspec(dllexport) +# else +# define Plot3D_EXPORTS_API __declspec(dllimport) +# endif +#endif + namespace gz { namespace sim @@ -59,7 +69,7 @@ namespace gui /// After this number is reached, the older points start being deleted. /// Defaults to 1000. /// - class Plot3D : public gz::sim::GuiSystem + class Plot3D_EXPORTS_API Plot3D : public gz::sim::GuiSystem { Q_OBJECT From c158287d6f8556112d86d6e4188c39784364bd40 Mon Sep 17 00:00:00 2001 From: Jose Luis Rivero Date: Fri, 12 Jan 2024 15:49:46 +0100 Subject: [PATCH 05/80] Remove HIDE_SYMBOLS_BY_DEFAULT: replace by a default configuration in gz-cmake. (#2283) See https://github.com/gazebosim/gz-cmake/issues/166#issuecomment-1887521423 Signed-off-by: Jose Luis Rivero --- CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 27023d35af..ac957230b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -235,8 +235,7 @@ set(GZ_SIM_GUI_PLUGIN_INSTALL_DIR #============================================================================ # Configure the build #============================================================================ -gz_configure_build(QUIT_IF_BUILD_ERRORS - HIDE_SYMBOLS_BY_DEFAULT) +gz_configure_build(QUIT_IF_BUILD_ERRORS) add_subdirectory(examples) From 0f27ce0adda2099dd35904e9d45fe4a653351ac0 Mon Sep 17 00:00:00 2001 From: Mabel Zhang Date: Wed, 17 Jan 2024 22:14:57 -0500 Subject: [PATCH 06/80] Regroup tutorials into four categories (#2109) * Regroup tutorials into the 4 recommended categories --------- Signed-off-by: Mabel Zhang Signed-off-by: Michael Carroll Co-authored-by: Michael Carroll --- tutorials.md.in | 107 ++++++++++++++++++++------------- tutorials/entity_creation.md | 6 +- tutorials/model_photo_shoot.md | 61 ++++++++----------- tutorials/physics.md | 17 ++++-- tutorials/python_interfaces.md | 2 +- 5 files changed, 107 insertions(+), 86 deletions(-) diff --git a/tutorials.md.in b/tutorials.md.in index 0c6f51aab3..950dc9f4d1 100644 --- a/tutorials.md.in +++ b/tutorials.md.in @@ -4,71 +4,79 @@ Welcome to the Gazebo @GZ_DESIGNATION_CAP@ tutorials. These tutorials will guide you through the process of understanding the capabilities of the Gazebo @GZ_DESIGNATION_CAP@ library and how to use the library effectively. -## Getting Started +## Tutorials + +The Tutorials section contains step-by-step instructions with self-contained examples to help you get started using Gazebo. + +### Beginner * \subpage install "Installation": Install instructions. -* \subpage terminology "Terminology": List of terms used across the documentation. -* \subpage gui_config "GUI configuration": Customizing your layout. -* \subpage server_config "Server configuration": Customizing what system plugins are loaded. +* \subpage move_camera_to_model Move camera to model +* \subpage apply_force_torque "Apply Force and Torque": Apply forces and/or torques to models during simulation through the GUI. +* \subpage mouse_drag "Mouse Drag": Move models by dragging them in the scene using forces and torques. * \subpage model_command "Model Command": Use the CLI to get information about the models in a simulation. * \subpage reset_simulation Reset simulation -* \subpage resources "Finding resources": The different ways in which Gazebo looks for files. -* \subpage debugging "Debugging": Information about debugging Gazebo. +* \subpage headless_rendering "Headless rendering": Access the GPU on a remote machine to produce sensor data without an X server. -### GUI and rendering features +### Intermediate -* \subpage move_camera_to_model Move camera to model -* \subpage model_photo_shoot "Model Photo Shoot" Taking perspective, top, front, and side pictures of a model. -* \subpage videorecorder "Video Recorder": Record videos from the 3D render window. -* \subpage headless_rendering "Headless rendering": Access the GPU on a remote machine to produce sensor data without an X server. -* \subpage apply_force_torque "Apply Force and Torque": Applying forces and/or torques to models during simulation through the GUI. -* \subpage mouse_drag "Mouse Drag": Move models by dragging them in the scene using forces and torques. +* \subpage log "Logging": Record and play back time series of world state. +* \subpage levels "Levels": Load entities on demand in large environments. -### Migration from Gazebo classic +### Advanced -* \subpage migrationplugins "Plugins": Walk through the differences between writing plugins for Gazebo classic and Gazebo -* \subpage migrationsdf "SDF": Migrating SDF files from Gazebo classic to Gazebo -* \subpage migrationworldapi "World API": Guide on what World C++ functions to call in Gazebo when migrating from Gazebo classic -* \subpage migrationmodelapi "Model API": Guide on what Model C++ functions to call in Gazebo when migrating from Gazebo classic -* \subpage migrationlightapi "Light API": Guide on what Light C++ functions to call in Gazebo when migrating from Gazebo classic -* \subpage migrationjointapi "Joint API": Guide on what Joint C++ functions to call in Gazebo when migrating from Gazebo classic -* \subpage migrationactorapi "Actor API": Guide on what Actor C++ functions to call in Gazebo when migrating from Gazebo classic -* \subpage migrationlinkapi "Link API": Guide on what Link C++ functions to call in Gazebo when migrating from Gazebo classic -* \subpage migrationsensorapi "Sensor API": Guide on what Sensor C++ functions to call in Gazebo when migrating from Gazebo classic -* \subpage ardupilot "Case Study": Migrating the ArduPilot ModelPlugin from Gazebo classic to Gazebo. +* \subpage erbtemplate "ERB Template": Use ERB, a templating language, to generate SDF files for simulation worlds. -## Intermediate +## How-to Guides -* \subpage log "Logging": Record and play back time series of world state. -* \subpage light_config "Light config": Configure lights in the scene. -* \subpage levels "Levels": Load entities on demand in large environments. -* \subpage python_interfaces Python interfaces +The How-to Guides provide recipes for specific "How to..." questions or things you may want to do. +They assume some experience. +If you are an absolute beginner, start with the Tutorials section. + +### Beginner -### Specific systems and features +* \subpage gui_config "GUI configuration": Customize your layout. +* \subpage server_config "Server configuration": Customize what system plugins are loaded. +* \subpage model_photo_shoot "Model Photo Shoot" Taking perspective, top, front, and side pictures of a model. +* \subpage videorecorder "Video Recorder": Record videos from the 3D render window. -* \subpage detachablejoints "Detachable Joints": Creating models that start off rigidly attached and then get detached during simulation. -* \subpage triggeredpublisher "Triggered Publisher": Using the TriggeredPublisher system to orchestrate actions in simulation. +### Intermediate + +* \subpage light_config "Light config": Configure lights in the scene. +* \subpage entity_creation "Entity creation": Insert models or lights using services. * \subpage battery "Battery": Keep track of battery charge on robot models. -* \subpage particle_emitter "Particle emitter": Using particle emitters in simulation -* \subpage spherical_coordinates "Spherical coordinates": Working with latitude and longitude -* \subpage underwater_vehicles "Underwater Vehicles": Understand how to simulate underwater vehicles. +* \subpage particle_emitter "Particle emitter": Use particle emitters in simulation +* \subpage detachablejoints "Detachable Joints": Create models that start off rigidly attached and then get detached during simulation. +* \subpage triggeredpublisher "Triggered Publisher": Use the TriggeredPublisher system to orchestrate actions in simulation. +* \subpage spherical_coordinates "Spherical coordinates": Work with latitude and longitude +* \subpage underwater_vehicles "Underwater Vehicles": Understand how to simulate underwater vehicles * \subpage logicalaudiosensor "Logical Audio Sensor": Using the LogicalAudioSensor system to mimic logical audio emission and detection in simulation. * \subpage auto_inertia_calculation "Automatic Inertia Calculation": Automatically compute inertia values(mass, mass matrix, center of mass) for SDFormat links. -## Advanced users +### Advanced -* \subpage physics "Physics engines": Loading different physics engines. -* \subpage entity_creation "Entity creation": Insert models or lights using services. -* \subpage erbtemplate "ERB Template": Use ERB, a templating language, to generate SDF files for simulation worlds. -* \subpage distributedsimulation "Distributed Simulation": Spread simulation across several processes. +* \subpage physics "Physics engines": Load different physics engines. -## Developers +### Developers * \subpage createsystemplugins "Create System Plugins": Programmatically access simulation using C++ plugins. * \subpage rendering_plugins "Rendering plugins": Write plugins that use Gazebo Rendering on the server and client. * \subpage test_fixture "Test Fixture": Writing automated CI tests -## 3D modeling help +### Migration from Gazebo classic + +* \subpage migrationplugins "Plugins": Walk through the differences between writing plugins for Gazebo classic and Gazebo +* \subpage migrationsdf "SDF": Migrating SDF files from Gazebo classic to Gazebo +* \subpage migrationworldapi "World API": Guide on what World C++ functions to call in Gazebo when migrating from Gazebo classic +* \subpage migrationmodelapi "Model API": Guide on what Model C++ functions to call in Gazebo when migrating from Gazebo classic +* \subpage migrationlightapi "Light API": Guide on what Light C++ functions to call in Gazebo when migrating from Gazebo classic +* \subpage migrationjointapi "Joint API": Guide on what Joint C++ functions to call in Gazebo when migrating from Gazebo classic +* \subpage migrationactorapi "Actor API": Guide on what Actor C++ functions to call in Gazebo when migrating from Gazebo classic +* \subpage migrationlinkapi "Link API": Guide on what Link C++ functions to call in Gazebo when migrating from Gazebo classic +* \subpage migrationsensorapi "Sensor API": Guide on what Sensor C++ functions to call in Gazebo when migrating from Gazebo classic +* \subpage ardupilot "Case Study": Migrating the ArduPilot ModelPlugin from Gazebo classic to Gazebo. + +### 3D modeling help * \subpage collada_world_exporter "Collada World Exporter": Export an entire world to a single Collada mesh. * \subpage meshtofuel "Importing a Mesh to Fuel": Build a model directory around a mesh so it can be added to the Gazebo Fuel app. @@ -81,6 +89,21 @@ Gazebo @GZ_DESIGNATION_CAP@ library and how to use the library effectively. * \subpage blender_distort_meshes "Blender mesh distortion": Use a Blender Python script to programmatically deform and distort meshes to customized extents. * \subpage blender_procedural_datasets "Generation of Procedural Datasets with Blender": Use Blender with a Python script to generate procedural datasets of SDF models. +## Reference + +The reference section contains information that may come in handy for lookup. + +* \subpage resources "Finding resources": The different ways in which Gazebo looks for files. +* \subpage python_interfaces Python interfaces +* \subpage debugging "Debugging": Information about debugging Gazebo. + +## Concepts + +The concepts section explains things that require additional understanding than the scope of the Tutorials and How-to Guides. + +* \subpage terminology "Terminology": List of terms used across the documentation. +* \subpage distributedsimulation "Distributed Simulation": Spread simulation across several processes. + ## License The code associated with this documentation is licensed under an [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0). diff --git a/tutorials/entity_creation.md b/tutorials/entity_creation.md index 6772fb1538..8f82e4774a 100644 --- a/tutorials/entity_creation.md +++ b/tutorials/entity_creation.md @@ -55,7 +55,7 @@ gz service --list /world/world_name/state_async ``` -# Factory message +## Factory message To create new entities in the world we need to use the [gz::msgs::EntityFactory](https://gazebosim.org/api/msgs/9/classgz_1_1msgs_1_1EntityFactory.html) @@ -65,7 +65,7 @@ This message allows us to create entities from strings, files, [Lights](https://gazebosim.org/api/msgs/9/classgz_1_1msgs_1_1Light.html) or even clone models. This tutorial introduces how to create entities from SDF strings and light messages. -## Insert an entity based on a string +### Insert an entity based on a string We will open an empty Gazebo world, let's start creating a sphere in the world. In the next snippet you can see how to create models based on strings. @@ -87,7 +87,7 @@ happen. You may see some traces in the console showing this information. There is an option to create a new entity every time that the message is sent by setting `allow_renaming` to true (you can use the method `set_allow_renaming()`). -## Insert a light +### Insert a light To insert a light in the world we have two options: diff --git a/tutorials/model_photo_shoot.md b/tutorials/model_photo_shoot.md index 7d7209d0f8..f3ce372c9c 100644 --- a/tutorials/model_photo_shoot.md +++ b/tutorials/model_photo_shoot.md @@ -21,37 +21,32 @@ SDF is used to load and configure the `Model Photo Shoot` plugin. The demo SDF contains a good example of the different options and other related plugins: 1. The physics plugin: - -``` + ``` -``` - -A physics plugin is needed only if the `` option is to -be used. This will allow the `Model Photo Shoot` plugin to set the joints -to random positions. + ``` + A physics plugin is needed only if the `` option is to + be used. This will allow the `Model Photo Shoot` plugin to set the joints + to random positions. 2. The render engine plugin: - -``` + ``` ogre2 1, 1, 1 -``` - -A render plugin is needed to render the image. If `ogre2` is used, as shown in -the example, the `` tag can be used to set the background -of the pictures taken by the plugin. Please note that lights added by the -plugin will also affect the final resulting background color on the images. + ``` + A render plugin is needed to render the image. If `ogre2` is used, as shown in + the example, the `` tag can be used to set the background + of the pictures taken by the plugin. Please note that lights added by the + plugin will also affect the final resulting background color on the images. 3. The model and the photo shoot plugin: - -``` + ``` https://fuel.gazebosim.org/1.0/OpenRobotics/models/Robonaut true -``` - -The model is loaded through the `` tag. Then the `model photo shoot` -plugin and its options are specified: - -* ``: (optional) Location to store the camera -translation, scaling data and joints position (if using the -`` option) that can be used to replicate the -pictures using other systems. -* ``: (optional) When set to `true` the joints in the model -will be set to random positions prior to taking the pictures. + ``` + The model is loaded through the `` tag. Then the `model photo shoot` + plugin and its options are specified: + * ``: (optional) Location to store the camera + translation, scaling data and joints position (if using the + `` option) that can be used to replicate the + pictures using other systems. + * ``: (optional) When set to `true` the joints in the model + will be set to random positions prior to taking the pictures. 4. Camera sensor: - -``` + ``` 0 0 0 0 0 0 @@ -99,8 +91,7 @@ will be set to random positions prior to taking the pictures. true -``` - -A `camera sensor` must be added as it will be used by the plugin to take the -pictures. This allows plugin users to set the different parameters of the -camera to their desired values. + ``` + A `camera sensor` must be added as it will be used by the plugin to take the + pictures. This allows plugin users to set the different parameters of the + camera to their desired values. diff --git a/tutorials/physics.md b/tutorials/physics.md index 98a08b8a78..b4a94c7d1e 100644 --- a/tutorials/physics.md +++ b/tutorials/physics.md @@ -28,17 +28,22 @@ directory where the plugin's shared library can be found. For example, if you've created the following physics engine shared library on Linux: -`/home/physics_engines/libCustomEngine.so` +``` +/home/physics_engines/libCustomEngine.so +``` You should set the variable as follows: -`export GZ_SIM_PHYSICS_ENGINE_PATH=/home/physics_engines` - +``` +export GZ_SIM_PHYSICS_ENGINE_PATH=/home/physics_engines +``` If you have several libraries installed in different paths, you can add more paths, for example: -`export GZ_SIM_PHYSICS_ENGINE_PATH=/home/physics_engines:/home/more_engines` +``` +export GZ_SIM_PHYSICS_ENGINE_PATH=/home/physics_engines:/home/more_engines +``` ## Tell Gazebo what engine to load @@ -70,7 +75,9 @@ For the example above, you can load it like this: Alternatively, you can choose a plugin from the command line using the `--physics-engine` option, for example: -`gz sim --physics-engine CustomEngine` +``` +gz sim --physics-engine CustomEngine +``` To use an existing alternative engine (e.g. Bullet Featherstone) diff --git a/tutorials/python_interfaces.md b/tutorials/python_interfaces.md index e314280a43..108080d121 100644 --- a/tutorials/python_interfaces.md +++ b/tutorials/python_interfaces.md @@ -82,7 +82,7 @@ post_iterations 1000 pre_iterations 1000 ``` -# Gazebo Systems written in Python +## Gazebo Systems written in Python Gazebo also provides a way to write systems in Python. This is done using the `gz::sim::systems::PythonSystemLoader` system which loads a given python module From 77f4c00308402f816fb2d253318b5626aea7911a Mon Sep 17 00:00:00 2001 From: Steve Peters Date: Tue, 9 Apr 2024 12:08:36 -0700 Subject: [PATCH 07/80] Physics: remove *VelocityCmd at each time step (#2228) This implements a suggestion from #1926 to delete all `*VelocityCmd` components after each time step. This also updates the logic for the following two systems to handle this change: * MulticopterMotorModel: handle missing component Since JointVelocityCmd components are deleted after each timestep, don't skip updating forces and moments if the component does not exist, and use the SetComponent API to more cleanly handle the component creation logic. A syntax error in the the quadcopter test worlds was fixed as well. * TrajectoryFollower: don't need to remove commands Now that the physics system is removing AngularVelocityCmd components at every timestep, that logic can be removed from the trajectory follower system. Signed-off-by: Steve Peters --- Migration.md | 8 +++ .../MulticopterMotorModel.cc | 17 ++--- src/systems/physics/Physics.cc | 62 +++++++++++++------ .../trajectory_follower/TrajectoryFollower.cc | 24 +------ test/worlds/quadcopter.sdf | 8 +-- test/worlds/quadcopter_velocity_control.sdf | 8 +-- 6 files changed, 66 insertions(+), 61 deletions(-) diff --git a/Migration.md b/Migration.md index a1df392c5c..2e55298ea9 100644 --- a/Migration.md +++ b/Migration.md @@ -5,6 +5,14 @@ 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. +## Gazebo Sim 8.x to 9.0 + + * **Modified**: + + In the Physics system, all `*VelocityCmd` components are now deleted after + each time step, whereas previously the component values were set to `0` + after each time step. Persistent velocity commands should be reapplied at + each time step. + ## Gazebo Sim 7.x to 8.0 * **Deprecated** + `gz::sim::components::Factory::Register(const std::string &_type, ComponentDescriptorBase *_compDesc)` and diff --git a/src/systems/multicopter_motor_model/MulticopterMotorModel.cc b/src/systems/multicopter_motor_model/MulticopterMotorModel.cc index 8e6e421ce9..12dcab4c86 100644 --- a/src/systems/multicopter_motor_model/MulticopterMotorModel.cc +++ b/src/systems/multicopter_motor_model/MulticopterMotorModel.cc @@ -447,14 +447,6 @@ void MulticopterMotorModel::PreUpdate(const UpdateInfo &_info, doUpdateForcesAndMoments = false; } - if (!_ecm.Component( - this->dataPtr->jointEntity)) - { - _ecm.CreateComponent(this->dataPtr->jointEntity, - components::JointVelocityCmd({0})); - doUpdateForcesAndMoments = false; - } - if (!_ecm.Component(this->dataPtr->linkEntity)) { _ecm.CreateComponent(this->dataPtr->linkEntity, components::WorldPose()); @@ -682,11 +674,10 @@ void MulticopterMotorModelPrivate::UpdateForcesAndMoments( refMotorRotVel = this->rotorVelocityFilter->UpdateFilter( this->refMotorInput, this->samplingTime); - const auto jointVelCmd = _ecm.Component( - this->jointEntity); - *jointVelCmd = components::JointVelocityCmd( - {this->turningDirection * refMotorRotVel - / this->rotorVelocitySlowdownSim}); + _ecm.SetComponentData( + this->jointEntity, + {this->turningDirection * refMotorRotVel + / this->rotorVelocitySlowdownSim}); } } } diff --git a/src/systems/physics/Physics.cc b/src/systems/physics/Physics.cc index 1f6defbf44..6a56cb101c 100644 --- a/src/systems/physics/Physics.cc +++ b/src/systems/physics/Physics.cc @@ -3628,12 +3628,20 @@ void PhysicsPrivate::UpdateSim(EntityComponentManager &_ecm, return true; }); - _ecm.Each( - [&](const Entity &, components::JointVelocityCmd *_vel) -> bool - { - std::fill(_vel->Data().begin(), _vel->Data().end(), 0.0); - return true; - }); + { + std::vector entitiesJointVelocityCmd; + _ecm.Each( + [&](const Entity &_entity, components::JointVelocityCmd *) -> bool + { + entitiesJointVelocityCmd.push_back(_entity); + return true; + }); + + for (const auto entity : entitiesJointVelocityCmd) + { + _ecm.RemoveComponent(entity); + } + } _ecm.Each( [&](const Entity &, components::SlipComplianceCmd *_slip) -> bool @@ -3641,21 +3649,37 @@ void PhysicsPrivate::UpdateSim(EntityComponentManager &_ecm, std::fill(_slip->Data().begin(), _slip->Data().end(), 0.0); return true; }); - GZ_PROFILE_END(); - _ecm.Each( - [&](const Entity &, components::AngularVelocityCmd *_vel) -> bool - { - _vel->Data() = math::Vector3d::Zero; - return true; - }); + { + std::vector entitiesAngularVelocityCmd; + _ecm.Each( + [&](const Entity &_entity, components::AngularVelocityCmd *) -> bool + { + entitiesAngularVelocityCmd.push_back(_entity); + return true; + }); - _ecm.Each( - [&](const Entity &, components::LinearVelocityCmd *_vel) -> bool - { - _vel->Data() = math::Vector3d::Zero; - return true; - }); + for (const auto entity : entitiesAngularVelocityCmd) + { + _ecm.RemoveComponent(entity); + } + } + + { + std::vector entitiesLinearVelocityCmd; + _ecm.Each( + [&](const Entity &_entity, components::LinearVelocityCmd *) -> bool + { + entitiesLinearVelocityCmd.push_back(_entity); + return true; + }); + + for (const auto entity : entitiesLinearVelocityCmd) + { + _ecm.RemoveComponent(entity); + } + } + GZ_PROFILE_END(); // Update joint positions GZ_PROFILE_BEGIN("Joints"); diff --git a/src/systems/trajectory_follower/TrajectoryFollower.cc b/src/systems/trajectory_follower/TrajectoryFollower.cc index 1db5e1c2d0..e295686946 100644 --- a/src/systems/trajectory_follower/TrajectoryFollower.cc +++ b/src/systems/trajectory_follower/TrajectoryFollower.cc @@ -111,9 +111,6 @@ class gz::sim::systems::TrajectoryFollowerPrivate /// \brief Whether the trajectory follower behavior should be paused or not. public: bool paused = false; - /// \brief Angular velocity set to zero - public: bool zeroAngVelSet = false; - /// \brief Force angular velocity to be zero when bearing is reached public: bool forceZeroAngVel = false; }; @@ -390,37 +387,22 @@ void TrajectoryFollower::PreUpdate( // Transform the force and torque to the world frame. // Move commands. The vehicle always move forward (X direction). gz::math::Vector3d forceWorld; + gz::math::Vector3d torqueWorld; if (std::abs(bearing.Degree()) <= this->dataPtr->bearingTolerance) { forceWorld = (*comPose).Rot().RotateVector( gz::math::Vector3d(this->dataPtr->forceToApply, 0, 0)); // force angular velocity to be zero when bearing is reached - if (this->dataPtr->forceZeroAngVel && !this->dataPtr->zeroAngVelSet && + if (this->dataPtr->forceZeroAngVel && math::equal (std::abs(bearing.Degree()), 0.0, this->dataPtr->bearingTolerance * 0.5)) { this->dataPtr->link.SetAngularVelocity(_ecm, math::Vector3d::Zero); - this->dataPtr->zeroAngVelSet = true; } } - gz::math::Vector3d torqueWorld; - if (std::abs(bearing.Degree()) > this->dataPtr->bearingTolerance) + else { - // remove angular velocity component otherwise the physics system will set - // the zero ang vel command every iteration - if (this->dataPtr->forceZeroAngVel && this->dataPtr->zeroAngVelSet) - { - auto angVelCmdComp = _ecm.Component( - this->dataPtr->link.Entity()); - if (angVelCmdComp) - { - _ecm.RemoveComponent( - this->dataPtr->link.Entity()); - this->dataPtr->zeroAngVelSet = false; - } - } - int sign = static_cast(std::abs(bearing.Degree()) / bearing.Degree()); torqueWorld = (*comPose).Rot().RotateVector( gz::math::Vector3d(0, 0, sign * this->dataPtr->torqueToApply)); diff --git a/test/worlds/quadcopter.sdf b/test/worlds/quadcopter.sdf index bc93489ee5..b45f431aa4 100644 --- a/test/worlds/quadcopter.sdf +++ b/test/worlds/quadcopter.sdf @@ -91,7 +91,7 @@ - 0 0 0 1.57 0 0 0 + 0 0 0 1.57 0 0 0.2 @@ -136,7 +136,7 @@ - 0 0 0 1.57 0 0 0 + 0 0 0 1.57 0 0 0.2 @@ -181,7 +181,7 @@ - 0 0 0 1.57 0 0 0 + 0 0 0 1.57 0 0 0.2 @@ -226,7 +226,7 @@ - 0 0 0 1.57 0 0 0 + 0 0 0 1.57 0 0 0.2 diff --git a/test/worlds/quadcopter_velocity_control.sdf b/test/worlds/quadcopter_velocity_control.sdf index 09390c0274..1650b5852c 100644 --- a/test/worlds/quadcopter_velocity_control.sdf +++ b/test/worlds/quadcopter_velocity_control.sdf @@ -91,7 +91,7 @@ - 0 0 0 1.57 0 0 0 + 0 0 0 1.57 0 0 0.2 @@ -136,7 +136,7 @@ - 0 0 0 1.57 0 0 0 + 0 0 0 1.57 0 0 0.2 @@ -181,7 +181,7 @@ - 0 0 0 1.57 0 0 0 + 0 0 0 1.57 0 0 0.2 @@ -226,7 +226,7 @@ - 0 0 0 1.57 0 0 0 + 0 0 0 1.57 0 0 0.2 From 13a76e18598d97c92eb6e075e7d27d680db455f7 Mon Sep 17 00:00:00 2001 From: Davide Graziato Date: Fri, 12 Apr 2024 11:12:25 +0200 Subject: [PATCH 08/80] publish jointForces Signed-off-by: Davide Graziato --- src/systems/physics/Physics.cc | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/systems/physics/Physics.cc b/src/systems/physics/Physics.cc index 1f6defbf44..2a04848586 100644 --- a/src/systems/physics/Physics.cc +++ b/src/systems/physics/Physics.cc @@ -120,6 +120,8 @@ #include "gz/sim/components/JointVelocityCmd.hh" #include "gz/sim/components/JointVelocityLimitsCmd.hh" #include "gz/sim/components/JointVelocityReset.hh" +#include "gz/sim/components/JointForce.hh" +#include "gz/sim/components/JointForceCmd.hh" #include "gz/sim/components/LinearAcceleration.hh" #include "gz/sim/components/LinearVelocity.hh" #include "gz/sim/components/LinearVelocityCmd.hh" @@ -130,7 +132,6 @@ #include "gz/sim/components/ParentLinkName.hh" #include "gz/sim/components/ExternalWorldWrenchCmd.hh" #include "gz/sim/components/JointTransmittedWrench.hh" -#include "gz/sim/components/JointForceCmd.hh" #include "gz/sim/components/Physics.hh" #include "gz/sim/components/PhysicsEnginePlugin.hh" #include "gz/sim/components/Pose.hh" @@ -3692,6 +3693,26 @@ void PhysicsPrivate::UpdateSim(EntityComponentManager &_ecm, } return true; }); + + // Update joint Forces + _ecm.Each( + [&](const Entity &_entity, components::Joint *, + components::JointForce *_jointForce) -> bool + { + if (auto jointPhys = this->entityJointMap.Get(_entity)) + { + _jointForce->Data().resize(jointPhys->GetDegreesOfFreedom()); + for (std::size_t i = 0; i < jointPhys->GetDegreesOfFreedom(); + ++i) + { + _jointForce->Data()[i] = jointPhys->GetForce(i); + gzmsg << "JointForce: " << _jointForce->Data()[i] + << std::endl; + } + } + return true; + }); + GZ_PROFILE_END(); // Update joint transmitteds From 1205d00019d663306e7dcebdf87e8297596a14cc Mon Sep 17 00:00:00 2001 From: Davide Graziato Date: Fri, 12 Apr 2024 11:20:00 +0200 Subject: [PATCH 09/80] fix Signed-off-by: Davide Graziato --- src/systems/physics/Physics.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/systems/physics/Physics.cc b/src/systems/physics/Physics.cc index 2a04848586..cd8ec4d471 100644 --- a/src/systems/physics/Physics.cc +++ b/src/systems/physics/Physics.cc @@ -3706,8 +3706,6 @@ void PhysicsPrivate::UpdateSim(EntityComponentManager &_ecm, ++i) { _jointForce->Data()[i] = jointPhys->GetForce(i); - gzmsg << "JointForce: " << _jointForce->Data()[i] - << std::endl; } } return true; From a989ad167ed0d1b89b544cfe501f442b88affa90 Mon Sep 17 00:00:00 2001 From: Davide Graziato Date: Fri, 19 Apr 2024 11:46:45 +0200 Subject: [PATCH 10/80] update --- src/systems/joint_state_publisher/JointStatePublisher.cc | 3 ++- src/systems/physics/Physics.cc | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/systems/joint_state_publisher/JointStatePublisher.cc b/src/systems/joint_state_publisher/JointStatePublisher.cc index c8085198f4..92b608fdc6 100644 --- a/src/systems/joint_state_publisher/JointStatePublisher.cc +++ b/src/systems/joint_state_publisher/JointStatePublisher.cc @@ -129,7 +129,8 @@ void JointStatePublisher::CreateComponents(EntityComponentManager &_ecm, } // Create joint force component if one doesn't exist - if (!_ecm.EntityHasComponentType(_joint, components::JointForce().TypeId())) + if (!_ecm.EntityHasComponentType(_joint, + components::JointForce().TypeId())) { _ecm.CreateComponent(_joint, components::JointForce()); } diff --git a/src/systems/physics/Physics.cc b/src/systems/physics/Physics.cc index cd8ec4d471..abf986f96e 100644 --- a/src/systems/physics/Physics.cc +++ b/src/systems/physics/Physics.cc @@ -116,6 +116,7 @@ #include "gz/sim/components/JointPositionLimitsCmd.hh" #include "gz/sim/components/JointPositionReset.hh" #include "gz/sim/components/JointType.hh" +#include "gz/sim/components/JointForce.hh" #include "gz/sim/components/JointVelocity.hh" #include "gz/sim/components/JointVelocityCmd.hh" #include "gz/sim/components/JointVelocityLimitsCmd.hh" @@ -2792,6 +2793,7 @@ void PhysicsPrivate::ResetPhysics(EntityComponentManager &_ecm) { jointPhys->SetVelocity(i, 0.0); jointPhys->SetPosition(i, 0.0); + jointPhys->SetForce(i, 0.0); } return true; @@ -3693,7 +3695,6 @@ void PhysicsPrivate::UpdateSim(EntityComponentManager &_ecm, } return true; }); - // Update joint Forces _ecm.Each( [&](const Entity &_entity, components::Joint *, @@ -3710,7 +3711,6 @@ void PhysicsPrivate::UpdateSim(EntityComponentManager &_ecm, } return true; }); - GZ_PROFILE_END(); // Update joint transmitteds From 9e45959207c7730d912e75c13811ac4ea60a182c Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Mon, 29 Apr 2024 01:34:45 -0300 Subject: [PATCH 11/80] Fix warn unused variable in test (#2388) Signed-off-by: Jorge Perez --- src/network/NetworkConfig_TEST.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/network/NetworkConfig_TEST.cc b/src/network/NetworkConfig_TEST.cc index d68be8ab33..af6baffc61 100644 --- a/src/network/NetworkConfig_TEST.cc +++ b/src/network/NetworkConfig_TEST.cc @@ -33,6 +33,7 @@ TEST(NetworkManager, ValueConstructor) assert(config.role == NetworkRole::None); assert(config.numSecondariesExpected == 0); // Expect console warning as well + (void) config; } { @@ -40,23 +41,27 @@ TEST(NetworkManager, ValueConstructor) auto config = NetworkConfig::FromValues("PRIMARY", 3); assert(config.role == NetworkRole::SimulationPrimary); assert(config.numSecondariesExpected == 3); + (void) config; } { // Secondary is always valid auto config = NetworkConfig::FromValues("SECONDARY", 0); assert(config.role == NetworkRole::SimulationSecondary); + (void) config; } { // Readonly is always valid auto config = NetworkConfig::FromValues("READONLY"); assert(config.role == NetworkRole::ReadOnly); + (void) config; } { // Anything else is invalid auto config = NetworkConfig::FromValues("READ_WRITE"); assert(config.role == NetworkRole::None); + (void) config; } } From 3c2a3cea9b6bd17883c86b3accd6f15bb30b4219 Mon Sep 17 00:00:00 2001 From: Steve Peters Date: Mon, 13 May 2024 20:04:59 +0200 Subject: [PATCH 12/80] ForceTorque system: improve readability (#2403) This adds some comments and uses structured bindings in range-based for loops to improve readability. It also adds const to unmodified variables in a loop. Signed-off-by: Steve Peters --- src/systems/force_torque/ForceTorque.cc | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/systems/force_torque/ForceTorque.cc b/src/systems/force_torque/ForceTorque.cc index 652c793265..71a2e2800b 100644 --- a/src/systems/force_torque/ForceTorque.cc +++ b/src/systems/force_torque/ForceTorque.cc @@ -181,10 +181,10 @@ void ForceTorque::PostUpdate(const UpdateInfo &_info, // note: gz-sensors does its own throttling. Here the check is mainly // to avoid doing work in the ForceTorquePrivate::Update function bool needsUpdate = false; - for (auto &it : this->dataPtr->entitySensorMap) + for (const auto &[sensorEntity, sensor] : this->dataPtr->entitySensorMap) { - if (it.second->NextDataUpdateTime() <= _info.simTime && - it.second->HasConnections()) + if (sensor->NextDataUpdateTime() <= _info.simTime && + sensor->HasConnections()) { needsUpdate = true; break; @@ -193,11 +193,16 @@ void ForceTorque::PostUpdate(const UpdateInfo &_info, if (!needsUpdate) return; + // Transform joint wrench to sensor wrench and write to sensor this->dataPtr->Update(_ecm); - for (auto &it : this->dataPtr->entitySensorMap) + for (auto &[sensorEntity, sensor] : this->dataPtr->entitySensorMap) { - it.second->Update(_info.simTime, false); + // Call gz::sensors::ForceTorqueSensor::Update + // * Convert to user-specified frame + // * Apply noise + // * Publish to gz-transport topic + sensor->Update(_info.simTime, false); } } @@ -269,7 +274,8 @@ void ForceTorquePrivate::Update(const EntityComponentManager &_ecm) return true; } - // Appropriate components haven't been populated by physics yet + // Return early if JointTransmittedWrench component has not yet been + // populated by the Physics system auto jointWrench = _ecm.Component( jointLinkIt->second.joint); if (nullptr == jointWrench) From 4c34f4eb2cae0382e5f93bd19532088b876be948 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Fri, 31 May 2024 21:50:18 +0900 Subject: [PATCH 13/80] Parse and set bullet solver iterations (#2351) Signed-off-by: Ian Chen --- include/gz/sim/components/Physics.hh | 7 +++++ src/LevelManager.cc | 44 +++++++++++++++++---------- src/SdfEntityCreator.cc | 45 ++++++++++++++++++---------- src/systems/physics/Physics.cc | 25 +++++++++++++++- test/integration/physics_system.cc | 23 +++++++++++--- test/worlds/physics_options.sdf | 5 ++++ 6 files changed, 114 insertions(+), 35 deletions(-) diff --git a/include/gz/sim/components/Physics.hh b/include/gz/sim/components/Physics.hh index e486c0d0b9..22f6b3f849 100644 --- a/include/gz/sim/components/Physics.hh +++ b/include/gz/sim/components/Physics.hh @@ -17,6 +17,7 @@ #ifndef GZ_SIM_COMPONENTS_PHYSICS_HH_ #define GZ_SIM_COMPONENTS_PHYSICS_HH_ +#include #include #include @@ -65,6 +66,12 @@ namespace components class PhysicsSolverTag, serializers::StringSerializer>; GZ_SIM_REGISTER_COMPONENT("gz_sim_components.PhysicsSolver", PhysicsSolver) + + /// \brief The number of solver iterations for each step. + using PhysicsSolverIterations = Component; + GZ_SIM_REGISTER_COMPONENT("gz_sim_components.PhysicsSolverIterations", + PhysicsSolverIterations) } } } diff --git a/src/LevelManager.cc b/src/LevelManager.cc index 0513fb4f30..8f0ace19ae 100644 --- a/src/LevelManager.cc +++ b/src/LevelManager.cc @@ -18,6 +18,7 @@ #include "LevelManager.hh" #include +#include #include #include @@ -119,26 +120,39 @@ void LevelManager::ReadLevelPerformerInfo() // Populate physics options that aren't accessible outside the Element() // See https://github.com/osrf/sdformat/issues/508 - if (physics->Element() && physics->Element()->HasElement("dart")) + if (physics->Element()) { - auto dartElem = physics->Element()->GetElement("dart"); - - if (dartElem->HasElement("collision_detector")) + if (auto dartElem = physics->Element()->FindElement("dart")) { - auto collisionDetector = - dartElem->Get("collision_detector"); + if (dartElem->HasElement("collision_detector")) + { + auto collisionDetector = + dartElem->Get("collision_detector"); - this->runner->entityCompMgr.CreateComponent(worldEntity, - components::PhysicsCollisionDetector(collisionDetector)); + this->runner->entityCompMgr.CreateComponent(worldEntity, + components::PhysicsCollisionDetector(collisionDetector)); + } + if (auto solverElem = dartElem->FindElement("solver")) + { + if (solverElem->HasElement("solver_type")) + { + auto solver = solverElem->Get("solver_type"); + this->runner->entityCompMgr.CreateComponent(worldEntity, + components::PhysicsSolver(solver)); + } + } } - if (dartElem->HasElement("solver") && - dartElem->GetElement("solver")->HasElement("solver_type")) + if (auto bulletElem = physics->Element()->FindElement("bullet")) { - auto solver = - dartElem->GetElement("solver")->Get("solver_type"); - - this->runner->entityCompMgr.CreateComponent(worldEntity, - components::PhysicsSolver(solver)); + if (auto solverElem = bulletElem->FindElement("solver")) + { + if (solverElem->HasElement("iters")) + { + uint32_t solverIterations = solverElem->Get("iters"); + this->runner->entityCompMgr.CreateComponent(worldEntity, + components::PhysicsSolverIterations(solverIterations)); + } + } } } diff --git a/src/SdfEntityCreator.cc b/src/SdfEntityCreator.cc index f4b693533b..35a3246107 100644 --- a/src/SdfEntityCreator.cc +++ b/src/SdfEntityCreator.cc @@ -15,6 +15,8 @@ * */ +#include + #include #include #include @@ -305,26 +307,39 @@ Entity SdfEntityCreator::CreateEntities(const sdf::World *_world) // Populate physics options that aren't accessible outside the Element() // See https://github.com/osrf/sdformat/issues/508 - if (physics->Element() && physics->Element()->HasElement("dart")) + if (physics->Element()) { - auto dartElem = physics->Element()->GetElement("dart"); - - if (dartElem->HasElement("collision_detector")) + if (auto dartElem = physics->Element()->FindElement("dart")) { - auto collisionDetector = - dartElem->Get("collision_detector"); + if (dartElem->HasElement("collision_detector")) + { + auto collisionDetector = + dartElem->Get("collision_detector"); - this->dataPtr->ecm->CreateComponent(worldEntity, - components::PhysicsCollisionDetector(collisionDetector)); + this->dataPtr->ecm->CreateComponent(worldEntity, + components::PhysicsCollisionDetector(collisionDetector)); + } + if (auto solverElem = dartElem->FindElement("solver")) + { + if (solverElem->HasElement("solver_type")) + { + auto solver = solverElem->Get("solver_type"); + this->dataPtr->ecm->CreateComponent(worldEntity, + components::PhysicsSolver(solver)); + } + } } - if (dartElem->HasElement("solver") && - dartElem->GetElement("solver")->HasElement("solver_type")) + if (auto bulletElem = physics->Element()->FindElement("bullet")) { - auto solver = - dartElem->GetElement("solver")->Get("solver_type"); - - this->dataPtr->ecm->CreateComponent(worldEntity, - components::PhysicsSolver(solver)); + if (auto solverElem = bulletElem->FindElement("solver")) + { + if (solverElem->HasElement("iters")) + { + uint32_t solverIterations = solverElem->Get("iters"); + this->dataPtr->ecm->CreateComponent(worldEntity, + components::PhysicsSolverIterations(solverIterations)); + } + } } } diff --git a/src/systems/physics/Physics.cc b/src/systems/physics/Physics.cc index 6a56cb101c..7b59091d74 100644 --- a/src/systems/physics/Physics.cc +++ b/src/systems/physics/Physics.cc @@ -623,7 +623,6 @@ class gz::sim::systems::PhysicsPrivate ////////////////////////////////////////////////// // Nested Models - /// \brief Feature list to construct nested models public: struct NestedModelFeatureList : physics::FeatureList< MinimumFeatureList, @@ -1024,6 +1023,30 @@ void PhysicsPrivate::CreateWorldEntities(const EntityComponentManager &_ecm, solverFeature->SetSolver(solverComp->Data()); } } + auto solverItersComp = + _ecm.Component(_entity); + if (solverItersComp) + { + auto solverFeature = + this->entityWorldMap.EntityCast( + _entity); + if (!solverFeature) + { + static bool informed{false}; + if (!informed) + { + gzdbg << "Attempting to set physics options, but the " + << "phyiscs engine doesn't support feature " + << "[SolverFeature]. Options will be ignored." + << std::endl; + informed = true; + } + } + else + { + solverFeature->SetSolverIterations(solverItersComp->Data()); + } + } // World Model proxy (used for joints directly under in SDF) auto worldModelFeature = diff --git a/test/integration/physics_system.cc b/test/integration/physics_system.cc index 027005a406..2e7989b09a 100644 --- a/test/integration/physics_system.cc +++ b/test/integration/physics_system.cc @@ -1834,12 +1834,13 @@ TEST_F(PhysicsSystemFixture, PhysicsOptions) serverConfig.SetSdfFile(common::joinPaths(std::string(PROJECT_SOURCE_PATH), "test", "worlds", "physics_options.sdf")); - bool checked{false}; + bool checkedDart{false}; + bool checkedBullet{false}; // Create a system to check components test::Relay testSystem; testSystem.OnPostUpdate( - [&checked](const sim::UpdateInfo &, + [&checkedDart, &checkedBullet](const sim::UpdateInfo &, const sim::EntityComponentManager &_ecm) { _ecm.EachData()); } - checked = true; + checkedDart = true; return true; }); + _ecm.Each( + [&](const gz::sim::Entity &, const components::World *, + const components::PhysicsSolverIterations *_solverIters)->bool + { + EXPECT_NE(nullptr, _solverIters); + if (_solverIters) + { + EXPECT_EQ(100, _solverIters->Data()); + } + checkedBullet = true; + return true; + }); + }); sim::Server server(serverConfig); server.AddSystem(testSystem.systemPtr); server.Run(true, 1, false); - EXPECT_TRUE(checked); + EXPECT_TRUE(checkedDart); + EXPECT_TRUE(checkedBullet); } ///////////////////////////////////////////////// diff --git a/test/worlds/physics_options.sdf b/test/worlds/physics_options.sdf index 3659636878..1d68175219 100644 --- a/test/worlds/physics_options.sdf +++ b/test/worlds/physics_options.sdf @@ -8,6 +8,11 @@ pgs + + + 100 + + 0 Date: Fri, 31 May 2024 21:08:40 -0700 Subject: [PATCH 14/80] Enable 24.04 CI, require cmake 3.22.1 (#2420) * Part of gazebosim/gz-cmake#350. * Remove old cmake code * Use Python3_EXECUTABLE, not GZ_PYTHON_EXECUTABLE * Remove logic for skipping tests with old cmake Signed-off-by: Steve Peters --- .github/workflows/ci.yml | 16 +++++++++++ CMakeLists.txt | 5 +--- examples/plugin/command_actor/CMakeLists.txt | 2 +- .../plugin/custom_component/CMakeLists.txt | 2 +- .../custom_sensor_system/CMakeLists.txt | 2 +- .../plugin/gui_system_plugin/CMakeLists.txt | 2 +- examples/plugin/hello_world/CMakeLists.txt | 2 +- .../plugin/rendering_plugins/CMakeLists.txt | 2 +- examples/plugin/reset_plugin/CMakeLists.txt | 2 +- examples/plugin/system_plugin/CMakeLists.txt | 2 +- .../acoustic_comms_demo/CMakeLists.txt | 2 +- examples/standalone/comms/CMakeLists.txt | 2 +- .../standalone/custom_server/CMakeLists.txt | 2 +- .../each_performance/CMakeLists.txt | 2 +- .../standalone/entity_creation/CMakeLists.txt | 2 +- .../standalone/external_ecm/CMakeLists.txt | 2 +- .../standalone/gtest_setup/CMakeLists.txt | 2 +- .../standalone/joy_to_twist/CMakeLists.txt | 2 +- examples/standalone/joystick/CMakeLists.txt | 2 +- examples/standalone/keyboard/CMakeLists.txt | 2 +- .../standalone/light_control/CMakeLists.txt | 2 +- .../standalone/lrauv_control/CMakeLists.txt | 2 +- examples/standalone/marker/CMakeLists.txt | 2 +- .../multi_lrauv_race/CMakeLists.txt | 2 +- .../standalone/scene_requester/CMakeLists.txt | 2 +- python/CMakeLists.txt | 27 ++++--------------- src/CMakeLists.txt | 6 ++--- test/integration/examples_build.cc | 27 ------------------- test/test_config.hh.in | 1 - 29 files changed, 47 insertions(+), 81 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3f46c5e8ac..f11e11f8c5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,3 +34,19 @@ jobs: codecov-enabled: true cppcheck-enabled: true cpplint-enabled: true + noble-ci: + runs-on: ubuntu-latest + name: Ubuntu Noble CI + steps: + - name: Checkout + uses: actions/checkout@v4 + - uses: actions/setup-python@v3 + - uses: pre-commit/action@v3.0.0 + with: + extra_args: --all-files + - name: Compile and test + id: ci + uses: gazebo-tooling/action-gz-ci@noble + with: + # per bug https://github.com/gazebosim/gz-sim/issues/1409 + cmake-args: '-DBUILD_DOCS=OFF' diff --git a/CMakeLists.txt b/CMakeLists.txt index 375fea97c9..62f2af55b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) #============================================================================ # Initialize the project @@ -65,9 +65,6 @@ cmake_dependent_option(USE_DIST_PACKAGES_FOR_PYTHON # Search for project-specific dependencies #============================================================================ -# Setting this policy enables using the protobuf_MODULE_COMPATIBLE -# set command in CMake versions older than 13.13 -set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) # This option is needed to use the PROTOBUF_GENERATE_CPP # in case protobuf is found with the CMake config files # It needs to be set before any find_package(...) call diff --git a/examples/plugin/command_actor/CMakeLists.txt b/examples/plugin/command_actor/CMakeLists.txt index 23fba669eb..be6f6918ff 100644 --- a/examples/plugin/command_actor/CMakeLists.txt +++ b/examples/plugin/command_actor/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) find_package(gz-cmake4 REQUIRED) diff --git a/examples/plugin/custom_component/CMakeLists.txt b/examples/plugin/custom_component/CMakeLists.txt index a1e8a8dc50..7e2c0b1478 100644 --- a/examples/plugin/custom_component/CMakeLists.txt +++ b/examples/plugin/custom_component/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) find_package(gz-cmake4 REQUIRED) diff --git a/examples/plugin/custom_sensor_system/CMakeLists.txt b/examples/plugin/custom_sensor_system/CMakeLists.txt index d7e8c722a0..47e398c64d 100644 --- a/examples/plugin/custom_sensor_system/CMakeLists.txt +++ b/examples/plugin/custom_sensor_system/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.11.0 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) find_package(gz-cmake4 REQUIRED) diff --git a/examples/plugin/gui_system_plugin/CMakeLists.txt b/examples/plugin/gui_system_plugin/CMakeLists.txt index 53ba9dc4ce..d2da6a83d9 100644 --- a/examples/plugin/gui_system_plugin/CMakeLists.txt +++ b/examples/plugin/gui_system_plugin/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) if(POLICY CMP0100) cmake_policy(SET CMP0100 NEW) diff --git a/examples/plugin/hello_world/CMakeLists.txt b/examples/plugin/hello_world/CMakeLists.txt index 488050665e..d1a6adc2fd 100644 --- a/examples/plugin/hello_world/CMakeLists.txt +++ b/examples/plugin/hello_world/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) find_package(gz-cmake4 REQUIRED) diff --git a/examples/plugin/rendering_plugins/CMakeLists.txt b/examples/plugin/rendering_plugins/CMakeLists.txt index f8c8bd14b8..983cd746a1 100644 --- a/examples/plugin/rendering_plugins/CMakeLists.txt +++ b/examples/plugin/rendering_plugins/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) if(POLICY CMP0100) cmake_policy(SET CMP0100 NEW) diff --git a/examples/plugin/reset_plugin/CMakeLists.txt b/examples/plugin/reset_plugin/CMakeLists.txt index 3fb659aed3..3a9e97329a 100644 --- a/examples/plugin/reset_plugin/CMakeLists.txt +++ b/examples/plugin/reset_plugin/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(ResetPlugins) diff --git a/examples/plugin/system_plugin/CMakeLists.txt b/examples/plugin/system_plugin/CMakeLists.txt index 08be7e0d48..1a651f6bca 100644 --- a/examples/plugin/system_plugin/CMakeLists.txt +++ b/examples/plugin/system_plugin/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) find_package(gz-cmake4 REQUIRED) diff --git a/examples/standalone/acoustic_comms_demo/CMakeLists.txt b/examples/standalone/acoustic_comms_demo/CMakeLists.txt index 7e6f6582cd..73a7dddde9 100644 --- a/examples/standalone/acoustic_comms_demo/CMakeLists.txt +++ b/examples/standalone/acoustic_comms_demo/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(gz-sim-acoustic-comms-demo) diff --git a/examples/standalone/comms/CMakeLists.txt b/examples/standalone/comms/CMakeLists.txt index f909bbbeea..a1c6e7c55b 100644 --- a/examples/standalone/comms/CMakeLists.txt +++ b/examples/standalone/comms/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(gz-sim-comms) diff --git a/examples/standalone/custom_server/CMakeLists.txt b/examples/standalone/custom_server/CMakeLists.txt index 0b29df1802..2fbbc64fdb 100644 --- a/examples/standalone/custom_server/CMakeLists.txt +++ b/examples/standalone/custom_server/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(gz-sim-custom-server) diff --git a/examples/standalone/each_performance/CMakeLists.txt b/examples/standalone/each_performance/CMakeLists.txt index fbcbf246df..98b94029eb 100644 --- a/examples/standalone/each_performance/CMakeLists.txt +++ b/examples/standalone/each_performance/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(gz-sim-each-performance) diff --git a/examples/standalone/entity_creation/CMakeLists.txt b/examples/standalone/entity_creation/CMakeLists.txt index 29efcc96df..445f7eab69 100644 --- a/examples/standalone/entity_creation/CMakeLists.txt +++ b/examples/standalone/entity_creation/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(gz-sim-entity-creation) diff --git a/examples/standalone/external_ecm/CMakeLists.txt b/examples/standalone/external_ecm/CMakeLists.txt index 6dc89463d7..24f8d78594 100644 --- a/examples/standalone/external_ecm/CMakeLists.txt +++ b/examples/standalone/external_ecm/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(gz-sim-external-ecm) diff --git a/examples/standalone/gtest_setup/CMakeLists.txt b/examples/standalone/gtest_setup/CMakeLists.txt index eb08a179a2..99a24e3fb7 100644 --- a/examples/standalone/gtest_setup/CMakeLists.txt +++ b/examples/standalone/gtest_setup/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.11.0 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(GTestSetup) diff --git a/examples/standalone/joy_to_twist/CMakeLists.txt b/examples/standalone/joy_to_twist/CMakeLists.txt index 4f77908aa1..c2ea401431 100644 --- a/examples/standalone/joy_to_twist/CMakeLists.txt +++ b/examples/standalone/joy_to_twist/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(gz-sim-joy-to-twist) diff --git a/examples/standalone/joystick/CMakeLists.txt b/examples/standalone/joystick/CMakeLists.txt index 6168fdef1f..2a066a8e89 100644 --- a/examples/standalone/joystick/CMakeLists.txt +++ b/examples/standalone/joystick/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) # joystick currently works only on linux project(gz-sim-joystick) diff --git a/examples/standalone/keyboard/CMakeLists.txt b/examples/standalone/keyboard/CMakeLists.txt index 7f5f25c3d5..9d96cb7ef4 100644 --- a/examples/standalone/keyboard/CMakeLists.txt +++ b/examples/standalone/keyboard/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(gz-sim-keyboard) diff --git a/examples/standalone/light_control/CMakeLists.txt b/examples/standalone/light_control/CMakeLists.txt index 9464d76bdf..9f3ee16e4c 100644 --- a/examples/standalone/light_control/CMakeLists.txt +++ b/examples/standalone/light_control/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(gz-sim-light-control) diff --git a/examples/standalone/lrauv_control/CMakeLists.txt b/examples/standalone/lrauv_control/CMakeLists.txt index e55e371d8d..6c075de8dd 100644 --- a/examples/standalone/lrauv_control/CMakeLists.txt +++ b/examples/standalone/lrauv_control/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(gz-sim-lrauv-control) diff --git a/examples/standalone/marker/CMakeLists.txt b/examples/standalone/marker/CMakeLists.txt index 29a590bae9..f3bd3b655b 100644 --- a/examples/standalone/marker/CMakeLists.txt +++ b/examples/standalone/marker/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(gz-sim-marker) diff --git a/examples/standalone/multi_lrauv_race/CMakeLists.txt b/examples/standalone/multi_lrauv_race/CMakeLists.txt index d80e811934..69049f2ad0 100644 --- a/examples/standalone/multi_lrauv_race/CMakeLists.txt +++ b/examples/standalone/multi_lrauv_race/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(gz-sim-multi-lrauv-race) diff --git a/examples/standalone/scene_requester/CMakeLists.txt b/examples/standalone/scene_requester/CMakeLists.txt index 542f3a9491..049877d3db 100644 --- a/examples/standalone/scene_requester/CMakeLists.txt +++ b/examples/standalone/scene_requester/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) project(gz-sim-scene-requester) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 3069e98752..98bbe66650 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -1,22 +1,6 @@ -if(WIN32 AND CMAKE_BUILD_TYPE STREQUAL "Debug") - # pybind11 logic for setting up a debug build when both a debug and release - # python interpreter are present in the system seems to be pretty much broken. - # This works around the issue. - set(PYTHON_LIBRARIES "${PYTHON_DEBUG_LIBRARIES}") -endif() - - if(USE_SYSTEM_PATHS_FOR_PYTHON_INSTALLATION) - if(${CMAKE_VERSION} VERSION_LESS "3.12.0") - execute_process( - COMMAND "${PYTHON_EXECUTABLE}" -c "if True: - from distutils import sysconfig as sc - print(sc.get_python_lib(plat_specific=True))" - OUTPUT_VARIABLE Python3_SITEARCH - OUTPUT_STRIP_TRAILING_WHITESPACE) - else() - # Get install variable from Python3 module - # Python3_SITEARCH is available from 3.12 on, workaround if needed: + if(NOT Python3_SITEARCH) + # Get variable from Python3 module find_package(Python3 COMPONENTS Interpreter) endif() @@ -31,7 +15,6 @@ else() set(GZ_PYTHON_INSTALL_PATH ${GZ_LIB_INSTALL_DIR}/python) endif() -set(GZ_PYTHON_EXECUTABLE ${Python3_EXECUTABLE}) set(GZ_PYTHON_INSTALL_PATH "${GZ_PYTHON_INSTALL_PATH}/gz") # Set the build location and install location for a CPython extension @@ -101,7 +84,7 @@ if (BUILD_TESTING) world_TEST ) - execute_process(COMMAND "${GZ_PYTHON_EXECUTABLE}" -m pytest --version + execute_process(COMMAND "${Python3_EXECUTABLE}" -m pytest --version OUTPUT_VARIABLE PYTEST_output ERROR_VARIABLE PYTEST_error RESULT_VARIABLE PYTEST_result) @@ -115,10 +98,10 @@ if (BUILD_TESTING) foreach (test ${python_tests}) if (pytest_FOUND) add_test(NAME ${test} COMMAND - "${GZ_PYTHON_EXECUTABLE}" -m pytest "${CMAKE_SOURCE_DIR}/python/test/${test}.py" --junitxml "${CMAKE_BINARY_DIR}/test_results/UNIT_${test}.xml") + "${Python3_EXECUTABLE}" -m pytest "${CMAKE_SOURCE_DIR}/python/test/${test}.py" --junitxml "${CMAKE_BINARY_DIR}/test_results/UNIT_${test}.xml") else() add_test(NAME ${test} COMMAND - "${GZ_PYTHON_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/python/test/${test}.py") + "${Python3_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/python/test/${test}.py") endif() set(_env_vars) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7f0aaf946a..d4a5589b19 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -306,10 +306,8 @@ foreach(CMD_TEST # and executables in a common CMAKE_RUNTIME_OUTPUT_DIRECTORY, so that the .dll are found # as they are in the same directory where the executable is loaded. For tests that are # launched via Ruby, this does not work, so we need to manually add CMAKE_RUNTIME_OUTPUT_DIRECTORY - # to the PATH. This is done via the ENVIRONMENT_MODIFICATION that is only available - # since CMake 3.22. However, if an older CMake is used another trick to install the libraries - # beforehand - if (WIN32 AND CMAKE_VERSION STRGREATER "3.22") + # to the PATH. This is done via the ENVIRONMENT_MODIFICATION that was added in CMake 3.22. + if (WIN32) set_tests_properties(${CMD_TEST} PROPERTIES ENVIRONMENT_MODIFICATION "PATH=path_list_prepend:${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") endif() diff --git a/test/integration/examples_build.cc b/test/integration/examples_build.cc index 51cb4ec84a..4b20a80f84 100644 --- a/test/integration/examples_build.cc +++ b/test/integration/examples_build.cc @@ -57,28 +57,6 @@ struct ExampleEntry } }; -////////////////////////////////////////////////// -/// Filter examples that are known to not build or require -/// specific configurations -/// \param[in] _entry Example entry to check -/// \return true if example entry should be built, false otherwise -bool FilterEntry(const ExampleEntry &_entry) -{ - math::SemanticVersion cmakeVersion{std::string(CMAKE_VERSION)}; - if (cmakeVersion < math::SemanticVersion(3, 11, 0) && - (_entry.base == "custom_sensor_system" || - _entry.base == "gtest_setup")) - { - gzdbg << "Skipping [" << _entry.base - << "] test, which requires CMake version " - << ">= 3.11.0. Currently using CMake " - << cmakeVersion - << std::endl; - return false; - } - return true; -} - ////////////////////////////////////////////////// /// Generate a list of examples to be built. std::vector GetExamples() @@ -116,11 +94,6 @@ void ExamplesBuild::Build(const ExampleEntry &_entry) { common::Console::SetVerbosity(4); - if (!FilterEntry(_entry)) - { - GTEST_SKIP(); - } - // Path to examples of the given type ASSERT_TRUE(gz::common::exists(_entry.sourceDir)); diff --git a/test/test_config.hh.in b/test/test_config.hh.in index 4681208058..b367ed89de 100644 --- a/test/test_config.hh.in +++ b/test/test_config.hh.in @@ -23,7 +23,6 @@ #define PROJECT_SOURCE_PATH "${PROJECT_SOURCE_DIR}" #define PROJECT_BINARY_PATH "${CMAKE_BINARY_DIR}" -#define CMAKE_VERSION "${CMAKE_VERSION}" #define GZ_CONFIG_PATH "@CMAKE_BINARY_DIR@/test/conf" From 0d78194d307cb1085ea4c6d2b909fd27dfccdb79 Mon Sep 17 00:00:00 2001 From: Benjamin Perseghetti Date: Mon, 17 Jun 2024 12:09:35 -0400 Subject: [PATCH 15/80] Adding cone primitives. (#2410) Signed-off-by: Benjamin Perseghetti Co-authored-by: Steve Peters --- include/gz/sim/Primitives.hh | 5 +- src/Conversions.cc | 21 ++++++++ src/Primitives.cc | 48 ++++++++++++++++++ .../ComponentInspectorEditor.qml | 8 +++ .../component_inspector_editor/ModelEditor.cc | 9 ++++ src/gui/plugins/entity_tree/EntityTree.qml | 9 ++++ src/gui/plugins/shapes/Shapes.qml | 17 +++++++ src/gui/plugins/shapes/Shapes.qrc | 1 + src/gui/plugins/shapes/cone.png | Bin 0 -> 5605 bytes .../VisualizationCapabilities.cc | 8 +++ src/rendering/MarkerManager.cc | 2 + src/rendering/SceneManager.cc | 8 +++ src/systems/physics/Physics.cc | 1 + src/systems/physics/Physics.hh | 1 + 14 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 src/gui/plugins/shapes/cone.png diff --git a/include/gz/sim/Primitives.hh b/include/gz/sim/Primitives.hh index 84bc8344f5..b90b9e7553 100644 --- a/include/gz/sim/Primitives.hh +++ b/include/gz/sim/Primitives.hh @@ -35,6 +35,7 @@ namespace gz { kBox, kCapsule, + kCone, kCylinder, kEllipsoid, kSphere, @@ -67,8 +68,8 @@ namespace gz /// \brief Return an SDF string of one of the available primitive shape or /// light types. /// \param[in] _typeName Type name of the of shape or light to retrieve. - /// Must be one of: box, sphere, cylinder, capsule, ellipsoid, directional, - /// point, or spot. + /// Must be one of: box, sphere, cylinder, cone, capsule, ellipsoid, + /// directional, point, or spot. /// \return String containing SDF description of primitive shape or light. /// Empty string if the _typeName is invalid. std::string GZ_SIM_VISIBLE diff --git a/src/Conversions.cc b/src/Conversions.cc index fbe7587141..eef51e2241 100644 --- a/src/Conversions.cc +++ b/src/Conversions.cc @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -53,6 +54,7 @@ #include #include #include +#include #include #include #include @@ -176,6 +178,12 @@ msgs::Geometry gz::sim::convert(const sdf::Geometry &_in) out.mutable_capsule()->set_radius(_in.CapsuleShape()->Radius()); out.mutable_capsule()->set_length(_in.CapsuleShape()->Length()); } + else if (_in.Type() == sdf::GeometryType::CONE && _in.ConeShape()) + { + out.set_type(msgs::Geometry::CONE); + out.mutable_cone()->set_radius(_in.ConeShape()->Radius()); + out.mutable_cone()->set_length(_in.ConeShape()->Length()); + } else if (_in.Type() == sdf::GeometryType::CYLINDER && _in.CylinderShape()) { out.set_type(msgs::Geometry::CYLINDER); @@ -293,6 +301,16 @@ sdf::Geometry gz::sim::convert(const msgs::Geometry &_in) out.SetCapsuleShape(capsuleShape); } + else if (_in.type() == msgs::Geometry::CONE && _in.has_cone()) + { + out.SetType(sdf::GeometryType::CONE); + + sdf::Cone coneShape; + coneShape.SetRadius(_in.cone().radius()); + coneShape.SetLength(_in.cone().length()); + + out.SetConeShape(coneShape); + } else if (_in.type() == msgs::Geometry::CYLINDER && _in.has_cylinder()) { out.SetType(sdf::GeometryType::CYLINDER); @@ -1710,6 +1728,9 @@ sdf::ParticleEmitter gz::sim::convert(const msgs::ParticleEmitter &_in) case msgs::ParticleEmitter::BOX: out.SetType(sdf::ParticleEmitterType::BOX); break; + case msgs::ParticleEmitter::CONE: + out.SetType(sdf::ParticleEmitterType::CONE); + break; case msgs::ParticleEmitter::CYLINDER: out.SetType(sdf::ParticleEmitterType::CYLINDER); break; diff --git a/src/Primitives.cc b/src/Primitives.cc index 4fa93cea54..fcb7f65942 100644 --- a/src/Primitives.cc +++ b/src/Primitives.cc @@ -104,6 +104,49 @@ constexpr const char * kSphereSdf = R"( )"; +///////////////////////////////////////////////// +constexpr const char * kConeSdf = R"( + + + 0 0 0.5 0 0 0 + + + + 0.075 + 0 + 0 + 0.075 + 0 + 0.075 + + 1.0 + + + + + 0.5 + 1.0 + + + + + + + 0.5 + 1.0 + + + + 0.3 0.3 0.3 1 + 0.7 0.7 0.7 1 + 1 1 1 1 + + + + + +)"; + ///////////////////////////////////////////////// constexpr const char * kCylinderSdf = R"( @@ -301,6 +344,8 @@ std::string gz::sim::getPrimitiveShape(const PrimitiveShape &_type) return kBoxSdf; case PrimitiveShape::kSphere: return kSphereSdf; + case PrimitiveShape::kCone: + return kConeSdf; case PrimitiveShape::kCylinder: return kCylinderSdf; case PrimitiveShape::kCapsule: @@ -339,6 +384,8 @@ std::string gz::sim::getPrimitive(const std::string &_typeName) return getPrimitiveShape(PrimitiveShape::kSphere); else if (type == "cylinder") return getPrimitiveShape(PrimitiveShape::kCylinder); + else if (type == "cone") + return getPrimitiveShape(PrimitiveShape::kCone); else if (type == "capsule") return getPrimitiveShape(PrimitiveShape::kCapsule); else if (type == "ellipsoid") @@ -354,6 +401,7 @@ std::string gz::sim::getPrimitive(const std::string &_typeName) gzwarn << "The valid options are:\n"; gzwarn << " - box\n"; gzwarn << " - sphere\n"; + gzwarn << " - cone\n"; gzwarn << " - cylinder\n"; gzwarn << " - capsule\n"; gzwarn << " - ellipsoid\n"; diff --git a/src/gui/plugins/component_inspector_editor/ComponentInspectorEditor.qml b/src/gui/plugins/component_inspector_editor/ComponentInspectorEditor.qml index f1e47ccd81..c21f8787f1 100644 --- a/src/gui/plugins/component_inspector_editor/ComponentInspectorEditor.qml +++ b/src/gui/plugins/component_inspector_editor/ComponentInspectorEditor.qml @@ -373,6 +373,14 @@ Rectangle { } } + MenuItem { + id: coneLink + text: "Cone" + onClicked: { + ComponentInspectorEditor.OnAddEntity("cone", "link"); + } + } + MenuItem { id: cylinderLink text: "Cylinder" diff --git a/src/gui/plugins/component_inspector_editor/ModelEditor.cc b/src/gui/plugins/component_inspector_editor/ModelEditor.cc index a838054b80..2f32916f66 100644 --- a/src/gui/plugins/component_inspector_editor/ModelEditor.cc +++ b/src/gui/plugins/component_inspector_editor/ModelEditor.cc @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -330,6 +331,14 @@ std::optional ModelEditorPrivate::CreateGeom( geom.SetSphereShape(shape); geom.SetType(sdf::GeometryType::SPHERE); } + else if (_eta.geomOrLightType == "cone") + { + sdf::Cone shape; + shape.SetRadius(size.X() * 0.5); + shape.SetLength(size.Z()); + geom.SetConeShape(shape); + geom.SetType(sdf::GeometryType::CONE); + } else if (_eta.geomOrLightType == "cylinder") { sdf::Cylinder shape; diff --git a/src/gui/plugins/entity_tree/EntityTree.qml b/src/gui/plugins/entity_tree/EntityTree.qml index 8b6db13123..1d65b9e7be 100644 --- a/src/gui/plugins/entity_tree/EntityTree.qml +++ b/src/gui/plugins/entity_tree/EntityTree.qml @@ -202,6 +202,15 @@ Rectangle { } } + MenuItem + { + id: cone + text: "Cone" + onClicked: { + EntityTree.OnInsertEntity("cone") + } + } + MenuItem { id: cylinder diff --git a/src/gui/plugins/shapes/Shapes.qml b/src/gui/plugins/shapes/Shapes.qml index 781eaca28f..fb80c1431f 100644 --- a/src/gui/plugins/shapes/Shapes.qml +++ b/src/gui/plugins/shapes/Shapes.qml @@ -67,6 +67,23 @@ ToolBar { Shapes.OnMode("sphere") } } + ToolButton { + id: cone + ToolTip.text: "Cone" + ToolTip.visible: hovered + ToolTip.delay: Qt.styleHints.mousePressAndHoldInterval + contentItem: Image { + fillMode: Image.Pad + horizontalAlignment: Image.AlignHCenter + verticalAlignment: Image.AlignVCenter + source: "cone.png" + sourceSize.width: 24; + sourceSize.height: 24; + } + onClicked: { + Shapes.OnMode("cone") + } + } ToolButton { id: cylinder ToolTip.text: "Cylinder" diff --git a/src/gui/plugins/shapes/Shapes.qrc b/src/gui/plugins/shapes/Shapes.qrc index 754d997c5d..00fddab57c 100644 --- a/src/gui/plugins/shapes/Shapes.qrc +++ b/src/gui/plugins/shapes/Shapes.qrc @@ -3,6 +3,7 @@ Shapes.qml box.png sphere.png + cone.png cylinder.png capsule.png ellipsoid.png diff --git a/src/gui/plugins/shapes/cone.png b/src/gui/plugins/shapes/cone.png new file mode 100644 index 0000000000000000000000000000000000000000..53f26d831c7b5f129ab2c47739781ebcfcb9dcee GIT binary patch literal 5605 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 #include +#include #include #include #include @@ -1191,6 +1192,13 @@ rendering::GeometryPtr VisualizationCapabilitiesPrivate::CreateGeometry( capsule->SetLength(_geom.CapsuleShape()->Length()); geom = capsule; } + else if (_geom.Type() == sdf::GeometryType::CONE) + { + geom = this->scene->CreateCone(); + scale.X() = _geom.ConeShape()->Radius() * 2; + scale.Y() = scale.X(); + scale.Z() = _geom.ConeShape()->Length(); + } else if (_geom.Type() == sdf::GeometryType::CYLINDER) { geom = this->scene->CreateCylinder(); diff --git a/src/rendering/MarkerManager.cc b/src/rendering/MarkerManager.cc index 50b761cecb..04b1bef0e1 100644 --- a/src/rendering/MarkerManager.cc +++ b/src/rendering/MarkerManager.cc @@ -387,6 +387,8 @@ rendering::MarkerType MarkerManagerPrivate::MsgToType( return rendering::MarkerType::MT_BOX; case msgs::Marker::CAPSULE: return rendering::MarkerType::MT_CAPSULE; + case msgs::Marker::CONE: + return rendering::MarkerType::MT_CONE; case msgs::Marker::CYLINDER: return rendering::MarkerType::MT_CYLINDER; case msgs::Marker::LINE_STRIP: diff --git a/src/rendering/SceneManager.cc b/src/rendering/SceneManager.cc index d94e6aa8b7..c1aefe8918 100644 --- a/src/rendering/SceneManager.cc +++ b/src/rendering/SceneManager.cc @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -667,6 +668,13 @@ rendering::GeometryPtr SceneManager::LoadGeometry(const sdf::Geometry &_geom, capsule->SetLength(_geom.CapsuleShape()->Length()); geom = capsule; } + else if (_geom.Type() == sdf::GeometryType::CONE) + { + geom = this->dataPtr->scene->CreateCone(); + scale.X() = _geom.ConeShape()->Radius() * 2; + scale.Y() = scale.X(); + scale.Z() = _geom.ConeShape()->Length(); + } else if (_geom.Type() == sdf::GeometryType::CYLINDER) { geom = this->dataPtr->scene->CreateCylinder(); diff --git a/src/systems/physics/Physics.cc b/src/systems/physics/Physics.cc index 7b59091d74..998c4a1d62 100644 --- a/src/systems/physics/Physics.cc +++ b/src/systems/physics/Physics.cc @@ -53,6 +53,7 @@ #include #include +#include #include #include #include diff --git a/src/systems/physics/Physics.hh b/src/systems/physics/Physics.hh index cec62d341c..256ee5ac75 100644 --- a/src/systems/physics/Physics.hh +++ b/src/systems/physics/Physics.hh @@ -26,6 +26,7 @@ // Features need to be defined ahead of entityCast #include #include +#include #include #include #include From f66701e9f6e380247ae90a6a61db9378331a0ab9 Mon Sep 17 00:00:00 2001 From: Steve Peters Date: Mon, 17 Jun 2024 12:10:49 -0700 Subject: [PATCH 16/80] shapes.sdf example: bump to 1.12, add cone shape (#2448) Also move the example command to a CDATA block to use proper XML syntax. Signed-off-by: Steve Peters --- examples/worlds/shapes.sdf | 48 +++++++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/examples/worlds/shapes.sdf b/examples/worlds/shapes.sdf index 1d75661b49..3a0e0f5dc8 100644 --- a/examples/worlds/shapes.sdf +++ b/examples/worlds/shapes.sdf @@ -1,12 +1,13 @@ - - + + + 1.0 1.0 1.0 @@ -240,5 +241,36 @@ Try moving a model: + + + 0 4.5 0.5 0 0 0 + + + 1 + + + + + 0.5 + 1.0 + + + + + + + + 0.5 + 1.0 + + + + 1 0.47 0 1 + 1 0.47 0 1 + 1 0.47 0 1 + + + + From ae3f794dd4adbe175383e0e6a64d5e995b39ac5a Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Mon, 17 Jun 2024 13:26:33 -0700 Subject: [PATCH 17/80] Remove cone shape from particle emitter (#2449) Signed-off-by: Ian Chen --- src/Conversions.cc | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Conversions.cc b/src/Conversions.cc index eef51e2241..e10e0d1184 100644 --- a/src/Conversions.cc +++ b/src/Conversions.cc @@ -1728,9 +1728,6 @@ sdf::ParticleEmitter gz::sim::convert(const msgs::ParticleEmitter &_in) case msgs::ParticleEmitter::BOX: out.SetType(sdf::ParticleEmitterType::BOX); break; - case msgs::ParticleEmitter::CONE: - out.SetType(sdf::ParticleEmitterType::CONE); - break; case msgs::ParticleEmitter::CYLINDER: out.SetType(sdf::ParticleEmitterType::CYLINDER); break; From e116d0bfc73e8b3d51055597c03423b28abd682e Mon Sep 17 00:00:00 2001 From: Jose Luis Rivero Date: Thu, 20 Jun 2024 17:38:02 +0200 Subject: [PATCH 18/80] Remove python3-distutils from package.xml (#2450) Signed-off-by: Jose Luis Rivero --- package.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/package.xml b/package.xml index 913279ea55..507b36f440 100644 --- a/package.xml +++ b/package.xml @@ -31,7 +31,6 @@ libxmu-dev protobuf-dev pybind11-dev - python3-distutils qml-module-qt-labs-folderlistmodel qml-module-qt-labs-settings qml-module-qtgraphicaleffects From 3487086a6ba94b9d53eeb2a1b27968bab382e181 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Tue, 25 Jun 2024 23:52:28 +0000 Subject: [PATCH 19/80] Support visualizing mesh collisions with convex decomposition (#2352) Signed-off-by: Ian Chen --- src/Conversions.cc | 36 ++++++++++++++++ src/Conversions_TEST.cc | 19 +++++++++ src/Util.cc | 42 +++++++++++++++---- .../VisualizationCapabilities.cc | 19 +++++++-- 4 files changed, 106 insertions(+), 10 deletions(-) diff --git a/src/Conversions.cc b/src/Conversions.cc index e10e0d1184..8c72d403e0 100644 --- a/src/Conversions.cc +++ b/src/Conversions.cc @@ -220,6 +220,24 @@ msgs::Geometry gz::sim::convert(const sdf::Geometry &_in) meshMsg->set_filename(asFullPath(meshSdf->Uri(), meshSdf->FilePath())); meshMsg->set_submesh(meshSdf->Submesh()); meshMsg->set_center_submesh(meshSdf->CenterSubmesh()); + + if (!meshSdf->OptimizationStr().empty()) + { + auto header = out.mutable_header()->add_data(); + header->set_key("optimization"); + header->add_value(meshSdf->OptimizationStr()); + } + if (meshSdf->ConvexDecomposition()) + { + auto header = out.mutable_header()->add_data(); + header->set_key("max_convex_hulls"); + header->add_value(std::to_string( + meshSdf->ConvexDecomposition()->MaxConvexHulls())); + header = out.mutable_header()->add_data(); + header->set_key("voxel_resolution"); + header->add_value(std::to_string( + meshSdf->ConvexDecomposition()->VoxelResolution())); + } } else if (_in.Type() == sdf::GeometryType::HEIGHTMAP && _in.HeightmapShape()) { @@ -359,6 +377,24 @@ sdf::Geometry gz::sim::convert(const msgs::Geometry &_in) meshShape.SetSubmesh(_in.mesh().submesh()); meshShape.SetCenterSubmesh(_in.mesh().center_submesh()); + sdf::ConvexDecomposition convexDecomp; + for (int i = 0; i < _in.header().data_size(); ++i) + { + auto data = _in.header().data(i); + if (data.key() == "optimization" && data.value_size() > 0) + { + meshShape.SetOptimization(data.value(0)); + } + if (data.key() == "max_convex_hulls" && data.value_size() > 0) + { + convexDecomp.SetMaxConvexHulls(std::stoul(data.value(0))); + } + if (data.key() == "voxel_resolution" && data.value_size() > 0) + { + convexDecomp.SetVoxelResolution(std::stoul(data.value(0))); + } + } + meshShape.SetConvexDecomposition(convexDecomp); out.SetMeshShape(meshShape); } else if (_in.type() == msgs::Geometry::HEIGHTMAP && _in.has_heightmap()) diff --git a/src/Conversions_TEST.cc b/src/Conversions_TEST.cc index 08ac3e1afd..e14cf6b21b 100644 --- a/src/Conversions_TEST.cc +++ b/src/Conversions_TEST.cc @@ -463,6 +463,11 @@ TEST(Conversions, GeometryMesh) meshShape.SetUri("file://watermelon"); meshShape.SetSubmesh("grape"); meshShape.SetCenterSubmesh(true); + meshShape.SetOptimization("convex_decomposition"); + sdf::ConvexDecomposition convexDecomp; + convexDecomp.SetMaxConvexHulls(4); + convexDecomp.SetVoxelResolution(10000); + meshShape.SetConvexDecomposition(convexDecomp); geometry.SetMeshShape(meshShape); auto geometryMsg = convert(geometry); @@ -473,6 +478,15 @@ TEST(Conversions, GeometryMesh) EXPECT_EQ("file://watermelon", geometryMsg.mesh().filename()); EXPECT_EQ("grape", geometryMsg.mesh().submesh()); EXPECT_TRUE(geometryMsg.mesh().center_submesh()); + auto header = geometryMsg.header().data(0); + EXPECT_EQ("optimization", header.key()); + EXPECT_EQ("convex_decomposition", header.value(0)); + header = geometryMsg.header().data(1); + EXPECT_EQ("max_convex_hulls", header.key()); + EXPECT_EQ("4", header.value(0)); + header = geometryMsg.header().data(2); + EXPECT_EQ("voxel_resolution", header.key()); + EXPECT_EQ("10000", header.value(0)); auto newGeometry = convert(geometryMsg); EXPECT_EQ(sdf::GeometryType::MESH, newGeometry.Type()); @@ -481,6 +495,11 @@ TEST(Conversions, GeometryMesh) EXPECT_EQ("file://watermelon", newGeometry.MeshShape()->Uri()); EXPECT_EQ("grape", newGeometry.MeshShape()->Submesh()); EXPECT_TRUE(newGeometry.MeshShape()->CenterSubmesh()); + EXPECT_EQ("convex_decomposition", newGeometry.MeshShape()->OptimizationStr()); + auto newConvexDecomp = newGeometry.MeshShape()->ConvexDecomposition(); + ASSERT_NE(nullptr, newConvexDecomp); + EXPECT_EQ(4, newConvexDecomp->MaxConvexHulls()); + EXPECT_EQ(10000, newConvexDecomp->VoxelResolution()); } ///////////////////////////////////////////////// diff --git a/src/Util.cc b/src/Util.cc index e9cb2406f0..d5eb58bc65 100644 --- a/src/Util.cc +++ b/src/Util.cc @@ -891,6 +891,7 @@ const common::Mesh *optimizeMesh(const sdf::Mesh &_meshSdf, auto &meshManager = *common::MeshManager::Instance(); std::size_t maxConvexHulls = 16u; + std::size_t voxelResolution = 200000u; if (_meshSdf.Optimization() == sdf::MeshOptimization::CONVEX_HULL) { /// create 1 convex hull for the whole submesh @@ -898,25 +899,52 @@ const common::Mesh *optimizeMesh(const sdf::Mesh &_meshSdf, } else if (_meshSdf.ConvexDecomposition()) { - // limit max number of convex hulls to generate + // set convex decomposition params: max number of convex hulls + // and voxel resolution maxConvexHulls = _meshSdf.ConvexDecomposition()->MaxConvexHulls(); + voxelResolution = _meshSdf.ConvexDecomposition()->VoxelResolution(); } // Check if MeshManager contains the decomposed mesh already. If not // add it to the MeshManager so we do not need to decompose it again. const std::string convexMeshName = - _mesh.Name() + "_CONVEX_" + std::to_string(maxConvexHulls); + _mesh.Name() + "_" + _meshSdf.Submesh() + "_CONVEX_" + + std::to_string(maxConvexHulls) + "_" + std::to_string(voxelResolution); auto *optimizedMesh = meshManager.MeshByName(convexMeshName); if (!optimizedMesh) { - // Merge meshes before convex decomposition - auto mergedMesh = gz::common::MeshManager::MergeSubMeshes(_mesh); - if (mergedMesh && mergedMesh->SubMeshCount() == 1u) + std::unique_ptr meshToDecompose = + std::make_unique(); + // check if a particular submesh is requested + if (!_meshSdf.Submesh().empty()) + { + for (unsigned int submeshIdx = 0; + submeshIdx < _mesh.SubMeshCount(); + ++submeshIdx) + { + auto submesh = _mesh.SubMeshByIndex(submeshIdx).lock(); + if (submesh->Name() == _meshSdf.Submesh()) + { + if (_meshSdf.CenterSubmesh()) + submesh->Center(math::Vector3d::Zero); + meshToDecompose->AddSubMesh(*submesh.get()); + break; + } + } + } + else + { + // Merge meshes before convex decomposition + meshToDecompose = + gz::common::MeshManager::MergeSubMeshes(_mesh); + } + + if (meshToDecompose && meshToDecompose->SubMeshCount() == 1u) { // Decompose and add mesh to MeshManager - auto mergedSubmesh = mergedMesh->SubMeshByIndex(0u).lock(); + auto mergedSubmesh = meshToDecompose->SubMeshByIndex(0u).lock(); std::vector decomposed = gz::common::MeshManager::ConvexDecomposition( - *mergedSubmesh.get(), maxConvexHulls); + *mergedSubmesh.get(), maxConvexHulls, voxelResolution); gzdbg << "Optimizing mesh (" << _meshSdf.OptimizationStr() << "): " << _mesh.Name() << std::endl; // Create decomposed mesh and add it to MeshManager diff --git a/src/gui/plugins/visualization_capabilities/VisualizationCapabilities.cc b/src/gui/plugins/visualization_capabilities/VisualizationCapabilities.cc index 2694553d54..92ceedbfbb 100644 --- a/src/gui/plugins/visualization_capabilities/VisualizationCapabilities.cc +++ b/src/gui/plugins/visualization_capabilities/VisualizationCapabilities.cc @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -39,6 +40,7 @@ #include #include #include +#include #include #include @@ -1247,14 +1249,25 @@ rendering::GeometryPtr VisualizationCapabilitiesPrivate::CreateGeometry( // Assume absolute path to mesh file descriptor.meshName = fullPath; - descriptor.subMeshName = _geom.MeshShape()->Submesh(); - descriptor.centerSubMesh = _geom.MeshShape()->CenterSubmesh(); - gz::common::MeshManager *meshManager = gz::common::MeshManager::Instance(); descriptor.mesh = meshManager->Load(descriptor.meshName); if (descriptor.mesh) { + if (_geom.MeshShape()->Optimization() != sdf::MeshOptimization::NONE) + { + const common::Mesh *optimizedMesh = + optimizeMesh(*_geom.MeshShape(), *descriptor.mesh); + if (optimizedMesh) + { + descriptor.mesh = optimizedMesh; + // if submesh is requested, it should be handled in the optimizeMesh + // function so we do not need need to pass these flags to + // gz-rendering + descriptor.subMeshName = ""; + descriptor.centerSubMesh = false; + } + } geom = this->scene->CreateMesh(descriptor); } else From 0d89949e9249cf88143e89f2458369486b529281 Mon Sep 17 00:00:00 2001 From: Arjo Chakravarty Date: Tue, 9 Jul 2024 17:54:08 +0800 Subject: [PATCH 20/80] Fix warnings generated by NetworkConfigTest (#2469) This test was generating a warning about unused vairables. Unless built in debug mode, `aserts`are often optimized out we should be using the `ASSERT` macros from `gtest` instead. Signed-off-by: Arjo Chakravarty --- src/network/NetworkConfig_TEST.cc | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/network/NetworkConfig_TEST.cc b/src/network/NetworkConfig_TEST.cc index af6baffc61..4014518033 100644 --- a/src/network/NetworkConfig_TEST.cc +++ b/src/network/NetworkConfig_TEST.cc @@ -15,6 +15,7 @@ * */ + #include #include @@ -30,38 +31,33 @@ TEST(NetworkManager, ValueConstructor) { // Primary without number of secondaries is invalid auto config = NetworkConfig::FromValues("PRIMARY", 0); - assert(config.role == NetworkRole::None); - assert(config.numSecondariesExpected == 0); + ASSERT_EQ(config.role, NetworkRole::None); + ASSERT_EQ(config.numSecondariesExpected, 0); // Expect console warning as well - (void) config; } { // Primary with number of secondaries is valid auto config = NetworkConfig::FromValues("PRIMARY", 3); - assert(config.role == NetworkRole::SimulationPrimary); - assert(config.numSecondariesExpected == 3); - (void) config; + ASSERT_EQ(config.role, NetworkRole::SimulationPrimary); + ASSERT_EQ(config.numSecondariesExpected, 3); } { // Secondary is always valid auto config = NetworkConfig::FromValues("SECONDARY", 0); - assert(config.role == NetworkRole::SimulationSecondary); - (void) config; + ASSERT_EQ(config.role, NetworkRole::SimulationSecondary); } { // Readonly is always valid auto config = NetworkConfig::FromValues("READONLY"); - assert(config.role == NetworkRole::ReadOnly); - (void) config; + ASSERT_EQ(config.role, NetworkRole::ReadOnly); } { // Anything else is invalid auto config = NetworkConfig::FromValues("READ_WRITE"); - assert(config.role == NetworkRole::None); - (void) config; + ASSERT_EQ(config.role, NetworkRole::None); } } From 2994087a4f24e7419a1b3334044da9be83d4381e Mon Sep 17 00:00:00 2001 From: Arjo Chakravarty Date: Thu, 18 Jul 2024 01:39:40 +0800 Subject: [PATCH 21/80] Remove systems if their parent entity is removed (#2232) n particular if a user despawns an entity, the associated plugin gets removed. This should prevent issues like #2165. TBH I'm not sure if this is the right way forward as a system should technically be able to access any entity in a traditional ECS. The PR has now been reworked and greatly simplified. All we do is stop all worker threads if an entity is removed and then recreate remaining threads. --- include/gz/sim/EntityComponentManager.hh | 3 + src/SimulationRunner.cc | 10 +- src/SimulationRunner.hh | 3 + src/SimulationRunner_TEST.cc | 17 ++- src/SystemManager.cc | 133 +++++++++++++++++++++++ src/SystemManager.hh | 8 ++ src/SystemManager_TEST.cc | 65 +++++++++++ 7 files changed, 231 insertions(+), 8 deletions(-) diff --git a/include/gz/sim/EntityComponentManager.hh b/include/gz/sim/EntityComponentManager.hh index b87ada778c..7fff308c76 100644 --- a/include/gz/sim/EntityComponentManager.hh +++ b/include/gz/sim/EntityComponentManager.hh @@ -828,6 +828,9 @@ namespace gz friend class GuiRunner; friend class SimulationRunner; + // Make SystemManager friend so it has access to removals + friend class SystemManager; + // Make network managers friends so they have control over component // states. Like the runners, the managers are internal. friend class NetworkManagerPrimary; diff --git a/src/SimulationRunner.cc b/src/SimulationRunner.cc index a5ba51e96c..87f72d1ce2 100644 --- a/src/SimulationRunner.cc +++ b/src/SimulationRunner.cc @@ -33,6 +33,7 @@ #include #include +#include #include "gz/common/Profiler.hh" #include "gz/sim/components/Model.hh" @@ -533,12 +534,15 @@ void SimulationRunner::ProcessSystemQueue() { auto pending = this->systemMgr->PendingCount(); - if (0 == pending) + if (0 == pending && !this->threadsNeedCleanUp) return; - // If additional systems are to be added, stop the existing threads. + // If additional systems are to be added or have been removed, + // stop the existing threads. this->StopWorkerThreads(); + this->threadsNeedCleanUp = false; + this->systemMgr->ActivatePendingSystems(); unsigned int threadCount = @@ -922,6 +926,8 @@ void SimulationRunner::Step(const UpdateInfo &_info) this->ProcessRecreateEntitiesCreate(); // Process entity removals. + this->systemMgr->ProcessRemovedEntities(this->entityCompMgr, + this->threadsNeedCleanUp); this->entityCompMgr.ProcessRemoveEntityRequests(); // Process components removals diff --git a/src/SimulationRunner.hh b/src/SimulationRunner.hh index 438fc329ba..7230ed9b86 100644 --- a/src/SimulationRunner.hh +++ b/src/SimulationRunner.hh @@ -543,6 +543,9 @@ namespace gz /// at the appropriate time. private: std::unique_ptr newWorldControlState; + /// \brief Set if we need to remove systems due to entity removal + private: bool threadsNeedCleanUp; + private: bool resetInitiated{false}; friend class LevelManager; }; diff --git a/src/SimulationRunner_TEST.cc b/src/SimulationRunner_TEST.cc index 10ca3a9406..a127383b8a 100644 --- a/src/SimulationRunner_TEST.cc +++ b/src/SimulationRunner_TEST.cc @@ -16,7 +16,6 @@ */ #include - #include #include @@ -111,7 +110,6 @@ void rootClockCb(const msgs::Clock &_msg) rootClockMsgs.push_back(_msg); } - ///////////////////////////////////////////////// TEST_P(SimulationRunnerTest, CreateEntities) { @@ -1484,8 +1482,7 @@ TEST_P(SimulationRunnerTest, EXPECT_TRUE(runner.EntityCompMgr().EntityHasComponentType(sphereEntity, componentId)) << componentId; - // Remove entities that have plugin - this is not unloading or destroying - // the plugin though! + // Remove entities that have plugin auto entityCount = runner.EntityCompMgr().EntityCount(); const_cast( runner.EntityCompMgr()).RequestRemoveEntity(boxEntity); @@ -1533,8 +1530,16 @@ TEST_P(SimulationRunnerTest, SimulationRunner runner(rootWithout.WorldByIndex(0), systemLoader, serverConfig); - // 1 model plugin from SDF and 2 world plugins from config - ASSERT_EQ(3u, runner.SystemCount()); + // 1 model plugin from SDF and 1 world plugin from config + // and 1 model plugin from theconfig + EXPECT_EQ(3u, runner.SystemCount()); + runner.SetPaused(false); + runner.Run(1); + + // Remove the model. Only 1 world plugin should remain. + EXPECT_TRUE(runner.RequestRemoveEntity("box")); + runner.Run(2); + EXPECT_EQ(1u, runner.SystemCount()); } ///////////////////////////////////////////////// diff --git a/src/SystemManager.cc b/src/SystemManager.cc index fd43f5330d..d1b66346e3 100644 --- a/src/SystemManager.cc +++ b/src/SystemManager.cc @@ -16,10 +16,13 @@ */ #include +#include #include +#include #include +#include "SystemInternal.hh" #include "gz/sim/components/SystemPluginInfo.hh" #include "gz/sim/Conversions.hh" #include "SystemManager.hh" @@ -122,7 +125,9 @@ size_t SystemManager::ActivatePendingSystems() this->systemsUpdate.push_back(system.update); if (system.postupdate) + { this->systemsPostupdate.push_back(system.postupdate); + } } this->pendingSystems.clear(); @@ -409,3 +414,131 @@ void SystemManager::ProcessPendingEntitySystems() } this->systemsToAdd.clear(); } + +template +struct identity +{ + using type = T; +}; + +////////////////////////////////////////////////// +/// TODO(arjo) - When we move to C++20 we can just use erase_if +/// Removes all items that match the given predicate. +/// This function runs in O(n) time and uses memory in-place +template +void RemoveFromVectorIf(std::vector& vec, + typename identity>::type pred) +{ + vec.erase(std::remove_if(vec.begin(), vec.end(), pred), vec.end()); +} + +////////////////////////////////////////////////// +void SystemManager::ProcessRemovedEntities( + const EntityComponentManager &_ecm, + bool &_needsCleanUp) +{ + // Note: This function has O(n) time when an entity is removed + // where n is number of systems. Ideally we would only iterate + // over entities marked for removal but that would involve having + // a key value map. This can be marked as a future improvement. + if (!_ecm.HasEntitiesMarkedForRemoval()) + { + return; + } + + std::unordered_set resetSystemsToBeRemoved; + std::unordered_set preupdateSystemsToBeRemoved; + std::unordered_set updateSystemsToBeRemoved; + std::unordered_set postupdateSystemsToBeRemoved; + std::unordered_set configureSystemsToBeRemoved; + std::unordered_set + configureParametersSystemsToBeRemoved; + for (const auto &system : this->systems) + { + if (_ecm.IsMarkedForRemoval(system.parentEntity)) + { + if (system.reset) + { + resetSystemsToBeRemoved.insert(system.reset); + } + if (system.preupdate) + { + preupdateSystemsToBeRemoved.insert(system.preupdate); + } + if (system.update) + { + updateSystemsToBeRemoved.insert(system.update); + } + if (system.postupdate) + { + postupdateSystemsToBeRemoved.insert(system.postupdate); + // If system with a PostUpdate is marked for removal + // mark all worker threads for removal. + _needsCleanUp = true; + } + if (system.configure) + { + configureSystemsToBeRemoved.insert(system.configure); + } + if (system.configureParameters) + { + configureParametersSystemsToBeRemoved.insert( + system.configureParameters); + } + } + } + + RemoveFromVectorIf(this->systemsReset, + [&](const auto system) { + if (resetSystemsToBeRemoved.count(system)) { + return true; + } + return false; + }); + RemoveFromVectorIf(this->systemsPreupdate, + [&](const auto& system) { + if (preupdateSystemsToBeRemoved.count(system)) { + return true; + } + return false; + }); + RemoveFromVectorIf(this->systemsUpdate, + [&](const auto& system) { + if (updateSystemsToBeRemoved.count(system)) { + return true; + } + return false; + }); + + RemoveFromVectorIf(this->systemsPostupdate, + [&](const auto& system) { + if (postupdateSystemsToBeRemoved.count(system)) { + return true; + } + return false; + }); + RemoveFromVectorIf(this->systemsConfigure, + [&](const auto& system) { + if (configureSystemsToBeRemoved.count(system)) { + return true; + } + return false; + }); + RemoveFromVectorIf(this->systemsConfigureParameters, + [&](const auto& system) { + if (configureParametersSystemsToBeRemoved.count(system)) { + return true; + } + return false; + }); + RemoveFromVectorIf(this->systems, + [&](const SystemInternal& _arg) { + return _ecm.IsMarkedForRemoval(_arg.parentEntity); + }); + + std::lock_guard lock(this->pendingSystemsMutex); + RemoveFromVectorIf(this->pendingSystems, + [&](const SystemInternal& _system) { + return _ecm.IsMarkedForRemoval(_system.parentEntity); + }); +} diff --git a/src/SystemManager.hh b/src/SystemManager.hh index acd82c09dc..d523c4e740 100644 --- a/src/SystemManager.hh +++ b/src/SystemManager.hh @@ -145,6 +145,14 @@ namespace gz /// \brief Process system messages and add systems to entities public: void ProcessPendingEntitySystems(); + /// \brief Remove systems that are attached to removed entities + /// \param[in] _entityCompMgr - ECM with entities marked for removal + /// \param[out] _needsCleanUp - Set to true if a system with a + /// PostUpdate was removed, and its thread needs to be terminated + public: void ProcessRemovedEntities( + const EntityComponentManager &_entityCompMgr, + bool &_needsCleanUp); + /// \brief Implementation for AddSystem functions that takes an SDF /// element. This calls the AddSystemImpl that accepts an SDF Plugin. /// \param[in] _system Generic representation of a system. diff --git a/src/SystemManager_TEST.cc b/src/SystemManager_TEST.cc index 5026842a9f..1265cc5a5f 100644 --- a/src/SystemManager_TEST.cc +++ b/src/SystemManager_TEST.cc @@ -214,6 +214,71 @@ TEST(SystemManager, AddSystemEcm) EXPECT_EQ(1u, systemMgr.SystemsPostUpdate().size()); } +///////////////////////////////////////////////// +TEST(SystemManager, AddAndRemoveSystemEcm) +{ + auto loader = std::make_shared(); + + auto ecm = EntityComponentManager(); + auto eventManager = EventManager(); + + auto paramRegistry = std::make_unique< + gz::transport::parameters::ParametersRegistry>("SystemManager_TEST"); + SystemManager systemMgr( + loader, &ecm, &eventManager, std::string(), paramRegistry.get()); + + EXPECT_EQ(0u, systemMgr.ActiveCount()); + EXPECT_EQ(0u, systemMgr.PendingCount()); + EXPECT_EQ(0u, systemMgr.TotalCount()); + EXPECT_EQ(0u, systemMgr.SystemsConfigure().size()); + EXPECT_EQ(0u, systemMgr.SystemsPreUpdate().size()); + EXPECT_EQ(0u, systemMgr.SystemsUpdate().size()); + EXPECT_EQ(0u, systemMgr.SystemsPostUpdate().size()); + + auto configSystem = std::make_shared(); + systemMgr.AddSystem(configSystem, kNullEntity, nullptr); + + auto entity = ecm.CreateEntity(); + + auto updateSystemWithChild = std::make_shared(); + systemMgr.AddSystem(updateSystemWithChild, entity, nullptr); + + // Configure called during AddSystem + EXPECT_EQ(1, configSystem->configured); + EXPECT_EQ(1, configSystem->configuredParameters); + + EXPECT_EQ(0u, systemMgr.ActiveCount()); + EXPECT_EQ(2u, systemMgr.PendingCount()); + EXPECT_EQ(2u, systemMgr.TotalCount()); + EXPECT_EQ(0u, systemMgr.SystemsConfigure().size()); + EXPECT_EQ(0u, systemMgr.SystemsPreUpdate().size()); + EXPECT_EQ(0u, systemMgr.SystemsUpdate().size()); + EXPECT_EQ(0u, systemMgr.SystemsPostUpdate().size()); + + systemMgr.ActivatePendingSystems(); + EXPECT_EQ(2u, systemMgr.ActiveCount()); + EXPECT_EQ(0u, systemMgr.PendingCount()); + EXPECT_EQ(2u, systemMgr.TotalCount()); + EXPECT_EQ(1u, systemMgr.SystemsConfigure().size()); + EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().size()); + EXPECT_EQ(1u, systemMgr.SystemsUpdate().size()); + EXPECT_EQ(1u, systemMgr.SystemsPostUpdate().size()); + + // Remove the entity + ecm.RequestRemoveEntity(entity); + bool needsCleanUp; + systemMgr.ProcessRemovedEntities(ecm, needsCleanUp); + + EXPECT_TRUE(needsCleanUp); + EXPECT_EQ(1u, systemMgr.ActiveCount()); + EXPECT_EQ(0u, systemMgr.PendingCount()); + EXPECT_EQ(1u, systemMgr.TotalCount()); + EXPECT_EQ(1u, systemMgr.SystemsConfigure().size()); + EXPECT_EQ(0u, systemMgr.SystemsPreUpdate().size()); + EXPECT_EQ(0u, systemMgr.SystemsUpdate().size()); + EXPECT_EQ(0u, systemMgr.SystemsPostUpdate().size()); +} + ///////////////////////////////////////////////// TEST(SystemManager, AddSystemWithInfo) { From 6b5ec2005384ba4c1615a788b8a99c7b67b8479a Mon Sep 17 00:00:00 2001 From: "Addisu Z. Taddese" Date: Wed, 31 Jul 2024 16:25:53 -0500 Subject: [PATCH 22/80] Improve signal handling (#2501) Signed-off-by: Addisu Z. Taddese --- src/Server.cc | 5 +++++ src/ServerPrivate.cc | 8 ++++++++ src/ServerPrivate.hh | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/src/Server.cc b/src/Server.cc index e2286945e7..68bf0637f8 100644 --- a/src/Server.cc +++ b/src/Server.cc @@ -214,6 +214,11 @@ Server::Server(const ServerConfig &_config) this->dataPtr->AddRecordPlugin(_config); } + // If we've received a signal before we create entities, the Stop event + // won't be propagated to them. Instead, we just quit early here. + if (this->dataPtr->signalReceived) + return; + this->dataPtr->CreateEntities(); // Set the desired update period, this will override the desired RTF given in diff --git a/src/ServerPrivate.cc b/src/ServerPrivate.cc index 80df07819e..89b5b30f03 100644 --- a/src/ServerPrivate.cc +++ b/src/ServerPrivate.cc @@ -112,6 +112,7 @@ ServerPrivate::~ServerPrivate() ////////////////////////////////////////////////// void ServerPrivate::OnSignal(int _sig) { + this->signalReceived = true; gzdbg << "Server received signal[" << _sig << "]\n"; this->Stop(); } @@ -130,6 +131,13 @@ void ServerPrivate::Stop() bool ServerPrivate::Run(const uint64_t _iterations, std::optional _cond) { + // Return early if we've received a signal right before. + // The ServerPrivate signal handler would set `running=false`, + // but we immediately would set it to true here, which will essentially ignore + // the signal. Since we can't reliably use the `running` variable, we return + // if `signalReceived` is true + if (this->signalReceived) + return false; this->runMutex.lock(); this->running = true; if (_cond) diff --git a/src/ServerPrivate.hh b/src/ServerPrivate.hh index 03128c56e8..24abe078a5 100644 --- a/src/ServerPrivate.hh +++ b/src/ServerPrivate.hh @@ -169,6 +169,10 @@ namespace gz /// \brief Our signal handler. public: gz::common::SignalHandler sigHandler; + /// \brief Set to true from signal handler. This will be used to + /// terminate the server where checking `running` is not sufficient. + public: std::atomic signalReceived{false}; + /// \brief Our system loader. public: SystemLoaderPtr systemLoader; From 44991571e7324f56c6b96c2788be92f9ab07665b Mon Sep 17 00:00:00 2001 From: Steve Peters Date: Thu, 1 Aug 2024 14:05:51 -0700 Subject: [PATCH 23/80] Specify System::PreUpdate, Update execution order (#2487) Specifying an integer value in a tag for a system will control the order in which System PreUpdate and Update callbacks are executed, with lower values executing first. The PriorityPrinter example plugin is added to illustrate the feature. Signed-off-by: Steve Peters --- .../priority_printer_plugin/CMakeLists.txt | 17 +++ .../PriorityPrinter.cc | 80 +++++++++++ .../PriorityPrinter.hh | 51 +++++++ .../plugin/priority_printer_plugin/README.md | 128 ++++++++++++++++++ .../priority_printer_plugin.sdf | 36 +++++ include/gz/sim/System.hh | 22 +++ src/SimulationRunner.cc | 18 ++- src/SystemManager.cc | 71 +++++++--- src/SystemManager.hh | 36 +++-- src/SystemManager_TEST.cc | 6 + 10 files changed, 431 insertions(+), 34 deletions(-) create mode 100644 examples/plugin/priority_printer_plugin/CMakeLists.txt create mode 100644 examples/plugin/priority_printer_plugin/PriorityPrinter.cc create mode 100644 examples/plugin/priority_printer_plugin/PriorityPrinter.hh create mode 100644 examples/plugin/priority_printer_plugin/README.md create mode 100644 examples/plugin/priority_printer_plugin/priority_printer_plugin.sdf diff --git a/examples/plugin/priority_printer_plugin/CMakeLists.txt b/examples/plugin/priority_printer_plugin/CMakeLists.txt new file mode 100644 index 0000000000..e5497abb73 --- /dev/null +++ b/examples/plugin/priority_printer_plugin/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.22.1 FATAL_ERROR) + +find_package(gz-cmake4 REQUIRED) + +project(Priority_printer) + +gz_find_package(gz-plugin3 REQUIRED COMPONENTS register) +set(GZ_PLUGIN_VER ${gz-plugin3_VERSION_MAJOR}) + +gz_find_package(gz-sim9 REQUIRED) +set(GZ_SIM_VER ${gz-sim9_VERSION_MAJOR}) + +add_library(PriorityPrinter SHARED PriorityPrinter.cc) +set_property(TARGET PriorityPrinter PROPERTY CXX_STANDARD 17) +target_link_libraries(PriorityPrinter + PRIVATE gz-plugin${GZ_PLUGIN_VER}::gz-plugin${GZ_PLUGIN_VER} + PRIVATE gz-sim${GZ_SIM_VER}::gz-sim${GZ_SIM_VER}) diff --git a/examples/plugin/priority_printer_plugin/PriorityPrinter.cc b/examples/plugin/priority_printer_plugin/PriorityPrinter.cc new file mode 100644 index 0000000000..164596d968 --- /dev/null +++ b/examples/plugin/priority_printer_plugin/PriorityPrinter.cc @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2024 Open Source Robotics Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * +*/ + +// We'll use a string and the gzmsg command below for a brief example. +// Remove these includes if your plugin doesn't need them. +#include +#include +#include + +// This header is required to register plugins. It's good practice to place it +// in the cc file, like it's done here. +#include + +// Don't forget to include the plugin's header. +#include "PriorityPrinter.hh" + +// This is required to register the plugin. Make sure the interfaces match +// what's in the header. +GZ_ADD_PLUGIN( + priority_printer::PriorityPrinter, + gz::sim::System, + priority_printer::PriorityPrinter::ISystemConfigure, + priority_printer::PriorityPrinter::ISystemPreUpdate, + priority_printer::PriorityPrinter::ISystemUpdate) + +using namespace priority_printer; + +void PriorityPrinter::Configure( + const gz::sim::Entity &_entity, + const std::shared_ptr &_sdf, + gz::sim::EntityComponentManager &_ecm, + gz::sim::EventManager &_eventMgr) +{ + // Parse priority value as a string for printing + const std::string priorityElementName {gz::sim::System::kPriorityElementName}; + if (_sdf && _sdf->HasElement(priorityElementName)) + { + this->systemPriority = _sdf->Get(priorityElementName); + } + + const std::string labelElementName {"label"}; + if (_sdf && _sdf->HasElement(labelElementName)) + { + this->systemLabel = _sdf->Get(labelElementName); + } +} + +void PriorityPrinter::PreUpdate(const gz::sim::UpdateInfo &_info, + gz::sim::EntityComponentManager &/*_ecm*/) +{ + gzmsg << "PreUpdate: " + << "Iteration " << _info.iterations + << ", system priority " << this->systemPriority + << ", system label " << this->systemLabel + << '\n'; +} + +void PriorityPrinter::Update(const gz::sim::UpdateInfo &_info, + gz::sim::EntityComponentManager &/*_ecm*/) +{ + gzmsg << "Update: " + << "Iteration " << _info.iterations + << ", system priority " << this->systemPriority + << ", system label " << this->systemLabel + << '\n'; +} diff --git a/examples/plugin/priority_printer_plugin/PriorityPrinter.hh b/examples/plugin/priority_printer_plugin/PriorityPrinter.hh new file mode 100644 index 0000000000..741c2f596c --- /dev/null +++ b/examples/plugin/priority_printer_plugin/PriorityPrinter.hh @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2024 Open Source Robotics Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef EXAMPLE_PLUGIN_PRIORITYPRINTER_HH_ +#define EXAMPLE_PLUGIN_PRIORITYPRINTER_HH_ + +#include +#include +#include + +namespace priority_printer +{ + // This plugin prints the number of elapsed simulation iterations, + // this system's priority value from the XML configuration, + // and a custom label from the XML configuration during the Update callback. + class PriorityPrinter: + public gz::sim::System, + public gz::sim::ISystemConfigure, + public gz::sim::ISystemPreUpdate, + public gz::sim::ISystemUpdate + { + public: void Configure(const gz::sim::Entity &_entity, + const std::shared_ptr &_sdf, + gz::sim::EntityComponentManager &_ecm, + gz::sim::EventManager &_eventMgr) override; + + public: void PreUpdate(const gz::sim::UpdateInfo &_info, + gz::sim::EntityComponentManager &_ecm) override; + + public: void Update(const gz::sim::UpdateInfo &_info, + gz::sim::EntityComponentManager &_ecm) override; + + public: std::string systemPriority{"unset"}; + public: std::string systemLabel{"unset"}; + }; +} +#endif diff --git a/examples/plugin/priority_printer_plugin/README.md b/examples/plugin/priority_printer_plugin/README.md new file mode 100644 index 0000000000..670c269979 --- /dev/null +++ b/examples/plugin/priority_printer_plugin/README.md @@ -0,0 +1,128 @@ +# Priority Printer + +This example illustrates how to control the order of execution of System +PreUpdate and Update callbacks. As documented in +[gz/sim/System.hh](https://github.com/gazebosim/gz-sim/tree/main/include/gz/sim/System.hh), +the PreUpdate and Update phases are executed sequentially in the same +thread, and the order of execution of these phases can be +controlled by specifying a signed integer priority value for the System +in its XML configuration. The default priority value is zero, and +smaller values are executed earlier. Systems with the same priority +value are executed in the order in which they are loaded. + +## Build + +From the root of the `gz-sim` repository, do the following to build the example: + +~~~ +cd gz-sim/examples/plugins/priority_printer +mkdir build +cd build +cmake .. +make +~~~ + +This will generate the `PriorityPrinter` library under `build`. + +## Run + +Multiple instances of the `PriorityPrinter` plugin are added to the +[priority\_printer\_plugin.sdf](priority_printer_plugin.sdf) world file +with various priority values and unique labels corresponding to the order +in which the plugins are specified ("first" for the first plugin and so on). +Without priority values, the systems would be executed in the order they are +specified in XML ("first", then "second", etc.). +With the priority values specified, the systems with smallest integer priority +values are executed first. For systems with the same priority value, the +system that is specified earlier in the XML file will be executed first. + +Before starting Gazebo, we must make sure it can find the plugin by doing: + +~~~ +cd gz-sim/examples/plugins/priority_printer +export GZ_SIM_SYSTEM_PLUGIN_PATH=`pwd`/build +~~~ + +Then load the example world and run for 5 iterations: + + gz sim -v 3 priority_printer_plugin.sdf -s -r --iterations 5 + +You should see green messages on the terminal like those given below. +Note that the system with priority `-100` was executed first, despite being +the fifth system in the XML ordering. There are two instances of systems with +the same priority value: the fourth and sixth systems with priority 0 (with +"unset" defaulting to 0) and the first and seventh systems with priority 100. +In each case, the system declared earlier in XML executed first. + +``` +[Msg] PreUpdate: Iteration 1, system priority -100, system label fifth +[Msg] PreUpdate: Iteration 1, system priority -10, system label third +[Msg] PreUpdate: Iteration 1, system priority unset, system label fourth +[Msg] PreUpdate: Iteration 1, system priority 0, system label sixth +[Msg] PreUpdate: Iteration 1, system priority 10, system label second +[Msg] PreUpdate: Iteration 1, system priority 100, system label first +[Msg] PreUpdate: Iteration 1, system priority 100, system label seventh +[Msg] Update: Iteration 1, system priority -100, system label fifth +[Msg] Update: Iteration 1, system priority -10, system label third +[Msg] Update: Iteration 1, system priority unset, system label fourth +[Msg] Update: Iteration 1, system priority 0, system label sixth +[Msg] Update: Iteration 1, system priority 10, system label second +[Msg] Update: Iteration 1, system priority 100, system label first +[Msg] Update: Iteration 1, system priority 100, system label seventh +[Msg] PreUpdate: Iteration 2, system priority -100, system label fifth +[Msg] PreUpdate: Iteration 2, system priority -10, system label third +[Msg] PreUpdate: Iteration 2, system priority unset, system label fourth +[Msg] PreUpdate: Iteration 2, system priority 0, system label sixth +[Msg] PreUpdate: Iteration 2, system priority 10, system label second +[Msg] PreUpdate: Iteration 2, system priority 100, system label first +[Msg] PreUpdate: Iteration 2, system priority 100, system label seventh +[Msg] Update: Iteration 2, system priority -100, system label fifth +[Msg] Update: Iteration 2, system priority -10, system label third +[Msg] Update: Iteration 2, system priority unset, system label fourth +[Msg] Update: Iteration 2, system priority 0, system label sixth +[Msg] Update: Iteration 2, system priority 10, system label second +[Msg] Update: Iteration 2, system priority 100, system label first +[Msg] Update: Iteration 2, system priority 100, system label seventh +[Msg] PreUpdate: Iteration 3, system priority -100, system label fifth +[Msg] PreUpdate: Iteration 3, system priority -10, system label third +[Msg] PreUpdate: Iteration 3, system priority unset, system label fourth +[Msg] PreUpdate: Iteration 3, system priority 0, system label sixth +[Msg] PreUpdate: Iteration 3, system priority 10, system label second +[Msg] PreUpdate: Iteration 3, system priority 100, system label first +[Msg] PreUpdate: Iteration 3, system priority 100, system label seventh +[Msg] Update: Iteration 3, system priority -100, system label fifth +[Msg] Update: Iteration 3, system priority -10, system label third +[Msg] Update: Iteration 3, system priority unset, system label fourth +[Msg] Update: Iteration 3, system priority 0, system label sixth +[Msg] Update: Iteration 3, system priority 10, system label second +[Msg] Update: Iteration 3, system priority 100, system label first +[Msg] Update: Iteration 3, system priority 100, system label seventh +[Msg] PreUpdate: Iteration 4, system priority -100, system label fifth +[Msg] PreUpdate: Iteration 4, system priority -10, system label third +[Msg] PreUpdate: Iteration 4, system priority unset, system label fourth +[Msg] PreUpdate: Iteration 4, system priority 0, system label sixth +[Msg] PreUpdate: Iteration 4, system priority 10, system label second +[Msg] PreUpdate: Iteration 4, system priority 100, system label first +[Msg] PreUpdate: Iteration 4, system priority 100, system label seventh +[Msg] Update: Iteration 4, system priority -100, system label fifth +[Msg] Update: Iteration 4, system priority -10, system label third +[Msg] Update: Iteration 4, system priority unset, system label fourth +[Msg] Update: Iteration 4, system priority 0, system label sixth +[Msg] Update: Iteration 4, system priority 10, system label second +[Msg] Update: Iteration 4, system priority 100, system label first +[Msg] Update: Iteration 4, system priority 100, system label seventh +[Msg] PreUpdate: Iteration 5, system priority -100, system label fifth +[Msg] PreUpdate: Iteration 5, system priority -10, system label third +[Msg] PreUpdate: Iteration 5, system priority unset, system label fourth +[Msg] PreUpdate: Iteration 5, system priority 0, system label sixth +[Msg] PreUpdate: Iteration 5, system priority 10, system label second +[Msg] PreUpdate: Iteration 5, system priority 100, system label first +[Msg] PreUpdate: Iteration 5, system priority 100, system label seventh +[Msg] Update: Iteration 5, system priority -100, system label fifth +[Msg] Update: Iteration 5, system priority -10, system label third +[Msg] Update: Iteration 5, system priority unset, system label fourth +[Msg] Update: Iteration 5, system priority 0, system label sixth +[Msg] Update: Iteration 5, system priority 10, system label second +[Msg] Update: Iteration 5, system priority 100, system label first +[Msg] Update: Iteration 5, system priority 100, system label seventh +``` diff --git a/examples/plugin/priority_printer_plugin/priority_printer_plugin.sdf b/examples/plugin/priority_printer_plugin/priority_printer_plugin.sdf new file mode 100644 index 0000000000..e60d75a497 --- /dev/null +++ b/examples/plugin/priority_printer_plugin/priority_printer_plugin.sdf @@ -0,0 +1,36 @@ + + + + + + 100 + + + + 10 + + + + -10 + + + + + + + -100 + + + + 0 + + + + 100 + + + + diff --git a/include/gz/sim/System.hh b/include/gz/sim/System.hh index cc0139161e..f531c1d023 100644 --- a/include/gz/sim/System.hh +++ b/include/gz/sim/System.hh @@ -17,6 +17,7 @@ #ifndef GZ_SIM_SYSTEM_HH_ #define GZ_SIM_SYSTEM_HH_ +#include #include #include @@ -64,6 +65,14 @@ namespace gz /// * Used to read out results at the end of a simulation step to be used /// for sensor or controller updates. /// + /// The PreUpdate and Update phases are executed sequentially in the same + /// thread, while the PostUpdate phase is executed in parallel in multiple + /// threads. The order of execution of PreUpdate and Update phases can be + /// controlled by specifying a signed integer Priority value for the System + /// in its XML configuration. The default Priority value is zero, and + /// smaller values are executed earlier. Systems with the same Priority + /// value are executed in the order in which they are loaded. + /// /// It's important to note that UpdateInfo::simTime does not refer to the /// current time, but the time reached after the PreUpdate and Update calls /// have finished. So, if any of the *Update functions are called with @@ -74,6 +83,19 @@ namespace gz /// simulation is started un-paused. class System { + /// \brief Signed integer type used for specifying priority of the + /// execution order of PreUpdate and Update phases. + public: using PriorityType = int32_t; + + /// \brief Default priority value for execution order of the PreUpdate + /// and Update phases. + public: constexpr static PriorityType kDefaultPriority = {0}; + + /// \brief Name of the XML element from which the priority value will be + /// parsed. + public: constexpr static std::string_view kPriorityElementName = + {"gz:system_priority"}; + /// \brief Constructor public: System() = default; diff --git a/src/SimulationRunner.cc b/src/SimulationRunner.cc index 87f72d1ce2..69be9a6a37 100644 --- a/src/SimulationRunner.cc +++ b/src/SimulationRunner.cc @@ -601,14 +601,24 @@ void SimulationRunner::UpdateSystems() { GZ_PROFILE("PreUpdate"); - for (auto& system : this->systemMgr->SystemsPreUpdate()) - system->PreUpdate(this->currentInfo, this->entityCompMgr); + for (auto& [priority, systems] : this->systemMgr->SystemsPreUpdate()) + { + for (auto& system : systems) + { + system->PreUpdate(this->currentInfo, this->entityCompMgr); + } + } } { GZ_PROFILE("Update"); - for (auto& system : this->systemMgr->SystemsUpdate()) - system->Update(this->currentInfo, this->entityCompMgr); + for (auto& [priority, systems] : this->systemMgr->SystemsUpdate()) + { + for (auto& system : systems) + { + system->Update(this->currentInfo, this->entityCompMgr); + } + } } { diff --git a/src/SystemManager.cc b/src/SystemManager.cc index d1b66346e3..135eb40d6c 100644 --- a/src/SystemManager.cc +++ b/src/SystemManager.cc @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -25,6 +26,7 @@ #include "SystemInternal.hh" #include "gz/sim/components/SystemPluginInfo.hh" #include "gz/sim/Conversions.hh" +#include "gz/sim/System.hh" #include "SystemManager.hh" using namespace gz; @@ -109,6 +111,15 @@ size_t SystemManager::ActivatePendingSystems() { this->systems.push_back(system); + PriorityType p {System::kDefaultPriority}; + const std::string kPriorityElementName + {gz::sim::System::kPriorityElementName}; + if (system.configureSdf && + system.configureSdf->HasElement(kPriorityElementName)) + { + p = system.configureSdf->Get(kPriorityElementName); + } + if (system.configure) this->systemsConfigure.push_back(system.configure); @@ -119,10 +130,16 @@ size_t SystemManager::ActivatePendingSystems() this->systemsReset.push_back(system.reset); if (system.preupdate) - this->systemsPreupdate.push_back(system.preupdate); + { + this->systemsPreupdate.try_emplace(p); + this->systemsPreupdate[p].push_back(system.preupdate); + } if (system.update) - this->systemsUpdate.push_back(system.update); + { + this->systemsUpdate.try_emplace(p); + this->systemsUpdate[p].push_back(system.update); + } if (system.postupdate) { @@ -300,13 +317,15 @@ const std::vector &SystemManager::SystemsReset() } ////////////////////////////////////////////////// -const std::vector& SystemManager::SystemsPreUpdate() +const SystemManager::PrioritizedSystems& +SystemManager::SystemsPreUpdate() { return this->systemsPreupdate; } ////////////////////////////////////////////////// -const std::vector& SystemManager::SystemsUpdate() +const SystemManager::PrioritizedSystems& +SystemManager::SystemsUpdate() { return this->systemsUpdate; } @@ -495,20 +514,36 @@ void SystemManager::ProcessRemovedEntities( } return false; }); - RemoveFromVectorIf(this->systemsPreupdate, - [&](const auto& system) { - if (preupdateSystemsToBeRemoved.count(system)) { - return true; - } - return false; - }); - RemoveFromVectorIf(this->systemsUpdate, - [&](const auto& system) { - if (updateSystemsToBeRemoved.count(system)) { - return true; - } - return false; - }); + for (auto it = this->systemsPreupdate.begin(); + it != this->systemsPreupdate.end();) + { + RemoveFromVectorIf(it->second, + [&](const auto& system) { + if (preupdateSystemsToBeRemoved.count(system)) { + return true; + } + return false; + }); + if (it->second.empty()) + it = this->systemsPreupdate.erase(it); + else + ++it; + } + for (auto it = this->systemsUpdate.begin(); + it != this->systemsUpdate.end();) + { + RemoveFromVectorIf(it->second, + [&](const auto& system) { + if (updateSystemsToBeRemoved.count(system)) { + return true; + } + return false; + }); + if (it->second.empty()) + it = this->systemsUpdate.erase(it); + else + ++it; + } RemoveFromVectorIf(this->systemsPostupdate, [&](const auto& system) { diff --git a/src/SystemManager.hh b/src/SystemManager.hh index d523c4e740..c9c61c7944 100644 --- a/src/SystemManager.hh +++ b/src/SystemManager.hh @@ -19,6 +19,8 @@ #include +#include +#include #include #include #include @@ -29,6 +31,7 @@ #include "gz/sim/config.hh" #include "gz/sim/EntityComponentManager.hh" #include "gz/sim/Export.hh" +#include "gz/sim/System.hh" #include "gz/sim/SystemLoader.hh" #include "gz/sim/Types.hh" @@ -44,6 +47,13 @@ namespace gz /// \brief Used to load / unload sysetms as well as iterate over them. class GZ_SIM_VISIBLE SystemManager { + /// \brief Ordered map of priority values to a vector of System + /// interfaces. + using PriorityType = System::PriorityType; + template + class PrioritizedSystems : public std::map> + {}; + /// \brief Constructor /// \param[in] _systemLoader A pointer to a SystemLoader to load plugins /// from files @@ -116,29 +126,31 @@ namespace gz /// \return Vector of systems' configure interfaces. public: const std::vector& SystemsConfigure(); - /// \brief Get an vector of all active systems implementing + /// \brief Get a vector of all active systems implementing /// "ConfigureParameters" /// \return Vector of systems's configure interfaces. public: const std::vector& SystemsConfigureParameters(); - /// \brief Get an vector of all active systems implementing "Reset" + /// \brief Get a vector of all active systems implementing "Reset" /// \return Vector of systems' reset interfaces. public: const std::vector& SystemsReset(); - /// \brief Get an vector of all active systems implementing "PreUpdate" - /// \return Vector of systems's pre-update interfaces. - public: const std::vector& SystemsPreUpdate(); + /// \brief Get an ordered map of systems by priority that implement + /// "PreUpdate" + /// \return Priortized map of systems's pre-update interfaces. + public: const PrioritizedSystems& SystemsPreUpdate(); - /// \brief Get an vector of all active systems implementing "Update" - /// \return Vector of systems's update interfaces. - public: const std::vector& SystemsUpdate(); + /// \brief Get an ordered map of systems by priority that implement + /// "Update" + /// \return Priortized map of systems's update interfaces. + public: const PrioritizedSystems& SystemsUpdate(); - /// \brief Get an vector of all active systems implementing "PostUpdate" + /// \brief Get a vector of all active systems implementing "PostUpdate" /// \return Vector of systems's post-update interfaces. public: const std::vector& SystemsPostUpdate(); - /// \brief Get an vector of all systems attached to a given entity. + /// \brief Get a vector of all systems attached to a given entity. /// \return Vector of systems. public: std::vector TotalByEntity(Entity _entity); @@ -205,10 +217,10 @@ namespace gz private: std::vector systemsReset; /// \brief Systems implementing PreUpdate - private: std::vector systemsPreupdate; + private: PrioritizedSystems systemsPreupdate; /// \brief Systems implementing Update - private: std::vector systemsUpdate; + private: PrioritizedSystems systemsUpdate; /// \brief Systems implementing PostUpdate private: std::vector systemsPostupdate; diff --git a/src/SystemManager_TEST.cc b/src/SystemManager_TEST.cc index 1265cc5a5f..38ad82d726 100644 --- a/src/SystemManager_TEST.cc +++ b/src/SystemManager_TEST.cc @@ -143,8 +143,14 @@ TEST(SystemManager, AddSystemNoEcm) EXPECT_EQ(0u, systemMgr.PendingCount()); EXPECT_EQ(2u, systemMgr.TotalCount()); EXPECT_EQ(1u, systemMgr.SystemsConfigure().size()); + // Expect PreUpdate and Update to contain one map entry with Priority 0 and + // a vector of length 1. EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().size()); + EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().count(0)); + EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().at(0).size()); EXPECT_EQ(1u, systemMgr.SystemsUpdate().size()); + EXPECT_EQ(1u, systemMgr.SystemsUpdate().count(0)); + EXPECT_EQ(1u, systemMgr.SystemsUpdate().at(0).size()); EXPECT_EQ(1u, systemMgr.SystemsPostUpdate().size()); EXPECT_EQ(1u, systemMgr.TotalByEntity(updateEntity).size()); } From 811d4d0bfd6d060f7f705c92b4c5b7fb27c8a44e Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Tue, 6 Aug 2024 13:25:00 -0700 Subject: [PATCH 24/80] Remove ignition related deprecations (#2505) Signed-off-by: Ian Chen --- include/gz/sim/components/Factory.hh | 11 ---------- src/ServerConfig.cc | 13 ------------ src/SystemLoader.cc | 6 ++---- src/cmd/cmdsim.rb.in | 10 --------- .../plugins/video_recorder/VideoRecorder.cc | 2 +- .../LighterThanAirDynamics.cc | 5 ----- src/systems/log/LogPlayback.cc | 8 ------- src/systems/physics/Physics.cc | 2 -- test/benchmark/ecm_serialize.cc | 10 ++++----- test/integration/each_new_removed.cc | 2 +- test/media/levels_log/state.tlog | Bin 778240 -> 778240 bytes tutorials/install.md | 2 +- tutorials/joint_controller.md | 2 +- tutorials/migration_sensor_api.md | 20 +++++++++--------- 14 files changed, 21 insertions(+), 72 deletions(-) diff --git a/include/gz/sim/components/Factory.hh b/include/gz/sim/components/Factory.hh index 5f27a130bd..afe139f33d 100644 --- a/include/gz/sim/components/Factory.hh +++ b/include/gz/sim/components/Factory.hh @@ -283,17 +283,6 @@ namespace components std::string debugEnv; gz::common::env("GZ_DEBUG_COMPONENT_FACTORY", debugEnv); - if (debugEnv != "true") - { - gz::common::env("IGN_DEBUG_COMPONENT_FACTORY", debugEnv); - if (debugEnv == "true") - { - std::cerr << "Environment variable [IGN_DEBUG_COMPONENT_FACTORY] " - << "is deprecated! Please use [GZ_DEBUG_COMPONENT_FACTORY]" - << "instead." << std::endl; - } - } - if (debugEnv == "true") { std::cout << "Registering [" << ComponentTypeT::typeName << "]" diff --git a/src/ServerConfig.cc b/src/ServerConfig.cc index ae587f2703..b800c541aa 100644 --- a/src/ServerConfig.cc +++ b/src/ServerConfig.cc @@ -924,19 +924,6 @@ sim::loadPluginInfo(bool _isPlayback) envConfig, true); - if (!configSet) - { - configSet = common::env("IGN_GAZEBO_SERVER_CONFIG_PATH", - envConfig, - true); - if (configSet) - { - gzwarn << "Config path found using deprecated environment variable " - << "[IGN_GAZEBO_SERVER_CONFIG_PATH]. Please use " - << "[GZ_SIM_SERVER_CONFIG_PATH] instead" << std::endl; - } - } - if (configSet) { if (common::exists(envConfig)) diff --git a/src/SystemLoader.cc b/src/SystemLoader.cc index 582ebbbabf..23409c2188 100644 --- a/src/SystemLoader.cc +++ b/src/SystemLoader.cc @@ -64,8 +64,7 @@ class gz::sim::SystemLoaderPrivate public: bool InstantiateSystemPlugin(const sdf::Plugin &_sdfPlugin, gz::plugin::PluginPtr &_gzPlugin) { - // Deprecated: accept ignition-gazebo-prefixed systems. Remove this on - // gz-sim9 + // Deprecated: accept ignition-gazebo-prefixed systems. std::string deprecatedPrefix{"ignition-gazebo"}; auto filename = _sdfPlugin.Filename(); auto pos = filename.find(deprecatedPrefix); @@ -125,7 +124,7 @@ class gz::sim::SystemLoaderPrivate std::string pluginToInstantiate = _sdfPlugin.Name().empty() ? pluginName : _sdfPlugin.Name(); - // Deprecated: accept ignition plugins. Remove this on gz-sim9 + // Deprecated: accept ignition plugins. std::string deprecatedPluginNamePrefix{"ignition::gazebo"}; pos = pluginToInstantiate.find(deprecatedPluginNamePrefix); if (pos != std::string::npos) @@ -200,7 +199,6 @@ class gz::sim::SystemLoaderPrivate // Default plugin search path environment variable public: std::string pluginPathEnv{"GZ_SIM_SYSTEM_PLUGIN_PATH"}; - public: std::string pluginPathEnvDeprecated{"IGN_GAZEBO_SYSTEM_PLUGIN_PATH"}; /// \brief Plugin loader instace public: gz::plugin::Loader loader; diff --git a/src/cmd/cmdsim.rb.in b/src/cmd/cmdsim.rb.in index 65946d3494..866dc83ca5 100755 --- a/src/cmd/cmdsim.rb.in +++ b/src/cmd/cmdsim.rb.in @@ -458,16 +458,6 @@ has properly set the DYLD_LIBRARY_PATH environment variables." else resourcePathEnv = ENV['GZ_SIM_RESOURCE_PATH'] - if resourcePathEnv.nil? - resourcePathEnv = ENV['IGN_GAZEBO_RESOURCE_PATH'] - - if !resourcePathEnv.nil? - puts " -Using deprecated environment variable [IGN_GAZEBO_RESOURCE_PATH]. -Please use [GZ_SIM_RESOURCE_PATH] instead." - end - end - if !resourcePathEnv.nil? resourcePaths = resourcePathEnv.split(':') for resourcePath in resourcePaths diff --git a/src/gui/plugins/video_recorder/VideoRecorder.cc b/src/gui/plugins/video_recorder/VideoRecorder.cc index 1425476071..f6e17abf34 100644 --- a/src/gui/plugins/video_recorder/VideoRecorder.cc +++ b/src/gui/plugins/video_recorder/VideoRecorder.cc @@ -341,7 +341,7 @@ void VideoRecorder::OnStart(const QString &_format) { std::unique_lock lock(this->dataPtr->recordMutex); this->dataPtr->format = _format.toStdString(); - this->dataPtr->filename = "ign_recording." + this->dataPtr->format; + this->dataPtr->filename = "gz_recording." + this->dataPtr->format; this->dataPtr->recordVideo = true; this->dataPtr->recording = true; } diff --git a/src/systems/lighter_than_air_dynamics/LighterThanAirDynamics.cc b/src/systems/lighter_than_air_dynamics/LighterThanAirDynamics.cc index c895235e22..050cc43674 100644 --- a/src/systems/lighter_than_air_dynamics/LighterThanAirDynamics.cc +++ b/src/systems/lighter_than_air_dynamics/LighterThanAirDynamics.cc @@ -457,8 +457,3 @@ GZ_ADD_PLUGIN( GZ_ADD_PLUGIN_ALIAS( LighterThanAirDynamics, "gz::sim::systems::LighterThanAirDynamics") - -// TODO(CH3): Deprecated, remove on version 8 -GZ_ADD_PLUGIN_ALIAS( - LighterThanAirDynamics, - "ignition::gazebo::systems::LighterThanAirDynamics") diff --git a/src/systems/log/LogPlayback.cc b/src/systems/log/LogPlayback.cc index df759ae79f..b217a35142 100644 --- a/src/systems/log/LogPlayback.cc +++ b/src/systems/log/LogPlayback.cc @@ -510,14 +510,6 @@ void LogPlayback::Update(const UpdateInfo &_info, EntityComponentManager &_ecm) { auto msgType = iter->Type(); - // Support ignition.msgs for backwards compatibility. Remove on gz-sim9 - std::string deprecatedPrefix{"ignition.msgs"}; - auto pos = msgType.find(deprecatedPrefix); - if (pos != std::string::npos) - { - msgType.replace(pos, deprecatedPrefix.size(), "gz.msgs"); - } - if (msgType == "gz.msgs.SerializedState") { msgs::SerializedState msg; diff --git a/src/systems/physics/Physics.cc b/src/systems/physics/Physics.cc index ed2b24acf2..4d4b6da06f 100644 --- a/src/systems/physics/Physics.cc +++ b/src/systems/physics/Physics.cc @@ -448,8 +448,6 @@ class gz::sim::systems::PhysicsPrivate /// \brief Environment variable which holds paths to look for engine plugins public: std::string pluginPathEnv = "GZ_SIM_PHYSICS_ENGINE_PATH"; - public: std::string pluginPathEnvDeprecated = \ - "IGN_GAZEBO_PHYSICS_ENGINE_PATH"; ////////////////////////////////////////////////// ////////////// Optional Features ///////////////// diff --git a/test/benchmark/ecm_serialize.cc b/test/benchmark/ecm_serialize.cc index 2d976df4db..ad314e9693 100644 --- a/test/benchmark/ecm_serialize.cc +++ b/test/benchmark/ecm_serialize.cc @@ -41,24 +41,24 @@ inline namespace GZ_SIM_VERSION_NAMESPACE { namespace components { using IntComponent = components::Component; -GZ_SIM_REGISTER_COMPONENT("ign_gazebo_components.IntComponent", +GZ_SIM_REGISTER_COMPONENT("gz_sim_components.IntComponent", IntComponent) using UIntComponent = components::Component; -GZ_SIM_REGISTER_COMPONENT("ign_gazebo_components.UIntComponent", +GZ_SIM_REGISTER_COMPONENT("gz_sim_components.UIntComponent", UIntComponent) using DoubleComponent = components::Component; -GZ_SIM_REGISTER_COMPONENT("ign_gazebo_components.DoubleComponent", +GZ_SIM_REGISTER_COMPONENT("gz_sim_components.DoubleComponent", DoubleComponent) using StringComponent = components::Component; -GZ_SIM_REGISTER_COMPONENT("ign_gazebo_components.StringComponent", +GZ_SIM_REGISTER_COMPONENT("gz_sim_components.StringComponent", StringComponent) using BoolComponent = components::Component; -GZ_SIM_REGISTER_COMPONENT("ign_gazebo_components.BoolComponent", +GZ_SIM_REGISTER_COMPONENT("gz_sim_components.BoolComponent", BoolComponent) } } diff --git a/test/integration/each_new_removed.cc b/test/integration/each_new_removed.cc index 144381aa43..cbd367b333 100644 --- a/test/integration/each_new_removed.cc +++ b/test/integration/each_new_removed.cc @@ -37,7 +37,7 @@ using namespace gz; using namespace std::chrono_literals; using IntComponent = sim::components::Component; -GZ_SIM_REGISTER_COMPONENT("ign_gazebo_components.IntComponent", +GZ_SIM_REGISTER_COMPONENT("gz_sim_components.IntComponent", IntComponent) class EachNewRemovedFixture : public InternalFixture<::testing::Test> diff --git a/test/media/levels_log/state.tlog b/test/media/levels_log/state.tlog index 9408ea34b8b2872a8856f045b863237c2ff15dc8..b9d7e513df9f2f618ba968b29ad68a766a0a5d13 100644 GIT binary patch delta 131 zcmZoTpxBV{h`NgU6VWNyI4EjK^=8yL6AMF`|m=X5fF!f0BRkWSi}eEXi&Nvnq#0Qltl=`vAMM*e+A{(%6A&{4F$)m0 X0x=s9vjZ^)5OV@C*Y=P0-24jwyudT2 diff --git a/tutorials/install.md b/tutorials/install.md index 2e5bbecea7..db06f13db2 100644 --- a/tutorials/install.md +++ b/tutorials/install.md @@ -98,7 +98,7 @@ feature which hasn't been released yet. 2. Install dependencies ``` - brew install --only-dependencies ignition-gazebo<#> + brew install --only-dependencies gz-sim<#> ``` 3. Configure and build diff --git a/tutorials/joint_controller.md b/tutorials/joint_controller.md index 12b77666e2..f677794f4d 100644 --- a/tutorials/joint_controller.md +++ b/tutorials/joint_controller.md @@ -376,7 +376,7 @@ A detailed description and related parameter of JointTrajectoryController can be The trajectory message can be published or subscribed at `/model/${MODEL_NAME}/joint_trajectory` by default. -Message type: [`JointTrajectory`](https://gazebosim.org/api/msgs/7.2/classignition_1_1msgs_1_1JointTrajectory.html) +Message type: [`JointTrajectory`](https://github.com/gazebosim/gz-msgs/blob/gz-msgs10/proto/gz/msgs/joint_trajectory.proto) ### Example usage: diff --git a/tutorials/migration_sensor_api.md b/tutorials/migration_sensor_api.md index de2c996104..b9e3504d23 100644 --- a/tutorials/migration_sensor_api.md +++ b/tutorials/migration_sensor_api.md @@ -61,24 +61,24 @@ Classic | Gazebo -- | -- Category | TODO FillMsg | TODO -Id | `ignition::gazebo::Sensor::Entity` +Id | `gz::sim::Sensor::Entity` IsActive | TODO LastMeasurementTime | TODO LastUpdateTime | TODO -Name | `ignition::gazebo::Sensor::Name` +Name | `gz::sim::Sensor::Name` NextRequiredTimestamp | TODO Noise | TODO -Pose | `ignition::gazebo::Sensor::Pose` +Pose | `gz::sim::Sensor::Pose` ResetLastUpdateTime | TODO -ScopedName | `ignition::gazebo::scopedName` +ScopedName | `gz::sim::scopedName` SetActive | TODO SetPose | TODO SetUpdateRate | TODO -Topic | `ignition::gazebo::Sensor::Topic` -Type | `ignition::gazebo::entityType` +Topic | `gz::sim::Sensor::Topic` +Type | `gz::sim::entityType` UpdateRate | TODO Visualize | TODO -WorldName | `ignition::gazebo::worldEntity` +WorldName | `gz::sim::worldEntity` --- @@ -94,8 +94,8 @@ they deal with entity IDs. Classic | Gazebo -- | -- -ParentId | `ignition::gazebo::Sensor::Parent` -ParentName | `ignition::gazebo::Sensor::Parent` +ParentId | `gz::sim::Sensor::Parent` +ParentName | `gz::sim::Sensor::Parent` --- @@ -124,6 +124,6 @@ Classic | Gazebo ConnectUpdated | TODO Fini | N/A Init | N/A -Load | `ignition::gazebo::SdfEntityCreator::CreateEntities` +Load | `gz::sim::SdfEntityCreator::CreateEntities` Update | Entities are updated by systems --- From 5c4f0cfdf2838152c417d6a0ddef98ce51b97a0f Mon Sep 17 00:00:00 2001 From: Arjo Chakravarty Date: Tue, 13 Aug 2024 03:41:22 +0800 Subject: [PATCH 25/80] Deprecate use of added mass via hydrodynamics (#2493) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Deprecate use of added mass via hydrodynamics I believe we should deprecate this option as it has instabilities. The `fluid_added_mass` approach is superior. We should update our tutorials as well. --------- Signed-off-by: Arjo Chakravarty Co-authored-by: Carlos Agüero --- src/systems/hydrodynamics/Hydrodynamics.cc | 18 +++++++++++++++++- src/systems/hydrodynamics/Hydrodynamics.hh | 19 +++++++++++-------- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/systems/hydrodynamics/Hydrodynamics.cc b/src/systems/hydrodynamics/Hydrodynamics.cc index 171ca8f021..c3cd80e9c1 100644 --- a/src/systems/hydrodynamics/Hydrodynamics.cc +++ b/src/systems/hydrodynamics/Hydrodynamics.cc @@ -340,7 +340,11 @@ void Hydrodynamics::Configure( << "\thttps://github.com/gazebosim/gz-sim/pull/1888" << std::endl; } + // Added mass according to Fossen's equations (p 37) + // Note: Adding added mass here is deprecated and will be removed in + // Gazebo J as this formulation has instabilities. + bool addedMassSpecified = false; this->dataPtr->Ma = Eigen::MatrixXd::Zero(6, 6); for(auto i = 0; i < 6; i++) { @@ -350,12 +354,24 @@ void Hydrodynamics::Configure( prefix += "Dot"; prefix += snameConventionVel[j]; this->dataPtr->Ma(i, j) = SdfParamDouble(_sdf, prefix, 0); + addedMassSpecified = (std::abs(this->dataPtr->Ma(i, j)) > 1e-6) + && addedMassSpecified; } } _sdf->Get("disable_coriolis", this->dataPtr->disableCoriolis, false); _sdf->Get("disable_added_mass", this->dataPtr->disableAddedMass, false); - + if (!this->dataPtr->disableAddedMass || addedMassSpecified) + { + gzerr << "The use of added mass through this plugin is deprecated and will" + << "be removed in Gazebo J* as this formulation has instabilities." + << " We recommend using the SDF `` tag based method" + << "[http://sdformat.org/spec?ver=1.11&elem=link" + << "#inertial_fluid_added_mass]" + << "To get rid of this warning we recommend setting" + << "` to true." + << std::endl; + } // Create model object, to access convenient functions auto model = gz::sim::Model(_entity); diff --git a/src/systems/hydrodynamics/Hydrodynamics.hh b/src/systems/hydrodynamics/Hydrodynamics.hh index 1ada82b467..42d960a0ce 100644 --- a/src/systems/hydrodynamics/Hydrodynamics.hh +++ b/src/systems/hydrodynamics/Hydrodynamics.hh @@ -46,12 +46,12 @@ namespace systems /// quadratic drag and coriolis force. /// /// ### Diagonal terms: - /// * - Added mass in x direction [kg] - /// * - Added mass in y direction [kg] - /// * - Added mass in z direction [kg] - /// * - Added mass in roll direction [kgm^2] - /// * - Added mass in pitch direction [kgm^2] - /// * - Added mass in yaw direction [kgm^2] + /// * - (Deprecated) Added mass in x direction [kg] + /// * - (Deprecated) Added mass in y direction [kg] + /// * - (Deprecated) Added mass in z direction [kg] + /// * - (Deprecated) Added mass in roll direction [kgm^2] + /// * - (Deprecated) Added mass in pitch direction [kgm^2] + /// * - (Deprecated) Added mass in yaw direction [kgm^2] /// * - Quadratic damping, 2nd order, x component [kg/m] /// * - Linear damping, 1st order, x component [kg] /// * - Quadratic damping, 2nd order, y component [kg/m] @@ -70,10 +70,13 @@ namespace systems /// non-diagonal sides. We use the SNAMe convention of naming search terms. /// (x, y, z) correspond to the respective axis. (k, m, n) correspond to /// roll, pitch and yaw. Similarly U, V, W represent velocity vectors in - /// X, Y and Z axis while P, Q, R representangular velocity in roll, pitch + /// X, Y and Z axis while P, Q, R represent angular velocity in roll, pitch /// and yaw axis respectively. /// * Added Mass: <{x|y|z|k|m|n}Dot{U|V|W|P|Q|R}> e.g. - /// Units are either kg or kgm^2 depending on the choice of terms. + /// (Deprecated) Units are either kg or kgm^2 depending on the + /// choice of terms. You should use the sdf method based spec + // for `fluid_added_mass`: + /// http://sdformat.org/spec?ver=1.11&elem=link#inertial_fluid_added_mass /// * Quadratic Damping With abs term (this is probably what you want): /// <{x|y|z|k|m|n}{U|V|W|P|Q|R}abs{U|V|W|P|Q|R}> /// e.g. From 2f4d8c3c0972f458330c4e0812a8afccf3d1578e Mon Sep 17 00:00:00 2001 From: Steve Peters Date: Tue, 13 Aug 2024 23:29:48 -0700 Subject: [PATCH 26/80] ForceTorque system: write WrenchMeasured to ECM (#2494) * ForceTorque system: use Update, not PostUpdate and set gz:system_priority to positive value for force_torque system in example and test worlds to ensure it runs after Physics::Update. * Add WrenchMeasured component * Write WrenchMeasured to ECM in ForceTorque::Update if component exists. This allows users to enable writing the sensor data to the ECM by creating the component. * Model.hh: add nested model accessor APIs ModelByName and ModelCount. These are needed for the updated ForceTorque test. * sensor_TEST.py: move PreUpdate callback to Update The test's PreUpdate callback assumes that it executes after the ForceTorque::PreUpdate, so just move it to Update to guarantee it. Signed-off-by: Steve Peters --- Migration.md | 5 + examples/worlds/sensors.sdf | 1 + include/gz/sim/Model.hh | 14 +++ include/gz/sim/components/WrenchMeasured.hh | 57 +++++++++++ python/test/joint_test.sdf | 6 +- python/test/sensor_TEST.py | 18 ++-- src/Model.cc | 16 +++ src/systems/force_torque/ForceTorque.cc | 24 +++-- src/systems/force_torque/ForceTorque.hh | 6 +- src/systems/physics/Physics.cc | 2 +- test/integration/force_torque_system.cc | 102 +++++++++++++++++++- test/integration/model.cc | 24 +++++ test/worlds/force_torque.sdf | 4 +- 13 files changed, 251 insertions(+), 28 deletions(-) create mode 100644 include/gz/sim/components/WrenchMeasured.hh diff --git a/Migration.md b/Migration.md index 2e55298ea9..47e8a26a45 100644 --- a/Migration.md +++ b/Migration.md @@ -12,6 +12,11 @@ release will remove the deprecated code. each time step, whereas previously the component values were set to `0` after each time step. Persistent velocity commands should be reapplied at each time step. + + The ForceTorque system has been changed from updating sensor data during + the parallelized `PostUpdate` phase to use the sequential `Update` phase + and writing directly to the ECM if a sensor entity has a `WrenchMeasured` + component. The ForceTorque system priority is specified to ensure that its + `Update` phase executes after `Physics::Update`. ## Gazebo Sim 7.x to 8.0 * **Deprecated** diff --git a/examples/worlds/sensors.sdf b/examples/worlds/sensors.sdf index 9717bb11b3..8ca7b63789 100644 --- a/examples/worlds/sensors.sdf +++ b/examples/worlds/sensors.sdf @@ -38,6 +38,7 @@ + 10 + +#include +#include +#include +#include + +namespace gz +{ +namespace sim +{ +// Inline bracket to help doxygen filtering. +inline namespace GZ_SIM_VERSION_NAMESPACE { + +namespace components +{ +/// \brief Wrench measured by a ForceTorqueSensor in SI units (Nm for torque, +/// N for force). +/// The wrench is expressed in the Sensor frame and the force component is +/// applied at the sensor origin. +/// \note The term Wrench is used here to mean a pair of 3D vectors representing +/// torque and force quantities expressed in a given frame and where the force +/// is applied at the origin of the frame. This is different from the Wrench +/// used in screw theory. +/// \note The value of force_offset in msgs::Wrench is ignored for this +/// component. The force is assumed to be applied at the origin of the sensor +/// frame. +using WrenchMeasured = + Component; +GZ_SIM_REGISTER_COMPONENT("gz_sim_components.WrenchMeasured", + WrenchMeasured) +} // namespace components +} +} +} + +#endif diff --git a/python/test/joint_test.sdf b/python/test/joint_test.sdf index 4c9d79345c..4fd300ffd7 100644 --- a/python/test/joint_test.sdf +++ b/python/test/joint_test.sdf @@ -1,8 +1,10 @@ - - + + + 10 + diff --git a/python/test/sensor_TEST.py b/python/test/sensor_TEST.py index aba4c61ca9..61068c3fa3 100755 --- a/python/test/sensor_TEST.py +++ b/python/test/sensor_TEST.py @@ -33,11 +33,11 @@ def test_model(self): file_path = os.path.dirname(os.path.realpath(__file__)) fixture = TestFixture(os.path.join(file_path, 'joint_test.sdf')) - def on_post_udpate_cb(_info, _ecm): + def on_post_update_cb(_info, _ecm): self.post_iterations += 1 - def on_pre_udpate_cb(_info, _ecm): - self.pre_iterations += 1 + def on_update_cb(_info, _ecm): + self.iterations += 1 world_e = world_entity(_ecm) self.assertNotEqual(K_NULL_ENTITY, world_e) w = World(world_e) @@ -53,19 +53,19 @@ def on_pre_udpate_cb(_info, _ecm): # Pose Test self.assertEqual(Pose3d(0, 1, 0, 0, 0, 0), sensor.pose(_ecm)) # Topic Test - if self.pre_iterations <= 1: + if self.iterations <= 1: self.assertEqual(None, sensor.topic(_ecm)) else: self.assertEqual('sensor_topic_test', sensor.topic(_ecm)) # Parent Test self.assertEqual(j.entity(), sensor.parent(_ecm)) - def on_udpate_cb(_info, _ecm): - self.iterations += 1 + def on_pre_update_cb(_info, _ecm): + self.pre_iterations += 1 - fixture.on_post_update(on_post_udpate_cb) - fixture.on_update(on_udpate_cb) - fixture.on_pre_update(on_pre_udpate_cb) + fixture.on_post_update(on_post_update_cb) + fixture.on_update(on_update_cb) + fixture.on_pre_update(on_pre_update_cb) fixture.finalize() server = fixture.server() diff --git a/src/Model.cc b/src/Model.cc index a23779981f..01f4538fb7 100644 --- a/src/Model.cc +++ b/src/Model.cc @@ -148,6 +148,16 @@ Entity Model::LinkByName(const EntityComponentManager &_ecm, components::Link()); } +////////////////////////////////////////////////// +Entity Model::ModelByName(const EntityComponentManager &_ecm, + const std::string &_name) const +{ + return _ecm.EntityByComponents( + components::ParentEntity(this->dataPtr->id), + components::Name(_name), + components::Model()); +} + ////////////////////////////////////////////////// std::vector Model::Joints(const EntityComponentManager &_ecm) const { @@ -184,6 +194,12 @@ uint64_t Model::LinkCount(const EntityComponentManager &_ecm) const return this->Links(_ecm).size(); } +////////////////////////////////////////////////// +uint64_t Model::ModelCount(const EntityComponentManager &_ecm) const +{ + return this->Models(_ecm).size(); +} + ////////////////////////////////////////////////// void Model::SetWorldPoseCmd(EntityComponentManager &_ecm, const math::Pose3d &_pose) diff --git a/src/systems/force_torque/ForceTorque.cc b/src/systems/force_torque/ForceTorque.cc index 8792f514d5..d704e99ec5 100644 --- a/src/systems/force_torque/ForceTorque.cc +++ b/src/systems/force_torque/ForceTorque.cc @@ -44,6 +44,7 @@ #include "gz/sim/components/Pose.hh" #include "gz/sim/components/Sensor.hh" #include "gz/sim/components/World.hh" +#include "gz/sim/components/WrenchMeasured.hh" #include "gz/sim/EntityComponentManager.hh" #include "gz/sim/Util.hh" @@ -77,7 +78,7 @@ class gz::sim::systems::ForceTorquePrivate public: sensors::SensorFactory sensorFactory; /// \brief Keep list of sensors that were created during the previous - /// `PostUpdate`, so that components can be created during the next + /// `Update`, so that components can be created during the next /// `PreUpdate`. public: std::unordered_set newSensors; @@ -157,10 +158,10 @@ void ForceTorque::PreUpdate(const UpdateInfo &/*_info*/, } ////////////////////////////////////////////////// -void ForceTorque::PostUpdate(const UpdateInfo &_info, - const EntityComponentManager &_ecm) +void ForceTorque::Update(const UpdateInfo &_info, + EntityComponentManager &_ecm) { - GZ_PROFILE("ForceTorque::PostUpdate"); + GZ_PROFILE("ForceTorque::Update"); // \TODO(anyone) Support rewind if (_info.dt < std::chrono::steady_clock::duration::zero()) @@ -176,15 +177,15 @@ void ForceTorque::PostUpdate(const UpdateInfo &_info, if (!_info.paused) { // check to see if update is necessary - // we only update if there is at least one sensor that needs data - // and that sensor has subscribers. + // we only update if there is at least one sensor that needs data. // note: gz-sensors does its own throttling. Here the check is mainly // to avoid doing work in the ForceTorquePrivate::Update function bool needsUpdate = false; for (const auto &[sensorEntity, sensor] : this->dataPtr->entitySensorMap) { if (sensor->NextDataUpdateTime() <= _info.simTime && - sensor->HasConnections()) + (sensor->HasConnections() || + _ecm.Component(sensorEntity) != nullptr)) { needsUpdate = true; break; @@ -203,6 +204,13 @@ void ForceTorque::PostUpdate(const UpdateInfo &_info, // * Apply noise // * Publish to gz-transport topic sensor->Update(_info.simTime, false); + auto wrenchComponent = + _ecm.Component(sensorEntity); + if (wrenchComponent) + { + const auto &measuredWrench = sensor->MeasuredWrench(); + *wrenchComponent = components::WrenchMeasured(measuredWrench); + } } } @@ -445,7 +453,7 @@ void ForceTorquePrivate::RemoveForceTorqueEntities( GZ_ADD_PLUGIN(ForceTorque, System, ForceTorque::ISystemPreUpdate, - ForceTorque::ISystemPostUpdate + ForceTorque::ISystemUpdate ) GZ_ADD_PLUGIN_ALIAS(ForceTorque, "gz::sim::systems::ForceTorque") diff --git a/src/systems/force_torque/ForceTorque.hh b/src/systems/force_torque/ForceTorque.hh index 09b5b7ed70..2b13d01cbb 100644 --- a/src/systems/force_torque/ForceTorque.hh +++ b/src/systems/force_torque/ForceTorque.hh @@ -42,7 +42,7 @@ namespace systems class ForceTorque: public System, public ISystemPreUpdate, - public ISystemPostUpdate + public ISystemUpdate { /// \brief Constructor public: ForceTorque(); @@ -55,8 +55,8 @@ namespace systems EntityComponentManager &_ecm) final; /// Documentation inherited - public: void PostUpdate(const UpdateInfo &_info, - const EntityComponentManager &_ecm) final; + public: void Update(const UpdateInfo &_info, + EntityComponentManager &_ecm) final; /// \brief Private data pointer. private: std::unique_ptr dataPtr; diff --git a/src/systems/physics/Physics.cc b/src/systems/physics/Physics.cc index 4d4b6da06f..6e1bd2905c 100644 --- a/src/systems/physics/Physics.cc +++ b/src/systems/physics/Physics.cc @@ -432,7 +432,7 @@ class gz::sim::systems::PhysicsPrivate } return true; }}; - /// \brief msgs::Contacts equality comparison function. + /// \brief msgs::Wrench equality comparison function. public: std::function wrenchEql{ [](const msgs::Wrench &_a, const msgs::Wrench &_b) diff --git a/test/integration/force_torque_system.cc b/test/integration/force_torque_system.cc index dd4684e627..1841ef1728 100644 --- a/test/integration/force_torque_system.cc +++ b/test/integration/force_torque_system.cc @@ -24,10 +24,15 @@ #include #include +#include "gz/sim/components/ForceTorque.hh" +#include "gz/sim/components/Model.hh" #include "gz/sim/components/Name.hh" #include "gz/sim/components/Sensor.hh" -#include "gz/sim/components/ForceTorque.hh" +#include "gz/sim/components/WrenchMeasured.hh" +#include "gz/sim/Joint.hh" +#include "gz/sim/Link.hh" +#include "gz/sim/Model.hh" #include "gz/sim/Server.hh" #include "gz/sim/SystemLoader.hh" #include "test_config.hh" @@ -43,7 +48,7 @@ class ForceTorqueTest : public InternalFixture<::testing::Test> }; ///////////////////////////////////////////////// -TEST_F(ForceTorqueTest, GZ_UTILS_TEST_DISABLED_ON_WIN32(MeasureWeight)) +TEST_F(ForceTorqueTest, GZ_UTILS_TEST_DISABLED_ON_WIN32(MeasureWeightTopic)) { using namespace std::chrono_literals; // Start server @@ -59,8 +64,8 @@ TEST_F(ForceTorqueTest, GZ_UTILS_TEST_DISABLED_ON_WIN32(MeasureWeight)) // Having iters exactly in sync with update rate can lead to a race condition // in the test between simulation and transport - size_t iters = 999u; - size_t updates = 100u; + const size_t iters = 999u; + const size_t updates = 100u; std::vector wrenches; wrenches.reserve(updates); @@ -100,6 +105,95 @@ TEST_F(ForceTorqueTest, GZ_UTILS_TEST_DISABLED_ON_WIN32(MeasureWeight)) } } +///////////////////////////////////////////////// +TEST_F(ForceTorqueTest, GZ_UTILS_TEST_DISABLED_ON_WIN32(MeasureWeightECM)) +{ + using namespace std::chrono_literals; + // Start server + ServerConfig serverConfig; + const auto sdfFile = common::joinPaths( + std::string(PROJECT_SOURCE_PATH), "test", "worlds", "force_torque.sdf"); + serverConfig.SetSdfFile(sdfFile); + + Server server(serverConfig); + EXPECT_FALSE(server.Running()); + EXPECT_FALSE(*server.Running(0)); + server.SetUpdatePeriod(1ns); + + // Get entity for //test1/scale/sensor_joint/force_torque_sensor and add + // WrenchMeasured component on first PreUpdate + Entity sensorEntity; + bool firstRun = true; + auto addWrenchComponent = + [&firstRun, &sensorEntity]( + const UpdateInfo &, EntityComponentManager &_ecm) + { + if (firstRun) + { + firstRun = false; + + // Get sensorEntity + auto test1ModelEntity = _ecm.EntityByComponents( + components::Model(), components::Name("test1")); + Model test1Model(test1ModelEntity); + + Model scaleModel(test1Model.ModelByName(_ecm, "scale")); + ASSERT_TRUE(scaleModel.Valid(_ecm)); + + Joint sensorJoint(scaleModel.JointByName(_ecm, "sensor_joint")); + ASSERT_TRUE(sensorJoint.Valid(_ecm)); + + sensorEntity = sensorJoint.SensorByName(_ecm, "force_torque_sensor"); + + // Expect it doesn't yet have WrenchMeasured + EXPECT_EQ(nullptr, + _ecm.Component(sensorEntity)); + + // Add WrenchMeasured + _ecm.CreateComponent(sensorEntity, components::WrenchMeasured()); + + EXPECT_NE(nullptr, + _ecm.Component(sensorEntity)); + } + }; + + // Get the MeasuredWrench for //test1/scale/sensor_joint/force_torque_sensor + msgs::Wrench wrench; + auto getMeasuredWrench = + [&wrench, &sensorEntity](const UpdateInfo &, + const EntityComponentManager &_ecm) + { + auto measuredWrench = + _ecm.Component(sensorEntity); + ASSERT_NE(nullptr, measuredWrench); + if (measuredWrench) + { + wrench = measuredWrench->Data(); + } + }; + + // Add the system + test::Relay testSystem; + testSystem.OnPreUpdate(addWrenchComponent); + testSystem.OnPostUpdate(getMeasuredWrench); + server.AddSystem(testSystem.systemPtr); + server.Run(true, 1, false); + + const size_t iters = 999u; + + // Run server (iters-1) steps, since we already took 1 step above + server.Run(true, iters - 1, false); + ASSERT_EQ(iters, *server.IterationCount()); + + const double kSensorMass = 0.2; + const double kWeightMass = 10; + const double kGravity = 9.8; + const math::Vector3 expectedForce = + math::Vector3d{0, 0, kGravity * (kSensorMass + kWeightMass)}; + EXPECT_EQ(expectedForce, msgs::Convert(wrench.force())); + EXPECT_EQ(math::Vector3d::Zero, msgs::Convert(wrench.torque())); +} + ///////////////////////////////////////////////// TEST_F(ForceTorqueTest, GZ_UTILS_TEST_DISABLED_ON_WIN32(SensorPoseOffset)) { diff --git a/test/integration/model.cc b/test/integration/model.cc index f878088631..f4a0f00b2c 100644 --- a/test/integration/model.cc +++ b/test/integration/model.cc @@ -164,6 +164,30 @@ TEST_F(ModelIntegrationTest, SourceFilePath) EXPECT_EQ("/tmp/path", model.SourceFilePath(ecm)); } +////////////////////////////////////////////////// +TEST_F(ModelIntegrationTest, ModelByName) +{ + EntityComponentManager ecm; + + // Model + auto eModel = ecm.CreateEntity(); + Model model(eModel); + EXPECT_EQ(eModel, model.Entity()); + EXPECT_EQ(0u, model.ModelCount(ecm)); + + // Nested Model + auto eNestedModel = ecm.CreateEntity(); + ecm.CreateComponent(eNestedModel, components::Model()); + ecm.CreateComponent(eNestedModel, + components::ParentEntity(eModel)); + ecm.CreateComponent(eNestedModel, + components::Name("nested_model_name")); + + // Check model + EXPECT_EQ(eNestedModel, model.ModelByName(ecm, "nested_model_name")); + EXPECT_EQ(1u, model.ModelCount(ecm)); +} + ////////////////////////////////////////////////// TEST_F(ModelIntegrationTest, LinkByName) { diff --git a/test/worlds/force_torque.sdf b/test/worlds/force_torque.sdf index 66c7dd9e87..9a06c97c80 100644 --- a/test/worlds/force_torque.sdf +++ b/test/worlds/force_torque.sdf @@ -5,7 +5,9 @@ 0 - + + 10 + true From 5039e2096e452a66aeb1f9f1c7ea128b105ac0ac Mon Sep 17 00:00:00 2001 From: Yaswanth <92177410+yaswanth1701@users.noreply.github.com> Date: Thu, 15 Aug 2024 03:34:15 +0530 Subject: [PATCH 27/80] Physics: set link velocity from *VelocityReset components (#2489) Signed-off-by: yaswanth1701 Signed-off-by: Steve Peters Signed-off-by: Yaswanth <92177410+yaswanth1701@users.noreply.github.com> Co-authored-by: Steve Peters Co-authored-by: Steve Peters --- .../gz/sim/components/AngularVelocityReset.hh | 54 ++++ .../gz/sim/components/LinearVelocityReset.hh | 54 ++++ src/systems/physics/Physics.cc | 146 ++++++++++ test/integration/physics_system.cc | 268 ++++++++++++++++++ 4 files changed, 522 insertions(+) create mode 100644 include/gz/sim/components/AngularVelocityReset.hh create mode 100644 include/gz/sim/components/LinearVelocityReset.hh diff --git a/include/gz/sim/components/AngularVelocityReset.hh b/include/gz/sim/components/AngularVelocityReset.hh new file mode 100644 index 0000000000..11292852ed --- /dev/null +++ b/include/gz/sim/components/AngularVelocityReset.hh @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2024 Open Source Robotics Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +#ifndef GZ_SIM_COMPONENTS_WORLDANGULARVELOCITYRESET_HH_ +#define GZ_SIM_COMPONENTS_WORLDANGULARVELOCITYRESET_HH_ + +#include +#include +#include +#include +#include + +namespace gz +{ +namespace sim +{ +// Inline bracket to help doxygen filtering. +inline namespace GZ_SIM_VERSION_NAMESPACE { +namespace components +{ + /// \brief Angular velocity of an entity, in its own frame + /// and in SI units (rad/s). The angular velocity is + // represented by gz::math::Vector3d. + using AngularVelocityReset = Component; + GZ_SIM_REGISTER_COMPONENT( + "gz_sim_components.AngularVelocityReset", AngularVelocityReset) + + /// \brief Angular velocity of an entity in the world frame + /// and in SI units (rad/s). The angular velocity is + // represented by gz::math::Vector3d. + using WorldAngularVelocityReset = Component; + GZ_SIM_REGISTER_COMPONENT( + "gz_sim_components.WorldAngularVelocityReset", WorldAngularVelocityReset) +} +} +} +} + +#endif diff --git a/include/gz/sim/components/LinearVelocityReset.hh b/include/gz/sim/components/LinearVelocityReset.hh new file mode 100644 index 0000000000..c7343105f3 --- /dev/null +++ b/include/gz/sim/components/LinearVelocityReset.hh @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2024 Open Source Robotics Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +#ifndef GZ_SIM_COMPONENTS_WORLDLINEARVELOCITYRESET_HH_ +#define GZ_SIM_COMPONENTS_WORLDLINEARVELOCITYRESET_HH_ + +#include +#include +#include +#include +#include + +namespace gz +{ +namespace sim +{ +// Inline bracket to help doxygen filtering. +inline namespace GZ_SIM_VERSION_NAMESPACE { +namespace components +{ + /// \brief Linear velocity of an entity in its own frame + /// and in SI units (m/s). The linear velocity is + /// represented by gz::math::Vector3d. + using LinearVelocityReset = Component; + GZ_SIM_REGISTER_COMPONENT( + "gz_sim_components.LinearVelocityReset", LinearVelocityReset) + + /// \brief Linear velocity of an entity in the world frame + /// and in SI units (m/s). The linear velocity is + /// represented by gz::math::Vector3d. + using WorldLinearVelocityReset = Component; + GZ_SIM_REGISTER_COMPONENT( + "gz_sim_components.WorldLinearVelocityReset", WorldLinearVelocityReset) +} +} +} +} + +#endif diff --git a/src/systems/physics/Physics.cc b/src/systems/physics/Physics.cc index f073825dbc..bf5bd25781 100644 --- a/src/systems/physics/Physics.cc +++ b/src/systems/physics/Physics.cc @@ -100,6 +100,7 @@ #include "gz/sim/components/AngularAcceleration.hh" #include "gz/sim/components/AngularVelocity.hh" #include "gz/sim/components/AngularVelocityCmd.hh" +#include "gz/sim/components/AngularVelocityReset.hh" #include "gz/sim/components/AxisAlignedBox.hh" #include "gz/sim/components/BatterySoC.hh" #include "gz/sim/components/CanonicalLink.hh" @@ -124,6 +125,7 @@ #include "gz/sim/components/LinearAcceleration.hh" #include "gz/sim/components/LinearVelocity.hh" #include "gz/sim/components/LinearVelocityCmd.hh" +#include "gz/sim/components/LinearVelocityReset.hh" #include "gz/sim/components/Link.hh" #include "gz/sim/components/Model.hh" #include "gz/sim/components/Name.hh" @@ -2710,6 +2712,122 @@ void PhysicsPrivate::UpdatePhysics(EntityComponentManager &_ecm) return true; }); + // Reset link linear velocity in world frame + _ecm.Each( + [&](const Entity &_entity, const components::Link *, + const components::WorldLinearVelocityReset *_worldlinearvelocityreset) + { + if (!this->entityLinkMap.HasEntity(_entity)) + { + gzwarn << "Failed to find link [" << _entity + << "]." << std::endl; + return true; + } + + auto linkPtrPhys = this->entityLinkMap.Get(_entity); + if (nullptr == linkPtrPhys) + return true; + + auto freeGroup = linkPtrPhys->FindFreeGroup(); + if (!freeGroup) + return true; + + auto rootLinkPtr = freeGroup->RootLink(); + if (rootLinkPtr != linkPtrPhys) + { + gzdbg << "Attempting to set linear velocity for link [ " << _entity + << " ] which is not root link of the FreeGroup." + << "Velocity won't be set." + << std::endl; + + return true; + } + + this->entityFreeGroupMap.AddEntity(_entity, freeGroup); + + auto worldLinearVelFeature = this->entityFreeGroupMap + .EntityCast(_entity); + if (!worldLinearVelFeature) + { + static bool informed{false}; + if (!informed) + { + gzdbg << "Attempting to set link linear velocity, but the " + << "physics engine doesn't support velocity commands. " + << "Velocity won't be set." + << std::endl; + informed = true; + } + return true; + } + + // Linear velocity in world frame + math::Vector3d worldLinearVel = _worldlinearvelocityreset->Data(); + + worldLinearVelFeature->SetWorldLinearVelocity( + math::eigen3::convert(worldLinearVel)); + + return true; + }); + + // Reset link angular velocity in world frame + _ecm.Each( + [&](const Entity &_entity, const components::Link *, + const components::WorldAngularVelocityReset + *_worldangularvelocityreset) + { + if (!this->entityLinkMap.HasEntity(_entity)) + { + gzwarn << "Failed to find link [" << _entity + << "]." << std::endl; + return true; + } + + auto linkPtrPhys = this->entityLinkMap.Get(_entity); + if (nullptr == linkPtrPhys) + return true; + + auto freeGroup = linkPtrPhys->FindFreeGroup(); + if (!freeGroup) + return true; + + auto rootLinkPtr = freeGroup->RootLink(); + if(rootLinkPtr != linkPtrPhys) + { + gzdbg << "Attempting to set angular velocity for link [ " << _entity + << " ] which is not root link of the FreeGroup." + << "Velocity won't be set." + << std::endl; + + return true; + } + + this->entityFreeGroupMap.AddEntity(_entity, freeGroup); + + auto worldAngularVelFeature = this->entityFreeGroupMap + .EntityCast(_entity); + + if (!worldAngularVelFeature) + { + static bool informed{false}; + if (!informed) + { + gzdbg << "Attempting to set link angular velocity, but the " + << "physics engine doesn't support velocity commands. " + << "Velocity won't be set." + << std::endl; + informed = true; + } + return true; + } + // Angular velocity in world frame + math::Vector3d worldAngularVel = _worldangularvelocityreset->Data(); + + worldAngularVelFeature->SetWorldAngularVelocity( + math::eigen3::convert(worldAngularVel)); + + return true; + }); // Populate bounding box info // Only compute bounding box if component exists to avoid unnecessary @@ -3645,6 +3763,34 @@ void PhysicsPrivate::UpdateSim(EntityComponentManager &_ecm, _ecm.RemoveComponent(entity); } + std::vector entitiesLinearVelocityReset; + _ecm.Each( + [&](const Entity &_entity, + components::WorldLinearVelocityReset *) -> bool + { + entitiesLinearVelocityReset.push_back(_entity); + return true; + }); + + for (const auto entity : entitiesLinearVelocityReset) + { + _ecm.RemoveComponent(entity); + } + + std::vector entitiesAngularVelocityReset; + _ecm.Each( + [&](const Entity &_entity, + components::WorldAngularVelocityReset *) -> bool + { + entitiesAngularVelocityReset.push_back(_entity); + return true; + }); + + for (const auto entity : entitiesAngularVelocityReset) + { + _ecm.RemoveComponent(entity); + } + std::vector entitiesCustomContactSurface; _ecm.Each( [&](const Entity &_entity, diff --git a/test/integration/physics_system.cc b/test/integration/physics_system.cc index 2e7989b09a..7a50c8c7db 100644 --- a/test/integration/physics_system.cc +++ b/test/integration/physics_system.cc @@ -48,6 +48,7 @@ #include "gz/sim/components/AngularAcceleration.hh" #include "gz/sim/components/AngularVelocity.hh" +#include "gz/sim/components/AngularVelocityReset.hh" #include "gz/sim/components/AxisAlignedBox.hh" #include "gz/sim/components/CanonicalLink.hh" #include "gz/sim/components/Collision.hh" @@ -67,6 +68,7 @@ #include "gz/sim/components/Link.hh" #include "gz/sim/components/LinearAcceleration.hh" #include "gz/sim/components/LinearVelocity.hh" +#include "gz/sim/components/LinearVelocityReset.hh" #include "gz/sim/components/Material.hh" #include "gz/sim/components/Model.hh" #include "gz/sim/components/Name.hh" @@ -747,6 +749,272 @@ TEST_F(PhysicsSystemFixture, EXPECT_NEAR(pos0, positions[1], 0.01); } +///////////////////////////////////////////////// +/// Test linear veocity reset component +TEST_F(PhysicsSystemFixture, + GZ_UTILS_TEST_DISABLED_ON_WIN32(LinearVelocityResetComponent)) +{ + ServerConfig serverConfig; + + const auto sdfFile = std::string(PROJECT_SOURCE_PATH) + + "/test/worlds/diff_drive.sdf"; + + sdf::Root root; + root.Load(sdfFile); + sdf::World *world = root.WorldByIndex(0); + ASSERT_TRUE(nullptr != world); + + // Disable gravity + world->SetGravity(math::Vector3d::Zero); + + serverConfig.SetSdfRoot(root); + + Server server(serverConfig); + + server.SetUpdatePeriod(1ms); + + // Create a system just to get the ECM + EntityComponentManager *ecm{nullptr}; + test::Relay testSystem; + testSystem.OnPreUpdate([&](const UpdateInfo &, + EntityComponentManager &_ecm) + { + ecm = &_ecm; + }); + server.AddSystem(testSystem.systemPtr); + + // Run server and check we have the ECM + EXPECT_EQ(nullptr, ecm); + server.Run(true, 1, false); + EXPECT_NE(nullptr, ecm); + + // Get Link Entity's and objects + const std::string rootLinkName{"chassis"}; + auto rootLinkEntity = ecm->EntityByComponents( + components::Link(), components::Name(rootLinkName)); + Link rootLink(rootLinkEntity); + ASSERT_TRUE(rootLink.Valid(*ecm)); + + const std::string childLinkName{"caster"}; + auto childLinkEntity = ecm->EntityByComponents( + components::Link(), components::Name(childLinkName)); + Link childLink(childLinkEntity); + ASSERT_TRUE(childLink.Valid(*ecm)); + + // Enable velocity checks for each link + rootLink.EnableVelocityChecks(*ecm, true); + childLink.EnableVelocityChecks(*ecm, true); + EXPECT_NE(nullptr, + ecm->Component(rootLinkEntity)); + EXPECT_NE(nullptr, + ecm->Component(childLinkEntity)); + + // Step and expect velocities near zero + server.Run(true, 1, false); + { + auto rootLinkLinearVel = rootLink.WorldLinearVelocity(*ecm); + auto childLinkLinearVel = childLink.WorldLinearVelocity(*ecm); + ASSERT_NE(std::nullopt, rootLinkLinearVel); + ASSERT_NE(std::nullopt, childLinkLinearVel); + EXPECT_EQ(math::Vector3d::Zero, rootLinkLinearVel); + EXPECT_EQ(math::Vector3d::Zero, childLinkLinearVel); + } + + const math::Vector3d vel0(0.125, -0.5, 3.5); + + // Reset child link velocity to nonzero components (upward in Z) + // This shouldn't do anything, since it is not the root link of its FreeGroup + ecm->CreateComponent(childLinkEntity, + components::WorldLinearVelocityReset(vel0)); + + // Step and expect that all velocities are still zero + server.Run(true, 1, false); + { + auto rootLinkLinearVel = rootLink.WorldLinearVelocity(*ecm); + auto childLinkLinearVel = childLink.WorldLinearVelocity(*ecm); + ASSERT_NE(std::nullopt, rootLinkLinearVel); + ASSERT_NE(std::nullopt, childLinkLinearVel); + EXPECT_EQ(math::Vector3d::Zero, rootLinkLinearVel); + EXPECT_EQ(math::Vector3d::Zero, childLinkLinearVel); + } + + // Reset root link velocity to nonzero components (upward in Z) + ecm->CreateComponent(rootLinkEntity, + components::WorldLinearVelocityReset(vel0)); + + // Step and expect all links to have similar velocity + server.Run(true, 1, false); + { + auto rootLinkLinearVel = rootLink.WorldLinearVelocity(*ecm); + auto childLinkLinearVel = childLink.WorldLinearVelocity(*ecm); + ASSERT_NE(std::nullopt, rootLinkLinearVel); + ASSERT_NE(std::nullopt, childLinkLinearVel); + EXPECT_EQ(vel0, rootLinkLinearVel); + EXPECT_EQ(vel0, childLinkLinearVel); + } + // expect that reset component has been removed + EXPECT_EQ(nullptr, + ecm->Component(rootLinkEntity)); + + // Reset root link velocity to zero + ecm->CreateComponent(rootLinkEntity, + components::WorldLinearVelocityReset(math::Vector3d::Zero)); + + // Step and expect all links to have zero velocity + server.Run(true, 1, false); + { + auto rootLinkLinearVel = rootLink.WorldLinearVelocity(*ecm); + auto childLinkLinearVel = childLink.WorldLinearVelocity(*ecm); + ASSERT_NE(std::nullopt, rootLinkLinearVel); + ASSERT_NE(std::nullopt, childLinkLinearVel); + // TODO(scpeters) figure out why this isn't working + // EXPECT_EQ(math::Vector3d::Zero, rootLinkLinearVel); + // EXPECT_EQ(math::Vector3d::Zero, childLinkLinearVel); + } + // expect that reset component has been removed + EXPECT_EQ(nullptr, + ecm->Component(rootLinkEntity)); +} + +///////////////////////////////////////////////// +/// Test angular veocity reset component +TEST_F(PhysicsSystemFixture, + GZ_UTILS_TEST_DISABLED_ON_WIN32(AngularVelocityResetComponent)) +{ + ServerConfig serverConfig; + + const auto sdfFile = std::string(PROJECT_SOURCE_PATH) + + "/test/worlds/diff_drive.sdf"; + + sdf::Root root; + root.Load(sdfFile); + sdf::World *world = root.WorldByIndex(0); + ASSERT_TRUE(nullptr != world); + + // Disable gravity + world->SetGravity(math::Vector3d::Zero); + + serverConfig.SetSdfRoot(root); + + Server server(serverConfig); + + server.SetUpdatePeriod(1ms); + + // Create a system just to get the ECM + EntityComponentManager *ecm{nullptr}; + test::Relay testSystem; + testSystem.OnPreUpdate([&](const UpdateInfo &, + EntityComponentManager &_ecm) + { + ecm = &_ecm; + }); + server.AddSystem(testSystem.systemPtr); + + // Run server and check we have the ECM + EXPECT_EQ(nullptr, ecm); + server.Run(true, 1, false); + EXPECT_NE(nullptr, ecm); + + // Get model Entity's + const std::string modelName("vehicle"); + auto modelEntity = ecm->EntityByComponents( + components::Model(), components::Name(modelName)); + Model model(modelEntity); + ASSERT_TRUE(model.Valid(*ecm)); + + // Get Link Entity's and objects + const std::string rootLinkName{"chassis"}; + auto rootLinkEntity = ecm->EntityByComponents( + components::Link(), components::Name(rootLinkName)); + Link rootLink(rootLinkEntity); + ASSERT_TRUE(rootLink.Valid(*ecm)); + + const std::string childLinkName{"caster"}; + auto childLinkEntity = ecm->EntityByComponents( + components::Link(), components::Name(childLinkName)); + Link childLink(childLinkEntity); + ASSERT_TRUE(childLink.Valid(*ecm)); + + // Enable velocity checks for each link + rootLink.EnableVelocityChecks(*ecm, true); + childLink.EnableVelocityChecks(*ecm, true); + EXPECT_NE(nullptr, + ecm->Component(rootLinkEntity)); + EXPECT_NE(nullptr, + ecm->Component(childLinkEntity)); + + // Step and expect velocities near zero + server.Run(true, 1, false); + { + auto rootLinkAngularVel = rootLink.WorldAngularVelocity(*ecm); + auto childLinkAngularVel = childLink.WorldAngularVelocity(*ecm); + ASSERT_NE(std::nullopt, rootLinkAngularVel); + ASSERT_NE(std::nullopt, childLinkAngularVel); + EXPECT_EQ(math::Vector3d::Zero, rootLinkAngularVel); + EXPECT_EQ(math::Vector3d::Zero, childLinkAngularVel); + } + + const math::Pose3d pose0(0, 0, 1, 0, 0, 0); + // To avoid collision with ground plane while rotating + model.SetWorldPoseCmd(*ecm, pose0); + server.Run(true, 1, false); + + const math::Vector3d vel0(0.1, 5.0, 0.1); + + // Reset child link velocity to nonzero components + // This shouldn't do anything, since it is not the root link of its FreeGroup + ecm->CreateComponent(childLinkEntity, + components::WorldAngularVelocityReset(vel0)); + + // Step and expect that all velocities are still zero + server.Run(true, 1, false); + { + auto rootLinkAngularVel = rootLink.WorldAngularVelocity(*ecm); + auto childLinkAngularVel = childLink.WorldAngularVelocity(*ecm); + ASSERT_NE(std::nullopt, rootLinkAngularVel); + ASSERT_NE(std::nullopt, childLinkAngularVel); + EXPECT_EQ(math::Vector3d::Zero, rootLinkAngularVel); + EXPECT_EQ(math::Vector3d::Zero, childLinkAngularVel); + } + + // Reset root link velocity to nonzero components + ecm->CreateComponent(rootLinkEntity, + components::WorldAngularVelocityReset(vel0)); + + // Step and expect all links to have similar velocity + server.Run(true, 1, false); + { + auto rootLinkAngularVel = rootLink.WorldAngularVelocity(*ecm); + auto childLinkAngularVel = childLink.WorldAngularVelocity(*ecm); + ASSERT_NE(std::nullopt, rootLinkAngularVel); + ASSERT_NE(std::nullopt, childLinkAngularVel); + EXPECT_EQ(vel0, rootLinkAngularVel); + EXPECT_EQ(vel0, childLinkAngularVel); + } + // expect that reset component has been removed + EXPECT_EQ(nullptr, + ecm->Component(rootLinkEntity)); + + // Reset root link velocity to zero + ecm->CreateComponent(rootLinkEntity, + components::WorldAngularVelocityReset(math::Vector3d::Zero)); + + // Step and expect all links to have zero velocity + server.Run(true, 1, false); + { + auto rootLinkAngularVel = rootLink.WorldAngularVelocity(*ecm); + auto childLinkAngularVel = childLink.WorldAngularVelocity(*ecm); + ASSERT_NE(std::nullopt, rootLinkAngularVel); + ASSERT_NE(std::nullopt, childLinkAngularVel); + // TODO(scpeters) figure out why this isn't working + // EXPECT_EQ(math::Vector3d::Zero, rootLinkLinearVel); + // EXPECT_EQ(math::Vector3d::Zero, childLinkLinearVel); + } + // expect that reset component has been removed + EXPECT_EQ(nullptr, + ecm->Component(rootLinkEntity)); +} + ///////////////////////////////////////////////// /// Test joint veocity reset component TEST_F(PhysicsSystemFixture, From 0d5ff2dbc1bc17d0e18d0d2d14dd7f313637ccf9 Mon Sep 17 00:00:00 2001 From: Steve Peters Date: Sun, 18 Aug 2024 21:18:12 -0700 Subject: [PATCH 28/80] Add System interface to set default priority (#2500) This adds a new SystemConfigurePriority interface to gz::sim::System to configure the default priority value for the order of execution of PreUpdate and Update calls. This value can still be overridden by specifying the priority via the XML element. Several systems are modified to use this feature using constant priority values defined in gz/sim/System.hh: * The Physics and UserCommands systems are configured to execute before systems with default priority. * The ForceTorque system is configured to execute after Physics but before systems with default priority. Signed-off-by: Steve Peters --- Migration.md | 10 ++- include/gz/sim/System.hh | 39 +++++++++ src/SystemInternal.hh | 9 +++ src/SystemManager.cc | 12 ++- src/SystemManager_TEST.cc | 98 +++++++++++++++++------ src/systems/force_torque/ForceTorque.cc | 9 +++ src/systems/force_torque/ForceTorque.hh | 4 + src/systems/physics/Physics.cc | 8 ++ src/systems/physics/Physics.hh | 4 + src/systems/user_commands/UserCommands.cc | 8 ++ src/systems/user_commands/UserCommands.hh | 4 + 11 files changed, 177 insertions(+), 28 deletions(-) diff --git a/Migration.md b/Migration.md index 47e8a26a45..4f6632b474 100644 --- a/Migration.md +++ b/Migration.md @@ -12,11 +12,17 @@ release will remove the deprecated code. each time step, whereas previously the component values were set to `0` after each time step. Persistent velocity commands should be reapplied at each time step. + + Default priority values are specified for the `Physics` and `UserCommands` + systems to ensure that `Physics::Update` and `UserCommands::PreUpdate` + execute before systems with default execution priority. Several constants + for system priority are defined in `gz/sim/System.hh`. + The ForceTorque system has been changed from updating sensor data during the parallelized `PostUpdate` phase to use the sequential `Update` phase and writing directly to the ECM if a sensor entity has a `WrenchMeasured` - component. The ForceTorque system priority is specified to ensure that its - `Update` phase executes after `Physics::Update`. + component. The ForceTorque system priority is specified to use the + `gz::sim::systems::kPostPhysicsSensorPriority` constant to ensure that its + `Update` phase executes after `Physics::Update` and before systems with + default priority. ## Gazebo Sim 7.x to 8.0 * **Deprecated** diff --git a/include/gz/sim/System.hh b/include/gz/sim/System.hh index f531c1d023..327f9bddbe 100644 --- a/include/gz/sim/System.hh +++ b/include/gz/sim/System.hh @@ -103,6 +103,31 @@ namespace gz public: virtual ~System() = default; }; + /// \brief Define constant priority values for specific systems. + namespace systems + { + /// \brief Default priority value for the UserCommands system, with a very + /// negative value to indicate that it should run before most systems in + /// order to modify the ECM in response to user commands received over + /// gz-transport. This is especially important for user commands that add + /// objects to the world. + constexpr System::PriorityType kUserCommandsPriority = -16384; + + /// \brief A suggested priority value for a system that should execute + /// before the Physics system. + constexpr System::PriorityType kPrePhysicsPriority = -128; + + /// \brief Default priority value for the Physics system, with a negative + /// value ensuring that it will run before systems with priority + /// System::kDefaultPriority. + constexpr System::PriorityType kPhysicsPriority = -64; + + /// \brief A suggested priority value for sensor systems that should + /// execute after the Physics system but before the systems with priority + /// System::kDefaultPriority. + constexpr System::PriorityType kPostPhysicsSensorPriority = -32; + } + /// \class ISystemConfigure ISystem.hh gz/sim/System.hh /// \brief Interface for a system that implements optional configuration /// @@ -124,6 +149,20 @@ namespace gz EventManager &_eventMgr) = 0; }; + /// \class ISystemConfigure ISystem.hh gz/sim/System.hh + /// \brief Interface for a system that implements optional configuration + /// of the default priority value. + /// + /// ConfigurePriority is called before the system is instantiated to + /// override System::kDefaultPriority. It can still be overridden by the + /// XML priority element. + class ISystemConfigurePriority { + /// \brief Configure the default priority of the system, which can still + /// be overridden by the XML priority element. + /// \return The default priority for the system. + public: virtual System::PriorityType ConfigurePriority() = 0; + }; + /// \class ISystemConfigureParameters ISystem.hh gz/sim/System.hh /// \brief Interface for a system that declares parameters. /// diff --git a/src/SystemInternal.hh b/src/SystemInternal.hh index 0f4d442e4d..17b32b6758 100644 --- a/src/SystemInternal.hh +++ b/src/SystemInternal.hh @@ -48,6 +48,8 @@ namespace gz configure(systemPlugin->QueryInterface()), configureParameters( systemPlugin->QueryInterface()), + configurePriority( + systemPlugin->QueryInterface()), reset(systemPlugin->QueryInterface()), preupdate(systemPlugin->QueryInterface()), update(systemPlugin->QueryInterface()), @@ -66,6 +68,8 @@ namespace gz configure(dynamic_cast(_system.get())), configureParameters( dynamic_cast(_system.get())), + configurePriority( + dynamic_cast(_system.get())), reset(dynamic_cast(_system.get())), preupdate(dynamic_cast(_system.get())), update(dynamic_cast(_system.get())), @@ -95,6 +99,11 @@ namespace gz /// Will be nullptr if the System doesn't implement this interface. public: ISystemConfigureParameters *configureParameters = nullptr; + /// \brief Access this system via the ISystemConfigurePriority + /// interface. + /// Will be nullptr if the System doesn't implement this interface. + public: ISystemConfigurePriority *configurePriority = nullptr; + /// \brief Access this system via the ISystemReset interface /// Will be nullptr if the System doesn't implement this interface. public: ISystemReset *reset = nullptr; diff --git a/src/SystemManager.cc b/src/SystemManager.cc index 5da1bb5b82..dcb24902c1 100644 --- a/src/SystemManager.cc +++ b/src/SystemManager.cc @@ -113,12 +113,21 @@ size_t SystemManager::ActivatePendingSystems() this->systems.push_back(system); PriorityType p {System::kDefaultPriority}; + if (system.configurePriority) + { + p = system.configurePriority->ConfigurePriority(); + } const std::string kPriorityElementName {gz::sim::System::kPriorityElementName}; if (system.configureSdf && system.configureSdf->HasElement(kPriorityElementName)) { - p = system.configureSdf->Get(kPriorityElementName); + PriorityType newPriority = + system.configureSdf->Get(kPriorityElementName); + gzdbg << "Changing priority for system [" << system.name + << "] from {" << p + << "} to {" << newPriority << "}\n"; + p = newPriority; } if (system.configure) @@ -305,6 +314,7 @@ const std::vector& SystemManager::SystemsConfigure() return this->systemsConfigure; } +////////////////////////////////////////////////// const std::vector& SystemManager::SystemsConfigureParameters() { diff --git a/src/SystemManager_TEST.cc b/src/SystemManager_TEST.cc index 38ad82d726..956cb06810 100644 --- a/src/SystemManager_TEST.cc +++ b/src/SystemManager_TEST.cc @@ -28,6 +28,8 @@ using namespace gz::sim; +constexpr System::PriorityType kPriority = 64; + ///////////////////////////////////////////////// class SystemWithConfigure: public System, @@ -69,6 +71,16 @@ class SystemWithUpdates: const EntityComponentManager &) override {}; }; +///////////////////////////////////////////////// +class SystemWithPrioritizedUpdates: + public SystemWithUpdates, + public ISystemConfigurePriority +{ + // Documentation inherited + public: System::PriorityType ConfigurePriority() override + { return kPriority; } +}; + ///////////////////////////////////////////////// TEST(SystemManager, Constructor) { @@ -127,32 +139,40 @@ TEST(SystemManager, AddSystemNoEcm) EXPECT_EQ(1u, systemMgr.TotalByEntity(configEntity).size()); auto updateSystem = std::make_shared(); + auto prioritizedSystem = + std::make_shared(); Entity updateEntity{456u}; systemMgr.AddSystem(updateSystem, updateEntity, nullptr); + systemMgr.AddSystem(prioritizedSystem, updateEntity, nullptr); EXPECT_EQ(1u, systemMgr.ActiveCount()); - EXPECT_EQ(1u, systemMgr.PendingCount()); - EXPECT_EQ(2u, systemMgr.TotalCount()); + EXPECT_EQ(2u, systemMgr.PendingCount()); + EXPECT_EQ(3u, systemMgr.TotalCount()); EXPECT_EQ(1u, systemMgr.SystemsConfigure().size()); EXPECT_EQ(0u, systemMgr.SystemsPreUpdate().size()); EXPECT_EQ(0u, systemMgr.SystemsUpdate().size()); EXPECT_EQ(0u, systemMgr.SystemsPostUpdate().size()); - EXPECT_EQ(1u, systemMgr.TotalByEntity(updateEntity).size()); + EXPECT_EQ(2u, systemMgr.TotalByEntity(updateEntity).size()); systemMgr.ActivatePendingSystems(); - EXPECT_EQ(2u, systemMgr.ActiveCount()); + EXPECT_EQ(3u, systemMgr.ActiveCount()); EXPECT_EQ(0u, systemMgr.PendingCount()); - EXPECT_EQ(2u, systemMgr.TotalCount()); + EXPECT_EQ(3u, systemMgr.TotalCount()); EXPECT_EQ(1u, systemMgr.SystemsConfigure().size()); - // Expect PreUpdate and Update to contain one map entry with Priority 0 and - // a vector of length 1. - EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().size()); + // Expect PreUpdate and Update to contain two map entries: + // 1. Priority {0} and a vector of length 1. + // 2. Priority {kPriority} and a vector of length 1. + EXPECT_EQ(2u, systemMgr.SystemsPreUpdate().size()); EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().count(0)); + EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().count(kPriority)); EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().at(0).size()); - EXPECT_EQ(1u, systemMgr.SystemsUpdate().size()); + EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().at(kPriority).size()); + EXPECT_EQ(2u, systemMgr.SystemsUpdate().size()); EXPECT_EQ(1u, systemMgr.SystemsUpdate().count(0)); + EXPECT_EQ(1u, systemMgr.SystemsUpdate().count(kPriority)); EXPECT_EQ(1u, systemMgr.SystemsUpdate().at(0).size()); - EXPECT_EQ(1u, systemMgr.SystemsPostUpdate().size()); - EXPECT_EQ(1u, systemMgr.TotalByEntity(updateEntity).size()); + EXPECT_EQ(1u, systemMgr.SystemsUpdate().at(kPriority).size()); + EXPECT_EQ(2u, systemMgr.SystemsPostUpdate().size()); + EXPECT_EQ(2u, systemMgr.TotalByEntity(updateEntity).size()); } ///////////////////////////////////////////////// @@ -201,23 +221,37 @@ TEST(SystemManager, AddSystemEcm) EXPECT_EQ(0u, systemMgr.SystemsPostUpdate().size()); auto updateSystem = std::make_shared(); + auto prioritizedSystem = + std::make_shared(); systemMgr.AddSystem(updateSystem, kNullEntity, nullptr); + systemMgr.AddSystem(prioritizedSystem, kNullEntity, nullptr); EXPECT_EQ(1u, systemMgr.ActiveCount()); - EXPECT_EQ(1u, systemMgr.PendingCount()); - EXPECT_EQ(2u, systemMgr.TotalCount()); + EXPECT_EQ(2u, systemMgr.PendingCount()); + EXPECT_EQ(3u, systemMgr.TotalCount()); EXPECT_EQ(1u, systemMgr.SystemsConfigure().size()); EXPECT_EQ(0u, systemMgr.SystemsPreUpdate().size()); EXPECT_EQ(0u, systemMgr.SystemsUpdate().size()); EXPECT_EQ(0u, systemMgr.SystemsPostUpdate().size()); systemMgr.ActivatePendingSystems(); - EXPECT_EQ(2u, systemMgr.ActiveCount()); + EXPECT_EQ(3u, systemMgr.ActiveCount()); EXPECT_EQ(0u, systemMgr.PendingCount()); - EXPECT_EQ(2u, systemMgr.TotalCount()); + EXPECT_EQ(3u, systemMgr.TotalCount()); EXPECT_EQ(1u, systemMgr.SystemsConfigure().size()); - EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().size()); - EXPECT_EQ(1u, systemMgr.SystemsUpdate().size()); - EXPECT_EQ(1u, systemMgr.SystemsPostUpdate().size()); + // Expect PreUpdate and Update to contain two map entries: + // 1. Priority {0} and a vector of length 1. + // 2. Priority {kPriority} and a vector of length 1. + EXPECT_EQ(2u, systemMgr.SystemsPreUpdate().size()); + EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().count(0)); + EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().count(kPriority)); + EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().at(0).size()); + EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().at(kPriority).size()); + EXPECT_EQ(2u, systemMgr.SystemsUpdate().size()); + EXPECT_EQ(1u, systemMgr.SystemsUpdate().count(0)); + EXPECT_EQ(1u, systemMgr.SystemsUpdate().count(kPriority)); + EXPECT_EQ(1u, systemMgr.SystemsUpdate().at(0).size()); + EXPECT_EQ(1u, systemMgr.SystemsUpdate().at(kPriority).size()); + EXPECT_EQ(2u, systemMgr.SystemsPostUpdate().size()); } ///////////////////////////////////////////////// @@ -247,28 +281,42 @@ TEST(SystemManager, AddAndRemoveSystemEcm) auto entity = ecm.CreateEntity(); auto updateSystemWithChild = std::make_shared(); + auto prioritizedSystemWithChild = + std::make_shared(); systemMgr.AddSystem(updateSystemWithChild, entity, nullptr); + systemMgr.AddSystem(prioritizedSystemWithChild, entity, nullptr); // Configure called during AddSystem EXPECT_EQ(1, configSystem->configured); EXPECT_EQ(1, configSystem->configuredParameters); EXPECT_EQ(0u, systemMgr.ActiveCount()); - EXPECT_EQ(2u, systemMgr.PendingCount()); - EXPECT_EQ(2u, systemMgr.TotalCount()); + EXPECT_EQ(3u, systemMgr.PendingCount()); + EXPECT_EQ(3u, systemMgr.TotalCount()); EXPECT_EQ(0u, systemMgr.SystemsConfigure().size()); EXPECT_EQ(0u, systemMgr.SystemsPreUpdate().size()); EXPECT_EQ(0u, systemMgr.SystemsUpdate().size()); EXPECT_EQ(0u, systemMgr.SystemsPostUpdate().size()); systemMgr.ActivatePendingSystems(); - EXPECT_EQ(2u, systemMgr.ActiveCount()); + EXPECT_EQ(3u, systemMgr.ActiveCount()); EXPECT_EQ(0u, systemMgr.PendingCount()); - EXPECT_EQ(2u, systemMgr.TotalCount()); + EXPECT_EQ(3u, systemMgr.TotalCount()); EXPECT_EQ(1u, systemMgr.SystemsConfigure().size()); - EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().size()); - EXPECT_EQ(1u, systemMgr.SystemsUpdate().size()); - EXPECT_EQ(1u, systemMgr.SystemsPostUpdate().size()); + // Expect PreUpdate and Update to contain two map entries: + // 1. Priority {0} and a vector of length 1. + // 2. Priority {kPriority} and a vector of length 1. + EXPECT_EQ(2u, systemMgr.SystemsPreUpdate().size()); + EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().count(0)); + EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().count(kPriority)); + EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().at(0).size()); + EXPECT_EQ(1u, systemMgr.SystemsPreUpdate().at(kPriority).size()); + EXPECT_EQ(2u, systemMgr.SystemsUpdate().size()); + EXPECT_EQ(1u, systemMgr.SystemsUpdate().count(0)); + EXPECT_EQ(1u, systemMgr.SystemsUpdate().count(kPriority)); + EXPECT_EQ(1u, systemMgr.SystemsUpdate().at(0).size()); + EXPECT_EQ(1u, systemMgr.SystemsUpdate().at(kPriority).size()); + EXPECT_EQ(2u, systemMgr.SystemsPostUpdate().size()); // Remove the entity ecm.RequestRemoveEntity(entity); diff --git a/src/systems/force_torque/ForceTorque.cc b/src/systems/force_torque/ForceTorque.cc index d704e99ec5..42f8454c4a 100644 --- a/src/systems/force_torque/ForceTorque.cc +++ b/src/systems/force_torque/ForceTorque.cc @@ -46,6 +46,7 @@ #include "gz/sim/components/World.hh" #include "gz/sim/components/WrenchMeasured.hh" #include "gz/sim/EntityComponentManager.hh" +#include "gz/sim/System.hh" #include "gz/sim/Util.hh" using namespace gz; @@ -129,6 +130,13 @@ ForceTorque::ForceTorque() ////////////////////////////////////////////////// ForceTorque::~ForceTorque() = default; +////////////////////////////////////////////////// +System::PriorityType ForceTorque::ConfigurePriority() +{ + // Execute after Physics::Update but before systems with default priority. + return ::gz::sim::systems::kPostPhysicsSensorPriority; +} + ////////////////////////////////////////////////// void ForceTorque::PreUpdate(const UpdateInfo &/*_info*/, EntityComponentManager &_ecm) @@ -452,6 +460,7 @@ void ForceTorquePrivate::RemoveForceTorqueEntities( } GZ_ADD_PLUGIN(ForceTorque, System, + ForceTorque::ISystemConfigurePriority, ForceTorque::ISystemPreUpdate, ForceTorque::ISystemUpdate ) diff --git a/src/systems/force_torque/ForceTorque.hh b/src/systems/force_torque/ForceTorque.hh index 2b13d01cbb..62e2231e80 100644 --- a/src/systems/force_torque/ForceTorque.hh +++ b/src/systems/force_torque/ForceTorque.hh @@ -41,6 +41,7 @@ namespace systems /// quantites are expressed, not the point of application. class ForceTorque: public System, + public ISystemConfigurePriority, public ISystemPreUpdate, public ISystemUpdate { @@ -50,6 +51,9 @@ namespace systems /// \brief Destructor public: ~ForceTorque() override; + /// Documentation inherited + public: System::PriorityType ConfigurePriority() final; + /// Documentation inherited public: void PreUpdate(const UpdateInfo &_info, EntityComponentManager &_ecm) final; diff --git a/src/systems/physics/Physics.cc b/src/systems/physics/Physics.cc index bf5bd25781..ece7e32713 100644 --- a/src/systems/physics/Physics.cc +++ b/src/systems/physics/Physics.cc @@ -93,6 +93,7 @@ #include "gz/sim/EntityComponentManager.hh" #include "gz/sim/Model.hh" +#include "gz/sim/System.hh" #include "gz/sim/Util.hh" // Components @@ -763,6 +764,13 @@ Physics::Physics() : System(), dataPtr(std::make_unique()) { } +////////////////////////////////////////////////// +System::PriorityType Physics::ConfigurePriority() +{ + // Use constant from SystemPriorityConstants.hh + return ::gz::sim::systems::kPhysicsPriority; +} + ////////////////////////////////////////////////// void Physics::Configure(const Entity &_entity, const std::shared_ptr &_sdf, diff --git a/src/systems/physics/Physics.hh b/src/systems/physics/Physics.hh index 256ee5ac75..698050a9dc 100644 --- a/src/systems/physics/Physics.hh +++ b/src/systems/physics/Physics.hh @@ -87,6 +87,7 @@ namespace systems class Physics: public System, public ISystemConfigure, + public ISystemConfigurePriority, public ISystemReset, public ISystemUpdate { @@ -102,6 +103,9 @@ namespace systems EntityComponentManager &_ecm, EventManager &_eventMgr) final; + /// Documentation inherited + public: System::PriorityType ConfigurePriority() final; + // Documentation inherited public: void Reset(const UpdateInfo &_info, EntityComponentManager &_ecm) final; diff --git a/src/systems/user_commands/UserCommands.cc b/src/systems/user_commands/UserCommands.cc index 8f9ba3102c..ad803517c5 100644 --- a/src/systems/user_commands/UserCommands.cc +++ b/src/systems/user_commands/UserCommands.cc @@ -80,6 +80,7 @@ #include "gz/sim/EntityComponentManager.hh" #include "gz/sim/Model.hh" #include "gz/sim/SdfEntityCreator.hh" +#include "gz/sim/System.hh" #include "gz/sim/Util.hh" #include "gz/sim/World.hh" #include "gz/sim/components/ContactSensorData.hh" @@ -617,6 +618,13 @@ bool UserCommandsInterface::HasContactSensor(const Entity _collision) return false; } +////////////////////////////////////////////////// +System::PriorityType UserCommands::ConfigurePriority() +{ + // Use constant from SystemPriorityConstants.hh + return ::gz::sim::systems::kUserCommandsPriority; +} + ////////////////////////////////////////////////// void UserCommands::Configure(const Entity &_entity, const std::shared_ptr &_sdf, diff --git a/src/systems/user_commands/UserCommands.hh b/src/systems/user_commands/UserCommands.hh index 0aa396bd00..791fc8548d 100644 --- a/src/systems/user_commands/UserCommands.hh +++ b/src/systems/user_commands/UserCommands.hh @@ -73,6 +73,7 @@ namespace systems class UserCommands final: public System, public ISystemConfigure, + public ISystemConfigurePriority, public ISystemPreUpdate { /// \brief Constructor @@ -87,6 +88,9 @@ namespace systems EntityComponentManager &_ecm, EventManager &_eventMgr) override; + /// Documentation inherited + public: System::PriorityType ConfigurePriority() final; + /// \brief All received commands are queued in order of reception and /// executed in order during PreUpdate. /// \param[in] _info Contains information about the current simulation From 363d5c36947705e78a06b9ed22f5bdb3bfb74cca Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Thu, 22 Aug 2024 14:53:52 -0700 Subject: [PATCH 29/80] Fix SphericalCoordinates deprecation warnings (#2535) Signed-off-by: Ian Chen --- src/Util.cc | 33 ++++++++++--- src/systems/user_commands/UserCommands.cc | 60 ++++++++++++++--------- 2 files changed, 62 insertions(+), 31 deletions(-) diff --git a/src/Util.cc b/src/Util.cc index 83ce8faf14..4d9a459ed4 100644 --- a/src/Util.cc +++ b/src/Util.cc @@ -711,12 +711,15 @@ std::optional sphericalCoordinates(Entity _entity, // lat / lon / elevation in rad / rad / m auto rad = sphericalCoordinatesComp->Data().PositionTransform( - xyzPose.Pos(), - math::SphericalCoordinates::LOCAL2, + math::CoordinateVector3::Metric(xyzPose.Pos()), + math::SphericalCoordinates::LOCAL, math::SphericalCoordinates::SPHERICAL); + if (!rad.has_value() || !rad->IsSpherical()) + return std::nullopt; + // Return degrees - return math::Vector3d(GZ_RTOD(rad.X()), GZ_RTOD(rad.Y()), rad.Z()); + return math::Vector3d(rad->Lat()->Degree(), rad->Lon()->Degree(), *rad->Z()); } ////////////////////////////////////////////////// @@ -747,15 +750,31 @@ std::optional getGridFieldCoordinates( } } auto position = origin->Data().PositionTransform( - _worldPosition, math::SphericalCoordinates::LOCAL2, + math::CoordinateVector3::Metric(_worldPosition), + math::SphericalCoordinates::LOCAL, _gridField->reference); + if (!position.has_value()) + return std::nullopt; + + if (position->IsMetric()) + return position->AsMetricVector(); + + math::Vector3d out; if (_gridField->reference == math::SphericalCoordinates::SPHERICAL && _gridField->units == components::EnvironmentalData::ReferenceUnits::DEGREES) { - position.X(GZ_RTOD(position.X())); - position.Y(GZ_RTOD(position.Y())); + out.X(position->Lat()->Degree()); + out.Y(position->Lon()->Degree()); } - return position; + else + { + out.X(position->Lat()->Radian()); + out.Y(position->Lon()->Radian()); + } + out.Z(*position->Z()); + + // \todo(iche033) Change the return type to math::CoordinateVector3 + return out; } ////////////////////////////////////////////////// diff --git a/src/systems/user_commands/UserCommands.cc b/src/systems/user_commands/UserCommands.cc index ad803517c5..f7e5c5ad8e 100644 --- a/src/systems/user_commands/UserCommands.cc +++ b/src/systems/user_commands/UserCommands.cc @@ -1282,7 +1282,6 @@ bool CreateCommand::Execute() // Spherical coordinates if (createMsg->has_spherical_coordinates()) { - gzerr << "HasSphericalCoordinates" << std::endl; auto scComp = this->iface->ecm->Component( this->iface->worldEntity); if (nullptr == scComp) @@ -1294,25 +1293,33 @@ bool CreateCommand::Execute() } else { - // deg to rad - math::Vector3d latLonEle{ + auto vec = math::CoordinateVector3::Spherical( GZ_DTOR(createMsg->spherical_coordinates().latitude_deg()), GZ_DTOR(createMsg->spherical_coordinates().longitude_deg()), - createMsg->spherical_coordinates().elevation()}; - - auto pos = scComp->Data().PositionTransform(latLonEle, + createMsg->spherical_coordinates().elevation()); + auto pos = scComp->Data().PositionTransform(vec, math::SphericalCoordinates::SPHERICAL, - math::SphericalCoordinates::LOCAL2); - - // Override pos and add to yaw - if (!createPose.has_value()) - createPose = math::Pose3d::Zero; - createPose.value().SetX(pos.X()); - createPose.value().SetY(pos.Y()); - createPose.value().SetZ(pos.Z()); - createPose.value().Rot() = math::Quaterniond(0, 0, - GZ_DTOR(createMsg->spherical_coordinates().heading_deg())) * - createPose.value().Rot(); + math::SphericalCoordinates::LOCAL); + + if (!pos.has_value() || !pos->IsMetric()) + { + gzerr << "Trying to create entity [" << desiredName + << "] using spherical coordinates, but spherical to local " + << "position conversion failed. Entity will be created at the " + << "world origin." << std::endl; + } + else + { + // Override pos and add to yaw + if (!createPose.has_value()) + createPose = math::Pose3d::Zero; + createPose.value().SetX(*pos->X()); + createPose.value().SetY(*pos->Y()); + createPose.value().SetZ(*pos->Z()); + createPose.value().Rot() = math::Quaterniond(0, 0, + GZ_DTOR(createMsg->spherical_coordinates().heading_deg())) * + createPose.value().Rot(); + } } } @@ -1702,17 +1709,22 @@ bool SphericalCoordinatesCommand::Execute() return false; } - // deg to rad - math::Vector3d latLonEle{ + auto vec = math::CoordinateVector3::Spherical( GZ_DTOR(sphericalCoordinatesMsg->latitude_deg()), GZ_DTOR(sphericalCoordinatesMsg->longitude_deg()), - sphericalCoordinatesMsg->elevation()}; - - auto pos = scComp->Data().PositionTransform(latLonEle, + sphericalCoordinatesMsg->elevation()); + auto pos = scComp->Data().PositionTransform(vec, math::SphericalCoordinates::SPHERICAL, - math::SphericalCoordinates::LOCAL2); + math::SphericalCoordinates::LOCAL); + if (!pos.has_value() || !pos->IsMetric()) + { + gzerr << "Trying to move entity [" << entity + << "] using spherical coordinates, but spherical to local " + << "position conversion failed." << std::endl; + return false; + } - math::Pose3d pose{pos.X(), pos.Y(), pos.Z(), 0, 0, + math::Pose3d pose{*pos->X(), *pos->Y(), *pos->Z(), 0, 0, GZ_DTOR(sphericalCoordinatesMsg->heading_deg())}; auto poseCmdComp = From 5298d46c696fd31e6c985d1e729777528b4db0c4 Mon Sep 17 00:00:00 2001 From: "Addisu Z. Taddese" Date: Thu, 22 Aug 2024 21:44:29 -0500 Subject: [PATCH 30/80] Fix UNIT_Server_TEST failure caused by change in behavior of `gz::common::SignalHandler` (#2537) Signed-off-by: Addisu Z. Taddese --- src/Server_TEST.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Server_TEST.cc b/src/Server_TEST.cc index a7c327f0db..590cf34f15 100644 --- a/src/Server_TEST.cc +++ b/src/Server_TEST.cc @@ -776,6 +776,7 @@ TEST_P(ServerFixture, SigInt) EXPECT_TRUE(*server.Running(0)); std::raise(SIGTERM); + GZ_SLEEP_MS(20); EXPECT_FALSE(server.Running()); EXPECT_FALSE(*server.Running(0)); @@ -880,6 +881,7 @@ TEST_P(ServerFixture, GZ_UTILS_TEST_DISABLED_ON_WIN32(AddSystemWhileRunning)) // Stop the server std::raise(SIGTERM); + GZ_SLEEP_MS(20); EXPECT_FALSE(server.Running()); EXPECT_FALSE(*server.Running(0)); From f519875ccb5e55cc7df68abbf717afad0b513e3a Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Fri, 23 Aug 2024 18:18:25 -0700 Subject: [PATCH 31/80] Add cmake install prefix (#2539) Signed-off-by: Ian Chen --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 86e46537ec..a011e2abda 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,4 +49,4 @@ jobs: uses: gazebo-tooling/action-gz-ci@noble with: # per bug https://github.com/gazebosim/gz-sim/issues/1409 - cmake-args: '-DBUILD_DOCS=OFF' + cmake-args: '-DCMAKE_INSTALL_PREFIX=/usr -DBUILD_DOCS=OFF' From 1184481332459196334890d858a47cfa1b218acf Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Tue, 27 Aug 2024 10:27:34 -0700 Subject: [PATCH 32/80] Restore behavior change by reverting #2527 (#2546) Signed-off-by: Ian Chen --- src/SdfEntityCreator.cc | 13 ++++++++----- .../LogicalAudioSensorPlugin.cc | 4 ++-- src/systems/pose_publisher/PosePublisher.cc | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/SdfEntityCreator.cc b/src/SdfEntityCreator.cc index 8d8be86491..1c45bfc4e8 100644 --- a/src/SdfEntityCreator.cc +++ b/src/SdfEntityCreator.cc @@ -319,9 +319,6 @@ void SdfEntityCreator::CreateEntities(const sdf::World *_world, components::SphericalCoordinates(*_world->SphericalCoordinates())); } - this->dataPtr->eventManager->Emit(_worldEntity, - _world->Plugins()); - // Models for (uint64_t modelIndex = 0; modelIndex < _world->ModelCount(); ++modelIndex) @@ -331,7 +328,7 @@ void SdfEntityCreator::CreateEntities(const sdf::World *_world, levelEntityNames.find(model->Name()) != levelEntityNames.end()) { - Entity modelEntity = this->CreateEntities(model); + Entity modelEntity = this->CreateEntities(model, false); this->SetParent(modelEntity, _worldEntity); } @@ -381,7 +378,7 @@ void SdfEntityCreator::CreateEntities(const sdf::World *_world, if (_world->ModelNameExists(_ref->Data())) { const sdf::Model *model = _world->ModelByName(_ref->Data()); - Entity modelEntity = this->CreateEntities(model); + Entity modelEntity = this->CreateEntities(model, false); this->SetParent(modelEntity, _worldEntity); this->SetParent(_entity, modelEntity); } @@ -456,6 +453,12 @@ void SdfEntityCreator::CreateEntities(const sdf::World *_world, // Store the world's SDF DOM to be used when saving the world to file this->dataPtr->ecm->CreateComponent( _worldEntity, components::WorldSdf(*_world)); + + this->dataPtr->eventManager->Emit(_worldEntity, + _world->Plugins()); + + // Load model plugins after the world plugin. + this->LoadModelPlugins(); } ////////////////////////////////////////////////// diff --git a/src/systems/logical_audio_sensor_plugin/LogicalAudioSensorPlugin.cc b/src/systems/logical_audio_sensor_plugin/LogicalAudioSensorPlugin.cc index a460e620c2..e4d633cd59 100644 --- a/src/systems/logical_audio_sensor_plugin/LogicalAudioSensorPlugin.cc +++ b/src/systems/logical_audio_sensor_plugin/LogicalAudioSensorPlugin.cc @@ -405,7 +405,7 @@ void LogicalAudioSensorPluginPrivate::CreateAudioSource( }; // create services for this source - const auto validName = topicFromScopedName(entity, _ecm, false); + const auto validName = topicFromScopedName(entity, _ecm, true); if (validName.empty()) { gzerr << "Failed to create valid topics with entity scoped name [" @@ -503,7 +503,7 @@ void LogicalAudioSensorPluginPrivate::CreateMicrophone( // create the detection publisher for this microphone auto pub = this->node.Advertise( - topicFromScopedName(entity, _ecm, false) + "/detection"); + topicFromScopedName(entity, _ecm, true) + "/detection"); if (!pub) { gzerr << "Error creating a detection publisher for microphone " diff --git a/src/systems/pose_publisher/PosePublisher.cc b/src/systems/pose_publisher/PosePublisher.cc index 28fbbdc8d4..395f3dc9bf 100644 --- a/src/systems/pose_publisher/PosePublisher.cc +++ b/src/systems/pose_publisher/PosePublisher.cc @@ -252,7 +252,7 @@ void PosePublisher::Configure(const Entity &_entity, this->dataPtr->usePoseV = _sdf->Get("use_pose_vector_msg", this->dataPtr->usePoseV).first; - std::string poseTopic = topicFromScopedName(_entity, _ecm, false) + "/pose"; + std::string poseTopic = topicFromScopedName(_entity, _ecm, true) + "/pose"; if (poseTopic.empty()) { poseTopic = "/pose"; From af7fabb6e4195afd31d4ecf48846832d1308d363 Mon Sep 17 00:00:00 2001 From: Steve Peters Date: Tue, 27 Aug 2024 16:07:20 -0700 Subject: [PATCH 33/80] Remove from test worlds (#2551) The system priority for the force-torque system was explicitly set using XML tags in several test worlds in #2494. These XML tags are no longer needed since #2500 was merged, so remove them now. Also fix some outdated comments Signed-off-by: Steve Peters --- python/test/joint_test.sdf | 4 +--- src/systems/physics/Physics.cc | 2 +- src/systems/user_commands/UserCommands.cc | 2 +- test/worlds/force_torque.sdf | 4 +--- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/python/test/joint_test.sdf b/python/test/joint_test.sdf index 4fd300ffd7..078f3974b7 100644 --- a/python/test/joint_test.sdf +++ b/python/test/joint_test.sdf @@ -2,9 +2,7 @@ - - 10 - + diff --git a/src/systems/physics/Physics.cc b/src/systems/physics/Physics.cc index ece7e32713..7038e2e143 100644 --- a/src/systems/physics/Physics.cc +++ b/src/systems/physics/Physics.cc @@ -767,7 +767,7 @@ Physics::Physics() : System(), dataPtr(std::make_unique()) ////////////////////////////////////////////////// System::PriorityType Physics::ConfigurePriority() { - // Use constant from SystemPriorityConstants.hh + // Use constant from System.hh return ::gz::sim::systems::kPhysicsPriority; } diff --git a/src/systems/user_commands/UserCommands.cc b/src/systems/user_commands/UserCommands.cc index f7e5c5ad8e..0eedaa27e5 100644 --- a/src/systems/user_commands/UserCommands.cc +++ b/src/systems/user_commands/UserCommands.cc @@ -621,7 +621,7 @@ bool UserCommandsInterface::HasContactSensor(const Entity _collision) ////////////////////////////////////////////////// System::PriorityType UserCommands::ConfigurePriority() { - // Use constant from SystemPriorityConstants.hh + // Use constant from System.hh return ::gz::sim::systems::kUserCommandsPriority; } diff --git a/test/worlds/force_torque.sdf b/test/worlds/force_torque.sdf index 9a06c97c80..0c90ff63bb 100644 --- a/test/worlds/force_torque.sdf +++ b/test/worlds/force_torque.sdf @@ -5,9 +5,7 @@ 0 - - 10 - + true From 8b1dbda6aa7246a75726c53f5cdebebbc1ec7a7a Mon Sep 17 00:00:00 2001 From: "Addisu Z. Taddese" Date: Wed, 28 Aug 2024 13:38:19 -0500 Subject: [PATCH 34/80] Fix crash at exit due to a race condition with new signal handler (#2545) * Fix crash at exit due to a race condition with new signal handler Previously, the signal handler would interrupt the main thread (thread that calls `Server::Run`), so there was no chance for the main thread to resume before the signal handler was finished. With the new signal handler implementation in gz::common, the signal handler is now called from a different thread which means the main thread might resume before the signal handler is finished. This causes a race condition in which the `Server` class, and therefore the `ServerPrivate` class are being destructed while the signal handler is still active. Since `ServerPrivate` also contains the class that encapsulates the signal handler implementation, the causes a crash as the signal handler tries to access data that has been deleted. The fix here is to ensure that the main thread does not exit until the signal handler is finished by synchronizing on a mutex. --------- Signed-off-by: Addisu Z. Taddese --- src/ServerPrivate.cc | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/ServerPrivate.cc b/src/ServerPrivate.cc index 8b81e9c057..83b97363e6 100644 --- a/src/ServerPrivate.cc +++ b/src/ServerPrivate.cc @@ -115,14 +115,26 @@ ServerPrivate::~ServerPrivate() ////////////////////////////////////////////////// void ServerPrivate::OnSignal(int _sig) { - this->signalReceived = true; - gzdbg << "Server received signal[" << _sig << "]\n"; - this->Stop(); + // There's a good chance that objects are being destructed from the previous + // signal, so it's not safe to call Stop if we've done it already. + if (!this->signalReceived) + { + this->signalReceived = true; + gzdbg << "Server received signal[" << _sig << "]\n"; + this->Stop(); + } } ///////////////////////////////////////////////// void ServerPrivate::Stop() { + // Stop might be called from the signal handler thread (new in Ionic) instead + // of the main thread, so we need to ensure that we keep `ServerPrivate` alive + // while the signal handler is still active. We do that by synchronizing on + // the `runMutex` here in ServerPrivate::Run right after the call + // SimulationRunner::Run returns. That way, `ServerPrivate::Run` cannot return + // before the signal handler is finished. + std::lock_guard lock(this->runMutex); this->running = false; for (std::unique_ptr &runner : this->simRunners) { @@ -196,6 +208,8 @@ bool ServerPrivate::Run(const uint64_t _iterations, result = this->workerPool.WaitForResults(); } + // See comments ServerPrivate::Stop() for why we lock this mutex here. + std::lock_guard lock(this->runMutex); this->running = false; return result; } From a8936570d6bced7465cb8357c496c031b645bea6 Mon Sep 17 00:00:00 2001 From: "Addisu Z. Taddese" Date: Thu, 29 Aug 2024 00:57:53 -0500 Subject: [PATCH 35/80] Add a flexible mechanism to combine user and default plugins (#2497) Signed-off-by: Addisu Z. Taddese Signed-off-by: Ian Chen Co-authored-by: Ian Chen --- examples/worlds/camera_sensor.sdf | 115 +------------ examples/worlds/contact_sensor.sdf | 17 +- .../mimic_fast_slow_pendulums_world.sdf | 4 + examples/worlds/quadcopter.sdf | 12 -- include/gz/sim/Constants.hh | 33 ++++ src/ServerConfig.cc | 4 +- src/Server_TEST.cc | 6 +- src/SimulationRunner.cc | 74 ++++++-- src/gui/Gui.cc | 158 ++++++++++++++++-- test/integration/reset_sensors.cc | 2 + test/test_config.hh.in | 3 + test/worlds/air_pressure.sdf | 3 + test/worlds/air_speed.sdf | 3 + test/worlds/reset_sensors.sdf | 3 + tutorials/gui_config.md | 115 +++++++++++-- tutorials/server_config.md | 112 ++++++++++++- 16 files changed, 476 insertions(+), 188 deletions(-) create mode 100644 include/gz/sim/Constants.hh diff --git a/examples/worlds/camera_sensor.sdf b/examples/worlds/camera_sensor.sdf index 3d967d701e..0cee711b47 100644 --- a/examples/worlds/camera_sensor.sdf +++ b/examples/worlds/camera_sensor.sdf @@ -8,23 +8,11 @@ 0.001 1.0 - - ogre2 - - - - 1.0 1.0 1.0 @@ -32,103 +20,22 @@ true + + true + - 3D View false docked - ogre2 scene 0.4 0.4 0.4 0.8 0.8 0.8 - -6 0 6 0 0.5 0 - - - - - - floating - 5 - 5 - false - - - - - false - 5 - 5 - floating - false - - - - - false - 5 - 5 - floating - false - - - - - false - 5 - 5 - floating - false - - - - - - World control - false - false - 72 - 1 - - floating - - - - - - - true - true - true - true - - - - - - - World stats - false - false - 110 - 290 - 1 - - floating - - - - - - - true - true - true - true + -3 0 3 0 0.5 0 @@ -137,20 +44,6 @@ camera - - - - - docked - - - - - - - docked - - diff --git a/examples/worlds/contact_sensor.sdf b/examples/worlds/contact_sensor.sdf index c37f7f259b..0714c34bf7 100644 --- a/examples/worlds/contact_sensor.sdf +++ b/examples/worlds/contact_sensor.sdf @@ -9,22 +9,7 @@ Run the following to print out contacts, --> - - - - - - - - + false diff --git a/examples/worlds/mimic_fast_slow_pendulums_world.sdf b/examples/worlds/mimic_fast_slow_pendulums_world.sdf index b42c8bc73a..7386bd3dac 100644 --- a/examples/worlds/mimic_fast_slow_pendulums_world.sdf +++ b/examples/worlds/mimic_fast_slow_pendulums_world.sdf @@ -16,6 +16,10 @@ 1 + + gz-physics-bullet-featherstone-plugin + + true 0 0 10 0 0 0 diff --git a/examples/worlds/quadcopter.sdf b/examples/worlds/quadcopter.sdf index 4b00c86c15..1ec3eaa18e 100644 --- a/examples/worlds/quadcopter.sdf +++ b/examples/worlds/quadcopter.sdf @@ -17,18 +17,6 @@ 0.001 1.0 - - - - - - diff --git a/include/gz/sim/Constants.hh b/include/gz/sim/Constants.hh new file mode 100644 index 0000000000..96d281ccc7 --- /dev/null +++ b/include/gz/sim/Constants.hh @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2024 Open Source Robotics Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef GZ_SIM_CONSTANTS_HH_ +#define GZ_SIM_CONSTANTS_HH_ + +#include "gz/sim/config.hh" +#include + +namespace gz::sim +{ +// Inline bracket to help doxygen filtering. +inline namespace GZ_SIM_VERSION_NAMESPACE +{ + constexpr std::string_view kPoliciesTag{"gz:policies"}; +} +} // namespace gz::sim + +#endif diff --git a/src/ServerConfig.cc b/src/ServerConfig.cc index b800c541aa..4e75a68ea0 100644 --- a/src/ServerConfig.cc +++ b/src/ServerConfig.cc @@ -938,7 +938,7 @@ sim::loadPluginInfo(bool _isPlayback) gzwarn << kServerConfigPathEnv << " set but no plugins found\n"; } - gzdbg << "Loaded (" << ret.size() << ") plugins from file " << + gzdbg << "Loading (" << ret.size() << ") plugins from file " << "[" << envConfig << "]\n"; return ret; @@ -1018,7 +1018,7 @@ sim::loadPluginInfo(bool _isPlayback) << "], but no plugins found\n"; } - gzdbg << "Loaded (" << ret.size() << ") plugins from file " << + gzdbg << "Loading (" << ret.size() << ") plugins from file " << "[" << defaultConfig << "]\n"; return ret; diff --git a/src/Server_TEST.cc b/src/Server_TEST.cc index f2248cb121..5f7697eeab 100644 --- a/src/Server_TEST.cc +++ b/src/Server_TEST.cc @@ -442,8 +442,7 @@ TEST_P(ServerFixture, GZ_UTILS_TEST_DISABLED_ON_WIN32(ServerConfigLogRecord)) EXPECT_EQ(0u, *server.IterationCount()); EXPECT_EQ(3u, *server.EntityCount()); - // Only the log record system is needed and therefore loaded. - EXPECT_EQ(1u, *server.SystemCount()); + EXPECT_EQ(4u, *server.SystemCount()); EXPECT_TRUE(serverConfig.LogRecordTopics().empty()); serverConfig.AddLogRecordTopic("test_topic1"); @@ -483,8 +482,7 @@ TEST_P(ServerFixture, EXPECT_EQ(0u, *server.IterationCount()); EXPECT_EQ(3u, *server.EntityCount()); - // Only the log record system is needed and therefore loaded. - EXPECT_EQ(1u, *server.SystemCount()); + EXPECT_EQ(4u, *server.SystemCount()); } EXPECT_FALSE(common::exists(logFile)); diff --git a/src/SimulationRunner.cc b/src/SimulationRunner.cc index ceea22ad49..268e956cda 100644 --- a/src/SimulationRunner.cc +++ b/src/SimulationRunner.cc @@ -18,6 +18,7 @@ #include "SimulationRunner.hh" #include +#include #ifdef HAVE_PYBIND11 #include #endif @@ -36,6 +37,7 @@ #include #include "gz/common/Profiler.hh" +#include "gz/sim/Constants.hh" #include "gz/sim/components/Model.hh" #include "gz/sim/components/Name.hh" #include "gz/sim/components/Sensor.hh" @@ -50,6 +52,7 @@ #include "gz/sim/components/RenderEngineServerHeadless.hh" #include "gz/sim/components/RenderEngineServerPlugin.hh" #include "gz/sim/Events.hh" +#include "gz/sim/ServerConfig.hh" #include "gz/sim/SdfEntityCreator.hh" #include "gz/sim/Util.hh" #include "gz/transport/TopicUtils.hh" @@ -263,6 +266,18 @@ SimulationRunner::SimulationRunner(const sdf::World &_world, if (_world.Gui()) { this->guiMsg = convert(*_world.Gui()); + + auto worldElem = this->sdfWorld.Element(); + if (worldElem) + { + auto policies = worldElem->FindElement("gz:policies"); + if (policies) + { + auto headerData = this->guiMsg.mutable_header()->add_data(); + headerData->set_key("gz:policies"); + headerData->add_value(policies->ToString("")); + } + } } std::string infoService{"gui/info"}; @@ -1586,21 +1601,60 @@ void SimulationRunner::CreateEntities(const sdf::World &_world) // Load any additional plugins from the Server Configuration this->LoadServerPlugins(this->serverConfig.Plugins()); + auto loadedWorldPlugins = this->systemMgr->TotalByEntity(worldEntity); // If we have reached this point and no world systems have been loaded, then // load a default set of systems. - if (this->systemMgr->TotalByEntity(worldEntity).empty()) + + auto worldElem = this->sdfWorld.Element(); + bool includeServerConfigPlugins = true; + if (worldElem) { - gzmsg << "No systems loaded from SDF, loading defaults" << std::endl; - bool isPlayback = !this->serverConfig.LogPlaybackPath().empty(); - auto plugins = gz::sim::loadPluginInfo(isPlayback); - this->LoadServerPlugins(plugins); + auto policies = worldElem->FindElement(std::string(kPoliciesTag)); + if (policies) + { + includeServerConfigPlugins = + policies + ->Get("include_server_config_plugins", includeServerConfigPlugins) + .first; + } } + if (includeServerConfigPlugins || loadedWorldPlugins.empty()) + { + bool isPlayback = !this->serverConfig.LogPlaybackPath().empty(); + auto defaultPlugins = gz::sim::loadPluginInfo(isPlayback); + if (loadedWorldPlugins.empty()) + { + gzmsg << "No systems loaded from SDF, loading defaults" << std::endl; + } + else + { + std::unordered_set loadedWorldPluginFileNames; + for (const auto &pl : loadedWorldPlugins) + { + loadedWorldPluginFileNames.insert(pl.fname); + } + auto isPluginLoaded = + [&loadedWorldPluginFileNames](const ServerConfig::PluginInfo &_pl) + { + return loadedWorldPluginFileNames.count(_pl.Plugin().Filename()) != 0; + }; + + // Remove plugin if it's already loaded so as to not duplicate world + // plugins. + defaultPlugins.remove_if(isPluginLoaded); + + gzdbg << "Additional plugins to load:\n"; + for (const auto &plugin : defaultPlugins) + { + gzdbg << plugin.Plugin().Name() << " " << plugin.Plugin().Filename() + << "\n"; + } + } + + this->LoadServerPlugins(defaultPlugins); + }; + // Store the initial state of the ECM; this->initialEntityCompMgr.CopyFrom(this->entityCompMgr); - - // Publish empty GUI messages for worlds that have no GUI in the beginning. - // In the future, support modifying GUI from the server at runtime. - if (_world.Gui()) - this->guiMsg = convert(*_world.Gui()); } diff --git a/src/gui/Gui.cc b/src/gui/Gui.cc index 035d082299..2d6f4549f1 100644 --- a/src/gui/Gui.cc +++ b/src/gui/Gui.cc @@ -18,6 +18,7 @@ #include #include #include +#include #include @@ -29,7 +30,10 @@ #include #include #include +#include +#include +#include "gz/sim/Constants.hh" #include "gz/sim/InstallationDirectories.hh" #include "gz/sim/Util.hh" #include "gz/sim/config.hh" @@ -47,6 +51,119 @@ namespace sim { // Inline bracket to help doxygen filtering. inline namespace GZ_SIM_VERSION_NAMESPACE { +namespace { + +std::unique_ptr parseDefaultPlugins( + const std::string &_defaultConfig) +{ + const auto resolvedDefaultConfigPath = + gz::gui::App()->ResolveConfigFile(_defaultConfig); + auto pluginsDoc = std::make_unique(); + if (pluginsDoc->LoadFile(resolvedDefaultConfigPath.c_str()) == + tinyxml2::XML_SUCCESS) + { + // Remove everything that's not a plugin + for (auto elem = pluginsDoc->FirstChildElement(); elem != nullptr;) + { + if (std::strcmp("plugin", elem->Value()) != 0) + { + auto tmp = elem; + elem = elem->NextSiblingElement(); + pluginsDoc->DeleteChild(tmp); + } + else + { + elem = elem->NextSiblingElement(); + } + } + } + + return pluginsDoc; +} + +auto combineUserAndDefaultPlugins( + std::unique_ptr _userPlugins, + const tinyxml2::XMLDocument &_defaultPlugins, bool _includeDefaultPlugins) +{ + if (_includeDefaultPlugins) + { + auto combinedPlugins = std::make_unique(); + _defaultPlugins.DeepCopy(combinedPlugins.get()); + + std::set processedUserPlugins; + for (auto pluginElem = _userPlugins->FirstChildElement("plugin"); + pluginElem != nullptr; + pluginElem = pluginElem->NextSiblingElement("plugin")) + { + const char *pluginFilename = pluginElem->Attribute("filename"); + + bool replacedPlugin{false}; + for (auto elem = combinedPlugins->FirstChildElement("plugin"); + elem != nullptr && processedUserPlugins.count(elem) == 0; + elem = elem->NextSiblingElement("plugin")) + { + if (elem->Attribute("filename", pluginFilename)) + { + auto tmp = elem; + // Insert the replacement + auto clonedPlugin = pluginElem->DeepClone(combinedPlugins.get()); + elem = combinedPlugins->InsertAfterChild(elem, clonedPlugin) + ->ToElement(); + // Remove the original + combinedPlugins->DeleteNode(tmp); + replacedPlugin = true; + } + } + if (!replacedPlugin) + { + auto clonedPlugin = pluginElem->DeepClone(combinedPlugins.get()); + auto insertedElem = combinedPlugins->InsertEndChild(clonedPlugin); + processedUserPlugins.insert(insertedElem ); + } + } + + return combinedPlugins; + } + return _userPlugins; +} + +/// \brief Various policies that affect the behavior of the GUI +struct GuiPolicies +{ + /// \brief Whether to include default plugins + bool includeGuiDefaultPlugins{true}; + + /// \brief Parse policies from a GUI message + /// \param[in] _msg Input message + /// \return A GuiPolicies object populated from parsing the message. + static GuiPolicies ParsePolicies(const msgs::GUI &_msg) + { + GuiPolicies policies; + for (const auto &data : _msg.header().data()) + { + if (data.key() == "gz:policies") + { + tinyxml2::XMLDocument doc; + if (data.value_size() > 0) + { + if (doc.Parse(data.value(0).c_str()) == tinyxml2::XML_SUCCESS) + { + tinyxml2::XMLHandle handle(doc); + auto elem = handle.FirstChildElement(kPoliciesTag.data()) + .FirstChildElement("include_gui_default_plugins") + .ToElement(); + if (elem) + { + elem->QueryBoolText(&policies.includeGuiDefaultPlugins); + } + } + } + } + } + return policies; + } +}; +} namespace gui { /// \brief Get the path to the default config file. If the file doesn't exist @@ -434,6 +551,9 @@ std::unique_ptr createGui( // Load plugins after creating GuiRunner, so they can access worldName if (_loadPluginsFromSdf) { + const auto guiPolicies = GuiPolicies::ParsePolicies(res); + auto userPlugins = std::make_unique(); + std::string pluginsXml = ""; for (int p = 0; p < res.plugin_size(); ++p) { const auto &plugin = res.plugin(p); @@ -444,13 +564,13 @@ std::unique_ptr createGui( if (fileName == "GzScene3D") { std::vector extras{"GzSceneManager", - "InteractiveViewControl", - "CameraTracking", - "MarkerManager", - "SelectEntities", - "EntityContextMenuPlugin", - "Spawn", - "VisualizationCapabilities"}; + "InteractiveViewControl", + "CameraTracking", + "MarkerManager", + "SelectEntities", + "EntityContextMenuPlugin", + "Spawn", + "VisualizationCapabilities"}; std::string msg{ "The [GzScene3D] GUI plugin has been removed since Garden.\n" @@ -460,7 +580,7 @@ std::unique_ptr createGui( for (auto extra : extras) { - msg += "* " + extra + "\n"; + msg += "* " + extra + "\n"; auto newPlugin = res.add_plugin(); newPlugin->set_filename(extra); @@ -478,15 +598,23 @@ std::unique_ptr createGui( fileName = "MinimalScene"; } + pluginsXml += "" + + plugin.innerxml() + "\n"; + } + userPlugins->Parse(pluginsXml.c_str()); - std::string pluginStr = "" + - plugin.innerxml() + ""; - - tinyxml2::XMLDocument pluginDoc; - pluginDoc.Parse(pluginStr.c_str()); + const auto defaultPlugins = parseDefaultPlugins(defaultConfig); + auto pluginsToLoad = combineUserAndDefaultPlugins( + std::move(userPlugins), *defaultPlugins, + guiPolicies.includeGuiDefaultPlugins); - app->LoadPlugin(fileName, - pluginDoc.FirstChildElement("plugin")); + gzdbg << "Loading plugins:\n"; + for (auto pluginElem = pluginsToLoad->FirstChildElement("plugin"); + pluginElem != nullptr; + pluginElem = pluginElem->NextSiblingElement("plugin")) + { + app->LoadPlugin(pluginElem->Attribute("filename"), pluginElem); + gzdbg << pluginElem->Attribute("filename") << "\n"; } } } diff --git a/test/integration/reset_sensors.cc b/test/integration/reset_sensors.cc index 7b9c43d492..be9c3b6a38 100644 --- a/test/integration/reset_sensors.cc +++ b/test/integration/reset_sensors.cc @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -336,6 +337,7 @@ TEST_F(ResetFixture, GZ_UTILS_TEST_DISABLED_ON_MAC(HandleReset)) imageReceiver.msgReceived = false; server.Run(true, 2000 - server.IterationCount().value(), false); + std::this_thread::sleep_for(20ms); // Check iterator state EXPECT_EQ(2000u, server.IterationCount().value()); diff --git a/test/test_config.hh.in b/test/test_config.hh.in index b367ed89de..89118966c9 100644 --- a/test/test_config.hh.in +++ b/test/test_config.hh.in @@ -48,6 +48,9 @@ struct TestWorldSansPhysics static std::string world = std::string("" "" "" + "" + " false" + "" "" diff --git a/test/worlds/air_pressure.sdf b/test/worlds/air_pressure.sdf index 0679f9e280..d66cb0fccd 100644 --- a/test/worlds/air_pressure.sdf +++ b/test/worlds/air_pressure.sdf @@ -5,6 +5,9 @@ 0 + + false + diff --git a/test/worlds/air_speed.sdf b/test/worlds/air_speed.sdf index feb3347655..b23d7ee6d5 100644 --- a/test/worlds/air_speed.sdf +++ b/test/worlds/air_speed.sdf @@ -5,6 +5,9 @@ 0 + + false + diff --git a/test/worlds/reset_sensors.sdf b/test/worlds/reset_sensors.sdf index 733658fefc..7f8db14a7e 100644 --- a/test/worlds/reset_sensors.sdf +++ b/test/worlds/reset_sensors.sdf @@ -1,6 +1,9 @@ + + false + diff --git a/tutorials/gui_config.md b/tutorials/gui_config.md index 9cc42fa1e0..0304f1131a 100644 --- a/tutorials/gui_config.md +++ b/tutorials/gui_config.md @@ -16,10 +16,33 @@ There are a few places where the GUI configuration can come from: 3. The default configuration file at `$HOME/.gz/sim/<#>/gui.config` \*, where `<#>` is Gazebo Sim's major version. -Each of the items above takes precedence over the ones below it. For example, -if a user chooses a `--gui-config`, the SDF's `` element is ignored. And -the default configuration file is only loaded if no configuration is passed -through the command line or the SDF file. +If a configuration file is specified using `--gui-config`, Gazebo will +ignore both the `` element inside the SDF file and the default +configuration file. Otherwise, Gazebo will load plugins by combining +plugins in the `` element and the default configuration file. +How Gazebo combines these plugins is determined by the +`` policy set in ``: + +- `true`: Plugins + from the default configuration file merged with plugins from the SDF file. + Plugins from SDF files take precedence over plugins from + the default configuration file. This means, if a plugin is specified in + both places, by default, only the one specified in the SDF file will be + loaded. If replacement occurs, the replacement + plugin will take the position of the replaced plugin in the order of plugins. + If replacement does not occur, the plugin is appended to the end of the list. + + The main use case for this policy is for users to rely on + the default list of plugins and only add extra plugins they need for the + application. This policy is also useful for overriding the parameters of a small + subset of the default plugins. This is the default setting in + Gazebo Ionic and later. + +- `false`: If + there are any plugins specified in the SDF file, plugins from the default + configuration file are ignored. This allows the user to have complete + control over which plugins are loaded. This is the default setting in + Gazebo Harmonic and earlier. > \* For log-playback, the default file is > `$HOME/.gz/sim/<#>/playback_gui.config` @@ -28,10 +51,9 @@ through the command line or the SDF file. ### Default configuration -Let's try this in practice. First, let's open Gazebo without passing -any arguments: +Let's try this in practice. First, let's open the default Gazebo world: -`gz sim` +`gz sim default.sdf` You should see an empty world with several plugins loaded by default, such as the 3D Scene, the play/pause button, etc. @@ -57,7 +79,7 @@ Let's try customizing it: 3. Reload Gazebo: - `gz sim` + `gz sim default.sdf` Note how the UI is now in dark mode! @@ -75,7 +97,7 @@ will be created with default values: Let's try overriding the default configuration from an SDF file. Open your favorite editor and save this file as `fuel_preview.sdf`: -``` +```xml @@ -84,6 +106,10 @@ favorite editor and save this file as `fuel_preview.sdf`: name="gz::sim::systems::SceneBroadcaster"> + + false + + @@ -137,7 +163,7 @@ Now let's load this world: `gz sim /fuel_preview.sdf` -Notice how the application has only one GUI plugin loaded, the 3D scene, as defined +Notice how the application has only 3 GUI plugins loaded, as defined on the SDF file above. @image html files/gui_config/fuel_preview.png @@ -147,6 +173,75 @@ the same model loaded into the default GUI layout. @image html files/gui_config/fuel_preview_no_gui.png +Now, let's change the policy so that default plugins are included + +```xml + + + + + + + + true + + + + + + + 3D View + false + docked + + + ogre2 + scene + 1.0 1.0 1.0 + 0.4 0.6 1.0 + 8.3 7 7.8 0 0.5 -2.4 + + + + false + 5 + 5 + floating + false + + + + + false + 5 + 5 + floating + false + + + + + + + https://fuel.gazebosim.org/1.0/OpenRobotics/models/Sun + + + + https://fuel.gazebosim.org/1.0/OpenRobotics/models/Gazebo + + + + +``` + +You will now see the same model loaded in the default GUI layout +similar to when you deleted the `` element altogether. Note that this will also +be the behavior if we removed `` tag. + +@image html files/gui_config/fuel_preview_no_gui.png + ### Command line It's often inconvenient to embed your GUI layout directly into every SDF file. diff --git a/tutorials/server_config.md b/tutorials/server_config.md index bbab5f5110..650eafe0c4 100644 --- a/tutorials/server_config.md +++ b/tutorials/server_config.md @@ -17,11 +17,26 @@ There are a few places where the plugins can be defined: 3. The default configuration file at `$HOME/.gz/sim/<#>/server.config` \*, where `<#>` is Gazebo Sim's major version. -Each of the items above takes precedence over the ones below it. For example, -if a the SDF file has any `` elements, then the -`GZ_SIM_SERVER_CONFIG_PATH` variable is ignored. And the default configuration -file is only loaded if no plugins are passed through the SDF file or the -environment variable. +The behavior of Gazebo when loading these plugins depends on the +`` policy set in ``: + +- `true`: Plugins + in the SDF file are first loaded, followed by plugins from config files + (either `GZ_SIM_SERVER_CONFIG_PATH` or the default configuration file). + Plugins from SDF files take precedence over plugins from config files, this + means, if a plugin is specified in both places, only the one specified in the + SDF file will be loaded. The main use case for this is for users to rely on + the default list of plugins and only add extra plugins they need for the + application. This is the default setting in Gazebo Ionic and later. + +- `false`: If + there are any plugins specified in the SDF file, plugins from the config files + (either `GZ_SIM_SERVER_CONFIG_PATH` or the default configuration file) are + ignored. This allows the user to have complete control over which plugins are + loaded. This is the default setting in Gazebo Harmonic and earlier. + +In both policy settings, the default configuration file is only loaded if no +plugins are passed through the `GZ_SIM_SERVER_CONFIG_PATH` environment variable. > \* For log-playback, the default file is > `$HOME/.gz/sim/<#>/playback_server.config` @@ -85,7 +100,7 @@ will be created with default values: Let's try overriding the default configuration from an SDF file. Open your favorite editor and save this file as `fuel_preview.sdf`: -``` +```xml @@ -147,8 +162,84 @@ Now let's load this world: `gz sim -r /fuel_preview.sdf` -Notice how the application has only one system plugin loaded, the scene -broadcaster, as defined on the SDF file above. Physics is not loaded, so even +Notice how the application has loaded the scene +broadcaster, as defined on the SDF file above as well as the default plugins +`Physics` and `UserCommands`. Since `SceneBroadcaster` is loaded from the SDF file, +it's not loaded again. We see that the cone falls due to gravity since all the +necessary plugins are loaded. + +@image html files/server_config/from_sdf_no_plugins.gif + +Now, let's modify the SDF file to change the policy `false` + +```xml + + + + + + false + + + + + + + + + + + 3D View + false + docked + + + ogre2 + scene + 1.0 1.0 1.0 + 0.4 0.6 1.0 + 8.3 7 7.8 0 0.5 -2.4 + + + + false + 5 + 5 + floating + false + + + + + false + 5 + 5 + floating + false + + + + + + + https://fuel.gazebosim.org/1.0/OpenRobotics/models/Sun + + + + https://fuel.gazebosim.org/1.0/OpenRobotics/models/Construction Cone + + + + +``` +Let's load this world again: + +`gz sim -r /fuel_preview.sdf` + +Notice how the application has only one system plugin loaded, the `SceneBroadcaster`, +as defined on the SDF file above. `Physics` is not loaded, so even though the simulation is running (started with `-r`), the cone doesn't fall with gravity. @@ -299,3 +390,8 @@ the background color is the default grey, instead of the blue color set on the GUI `GzScene` plugin. @image html files/server_config/camera_env.gif + + +### Order of Execution of Plugins +The order of execution of plugins can be controlled by setting +the `` tag inside ``. See example in examples/plugin/priority_printer_plugin and the associated README.md file to learn more. From 1d6651d796e4d6c85a1e8503d3bb7c706d539b64 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Wed, 28 Aug 2024 23:14:42 -0700 Subject: [PATCH 36/80] Update readme, changelog and prepare for 9.0.0pre1 release (#2554) Signed-off-by: Ian Chen --- CMakeLists.txt | 2 +- Changelog.md | 133 ++++++++++++++++++++++++++++++++++++++++++++++++- README.md | 8 +-- 3 files changed, 137 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f309499c8..1c97691a80 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ find_package(gz-cmake4 REQUIRED) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -gz_configure_project(VERSION_SUFFIX) +gz_configure_project(VERSION_SUFFIX pre1) #============================================================================ # Set project-specific options diff --git a/Changelog.md b/Changelog.md index 3544829b54..9b2e73db93 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,6 +1,137 @@ ## Gazebo Sim 9.x -### Gazebo Sim 9.0.0 (2024-XX-XX) +### Gazebo Sim 9.0.0 (2024-09-XX) + +1. **Baseline:** this includes all changes from 8.6.0 and earlier. + +1. Add a flexible mechanism to combine user and default plugins + * [Pull request #2497](https://github.com/gazebosim/gz-sim/pull/2497) + +1. Fix crash at exit due to a race condition with new signal handler + * [Pull request #2545](https://github.com/gazebosim/gz-sim/pull/2545) + +1. Remove from test worlds + * [Pull request #2551](https://github.com/gazebosim/gz-sim/pull/2551) + +1. Consolidate entity creation. + * [Pull request #2452](https://github.com/gazebosim/gz-sim/pull/2452) + * [Pull request #2527](https://github.com/gazebosim/gz-sim/pull/2527) + * [Pull request #2546](https://github.com/gazebosim/gz-sim/pull/2546) + +1. Add cmake install prefix + * [Pull request #2539](https://github.com/gazebosim/gz-sim/pull/2539) + +1. Fix UNIT_Server_TEST failure caused by change in behavior of `gz::common::SignalHandler` + * [Pull request #2537](https://github.com/gazebosim/gz-sim/pull/2537) + +1. Fix SphericalCoordinates deprecation warnings + * [Pull request #2535](https://github.com/gazebosim/gz-sim/pull/2535) + +1. Revert behavior change introduced in #2452 + +1. Specify System::PreUpdate, Update execution order + * [Pull request #2487](https://github.com/gazebosim/gz-sim/pull/2487) + +1. Add System interface to set default priority + * [Pull request #2500](https://github.com/gazebosim/gz-sim/pull/2500) + +1. Force Qt to use xcb plugin on Wayland + * [Pull request #2526](https://github.com/gazebosim/gz-sim/pull/2526) + +1. Physics: set link velocity from VelocityReset components + * [Pull request #2489](https://github.com/gazebosim/gz-sim/pull/2489) + +1. ForceTorque system: write WrenchMeasured to ECM + * [Pull request #2494](https://github.com/gazebosim/gz-sim/pull/2494) + +1. Remove unused var + * [Pull request #2524](https://github.com/gazebosim/gz-sim/pull/2524) + +1. Deprecate use of added mass via hydrodynamics + * [Pull request #2493](https://github.com/gazebosim/gz-sim/pull/2493) + +1. Make sure steering joints exist before updating velocity / odometry in AckermannSteering plugin + * [Pull request #2521](https://github.com/gazebosim/gz-sim/pull/2521) + +1. Fix ResourceSpawner + * [Pull request #2490](https://github.com/gazebosim/gz-sim/pull/2490) + +1. gui_system_plugin: clarify description in README + * [Pull request #2253](https://github.com/gazebosim/gz-sim/pull/2253) + +1. Fix adding system to non-existent entity + * [Pull request #2516](https://github.com/gazebosim/gz-sim/pull/2516) + +1. Remove ignition related deprecations + * [Pull request #2505](https://github.com/gazebosim/gz-sim/pull/2505) + +1. Fix #2458 - Checking linkEnity is empty + * [Pull request #2509](https://github.com/gazebosim/gz-sim/pull/2509) + +1. Specify System::PreUpdate, Update execution order + * [Pull request #2487](https://github.com/gazebosim/gz-sim/pull/2487) + +1. Improve signal handling + * [Pull request #2501](https://github.com/gazebosim/gz-sim/pull/2501) + +1. Initialize threadsNeedCleanUp + * [Pull request #2503](https://github.com/gazebosim/gz-sim/pull/2503) + +1. Added support for spacecraft thrusters + * [Pull request #2431](https://github.com/gazebosim/gz-sim/pull/2431) + +1. Remove systems if their parent entity is removed + * [Pull request #2232](https://github.com/gazebosim/gz-sim/pull/2232) + +1. Disable rendering tests that are failing on github actions + * [Pull request #2480](https://github.com/gazebosim/gz-sim/pull/2480) + +1. Fix warnings generated by NetworkConfigTest + * [Pull request #2469](https://github.com/gazebosim/gz-sim/pull/2469) + +1. Support visualizing mesh collisions with convex decomposition + * [Pull request #2352](https://github.com/gazebosim/gz-sim/pull/2352) + +1. Remove python3-distutils from package.xml + * [Pull request #2450](https://github.com/gazebosim/gz-sim/pull/2450) + +1. shapes.sdf example: bump to 1.12, add cone shape + * [Pull request #2448](https://github.com/gazebosim/gz-sim/pull/2448) + +1. Adding cone primitives. + * [Pull request #2410](https://github.com/gazebosim/gz-sim/pull/2410) + * [Pull request #2449](https://github.com/gazebosim/gz-sim/pull/2449) + +1. Enable 24.04 CI, require cmake 3.22.1 + * [Pull request #2420](https://github.com/gazebosim/gz-sim/pull/2420) + +1. Parse and set bullet solver iterations + * [Pull request #2351](https://github.com/gazebosim/gz-sim/pull/2351) + +1. ForceTorque system: improve readability + * [Pull request #2403](https://github.com/gazebosim/gz-sim/pull/2403) + +1. Fix warn unused variable in test + * [Pull request #2388](https://github.com/gazebosim/gz-sim/pull/2388) + +1. Physics: remove VelocityCmd at each time step + * [Pull request #2228](https://github.com/gazebosim/gz-sim/pull/2228) + +1. Regroup tutorials into four categories + * [Pull request #2109](https://github.com/gazebosim/gz-sim/pull/2109) + +1. Remove HIDE_SYMBOLS_BY_DEFAULT: replace by a default configuration in gz-cmake. + * [Pull request #2283](https://github.com/gazebosim/gz-sim/pull/2283) + +1. Enable HIDE_SYMBOLS_BY_DEFAULT + linux patches + * [Pull request #2248](https://github.com/gazebosim/gz-sim/pull/2248) + +1. Use sdf FindElement API to avoid const_cast + * [Pull request #2231](https://github.com/gazebosim/gz-sim/pull/2231) + +1. Bumps in Ionic: gz-sim9 + * [Pull request #2205](https://github.com/gazebosim/gz-sim/pull/2205) + * [Pull request #2211](https://github.com/gazebosim/gz-sim/pull/2211) ## Gazebo Sim 8.x diff --git a/README.md b/README.md index 145b8b9dde..8c35bb9549 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,10 @@ Build | Status -- | -- -Test coverage | [![codecov](https://codecov.io/gh/gazebosim/gz-sim/tree/gz-sim8/graph/badge.svg)](https://codecov.io/gh/gazebosim/gz-sim/tree/gz-sim8) -Ubuntu Jammy | [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=gz_sim-ci-gz-sim8-jammy-amd64)](https://build.osrfoundation.org/job/gz_sim-ci-gz-sim8-jammy-amd64) -Homebrew | [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=gz_sim-ci-gz-sim8-homebrew-amd64)](https://build.osrfoundation.org/job/gz_sim-ci-gz-sim8-homebrew-amd64) -Windows | [![Build Status](https://build.osrfoundation.org/job/gz_sim-8-win/badge/icon)](https://build.osrfoundation.org/job/gz_sim-8-win/) +Test coverage | [![codecov](https://codecov.io/gh/gazebosim/gz-sim/tree/gz-sim9/graph/badge.svg)](https://codecov.io/gh/gazebosim/gz-sim/tree/gz-sim9) +Ubuntu Noble | [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=gz_sim-ci-gz-sim9-noble-amd64)](https://build.osrfoundation.org/job/gz_sim-ci-gz-sim9-noble-amd64) +Homebrew | [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=gz_sim-ci-gz-sim9-homebrew-amd64)](https://build.osrfoundation.org/job/gz_sim-ci-gz-sim9-homebrew-amd64) +Windows | [![Build Status](https://build.osrfoundation.org/job/gz_sim-9-win/badge/icon)](https://build.osrfoundation.org/job/gz_sim-9-win/) Gazebo Sim is an open source robotics simulator. Through Gazebo Sim, users have access to high fidelity physics, rendering, and sensor models. Additionally, users and developers have multiple points of entry to simulation including a graphical user interface, plugins, and asynchronous message passing and services. From a20bf25654b1c0ff4cea176a1cbfba3e49203733 Mon Sep 17 00:00:00 2001 From: "Addisu Z. Taddese" Date: Thu, 29 Aug 2024 08:50:17 -0500 Subject: [PATCH 37/80] Fix doxygen page links (#2553) * Fix doxygen page links Signed-off-by: Addisu Z. Taddese * One more page Signed-off-by: Addisu Z. Taddese * Add new lines between refs Signed-off-by: Addisu Z. Taddese --------- Signed-off-by: Addisu Z. Taddese (cherry picked from commit c1e367b7251b2224311831db71ac3b3fa12c6f04) --- tutorials/adding_system_plugins.md | 6 +++--- tutorials/adding_visuals.md | 4 ++-- tutorials/create_vehicle.md | 2 +- tutorials/frame_reference.md | 4 ++-- tutorials/lander.md | 14 +++++++------- tutorials/surface_vehicles.md | 12 ++++++------ tutorials/theory_buoyancy.md | 2 +- tutorials/theory_hydrodynamics.md | 2 +- tutorials/underwater_vehicles.md | 14 +++++++------- 9 files changed, 30 insertions(+), 30 deletions(-) diff --git a/tutorials/adding_system_plugins.md b/tutorials/adding_system_plugins.md index 0df852a22d..3a415e630c 100644 --- a/tutorials/adding_system_plugins.md +++ b/tutorials/adding_system_plugins.md @@ -1,4 +1,4 @@ -\page adding_system_plugins +\page adding_system_plugins Adding system plugins # Overview @@ -10,11 +10,11 @@ capabilities to it. Make sure to go through the following tutorial first, where you'll learn how to create the vehicle used in this tutorial. -https://gazebosim.org/api/sim/8/create_vehicle.html +\ref create_vehicle ## Related tutorials -https://gazebosim.org/api/sim/8/createsystemplugins.html +\ref createsystemplugins # Adding a system plugin diff --git a/tutorials/adding_visuals.md b/tutorials/adding_visuals.md index 7df40c70b2..d3f6f7a8a9 100644 --- a/tutorials/adding_visuals.md +++ b/tutorials/adding_visuals.md @@ -1,4 +1,4 @@ -\page adding_visuals +\page adding_visuals Adding visuals # Overview @@ -8,7 +8,7 @@ mesh to our turtle, making it look much better. ## Related tutorials -https://gazebosim.org/api/sim/8/meshtofuel.html +\ref meshtofuel The next tutorials, although still relevant, are from an older version of Gazebo and some details might be different than the current versions: diff --git a/tutorials/create_vehicle.md b/tutorials/create_vehicle.md index 988fd32ba4..b9c30b608f 100644 --- a/tutorials/create_vehicle.md +++ b/tutorials/create_vehicle.md @@ -1,4 +1,4 @@ -\page create_vehicle +\page create_vehicle Create a maritime vehicle # Overview diff --git a/tutorials/frame_reference.md b/tutorials/frame_reference.md index 3d904fa19e..e720f1242d 100644 --- a/tutorials/frame_reference.md +++ b/tutorials/frame_reference.md @@ -1,4 +1,4 @@ -\page frame_reference +\page frame_reference Frame of reference # Overview @@ -7,7 +7,7 @@ the conventions used in Gazebo. ## Related tutorials -https://gazebosim.org/api/sim/8/spherical_coordinates.html +\ref spherical_coordinates # Gazebo world frame diff --git a/tutorials/lander.md b/tutorials/lander.md index ecff012177..184f17be44 100644 --- a/tutorials/lander.md +++ b/tutorials/lander.md @@ -1,4 +1,4 @@ -\page lander +\page lander Create a lander vehicle # Overview @@ -9,17 +9,17 @@ to the surface while they collect sensor measurements. ## Related tutorials -https://gazebosim.org/api/sim/8/create_vehicle.html +\ref create_vehicle -https://gazebosim.org/api/sim/8/adding_visuals.html +\ref adding_visuals -https://gazebosim.org/api/sim/8/frame_reference.html +\ref frame_reference -https://gazebosim.org/api/sim/8/adding_system_plugins.html +\ref adding_system_plugins -https://gazebosim.org/api/sim/8/theory_buoyancy.html +\ref theory_buoyancy -https://gazebosim.org/api/sim/8/theory_hydrodynamics.html +\ref theory_hydrodynamics # Create your vehicle diff --git a/tutorials/surface_vehicles.md b/tutorials/surface_vehicles.md index 812edf98ba..a89186a502 100644 --- a/tutorials/surface_vehicles.md +++ b/tutorials/surface_vehicles.md @@ -1,4 +1,4 @@ -\page surface_vehicles +\page surface_vehicles Create a surface vehicle # Overview @@ -8,15 +8,15 @@ with the presence of waves and wind. ## Related tutorials -https://gazebosim.org/api/sim/8/create_vehicle.html +\ref create_vehicle -https://gazebosim.org/api/sim/8/adding_visuals.html +\ref adding_visuals -https://gazebosim.org/api/sim/8/frame_reference.html +\ref frame_reference -https://gazebosim.org/api/sim/8/adding_system_plugins.html +\ref adding_system_plugins -https://gazebosim.org/api/sim/8/theory_hydrodynamics.html +\ref theory_hydrodynamics # Adding an environment diff --git a/tutorials/theory_buoyancy.md b/tutorials/theory_buoyancy.md index f464ad8fc1..19bb2dad8d 100644 --- a/tutorials/theory_buoyancy.md +++ b/tutorials/theory_buoyancy.md @@ -1,4 +1,4 @@ -\page theory_buoyancy +\page theory_buoyancy Buoyancy # Overview diff --git a/tutorials/theory_hydrodynamics.md b/tutorials/theory_hydrodynamics.md index 7f2c7cd5a5..d2e3deb47d 100644 --- a/tutorials/theory_hydrodynamics.md +++ b/tutorials/theory_hydrodynamics.md @@ -1,4 +1,4 @@ -\page theory_hydrodynamics +\page theory_hydrodynamics Hydrodynamics # Overview diff --git a/tutorials/underwater_vehicles.md b/tutorials/underwater_vehicles.md index 86d76ba995..1efcd90aef 100644 --- a/tutorials/underwater_vehicles.md +++ b/tutorials/underwater_vehicles.md @@ -1,4 +1,4 @@ -\page underwater_vehicles +\page underwater_vehicles Create an underwater vehicle # Overview @@ -11,17 +11,17 @@ guide you through the setup of the [MBARI LRAUV](https://app.gazebosim.org/accur ## Related tutorials -https://gazebosim.org/api/sim/8/create_vehicle.html +\ref create_vehicle -https://gazebosim.org/api/sim/8/adding_visuals.html +\ref adding_visuals -https://gazebosim.org/api/sim/8/frame_reference.html +\ref frame_reference -https://gazebosim.org/api/sim/8/adding_system_plugins.html +\ref adding_system_plugins -https://gazebosim.org/api/sim/8/theory_buoyancy.html +\ref theory_buoyancy -https://gazebosim.org/api/sim/8/theory_hydrodynamics.html +\ref theory_hydrodynamics # Create your vehicle From 4ecdb43b4f9a1f90f708f077e98059368ccacc07 Mon Sep 17 00:00:00 2001 From: Enzo Ghisoni <33607172+EnzoGhisoni@users.noreply.github.com> Date: Mon, 2 Sep 2024 08:55:39 +0200 Subject: [PATCH 38/80] Update migration_plugins.md (#2564) Fix broken the link for the "6 different C++ plugin types". Seems to be this one. Signed-off-by: Enzo Ghisoni <33607172+EnzoGhisoni@users.noreply.github.com> --- tutorials/migration_plugins.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/migration_plugins.md b/tutorials/migration_plugins.md index bad1919e6f..a134f796e8 100644 --- a/tutorials/migration_plugins.md +++ b/tutorials/migration_plugins.md @@ -1,7 +1,7 @@ \page migrationplugins Migration from Gazebo Classic: Plugins Gazebo Classic supports -[6 different C++ plugin types](http://gazebosim.org/tutorials?tut=plugins_hello_world&cat=write_plugin), +[6 different C++ plugin types](https://classic.gazebosim.org/tutorials?tut=plugins_hello_world#PluginTypes), each providing access to different parts of the API, like physics, rendering, sensors, GUI, etc. Due to Gazebo Sim's architecture based on an [ECS](https://en.wikipedia.org/wiki/Entity_component_system) From 040acb2442b2e85be5f66a88dd24c999f1f25d7f Mon Sep 17 00:00:00 2001 From: Antoine Van Malleghem Date: Mon, 2 Sep 2024 10:10:17 +0200 Subject: [PATCH 39/80] Add world name to documentation (#2571) Signed-off-by: Van Malleghem Antoine --- tutorials/move_camera_to_model.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/move_camera_to_model.md b/tutorials/move_camera_to_model.md index 0ba5287eeb..8b6eac8172 100644 --- a/tutorials/move_camera_to_model.md +++ b/tutorials/move_camera_to_model.md @@ -7,7 +7,7 @@ This tutorial gives an introduction to Gazebo's service `/gui/move_to/model`. Th 1. Load the **View Angle** plugin. This service is only available when the **View Angle** plugin is loaded. 2. Call the service using the request message type `gz.msgs.GUICamera` and the response message type `gz.msgs.Boolean`. The distance to the object is defined as the z coordinate, and the direction of the camera with a quaternion. It's possible to select the projection type. -For example, Let's move the camera to the `box` model looking down from 5 meters away. +For example, Let's move the camera to the `box` model looking down from 5 meters away. This example uses the `shapes.sdf` world. ```bash gz service -s /gui/move_to/model --reqtype gz.msgs.GUICamera --reptype gz.msgs.Boolean -r 'name: "box", pose: {position: {z:5}, orientation: {x:0, y:0, z: -1, w:0}}, projection_type: "orbit"' --timeout 5000 From 0dccd0607fada1041a10a86526ac7eb47291421a Mon Sep 17 00:00:00 2001 From: Antoine Van Malleghem Date: Mon, 2 Sep 2024 17:10:08 +0200 Subject: [PATCH 40/80] Fix lander tutorial (#2576) Signed-off-by: Van Malleghem Antoine --- tutorials/files/lander/lander_visuals.png | Bin 117647 -> 98224 bytes tutorials/lander.md | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tutorials/files/lander/lander_visuals.png b/tutorials/files/lander/lander_visuals.png index af12dd03a422e82e7b9603006e26f6d84fea7ef0..51b08228f2fac01ba91387c2e83025ad8804bddf 100644 GIT binary patch literal 98224 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 KK?*8i6!3pinu8z! literal 117647 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 Date: Mon, 2 Sep 2024 10:40:07 -0700 Subject: [PATCH 41/80] Fix looking up camera name in camera lens system (#2559) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ian Chen Co-authored-by: Alejandro Hernández Cordero --- src/systems/lens_flare/LensFlare.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/systems/lens_flare/LensFlare.cc b/src/systems/lens_flare/LensFlare.cc index 8f099d6653..6739bb4e71 100644 --- a/src/systems/lens_flare/LensFlare.cc +++ b/src/systems/lens_flare/LensFlare.cc @@ -128,8 +128,9 @@ void LensFlare::Configure( } // Get Camera Name - this->dataPtr->cameraName = scopedName(this->dataPtr->entity, - _ecm, "::", false); + this->dataPtr->cameraName = + removeParentScope(scopedName(this->dataPtr->entity, + _ecm, "::", false), "::"); // call function that connects to post render event this->dataPtr->postRenderConn = From f7afdf56f79f8f8880c6eb5f5a429dfe872e9710 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Hern=C3=A1ndez=20Cordero?= Date: Mon, 2 Sep 2024 22:42:35 +0200 Subject: [PATCH 42/80] Fixed warning joint trayectory sdf (#2580) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Alejandro Hernández Cordero --- examples/worlds/joint_trajectory_controller.sdf | 12 ++++++------ test/worlds/joint_trajectory_controller.sdf | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/examples/worlds/joint_trajectory_controller.sdf b/examples/worlds/joint_trajectory_controller.sdf index 2f9508bd49..d6b62a5b8c 100644 --- a/examples/worlds/joint_trajectory_controller.sdf +++ b/examples/worlds/joint_trajectory_controller.sdf @@ -479,10 +479,10 @@ RR_velocity_control_link1 1 0 0 + + 0.02 + - - 0.02 - 0 0 0.1 0 0 0 @@ -490,10 +490,10 @@ RR_velocity_control_link2 1 0 0 + + 0.01 + - - 0.01 - RR_velocity_control_link1 1 0 0 + + 0.02 + - - 0.02 - 0 0 0.1 0 0 0 @@ -335,10 +335,10 @@ RR_velocity_control_link2 1 0 0 + + 0.01 + - - 0.01 - Date: Tue, 3 Sep 2024 01:13:23 +0200 Subject: [PATCH 43/80] Video recorder tutorial fixes. (#2582) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Carlos Agüero --- tutorials/video_recorder.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/video_recorder.md b/tutorials/video_recorder.md index efea6422c2..fa655c9b1a 100644 --- a/tutorials/video_recorder.md +++ b/tutorials/video_recorder.md @@ -13,7 +13,7 @@ Gazebo that already has this plugin included in the GUI. gz sim -v 4 video_record_dbl_pendulum.sdf ``` -In this demo world, you should see a video recorder icon positioned on the top. +In this demo world, you should see a video recorder icon positioned on the top left area of the window along with other buttons. Clicking on the video recorder button gives you the video format options that are available. @@ -107,5 +107,5 @@ generated video. The default bitrate is 2Mbps. Since Gazebo Common 3.10.2, there is support for utilizing the power of GPUs to speed up the video encoding process. See the -[Hardware-accelerated Video Encoding tutorial](https://gazebosim.org/api/common/5/hw-encoding.html) +[Hardware-accelerated Video Encoding tutorial](https://gazebosim.org/api/common/6/hw-encoding.html) for more details. From 5a940503ec8836a83bdfa8f52e357f58b9231ddf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Hern=C3=A1ndez=20Cordero?= Date: Tue, 3 Sep 2024 01:14:38 +0200 Subject: [PATCH 44/80] Removed actor population due bad merge (#2581) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Alejandro Hernández Cordero --- examples/worlds/actors_population.sdf | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 examples/worlds/actors_population.sdf diff --git a/examples/worlds/actors_population.sdf b/examples/worlds/actors_population.sdf deleted file mode 100644 index e69de29bb2..0000000000 From 7b3d182dc9ee60b73de733b202ba0f82e8a189ef Mon Sep 17 00:00:00 2001 From: Arjo Chakravarty Date: Tue, 3 Sep 2024 09:14:03 +0800 Subject: [PATCH 45/80] Fix hydrodynamics deprecation warning. (#2579) The warning message in the hydrodynamics added mass section is broken. Firstly, we probably should check for if any value was set on the added mass. Secondly, the message was mangled. Finally we downgraded the error to a warning as the error leads to users getting confused. Signed-off-by: Arjo Chakravarty --- src/systems/hydrodynamics/Hydrodynamics.cc | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/systems/hydrodynamics/Hydrodynamics.cc b/src/systems/hydrodynamics/Hydrodynamics.cc index c3cd80e9c1..eed111deff 100644 --- a/src/systems/hydrodynamics/Hydrodynamics.cc +++ b/src/systems/hydrodynamics/Hydrodynamics.cc @@ -355,21 +355,22 @@ void Hydrodynamics::Configure( prefix += snameConventionVel[j]; this->dataPtr->Ma(i, j) = SdfParamDouble(_sdf, prefix, 0); addedMassSpecified = (std::abs(this->dataPtr->Ma(i, j)) > 1e-6) - && addedMassSpecified; + || addedMassSpecified; } } _sdf->Get("disable_coriolis", this->dataPtr->disableCoriolis, false); - _sdf->Get("disable_added_mass", this->dataPtr->disableAddedMass, false); - if (!this->dataPtr->disableAddedMass || addedMassSpecified) + _sdf->Get("disable_added_mass", + this->dataPtr->disableAddedMass, false); + if (!this->dataPtr->disableAddedMass && addedMassSpecified) { - gzerr << "The use of added mass through this plugin is deprecated and will" - << "be removed in Gazebo J* as this formulation has instabilities." - << " We recommend using the SDF `` tag based method" + gzwarn << "The use of added mass through this plugin is deprecated and " + << "will be removed in Gazebo J* as this formulation has instabilities. " + << "We recommend using the SDF `` tag based method " << "[http://sdformat.org/spec?ver=1.11&elem=link" << "#inertial_fluid_added_mass]" - << "To get rid of this warning we recommend setting" - << "` to true." + << "To get rid of this warning we recommend setting " + << "`` to true and updating your model" << std::endl; } // Create model object, to access convenient functions From faebf12d46860bc7c7a6f188b448189a98ad9c75 Mon Sep 17 00:00:00 2001 From: Arjo Chakravarty Date: Tue, 3 Sep 2024 09:51:36 +0800 Subject: [PATCH 46/80] Fix issue #2566: Prevent follow actor plugin from crashing when actor is (#2577) removed Adds a simple check that the entities are still in the scene. Signed-off-by: Arjo Chakravarty --- src/systems/follow_actor/FollowActor.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/systems/follow_actor/FollowActor.cc b/src/systems/follow_actor/FollowActor.cc index 99d8315882..4b952253c2 100644 --- a/src/systems/follow_actor/FollowActor.cc +++ b/src/systems/follow_actor/FollowActor.cc @@ -209,7 +209,9 @@ void FollowActor::PreUpdate(const UpdateInfo &_info, this->dataPtr->lastUpdate = _info.simTime; // Is there a follow target? - if (this->dataPtr->targetEntity == kNullEntity) + if (this->dataPtr->targetEntity == kNullEntity || + _ecm.HasEntity(this->dataPtr->targetEntity) || + _ecm.HasEntity(this->dataPtr->actorEntity)) return; // Current world pose From 8a3d9999932aa1a3aae6828ab3cb2222e853eea0 Mon Sep 17 00:00:00 2001 From: Antoine Van Malleghem Date: Tue, 3 Sep 2024 09:51:33 +0200 Subject: [PATCH 47/80] Enhance readme (#2573) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Van Malleghem Antoine Co-authored-by: Alejandro Hernández Cordero --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 8c35bb9549..2920bc856c 100644 --- a/README.md +++ b/README.md @@ -32,10 +32,10 @@ Gazebo Sim is derived from [Gazebo Classic](http://classic.gazebosim.org) and re [Folder Structure](#folder-structure) -[Code of Conduct](#code-of-conduct) - [Contributing](#contributing) +[Code of Conduct](#code-of-conduct) + [Versioning](#versioning) [License](#license) @@ -154,7 +154,7 @@ gz-sim │   ├── performance Performance tests. │   ├── plugins Plugins used in tests. │   ├── regression Regression tests. -│   └── tutorials Tutorials, written in markdown. +├── tutorials Tutorials, written in markdown. ├── Changelog.md Changelog. ├── CMakeLists.txt CMake build script. ├── Migration.md Migration guide. @@ -163,8 +163,8 @@ gz-sim # Contributing -Please see -[CONTRIBUTING.md](https://github.com/gazebosim/gz-sim/blob/main/CONTRIBUTING.md). +Please see the +[contribution guide](https://gazebosim.org/docs/all/contributing/). # Code of Conduct From e5faf777160b0faf92b47869be56e4cc6ca5761f Mon Sep 17 00:00:00 2001 From: Enzo Ghisoni <33607172+EnzoGhisoni@users.noreply.github.com> Date: Tue, 3 Sep 2024 11:02:37 +0200 Subject: [PATCH 48/80] Update migration_sdf.md (#2563) Fix broken links for ERB, Server configuration tutorial and GUI configuration tutorial Signed-off-by: Enzo Ghisoni <33607172+EnzoGhisoni@users.noreply.github.com> --- tutorials/migration_sdf.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tutorials/migration_sdf.md b/tutorials/migration_sdf.md index 37a6a444c0..a9ae0008db 100644 --- a/tutorials/migration_sdf.md +++ b/tutorials/migration_sdf.md @@ -250,7 +250,7 @@ side-by-side on the same file. Instead, keep separate files and inject the plugi needed. There isn't a built-in mechanism on SDFormat to inject plugins into files yet, -but users can make use of templating tools like [ERB](erb_template.html) +but users can make use of templating tools like [ERB](https://github.com/gazebosim/gz-sim/blob/gz-sim9/tutorials/erb_template.md) and [xacro](http://wiki.ros.org/xacro) to generate SDF files with the correct plugins. ### Default plugins @@ -260,8 +260,8 @@ For example, by default, Gazebo will load all the system plugins defined on the `~/.gz/sim/<#>/server.config` file and all GUI plugins defined on the `~/.gz/sim/<#>/gui.config` file. But the user can always remove plugins from those files, or choose different ones by adding `` tags to the SDF file. -(For more details, see the [Server configuration tutorial](server_config.html) -and the [GUI configuration tutorial](gui_config.html)). +(For more details, see the [Server configuration tutorial](https://github.com/gazebosim/gz-sim/blob/gz-sim9/tutorials/server_config.md) +and the [GUI configuration tutorial](https://github.com/gazebosim/gz-sim/blob/gz-sim9/tutorials/gui_config.md)). This is important to keep in mind when migrating your SDF files, because files that worked on Gazebo classic may need more plugins on Gazebo. From 1ff908227896459afdaf8fe1fc68d3053ac6d84b Mon Sep 17 00:00:00 2001 From: Antoine Van Malleghem Date: Tue, 3 Sep 2024 16:24:55 +0200 Subject: [PATCH 49/80] Fix typo plugins to plugin directory in README.md (#2574) Signed-off-by: Van Malleghem Antoine --- examples/plugin/custom_sensor_system/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/plugin/custom_sensor_system/README.md b/examples/plugin/custom_sensor_system/README.md index 47700bc7fe..7d47ddb04b 100644 --- a/examples/plugin/custom_sensor_system/README.md +++ b/examples/plugin/custom_sensor_system/README.md @@ -10,7 +10,7 @@ It uses the odometer created on this example: From the root of the `gz-sim` repository, do the following to build the example: ~~~ -cd examples/plugins/custom_sensor_system +cd examples/plugin/custom_sensor_system mkdir build cd build cmake .. @@ -27,7 +27,7 @@ the `odometer.sdf` file that's going to be loaded. Before starting Gazebo, we must make sure it can find the plugin by doing: ~~~ -cd examples/plugins/custom_sensor_system +cd examples/plugin/custom_sensor_system export GZ_SIM_SYSTEM_PLUGIN_PATH=`pwd`/build ~~~ From 6e7f2a0180994c019dce5450299d545960317eb4 Mon Sep 17 00:00:00 2001 From: Alessandro Sofia Date: Tue, 3 Sep 2024 17:31:40 +0200 Subject: [PATCH 50/80] Update tutorial (#2562) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update tutorial to match the sdf Signed-off-by: Alessandro Sofia Co-authored-by: Alejandro Hernández Cordero --- tutorials/model_photo_shoot.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/model_photo_shoot.md b/tutorials/model_photo_shoot.md index f3ce372c9c..0730e337a1 100644 --- a/tutorials/model_photo_shoot.md +++ b/tutorials/model_photo_shoot.md @@ -37,7 +37,7 @@ contains a good example of the different options and other related plugins: filename="gz-sim-sensors-system" name="gz::sim::systems::Sensors"> ogre2 - 1, 1, 1 + 1.0, 1.0, 1.0 ``` A render plugin is needed to render the image. If `ogre2` is used, as shown in @@ -53,7 +53,7 @@ contains a good example of the different options and other related plugins: filename="gz-sim-model-photo-shoot-system" name="gz::sim::systems::ModelPhotoShoot"> poses.txt - true + false ``` From 4597293e6c6f3b3a3bda8c389fe891d8b5d23953 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Tue, 3 Sep 2024 13:21:17 -0700 Subject: [PATCH 51/80] Fix crash when running the optical tactile sensor world (#2561) Signed-off-by: Ian Chen --- .../OpticalTactilePlugin.cc | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/systems/optical_tactile_plugin/OpticalTactilePlugin.cc b/src/systems/optical_tactile_plugin/OpticalTactilePlugin.cc index f1d6d618fa..e2bf376e1e 100644 --- a/src/systems/optical_tactile_plugin/OpticalTactilePlugin.cc +++ b/src/systems/optical_tactile_plugin/OpticalTactilePlugin.cc @@ -530,6 +530,7 @@ void OpticalTactilePluginPrivate::Load(const EntityComponentManager &_ecm) int contactSensorCounter = 0; sdf::Sensor depthCameraSdf; components::Pose depthCameraPose = components::Pose(); + std::string depthCameraTopic; for (const Entity &sensor : sensorsInsideLink) { if (_ecm.EntityHasComponentType(sensor, components::DepthCamera::typeId)) @@ -538,6 +539,10 @@ void OpticalTactilePluginPrivate::Load(const EntityComponentManager &_ecm) depthCameraSdf = _ecm.Component(sensor)->Data(); depthCameraPose = *(_ecm.Component(sensor)); + auto depthCameraTopicComp = + _ecm.Component(sensor); + if (depthCameraTopicComp) + depthCameraTopic = depthCameraTopicComp->Data(); } if (_ecm.EntityHasComponentType(sensor, components::ContactSensor::typeId)) @@ -558,16 +563,6 @@ void OpticalTactilePluginPrivate::Load(const EntityComponentManager &_ecm) } // Store depth camera update rate - if (!depthCameraSdf.Element()->HasElement("update_rate")) - { - if (!this->initErrorPrinted) - { - gzerr << "Depth camera should have an value " - << "(only printed once)" << std::endl; - this->initErrorPrinted = true; - } - return; - } this->cameraUpdateRate = depthCameraSdf.UpdateRate(); // Depth camera data is float, so convert Pose3d to Pose3f @@ -581,20 +576,27 @@ void OpticalTactilePluginPrivate::Load(const EntityComponentManager &_ecm) depthCameraPose.Data().Rot().Z()); // Configure subscriber for depth camera images - if (!depthCameraSdf.Element()->HasElement("topic")) + if (depthCameraTopic.empty()) { - gzwarn << "Depth camera publishing to __default__ topic. " - << "It's possible that two depth cameras are publishing into the same " - << "topic" << std::endl; + // get the topic from sdf if the one in sensor topic component is empty + depthCameraTopic = depthCameraSdf.Topic(); } - else + + if (depthCameraTopic.empty()) { - gzdbg << "Depth camera publishing to " - << depthCameraSdf.Topic() << " topic" << std::endl; + if (!this->initErrorPrinted) + { + gzerr << "Depth camera topic is empty. " << std::endl; + this->initErrorPrinted = true; + } + return; } + gzdbg << "Depth camera publishing to " + << depthCameraTopic << " topic" << std::endl; + std::string topic = - "/" + depthCameraSdf.Topic() + "/points"; + "/" + depthCameraTopic + "/points"; if (!this->node.Subscribe(topic, &OpticalTactilePluginPrivate::DepthCameraCallback, this)) { From c04a7d9fa62e0ea185121e13bf941de10eaf0545 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Tue, 3 Sep 2024 16:19:25 -0700 Subject: [PATCH 52/80] Fix logic in actor system (#2584) Signed-off-by: Ian Chen --- src/systems/follow_actor/FollowActor.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/systems/follow_actor/FollowActor.cc b/src/systems/follow_actor/FollowActor.cc index 4b952253c2..88f72c3f84 100644 --- a/src/systems/follow_actor/FollowActor.cc +++ b/src/systems/follow_actor/FollowActor.cc @@ -210,8 +210,8 @@ void FollowActor::PreUpdate(const UpdateInfo &_info, // Is there a follow target? if (this->dataPtr->targetEntity == kNullEntity || - _ecm.HasEntity(this->dataPtr->targetEntity) || - _ecm.HasEntity(this->dataPtr->actorEntity)) + !_ecm.HasEntity(this->dataPtr->targetEntity) || + !_ecm.HasEntity(this->dataPtr->actorEntity)) return; // Current world pose From f0a0e2d1b06dbc833681f419b70cdb6406f09f3b Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Wed, 4 Sep 2024 08:42:43 -0700 Subject: [PATCH 53/80] use ogre2 for dem worlds (#2586) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ian Chen Co-authored-by: Alejandro Hernández Cordero --- examples/worlds/dem_monterey_bay.sdf | 2 +- examples/worlds/dem_moon.sdf | 2 +- examples/worlds/dem_volcano.sdf | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/worlds/dem_monterey_bay.sdf b/examples/worlds/dem_monterey_bay.sdf index 7f2d170121..39539ca1f2 100644 --- a/examples/worlds/dem_monterey_bay.sdf +++ b/examples/worlds/dem_monterey_bay.sdf @@ -22,7 +22,7 @@ docked - ogre + ogre2 scene 0 0 0 0.8 0.8 0.8 diff --git a/examples/worlds/dem_moon.sdf b/examples/worlds/dem_moon.sdf index a1de71ad5e..047607d3f1 100644 --- a/examples/worlds/dem_moon.sdf +++ b/examples/worlds/dem_moon.sdf @@ -29,7 +29,7 @@ docked - ogre + ogre2 scene 0 0 0 0.8 0.8 0.8 diff --git a/examples/worlds/dem_volcano.sdf b/examples/worlds/dem_volcano.sdf index f48b2779a4..f2f766b869 100644 --- a/examples/worlds/dem_volcano.sdf +++ b/examples/worlds/dem_volcano.sdf @@ -21,7 +21,7 @@ docked - ogre + ogre2 scene 0 0 0 0.8 0.8 0.8 From 20b87f263baf320fc873c013e6521b2ceed16710 Mon Sep 17 00:00:00 2001 From: "Addisu Z. Taddese" Date: Wed, 4 Sep 2024 11:25:46 -0500 Subject: [PATCH 54/80] Fix crash on windows due to invalid log directory path (#2589) Signed-off-by: Addisu Z. Taddese --- src/ServerConfig.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ServerConfig.cc b/src/ServerConfig.cc index 4e75a68ea0..c3562a77fb 100644 --- a/src/ServerConfig.cc +++ b/src/ServerConfig.cc @@ -168,9 +168,13 @@ class gz::sim::ServerConfigPrivate this->timestamp = GZ_SYSTEM_TIME(); + std::string timeInIso = common::timeToIso(this->timestamp); + #ifdef _WIN32 + std::replace(timeInIso.begin(), timeInIso.end(), ':', '-'); + #endif // Set a default log record path this->logRecordPath = common::joinPaths(home, - ".gz", "sim", "log", common::timeToIso(this->timestamp)); + ".gz", "sim", "log", timeInIso); // If directory already exists, do not overwrite. This could potentially // happen if multiple simulation instances are started in rapid From 54827781ec54d9f2076124a186020a4b122d17c6 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Wed, 4 Sep 2024 09:46:31 -0700 Subject: [PATCH 55/80] Update particle emitter tutorial (#2585) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ian Chen Signed-off-by: Alejandro Hernández Cordero Co-authored-by: Alejandro Hernández Cordero --- .../particle_emitter_scatter_effects.sdf | 309 ++++++++++++++++++ tutorials/particle_tutorial.md | 13 +- 2 files changed, 321 insertions(+), 1 deletion(-) create mode 100644 tutorials/files/particle_emitter/particle_emitter_scatter_effects.sdf diff --git a/tutorials/files/particle_emitter/particle_emitter_scatter_effects.sdf b/tutorials/files/particle_emitter/particle_emitter_scatter_effects.sdf new file mode 100644 index 0000000000..4a1c8e666b --- /dev/null +++ b/tutorials/files/particle_emitter/particle_emitter_scatter_effects.sdf @@ -0,0 +1,309 @@ + + + + + + + 0.001 + 1.0 + + + + ogre2 + + + + + + + + + RGB camera + floating + 350 + 315 + + camera + false + + + + Depth camera + floating + 350 + 315 + 500 + + depth_camera + false + + + + RGBD: image + floating + 350 + 315 + 320 + + rgbd_camera/image + false + + + + RGBD: depth + floating + 350 + 315 + 500 + 320 + + rgbd_camera/depth_image + false + + + + Thermal camera + floating + 350 + 315 + 500 + 640 + + thermal_camera + false + + + + + + + + + true + 0 0 10 0 0 0 + 1 1 1 1 + 0.5 0.5 0.5 1 + + 1000 + 0.9 + 0.01 + 0.001 + + -0.5 0.1 -0.9 + + + + true + + + + + 0 0 1 + + + + + + + 0 0 1 + 100 100 + + + + 0.8 0.8 0.8 1 + 0.8 0.8 0.8 1 + 0.8 0.8 0.8 1 + + + + + + + https://fuel.gazebosim.org/1.0/openrobotics/models/fog generator + + + + 8 0 0.5 0 0.0 3.14 + + 0.05 0.05 0.05 0 0 0 + + 0.1 + + 0.000166667 + 0.000166667 + 0.000166667 + + + + + + 0.1 0.1 0.1 + + + + + + + 0.1 0.1 0.1 + + + + + + + 1.047 + + 320 + 240 + + + 0.1 + 100 + + + 1 + 30 + true + camera + + + + 10 + depth_camera + + 1.05 + + 320 + 240 + R_FLOAT32 + + + 0.1 + 100.0 + + + + + " + lidar + 10 + + + + 640 + 1 + -1.396263 + 1.396263 + + + 1 + 0.01 + 0 + 0 + + + + 0.08 + 10.0 + 0.01 + + + 1 + true + + + + true + + + + 8 0 0.5 0 0.0 3.14 + true + + 0.05 0.05 0.05 0 0 0 + + + + 0.1 0.1 0.1 + + + + + + + 0.1 0.1 0.1 + + + + + + 1.047 + + 320 + 240 + + + 0.1 + 100 + + + 1 + 30 + true + rgbd_camera + + + true + + + + 8 0 0.5 0 0.0 3.14 + true + + 0.05 0.05 0.05 0 0 0 + + + + 0.1 0.1 0.1 + + + + + + + 0.1 0.1 0.1 + + + + + + 1.047 + + 320 + 240 + + + 0.1 + 100 + + + 1 + 30 + true + thermal_camera + + + + + + 0 0 0 0 0 1.570796 + rescue_randy + https://fuel.gazebosim.org/1.0/OpenRobotics/models/Rescue Randy + + + + diff --git a/tutorials/particle_tutorial.md b/tutorials/particle_tutorial.md index c0c37e73b5..7150027684 100644 --- a/tutorials/particle_tutorial.md +++ b/tutorials/particle_tutorial.md @@ -97,7 +97,18 @@ The particles are not only a visual effect in simulation, they also have an effe * `gpu_lidar`: The particles have a scattering effect on the lidar range readings. * `thermal_camera`: The particles are not visible in the thermal camera image. -The gif below shows an [example world](https://gist.github.com/iche033/bcd3b7d3f4874e1e707e392d6dbb0aa0) with six different sensors looking at the fog generator with a rescue randy model inside the fog. + +The [particle_emitter_scatter_effects.sdf](https://github.com/gazebosim/gz-sim/blob/gz-sim9/tutorials/files/particle_emitter/particle_emitter_scatter_effects.sdf) +demo world shows six different sensors looking at the fog generator with a rescue randy model inside the fog. + +Download the example world file and launch it to see what it looks like. + +```bash +gz sim -v 4 -r particle_emitter_scatter_effects.sdf +``` + +Navigate to the Visualize Lidar plugin on the right and click on the refresh button to set the lidar topic. You should see the sensor images and lidar visualization like below: + @image html files/particle_emitter/sensor_scatter_tutorial.gif From fec31aa3f3b2889a499a3e45f63f303811430bd6 Mon Sep 17 00:00:00 2001 From: Antoine Van Malleghem Date: Wed, 4 Sep 2024 21:00:52 +0200 Subject: [PATCH 56/80] Fix empty gui tutorial (#2591) Signed-off-by: Van Malleghem Antoine Co-authored-by: Addisu Z. Taddese --- examples/worlds/empty_gui.sdf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/worlds/empty_gui.sdf b/examples/worlds/empty_gui.sdf index 0975a4f142..54df8c2e31 100644 --- a/examples/worlds/empty_gui.sdf +++ b/examples/worlds/empty_gui.sdf @@ -37,6 +37,10 @@ This example helps illustrate the interaction of the MinimalScene with other GUI + + false + + From 8b74a4380e59f0c74366ceb511904778cb5c44d4 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Wed, 4 Sep 2024 13:36:08 -0700 Subject: [PATCH 57/80] Fix particle emitter color range image path warning (#2560) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ian Chen Co-authored-by: Alejandro Hernández Cordero --- src/SdfEntityCreator.cc | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/SdfEntityCreator.cc b/src/SdfEntityCreator.cc index 1c45bfc4e8..2c258c1ad8 100644 --- a/src/SdfEntityCreator.cc +++ b/src/SdfEntityCreator.cc @@ -23,6 +23,7 @@ #include "gz/sim/Events.hh" #include "gz/sim/SdfEntityCreator.hh" +#include "gz/sim/Util.hh" #include "gz/sim/components/Actor.hh" #include "gz/sim/components/AirPressureSensor.hh" @@ -67,7 +68,7 @@ #include "gz/sim/components/NavSat.hh" #include "gz/sim/components/ParentEntity.hh" #include "gz/sim/components/ParentLinkName.hh" -#include +#include "gz/sim/components/ParticleEmitter.hh" #include "gz/sim/components/Performer.hh" #include "gz/sim/components/Physics.hh" #include "gz/sim/components/PhysicsEnginePlugin.hh" @@ -1004,9 +1005,27 @@ Entity SdfEntityCreator::CreateEntities(const sdf::ParticleEmitter *_emitter) // Entity Entity emitterEntity = this->dataPtr->ecm->CreateEntity(); + auto particleEmitterMsg = convert(*_emitter); + + // Update image path + // Ideally this is done by gz/sim/src/SceneManager.cc when creating + // the particle emitter. However the component stores a msg instead of + // an sdf so the sdf FilePath information is lost and rendering is not + // able to construct the full path of the image. + // \todo(iche033) Consider changing the ParticleEmitter component to + // store an sdf::ParticleEmitter object instead of msgs::ParticleEmitter. + std::string imagePath = _emitter->ColorRangeImage(); + if (!imagePath.empty()) + { + std::string path = common::findFile(asFullPath(imagePath, + _emitter->Element()->FilePath())); + path = path.empty() ? imagePath : path; + particleEmitterMsg.mutable_color_range_image()->set_data(path); + } + // Components this->dataPtr->ecm->CreateComponent(emitterEntity, - components::ParticleEmitter(convert(*_emitter))); + components::ParticleEmitter(particleEmitterMsg)); this->dataPtr->ecm->CreateComponent(emitterEntity, components::Pose(ResolveSdfPose(_emitter->SemanticPose()))); this->dataPtr->ecm->CreateComponent(emitterEntity, From 96e1b03592a186d5b39255c66d148d1b4f34f4f4 Mon Sep 17 00:00:00 2001 From: Alexandros Nicolaou <34197007+alexandrosnic@users.noreply.github.com> Date: Thu, 5 Sep 2024 01:26:13 +0200 Subject: [PATCH 58/80] Fix xml and image in create maritime vehicle tutorial (#2592) Signed-off-by: alexandrosnic Signed-off-by: Alexandros Nicolaou <34197007+alexandrosnic@users.noreply.github.com> --- tutorials/create_vehicle.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tutorials/create_vehicle.md b/tutorials/create_vehicle.md index b9c30b608f..e66002b42e 100644 --- a/tutorials/create_vehicle.md +++ b/tutorials/create_vehicle.md @@ -46,8 +46,8 @@ Create a `model.sdf` file that contains the Simulator Description Format of the model. You can find more information on the [SDF website](http://sdformat.org/). ```xml - - + + true @@ -65,7 +65,7 @@ model. You can find more information on the [SDF website](http://sdformat.org/). - + 1 1 0.009948450858321252 @@ -73,7 +73,7 @@ model. You can find more information on the [SDF website](http://sdformat.org/). - + 0.08 0 0.05 0 0 0 From f8f8a8052e408778cbd75cf3c762df18b72047e9 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Thu, 5 Sep 2024 10:54:53 -0700 Subject: [PATCH 59/80] Fix configuring global illumination GUI plugin parameters (#2594) Signed-off-by: Ian Chen --- .../GlobalIlluminationCiVct.cc | 41 ++++++++------- .../GlobalIlluminationCiVct.hh | 3 +- .../GlobalIlluminationVct.cc | 51 ++++++++++++------- .../GlobalIlluminationVct.hh | 3 +- 4 files changed, 62 insertions(+), 36 deletions(-) diff --git a/src/gui/plugins/global_illumination_civct/GlobalIlluminationCiVct.cc b/src/gui/plugins/global_illumination_civct/GlobalIlluminationCiVct.cc index d2b8f4c20c..cfab7f414f 100644 --- a/src/gui/plugins/global_illumination_civct/GlobalIlluminationCiVct.cc +++ b/src/gui/plugins/global_illumination_civct/GlobalIlluminationCiVct.cc @@ -172,13 +172,13 @@ GlobalIlluminationCiVct::~GlobalIlluminationCiVct() } ///////////////////////////////////////////////// -void GlobalIlluminationCiVct::LoadGlobalIlluminationCiVct() +bool GlobalIlluminationCiVct::LoadGlobalIlluminationCiVct() REQUIRES(this->dataPtr->serviceMutex) { auto loadedEngNames = rendering::loadedEngines(); if (loadedEngNames.empty()) { - return; + return false; } // assume there is only one engine loaded @@ -194,11 +194,11 @@ void GlobalIlluminationCiVct::LoadGlobalIlluminationCiVct() { gzerr << "Internal error: failed to load engine [" << engineName << "]. GlobalIlluminationCiVct plugin won't work." << std::endl; - return; + return false; } if (engine->SceneCount() == 0) - return; + return false; // assume there is only one scene // load scene @@ -206,12 +206,13 @@ void GlobalIlluminationCiVct::LoadGlobalIlluminationCiVct() if (!scene) { gzerr << "Internal error: scene is null." << std::endl; - return; + return false; } - if (!scene->IsInitialized() || scene->VisualCount() == 0) + if (!scene->IsInitialized() || scene->VisualCount() == 0 || + scene->LightCount() == 0) { - return; + return false; } // Create visual @@ -225,6 +226,7 @@ void GlobalIlluminationCiVct::LoadGlobalIlluminationCiVct() << std::endl; gz::gui::App()->findChild()->removeEventFilter(this); + return false; } else { @@ -254,6 +256,7 @@ void GlobalIlluminationCiVct::LoadGlobalIlluminationCiVct() this->OnRefreshCamerasImpl(); } + return true; } /// \brief XML helper to retrieve values and handle errors @@ -358,9 +361,7 @@ void GlobalIlluminationCiVct::LoadConfig( const tinyxml2::XMLElement *_pluginElem) { if (this->title.empty()) - this->title = "Global Illumination (VCT)"; - - std::lock_guard lock(this->dataPtr->serviceMutex); + this->title = "Global Illumination (CI VCT)"; if (auto elem = _pluginElem->FirstChildElement("enabled")) { @@ -447,15 +448,25 @@ bool GlobalIlluminationCiVct::eventFilter(QObject *_obj, QEvent *_event) { if (_event->type() == gz::gui::events::Render::kType) { - // This event is called in Scene3d's RenderThread, so it's safe to make + // This event is called in the render thread, so it's safe to make // rendering calls here - std::lock_guard lock(this->dataPtr->serviceMutex); if (!this->dataPtr->initialized) { - this->LoadGlobalIlluminationCiVct(); + if (this->LoadGlobalIlluminationCiVct()) + { + this->SetEnabled(this->dataPtr->enabled); + this->SetBounceCount(this->dataPtr->bounceCount); + this->SetHighQuality(this->dataPtr->highQuality); + this->SetAnisotropic(this->dataPtr->anisotropic); + this->SetDebugVisualizationMode(this->dataPtr->debugVisMode); + this->EnabledChanged(); + this->LightingChanged(); + this->DebugVisualizationModeChanged(); + } } + std::lock_guard lock(this->dataPtr->serviceMutex); if (this->dataPtr->gi) { if (!this->dataPtr->visualDirty && !this->dataPtr->gi->Enabled() && @@ -563,10 +574,6 @@ bool GlobalIlluminationCiVct::eventFilter(QObject *_obj, QEvent *_event) this->dataPtr->resetRequested = false; } } - else - { - gzerr << "GI pointer is not set" << std::endl; - } } // Standard event processing diff --git a/src/gui/plugins/global_illumination_civct/GlobalIlluminationCiVct.hh b/src/gui/plugins/global_illumination_civct/GlobalIlluminationCiVct.hh index 6ebaee5741..d5327ae32f 100644 --- a/src/gui/plugins/global_illumination_civct/GlobalIlluminationCiVct.hh +++ b/src/gui/plugins/global_illumination_civct/GlobalIlluminationCiVct.hh @@ -103,7 +103,8 @@ inline namespace GZ_SIM_VERSION_NAMESPACE public: bool eventFilter(QObject *_obj, QEvent *_event) override; /// \brief Load the scene and attach LidarVisual to the scene - public: void LoadGlobalIlluminationCiVct(); + /// \return True if GI CIVCT is loaded successfully, false otherwise. + public: bool LoadGlobalIlluminationCiVct(); /// \brief Set debug visualization mode GlogbalIllumination /// \param[in] _mode Index of selected debug visualization mode diff --git a/src/gui/plugins/global_illumination_vct/GlobalIlluminationVct.cc b/src/gui/plugins/global_illumination_vct/GlobalIlluminationVct.cc index 0d6400c1a5..3abbabaec4 100644 --- a/src/gui/plugins/global_illumination_vct/GlobalIlluminationVct.cc +++ b/src/gui/plugins/global_illumination_vct/GlobalIlluminationVct.cc @@ -166,13 +166,13 @@ GlobalIlluminationVct::~GlobalIlluminationVct() } ///////////////////////////////////////////////// -void GlobalIlluminationVct::LoadGlobalIlluminationVct() +bool GlobalIlluminationVct::LoadGlobalIlluminationVct() REQUIRES(this->dataPtr->serviceMutex) { auto loadedEngNames = rendering::loadedEngines(); if (loadedEngNames.empty()) { - return; + return false; } // assume there is only one engine loaded @@ -188,11 +188,11 @@ void GlobalIlluminationVct::LoadGlobalIlluminationVct() { gzerr << "Internal error: failed to load engine [" << engineName << "]. GlobalIlluminationVct plugin won't work." << std::endl; - return; + return false; } if (engine->SceneCount() == 0) - return; + return false; // assume there is only one scene // load scene @@ -200,15 +200,16 @@ void GlobalIlluminationVct::LoadGlobalIlluminationVct() if (!scene) { gzerr << "Internal error: scene is null." << std::endl; - return; + return false; } - if (!scene->IsInitialized() || scene->VisualCount() == 0) + if (!scene->IsInitialized() || scene->VisualCount() == 0 || + scene->LightCount() == 0) { - return; + return false; } - // Create lidar visual + // Create GI gzdbg << "Creating GlobalIlluminationVct" << std::endl; auto root = scene->RootVisual(); @@ -219,6 +220,7 @@ void GlobalIlluminationVct::LoadGlobalIlluminationVct() << std::endl; gz::gui::App()->findChild()->removeEventFilter(this); + return false; } else { @@ -228,6 +230,7 @@ void GlobalIlluminationVct::LoadGlobalIlluminationVct() this->dataPtr->scene = scene; this->dataPtr->initialized = true; } + return true; } /// \brief XML helper to retrieve values and handle errors @@ -319,8 +322,6 @@ void GlobalIlluminationVct::LoadConfig(const tinyxml2::XMLElement *_pluginElem) if (this->title.empty()) this->title = "Global Illumination (VCT)"; - std::lock_guard lock(this->dataPtr->serviceMutex); - if (auto elem = _pluginElem->FirstChildElement("enabled")) { GetXmlBool(elem, this->dataPtr->enabled); @@ -394,15 +395,35 @@ bool GlobalIlluminationVct::eventFilter(QObject *_obj, QEvent *_event) { if (_event->type() == gz::gui::events::Render::kType) { - // This event is called in Scene3d's RenderThread, so it's safe to make + // This event is called in render thread, so it's safe to make // rendering calls here - std::lock_guard lock(this->dataPtr->serviceMutex); if (!this->dataPtr->initialized) { - this->LoadGlobalIlluminationVct(); + if (this->LoadGlobalIlluminationVct()) + { + // update properties and notify QML + this->SetEnabled(this->dataPtr->enabled); + this->SetResolutionX(this->dataPtr->resolution[0]); + this->SetResolutionY(this->dataPtr->resolution[1]); + this->SetResolutionZ(this->dataPtr->resolution[2]); + this->SetOctantCountX(this->dataPtr->octantCount[0]); + this->SetOctantCountY(this->dataPtr->octantCount[1]); + this->SetOctantCountZ(this->dataPtr->octantCount[2]); + this->SetBounceCount(this->dataPtr->bounceCount); + this->SetHighQuality(this->dataPtr->highQuality); + this->SetAnisotropic(this->dataPtr->anisotropic); + this->SetConserveMemory(this->dataPtr->conserveMemory); + this->SetThinWallCounter(this->dataPtr->thinWallCounter); + this->SetDebugVisualizationMode(this->dataPtr->debugVisMode); + this->EnabledChanged(); + this->LightingChanged(); + this->SettingsChanged(); + this->DebugVisualizationModeChanged(); + } } + std::lock_guard lock(this->dataPtr->serviceMutex); if (this->dataPtr->gi) { if (this->dataPtr->resetVisual) @@ -485,10 +506,6 @@ bool GlobalIlluminationVct::eventFilter(QObject *_obj, QEvent *_event) this->dataPtr->debugVisualizationDirty = false; } } - else - { - gzerr << "GI pointer is not set" << std::endl; - } } // Standard event processing diff --git a/src/gui/plugins/global_illumination_vct/GlobalIlluminationVct.hh b/src/gui/plugins/global_illumination_vct/GlobalIlluminationVct.hh index fde6a6979b..19a6d3ec61 100644 --- a/src/gui/plugins/global_illumination_vct/GlobalIlluminationVct.hh +++ b/src/gui/plugins/global_illumination_vct/GlobalIlluminationVct.hh @@ -156,7 +156,8 @@ inline namespace GZ_SIM_VERSION_NAMESPACE public: bool eventFilter(QObject *_obj, QEvent *_event) override; /// \brief Load the scene and attach LidarVisual to the scene - public: void LoadGlobalIlluminationVct(); + /// \return True if GI VCT is loaded successfully, false otherwise. + public: bool LoadGlobalIlluminationVct(); /// \brief Set debug visualization mode GlogbalIllumination /// \param[in] _mode Index of selected debug visualization mode From 518cc3184280670d13ac7ad806481334d28cbb87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Hern=C3=A1ndez=20Cordero?= Date: Thu, 5 Sep 2024 22:34:15 +0200 Subject: [PATCH 60/80] Fixed typo in gz sim python api (#2578) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Alejandro Hernández Cordero --- python/src/gz/sim/Joint.cc | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/python/src/gz/sim/Joint.cc b/python/src/gz/sim/Joint.cc index 307289ec44..328e4d51cf 100644 --- a/python/src/gz/sim/Joint.cc +++ b/python/src/gz/sim/Joint.cc @@ -94,7 +94,22 @@ void defineSimJoint(py::object module) py::arg("ecm"), py::arg("limits"), "Set the effort limits on a joint axis.") - .def("set_position_imits", &gz::sim::Joint::SetPositionLimits, + .def("set_position_imits", + [](pybind11::object &self, EntityComponentManager &_ecm, + const std::vector &_limits) + { + auto warnings = pybind11::module::import("warnings"); + auto builtins = pybind11::module::import("builtins"); + warnings.attr("warn")( + "set_position_imits() is deprecated, use set_position_limits() instead.", + builtins.attr("DeprecationWarning")); + + return self.attr("set_position_limits")(_ecm, _limits); + }, + py::arg("ecm"), + py::arg("limits"), + "Set the position limits on a joint axis.") + .def("set_position_limits", &gz::sim::Joint::SetPositionLimits, py::arg("ecm"), py::arg("limits"), "Set the position limits on a joint axis.") From 086e08d9fc7935270d18e41d2ea3483d7f9c2a9a Mon Sep 17 00:00:00 2001 From: Antoine Van Malleghem Date: Fri, 6 Sep 2024 22:26:02 +0200 Subject: [PATCH 61/80] fix adding system plugins tutorial (#2602) Signed-off-by: Van Malleghem Antoine --- tutorials/adding_system_plugins.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tutorials/adding_system_plugins.md b/tutorials/adding_system_plugins.md index 3a415e630c..8cfa596b63 100644 --- a/tutorials/adding_system_plugins.md +++ b/tutorials/adding_system_plugins.md @@ -18,7 +18,7 @@ to create the vehicle used in this tutorial. # Adding a system plugin -[This Gazebo tutorial](https://gazebosim.org/api/sim/8/createsystemplugins.html) +[This Gazebo tutorial](https://gazebosim.org/api/sim/9/createsystemplugins.html) describes what is a system plugin in depth. Intuitively, you can envision a system plugin as a piece of code that modifies the behavior of the simulation when the general physics engine does not exactly capture your needs. @@ -46,7 +46,7 @@ your turtle does not sink anymore. ```bash mkdir -p ~/gazebo_maritime/worlds -wget https://raw.githubusercontent.com/gazebosim/gz-sim/gz-sim8/tutorials/files/adding_system_plugins/buoyant_turtle.sdf -O ~/gazebo_maritime/worlds/buoyant_turtle.sdf +wget https://raw.githubusercontent.com/gazebosim/gz-sim/gz-sim9/tutorials/files/adding_system_plugins/buoyant_turtle.sdf -O ~/gazebo_maritime/worlds/buoyant_turtle.sdf export GZ_SIM_RESOURCE_PATH=:$HOME/gazebo_maritime/models gz sim -r ~/gazebo_maritime/worlds/buoyant_turtle.sdf ``` @@ -130,7 +130,7 @@ And run Gazebo: gz sim -r ~/gazebo_maritime/worlds/buoyant_turtle.sdf ``` -Now, when our simple trajectory controller reaches its target and stops appling +Now, when our simple trajectory controller reaches its target and stops applying force, the turtle stops moving acting like the fluid decelerates its motion. Additionally you can notice how the up and down oscillations are also damped by the effect of the hydrodynamics. From 3977d65ba5529ca967df3a1cf3c9daae1f428bbf Mon Sep 17 00:00:00 2001 From: Antoine Van Malleghem Date: Fri, 6 Sep 2024 22:46:58 +0200 Subject: [PATCH 62/80] Fix known issue section in README (#2603) Signed-off-by: Van Malleghem Antoine --- README.md | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 2920bc856c..6858c637be 100644 --- a/README.md +++ b/README.md @@ -99,29 +99,14 @@ gz sim -h In the event that the installation is a mix of Debian and from source, command line tools from `gz-tools` may not work correctly. -A workaround for a single package is to define the environment variable -`GZ_CONFIG_PATH` to point to the location of the Gazebo library installation, -where the YAML file for the package is found, such as +A workaround is to define the environment variable +`GZ_CONFIG_PATH` to point to the different locations of the Gazebo libraries installations, +where the YAML files for the packages are found, such as ``` -export GZ_CONFIG_PATH=/usr/local/share/gz +export GZ_CONFIG_PATH=/usr/local/share/gz:$HOME/ws/install/share/gz ``` -However, that environment variable only takes a single path, which means if the -installations from source are in different locations, only one can be specified. - -Another workaround for working with multiple Gazebo libraries on the command -line is using symbolic links to each library's YAML file. -``` -mkdir ~/.gz/tools/configs -p -cd ~/.gz/tools/configs/ -ln -s /usr/local/share/gz/fuel8.yaml . -ln -s /usr/local/share/gz/transport14.yaml . -ln -s /usr/local/share/gz/transportlog13.yaml . -... -export GZ_CONFIG_PATH=$HOME/.gz/tools/configs -``` - -This issue is tracked [here](https://github.com/gazebosim/gz-tools/issues/8). +where `$HOME/ws` is an example colcon workspace used to build Gazebo # Documentation From c1f379ee7fac10a5118df672cdb0e391605bd0f5 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Fri, 6 Sep 2024 16:28:59 -0700 Subject: [PATCH 63/80] Update physics system error msg when plugin can not be loaded (#2604) Signed-off-by: Ian Chen --- src/systems/physics/Physics.cc | 4 ++-- tutorials/physics.md | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/systems/physics/Physics.cc b/src/systems/physics/Physics.cc index 7038e2e143..6a2f3eda79 100644 --- a/src/systems/physics/Physics.cc +++ b/src/systems/physics/Physics.cc @@ -851,8 +851,8 @@ void Physics::Configure(const Entity &_entity, physics::FeaturePolicy3d>>(); if (classNames.empty()) { - gzerr << "No physics plugins found in library [" << pathToLib << "]." - << std::endl; + gzerr << "No physics plugins implementing required interface found in " + << "library [" << pathToLib << "]." << std::endl; return; } diff --git a/tutorials/physics.md b/tutorials/physics.md index b4a94c7d1e..4240c44cff 100644 --- a/tutorials/physics.md +++ b/tutorials/physics.md @@ -127,6 +127,12 @@ that path to the environment variable as described above. There was some problem loading that file. Check that it exists, that you have permissions to access it, and that it's acually a physics engine plugin. +> No physics plugins implementing required interface found in library +> [/home/physics_engines/libCustomEngine.so] + +The library was found but none of the plugins in the library implement the +required interface to be considered a physics plugin. + > No plugins with all required features found in library > [/home/physics_engines/libCustomEngine.so] From c4f95c4e33b5a1566604136cc23f9655693c00e7 Mon Sep 17 00:00:00 2001 From: Antoine Van Malleghem Date: Mon, 9 Sep 2024 10:25:13 +0200 Subject: [PATCH 64/80] fix CMakeList example + add link to working example (#2601) Signed-off-by: Van Malleghem Antoine --- tutorials/create_system_plugins.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tutorials/create_system_plugins.md b/tutorials/create_system_plugins.md index 62b0beb4e8..7cc3ac0964 100644 --- a/tutorials/create_system_plugins.md +++ b/tutorials/create_system_plugins.md @@ -10,7 +10,7 @@ following entity types: * Actor To create a system plugin for use in the simulation environment, follow the -steps below. +steps below. The fully working example is available [here](https://github.com/gazebosim/gz-sim/tree/gz-sim9/examples/plugin/system_plugin). ## Decide on interfaces to implement @@ -85,16 +85,15 @@ Implement the system class as usual, for example: In your `CMakeLists.txt` add the following ``` -gz_find_package(gz-plugin3 REQUIRED COMPONENTS register) +find_package(gz-plugin3 REQUIRED COMPONENTS register) set(GZ_PLUGIN_VER ${gz-plugin3_VERSION_MAJOR}) # Add sources for each plugin to be registered. -add_library(SampleSystem SampleSystem.cc SampleSystem2.cc) +add_library(SampleSystem SHARED SampleSystem.cc SampleSystem2.cc) set_property(TARGET SampleSystem PROPERTY CXX_STANDARD 17) target_link_libraries(SampleSystem - gz-common${GZ_COMMON_VER}::gz-common${GZ_COMMON_VER} - gz-plugin${GZ_PLUGIN_VER}::gz-plugin${GZ_PLUGIN_VER} -) + PRIVATE gz-plugin${GZ_PLUGIN_VER}::gz-plugin${GZ_PLUGIN_VER} + PRIVATE gz-sim9::gz-sim9) ``` ## Loading your plugin From 96775c8070838e92b95d3306928b32e0a319e9b1 Mon Sep 17 00:00:00 2001 From: Martin Pecka Date: Mon, 9 Sep 2024 12:37:05 +0200 Subject: [PATCH 65/80] tutorials: headless_rendering: Little fixes (#2607) Added information on EGL checking --------- Signed-off-by: Martin Pecka --- tutorials/headless_rendering.md | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/tutorials/headless_rendering.md b/tutorials/headless_rendering.md index 6c01ef756d..787755da47 100644 --- a/tutorials/headless_rendering.md +++ b/tutorials/headless_rendering.md @@ -13,7 +13,7 @@ An easier solution is through the use of [EGL](https://www.khronos.org/egl), whi Example usage: ``` -gz sim -v 4 -s --headless-rendering sensors_demo.sdf +DISPLAY= gz sim -v 4 -s -r --headless-rendering sensors_demo.sdf ``` If you are using Gazebo as a library, then you can configure the @@ -63,14 +63,23 @@ here](https://www.ogre3d.org/2021/02/06/ogre-2-2-5-cerberus-released-and-egl-hea ``` sudo reboot ``` -11. [Install Gazebo](https://gazebosim.org/docs/latest/install). -12. Run a Gazebo world that uses OGRE2 with camera sensors using headless rendering. This will enable EGL. +15. [Install Gazebo](https://gazebosim.org/docs/latest/install). +16. Run a Gazebo world that uses OGRE2 with camera sensors using headless rendering. This will enable EGL. ``` - gz sim -v 4 -s -r --headless-rendering sensors_demo.sdf + DISPLAY= gz sim -v 4 -s -r --headless-rendering sensors_demo.sdf ``` -13. Check that simulation is producing sensor data by ssh'ing into the EC2 - instance from a new terminal and echoing a sensor topic. +17. Check that simulation is producing sensor data by ssh'ing into the EC2 + instance from a new terminal and testing the frequency of a sensor topic. ``` ssh -i SSH_PEM_FILE_USED_DURING_LAUNCH ubuntu@EC_INSTANCE_PUBLIC_IP - gz topic -et /thermal_camera + gz topic -ft /thermal_camera + ``` +18. To verify that the EGL backend was used, try the following command: + ``` + grep -R "EGL Subsystem" ~/.gz/rendering/ogre2.log + ``` + Its output should not be empty, e.g.: + ``` + *** Starting EGL Subsystem *** + *** Stopping EGL Subsystem *** ``` From 712643f6107ab749a2565db14a62cdbfd2028954 Mon Sep 17 00:00:00 2001 From: Martin Pecka Date: Tue, 10 Sep 2024 00:41:04 +0200 Subject: [PATCH 66/80] tutorials: Updated point_cloud_to_mesh tutorial to reflect new UI in CC 1.13.2. (#2606) Signed-off-by: Martin Pecka Co-authored-by: Ian Chen --- tutorials/files/point_cloud_to_mesh/blob2.jpg | Bin 0 -> 106687 bytes tutorials/files/point_cloud_to_mesh/blob2.png | Bin 169513 -> 0 bytes tutorials/files/point_cloud_to_mesh/error.jpg | Bin 0 -> 38380 bytes .../point_cloud_to_mesh/hidden_polygons2.jpg | Bin 0 -> 100371 bytes .../point_cloud_to_mesh/hidden_polygons2.png | Bin 150001 -> 0 bytes .../files/point_cloud_to_mesh/min_space.jpg | Bin 0 -> 28644 bytes .../files/point_cloud_to_mesh/min_space.png | Bin 138757 -> 0 bytes tutorials/point_cloud_to_mesh.md | 13 ++++++++++--- 8 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 tutorials/files/point_cloud_to_mesh/blob2.jpg delete mode 100644 tutorials/files/point_cloud_to_mesh/blob2.png create mode 100644 tutorials/files/point_cloud_to_mesh/error.jpg create mode 100644 tutorials/files/point_cloud_to_mesh/hidden_polygons2.jpg delete mode 100644 tutorials/files/point_cloud_to_mesh/hidden_polygons2.png create mode 100644 tutorials/files/point_cloud_to_mesh/min_space.jpg delete mode 100644 tutorials/files/point_cloud_to_mesh/min_space.png diff --git a/tutorials/files/point_cloud_to_mesh/blob2.jpg b/tutorials/files/point_cloud_to_mesh/blob2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b78a8543136ff38e9ee348816d634b4808d73867 GIT binary patch literal 106687 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

VD2xQ@`Y43cZOva7x{^fdG8T1>gbHlK$v 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 literal 0 HcmV?d00001 diff --git a/tutorials/files/point_cloud_to_mesh/min_space.png b/tutorials/files/point_cloud_to_mesh/min_space.png deleted file mode 100644 index 183a67b119d2c1e8211ddf757b96c85d7329dc4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138757 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

|JZTlnJ#1t%vC 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

Jg+nHBl@b-e} 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

b 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 `Subsample`. -![Min. space between points](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/min_space.png) +![Min. space between points](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/min_space.jpg) The number you will need to enter in the `min. space between points` field will vary depending on your point cloud. A value of .01 was sufficient to bring our point cloud to an easy-to-manage 1 million points. @@ -93,7 +94,7 @@ Our tunnel has turned into a blob shape. This is because the mesh that CloudCompare creates will always be water tight even if it has to add polygons where there are no points. We just want our tunnels, though, so we need to remove those unnecessary polygons. -![The blob shape](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/blob2.png) +![The blob shape](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/blob2.jpg) This is where our scalar field comes in. In the mesh's `Properties` window go to `SF display params` and take the left handle in the graph and drag it to the right until it hits the area where the bulk of the scalar field starts. @@ -104,7 +105,7 @@ This will display only the polygons that were created from the point cloud and h The polygons are only hidden however. We still need to actually remove them. -![Display original polygons](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/hidden_polygons2.png) +![Display original polygons](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/hidden_polygons2.jpg) To remove the hidden polygons go to `Edit` > `Scalar fields` > `Filter By Value`. @@ -115,12 +116,18 @@ One with the polygons inside our specified range and one containing polygons out ![Splitting the mesh](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/split.png) +It is possible that you will get error "Visibility table not instantiated". This error causes only the "wanted" part of the mesh to be created when splitting, while the other ("unwanted") part will not be generated. But that is not a problem for our use-case. + +![Error "Visibility table not instantiated"](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/error.jpg) + ### The Completed Model By hitting `Split` we can view the model before exporting by simply going to `File` > `Save`. Remember to have the correct mesh selected (`.part`) since choosing `Split` will give you two new meshes, plus you will still have your original, complete mesh. Your file format will depend on the software you want to use but `.obj` is a widely supported format that should work in most 3D applications. +Before exporting, check your mesh for holes. If still checked, disable display of the pointcloud, so that only your output mesh is shown. Inspect ground parts of the mesh (or any other parts you are most interested in) and check if there aren't holes in it. If there are some, you can try to repeat the trimming step with more relaxed threshold. + ![The completed mesh](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/complete2.png) You can find more information on CloudCompare and a more in depth look at the tools we used in this tutorial on [the CloudCompare website](https://www.cloudcompare.org/) and the [CloudCompare wiki](https://www.cloudcompare.org/doc/wiki/index.php?title=Main_Page). From 9b161db38e88ff44fc8e878360ab9a7e28356797 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Mon, 9 Sep 2024 17:22:10 -0700 Subject: [PATCH 67/80] Fix making breadcrumb static if it's a nested model (#2593) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ian Chen Co-authored-by: Alejandro Hernández Cordero --- src/systems/breadcrumbs/Breadcrumbs.cc | 27 +++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/systems/breadcrumbs/Breadcrumbs.cc b/src/systems/breadcrumbs/Breadcrumbs.cc index 0f22687984..7db739da98 100644 --- a/src/systems/breadcrumbs/Breadcrumbs.cc +++ b/src/systems/breadcrumbs/Breadcrumbs.cc @@ -387,8 +387,33 @@ bool Breadcrumbs::MakeStatic(Entity _entity, EntityComponentManager &_ecm) Entity childLinkEntity = _ecm.EntityByComponents( components::CanonicalLink(), components::ParentEntity(_entity)); + // If the entity does not have a canonical link, it may be a nested model if (childLinkEntity == kNullEntity) - return false; + { + // Find canonical link within nested model + auto findCanonicalLink = [&_ecm](Entity _parent, auto &&_findCanonicalLink) + { + auto nestedEntities = _ecm.EntitiesByComponents( + components::Model(), components::ParentEntity(_parent)); + for (const auto ent : nestedEntities) + { + auto comp = _ecm.Component(ent); + if (comp) + { + return comp->Data(); + } + else + { + // recursively search for canonical link + return _findCanonicalLink(ent, _findCanonicalLink); + } + } + return kNullEntity; + }; + childLinkEntity = findCanonicalLink(_entity, findCanonicalLink); + if (childLinkEntity == kNullEntity) + return false; + } Entity detachableJointEntity = _ecm.CreateEntity(); _ecm.CreateComponent(detachableJointEntity, From b1f919bb56a777c9baccf2a746816ca9ab30e2df Mon Sep 17 00:00:00 2001 From: "Athena Z." Date: Tue, 10 Sep 2024 11:14:56 -0500 Subject: [PATCH 68/80] Add tutorial + example SDF for shadow texture size (#2597) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Athena Z Co-authored-by: Addisu Z. Taddese Co-authored-by: Ian Chen Co-authored-by: Alejandro Hernández Cordero --- examples/worlds/shadow_texture_size.sdf | 73 +++++++++++ tutorials.md.in | 1 + .../shadow_texsize_2k_to_16k.gif | Bin 0 -> 208230 bytes tutorials/shadow_texture_size.md | 118 ++++++++++++++++++ 4 files changed, 192 insertions(+) create mode 100644 examples/worlds/shadow_texture_size.sdf create mode 100644 tutorials/files/shadow_texture_size/shadow_texsize_2k_to_16k.gif create mode 100644 tutorials/shadow_texture_size.md diff --git a/examples/worlds/shadow_texture_size.sdf b/examples/worlds/shadow_texture_size.sdf new file mode 100644 index 0000000000..c79a5075c5 --- /dev/null +++ b/examples/worlds/shadow_texture_size.sdf @@ -0,0 +1,73 @@ + + + + + 0.1 0.1 0.1 + 0.0 0.0 0.0 + + + + + + ogre2 + -10 0 7 0 0.5 0 + + 8192 + + + + + + + + + + 0 0 8 0 0 0 + 1 1 1 1 + 0 0 0 0 + + 50 + 0 + 0 + 0 + + true + -2 2 -1.5 + 1.0 + + + + + 0 0 0 0 0 -1.57 + + https://fuel.gazebosim.org/1.0/OpenRobotics/models/Garden Mascot + + + + + -5 0 -0.5 0 0 0 + true + + + + + 15 15 1 + + + + + + + 15 15 1 + + + + 0.8 0.8 0.8 1 + 0.8 0.8 0.8 1 + 0.8 0.8 0.8 1 + + + + + + diff --git a/tutorials.md.in b/tutorials.md.in index e88b8f7137..b6f895ec5d 100644 --- a/tutorials.md.in +++ b/tutorials.md.in @@ -54,6 +54,7 @@ If you are an absolute beginner, start with the Tutorials section. * \subpage logicalaudiosensor "Logical Audio Sensor": Using the LogicalAudioSensor system to mimic logical audio emission and detection in simulation. * \subpage auto_inertia_calculation "Automatic Inertia Calculation": Automatically compute inertia values(mass, mass matrix, center of mass) for SDFormat links. * \subpage jointcontrollers "Joint Controllers": Using available joint controller plugins to control joints. +* \subpage shadow_texture_size "Shadow texture size": Change the texture size of shadows casted by lights. ### Advanced diff --git a/tutorials/files/shadow_texture_size/shadow_texsize_2k_to_16k.gif b/tutorials/files/shadow_texture_size/shadow_texsize_2k_to_16k.gif new file mode 100644 index 0000000000000000000000000000000000000000..09cfabbea83432d762cf4e00d89810ed43aa1934 GIT binary patch literal 208230 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%0DP?BxDQQ7sPv;sl8P)J>0 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

*83 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 WNNP_hZ7 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 literal 0 HcmV?d00001 diff --git a/tutorials/shadow_texture_size.md b/tutorials/shadow_texture_size.md new file mode 100644 index 0000000000..b117370deb --- /dev/null +++ b/tutorials/shadow_texture_size.md @@ -0,0 +1,118 @@ +\page shadow_texture_size Shadow Texture Size + +This tutorial showcases how to change the texture size of shadows casted by lights. + +

+ \image html files/shadow_texture_size/shadow_texsize_2k_to_16k.gif width=60% +
+ +## Texture size options + +Supported texture sizes include: 512px, 1024px, 2048px, 4096px, 8192px, 16384px. + +The default shadow texture size for all lights is 2K. The default max texture size is 16K, but for less powerful computers, it may be a lower value, like 8K. + +## Changing shadow texture size + +The shadow texture size can be changed for the GUI with the usage of the Minimal Scene GUI plugin in the SDF. + +Currently, light type is restricted to only directional light. As a scene should typically have at most one directional light (representing the sun), this will ensure that an increase in shadow texture size does not increase VRAM too much. + +### Example usage for the GUI + +Let's change the shadow texture size for directional light with the SDF file below. (The finished SDF file can be viewed [here](https://github.com/gazebosim/gz-sim/tree/gz-sim9/examples/worlds/shadow_texture_size.sdf).) + +1) Save the below in an SDF file named `shadow_texture_size.sdf`: + +```xml + + + + + 0.1 0.1 0.1 + 0.0 0.0 0.0 + + + + + + ogre2 + -10 0 7 0 0.5 0 + + + + + + + + + 0 0 8 0 0 0 + 1 1 1 1 + 0 0 0 0 + + 50 + 0 + 0 + 0 + + true + -2 2 -1.5 + 1.0 + + + + + 0 0 0 0 0 -1.57 + + https://fuel.gazebosim.org/1.0/OpenRobotics/models/Garden Mascot + + + + + -5 0 -0.5 0 0 0 + true + + + + + 15 15 1 + + + + + + + 15 15 1 + + + + 0.8 0.8 0.8 1 + 0.8 0.8 0.8 1 + 0.8 0.8 0.8 1 + + + + + + +``` + +2) Add the following lines to the Minimal Scene GUI plugin. + +```xml + + 8192 + +``` + +The `` value can be changed as per the Texture size options section. + +3) Open the `shadow_texsize_demo.sdf` world with + +```bash +gz sim shadow_texture_size.sdf +``` + +## Impact on VRAM usage + +Keep in mind that the larger the shadow texture size, the more VRAM is used. Thus, in a scene populated with many lights, changing the directional light's shadow texture size should be fine because there is typically only one directional light in a scene. But if the scene has many point lights and the point light's shadow texture size is increased, the VRAM consumption goes up significantly. From ca40c1db3dc0b6d862916c4990a9bfb35a62d0e8 Mon Sep 17 00:00:00 2001 From: "Addisu Z. Taddese" Date: Thu, 12 Sep 2024 14:28:51 -0700 Subject: [PATCH 69/80] Fix log playback GUI display (#2611) Loading the logging playback plugin before `SceneBroadcaster` prevents playback from being displayed on the GUI. --------- Signed-off-by: Addisu Z. Taddese Co-authored-by: Arjo Chakravarty --- src/SimulationRunner.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/SimulationRunner.cc b/src/SimulationRunner.cc index 268e956cda..baa2712adc 100644 --- a/src/SimulationRunner.cc +++ b/src/SimulationRunner.cc @@ -1596,8 +1596,6 @@ void SimulationRunner::CreateEntities(const sdf::World &_world) this->entityCompMgr.ProcessRemoveEntityRequests(); this->entityCompMgr.ClearRemovedComponents(); - this->LoadLoggingPlugins(this->serverConfig); - // Load any additional plugins from the Server Configuration this->LoadServerPlugins(this->serverConfig.Plugins()); @@ -1653,6 +1651,11 @@ void SimulationRunner::CreateEntities(const sdf::World &_world) } this->LoadServerPlugins(defaultPlugins); + // Load logging plugins after all server plugins so that necessary + // plugins such as SceneBroadcaster are loaded first. This might be + // a bug or an assumption made in the logging plugins. + this->LoadLoggingPlugins(this->serverConfig); + }; // Store the initial state of the ECM; From 0f16949fc178f91f8509336091ecca25af406f3d Mon Sep 17 00:00:00 2001 From: Arjo Chakravarty Date: Thu, 12 Sep 2024 15:42:03 -0700 Subject: [PATCH 70/80] Adds a regression test for logplayback fix in #2611 (#2619) * Adds a regression test for logplayback https://github.com/gazebosim/gazebo_test_cases/issues/1640 This commit adds a really simple regression check to make sure we actually publish on the right topic. Signed-off-by: Arjo Chakravarty * typo fix Signed-off-by: Arjo Chakravarty * Make atomic Signed-off-by: Arjo Chakravarty --------- Signed-off-by: Arjo Chakravarty Co-authored-by: Addisu Z. Taddese --- test/integration/log_system.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/integration/log_system.cc b/test/integration/log_system.cc index f867ca731a..a2335cae56 100644 --- a/test/integration/log_system.cc +++ b/test/integration/log_system.cc @@ -774,6 +774,18 @@ TEST_F(LogSystemTest, GZ_UTILS_TEST_DISABLED_ON_WIN32(RecordAndPlayback)) // Start server Server playServer(playServerConfig); + // Simulate a client + gz::transport::Node node; + std::atomic numMsgs = 0; + std::function mockClient = + [&](const msgs::SerializedStepMap &/*_res*/) + { + numMsgs++; + }; + using namespace std::placeholders; + EXPECT_TRUE(node.Subscribe( + "/world/default/state", mockClient)); + // Callback function for entities played back // Compare current pose being played back with the pose from the stateMsg test::Relay playbackPoseTester; @@ -837,6 +849,9 @@ TEST_F(LogSystemTest, GZ_UTILS_TEST_DISABLED_ON_WIN32(RecordAndPlayback)) // checked in the playbackPoseTester playServer.Run(true, 500, false); + // The client should have received some messages. + EXPECT_NE(numMsgs, 0); + // Count the total number of state messages in the log file int nTotal{0}; for (auto it = batch.begin(); it != batch.end(); ++it, ++nTotal) { } From 3765579cfc017de813a5780c4dda2a39d979b6d4 Mon Sep 17 00:00:00 2001 From: Benjamin Perseghetti Date: Fri, 13 Sep 2024 19:57:30 -0400 Subject: [PATCH 71/80] Fix typos in joint-tutorial readme. (#2622) Signed-off-by: Benjamin Perseghetti --- tutorials/joint_controller.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/joint_controller.md b/tutorials/joint_controller.md index f677794f4d..ad01d53925 100644 --- a/tutorials/joint_controller.md +++ b/tutorials/joint_controller.md @@ -385,7 +385,7 @@ Let’s set up a new model for this example. A two-linked manipulator arm which - SDF file: ```xml - @@ -653,7 +653,7 @@ gz topic -t "topic_name" -m gz.msgs.JointTrajectory -p ' sec: 1 nsec: 0 } - } + }' ```
From 43b435a00ef4e41b470b73413e4e7fdaa750aab8 Mon Sep 17 00:00:00 2001 From: Martin Pecka Date: Mon, 16 Sep 2024 17:24:39 +0200 Subject: [PATCH 72/80] tutorials/terminology: Fixed type (#2625) Signed-off-by: Martin Pecka --- tutorials/terminology.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/terminology.md b/tutorials/terminology.md index 7103fee7ec..ec0391475b 100644 --- a/tutorials/terminology.md +++ b/tutorials/terminology.md @@ -26,7 +26,7 @@ to developers touching the source code. * **System**: Logic that operates on all entities that have a given set of components. Systems are plugins that can be loaded at runtime. - Gazebo ships with various systems, and downstream develpers can + Gazebo ships with various systems, and downstream developers can [create their own systems](createsystemplugins.html). * **Entity-component manager** (**ECM**): Provides functions for From 4c5a9145b040c14eeeeb0f8765b2ff5b2591812e Mon Sep 17 00:00:00 2001 From: Martin Pecka Date: Mon, 16 Sep 2024 18:18:53 +0200 Subject: [PATCH 73/80] tutorials/physics: Small fixes and Windows support (#2627) Signed-off-by: Martin Pecka --- tutorials/physics.md | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/tutorials/physics.md b/tutorials/physics.md index 4240c44cff..1099560f5a 100644 --- a/tutorials/physics.md +++ b/tutorials/physics.md @@ -10,7 +10,7 @@ by default. Downstream developers may also integrate other physics engines by creating new Gazebo Physics engine plugins. See -[Gazebo Physics](https://gazebosim.org/api/physics/7/tutorials.html)'s +[Gazebo Physics](https://gazebosim.org/api/physics/8/tutorials.html)'s tutorials to learn how to integrate a new engine. ## How Gazebo finds engines @@ -25,24 +25,32 @@ If you've created a custom engine plugin, you can tell Gazebo where to find it by setting the `GZ_SIM_PHYSICS_ENGINE_PATH` environment variable to the directory where the plugin's shared library can be found. -For example, if you've created the following physics engine shared library on -Linux: +For example, if you've created the following physics engine shared library: ``` +# Linux /home/physics_engines/libCustomEngine.so +# Windows +C:\Users\Robot\physics_engines\CustomEngine.dll ``` You should set the variable as follows: ``` +# Linux export GZ_SIM_PHYSICS_ENGINE_PATH=/home/physics_engines +# Windows +set GZ_SIM_PHYSICS_ENGINE_PATH=C:\Users\Robot\physics_engines ``` If you have several libraries installed in different paths, you can add more paths, for example: ``` +# Linux, separate with : export GZ_SIM_PHYSICS_ENGINE_PATH=/home/physics_engines:/home/more_engines +# Windows, separate with ; +set GZ_SIM_PHYSICS_ENGINE_PATH=C:\Users\Robot\physics_engines;C:\MoreEngines ``` ## Tell Gazebo what engine to load @@ -52,6 +60,7 @@ There are a few different ways of telling Gazebo which engine to load. For any method, you should provide the name of your plugin's shared library, but the `lib` prefix and the file extension are optional. So in this example, the file is `libCustomEngine.so` but it's enough to set `CustomEngine`. +That is also prefered to support multiple operating systems. ### From SDF @@ -103,10 +112,10 @@ Gazebo supports the following physics engine configurations through SDF. These options are available to all physics engines, but not all engines may support them. The default physics engine, DART, supports all these options. -* [//physics/dart/collision_detector](http://sdformat.org/spec?ver=1.8&elem=physics#dart_collision_detector) +* [//physics/dart/collision_detector](http://sdformat.org/spec?ver=1.11&elem=physics#dart_collision_detector) * Options supported by DART: `ode` (default), `bullet`, `fcl`, `dart`. -* [//physics/dart/solver/solver_type](http://sdformat.org/spec?ver=1.8&elem=physics#solver_solver_type) +* [//physics/dart/solver/solver_type](http://sdformat.org/spec?ver=1.11&elem=physics#solver_solver_type) * Options supported by DART: `dantzig` (default), `pgs` ## Troubleshooting @@ -114,12 +123,12 @@ may support them. The default physics engine, DART, supports all these options. > Failed to find plugin [libCustomEngine.so]. Have you checked the > GZ_SIM_PHYSICS_ENGINE_PATH environment variable? -Gazebo can't find out where `libCustomEngine.so` is located. +Gazebo can't find out where `libCustomEngine.so` or `CustomEngine.dll` is located. If that's an engine you believe should be installed with Gazebo Physics, check if the relevant plugin is installed. -If that's a 3rd party engine, find where the `.so` file is installed and add +If that's a 3rd party engine, find where the `.so` or `.dll` file is installed and add that path to the environment variable as described above. > Unable to load the [/home/physics_engines/libCustomEngine.so] library. From b32c89055f48d04b3d59dd66d94b5867ddd62dfe Mon Sep 17 00:00:00 2001 From: Martin Pecka Date: Mon, 16 Sep 2024 19:43:44 +0200 Subject: [PATCH 74/80] README: Windows-related improvements (#2631) Signed-off-by: Martin Pecka --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6858c637be..695107209d 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,13 @@ where the YAML files for the packages are found, such as export GZ_CONFIG_PATH=/usr/local/share/gz:$HOME/ws/install/share/gz ``` -where `$HOME/ws` is an example colcon workspace used to build Gazebo +where `$HOME/ws` is an example colcon workspace used to build Gazebo. + +On Windows, `gz sim` (i.e. running both server and GUI in one command) doesn't yet work. +To run Gazebo Sim on Windows, you need to run the server in one terminal (`gz sim -s `) +and the GUI in another terminal (`gz sim -g `). Remember this when reading through +all Gazebo Sim tutorials. Also remember that Conda and `install\setup.bat` need to be sourced +in both terminals (as well as any changes to `GZ_PARTITION` and other environment variables). # Documentation @@ -116,7 +122,7 @@ See the [installation tutorial](https://gazebosim.org/api/sim/9/install.html). See the [installation tutorial](https://gazebosim.org/api/sim/9/install.html). -See the [Writing Tests section of the contributor guide](https://github.com/gazebosim/gz-sim/blob/main/CONTRIBUTING.md#writing-tests) for help creating or modifying tests. +See the [Writing Tests section of the contributor guide](https://gazebosim.org/docs/all/contributing/#writing-tests) for help creating or modifying tests. # Folder Structure From 0e1f254bbd1408876176e610336b9521d6e2c179 Mon Sep 17 00:00:00 2001 From: Martin Pecka Date: Mon, 16 Sep 2024 21:50:29 +0200 Subject: [PATCH 75/80] tutorials/install: Added Windows instructions (#2628) Signed-off-by: Martin Pecka --- tutorials/install.md | 75 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 3 deletions(-) diff --git a/tutorials/install.md b/tutorials/install.md index db06f13db2..7ecadbfd3c 100644 --- a/tutorials/install.md +++ b/tutorials/install.md @@ -1,7 +1,8 @@ \page install Installation -These instructions are for installing only Gazebo. If you're interested -in using all the Gazebo libraries, not only Igniton Gazebo, check out this +These instructions are for installing only Gazebo Sim. If you're interested +in using all the Gazebo libraries including gz-launch, or to install all +libraries from source, check out [Gazebo installation](https://gazebosim.org/docs/latest/install). We recommend following the binary install instructions to get up and running as @@ -50,6 +51,27 @@ installing Gazebo from source. brew install gz-sim<#> ``` +### Windows + +1. First, follow the steps 1-4 of [Gazebo source install](https://gazebosim.org/docs/ionic/install_windows_src/#install-dependencies) + tutorial to install Conda, Visual Studio and set up a Conda environment (we'll call it `gz-ws`). + + Do not forget to activate the Conda env (if not already activated) + inside the Visual Studio Command Prompt: + + ``` + conda activate gz-ws + ``` + +2. Now install Gazebo. + + ``` + conda install gz-sim<#> --channel conda-forge + ``` + + Be sure to replace `<#>` with a number value, such as 8 or 9, depending on + which version you need. + ## Source Install Install from source if you're interested in changing the source code or need a @@ -115,6 +137,50 @@ feature which hasn't been released yet. sudo make install ``` +### Windows + +1. First, follow the steps 1-4 of [Gazebo source install](https://gazebosim.org/docs/ionic/install_windows_src/#install-dependencies) + tutorial to install Conda, Visual Studio and set up a Conda environment (we'll call it `gz-ws`). + + Do not forget to activate the Conda env (if not already activated) + inside the Visual Studio Command Prompt: + + ``` + conda activate gz-ws + ``` + +2. Install Gazebo dependencies: + + You can view available versions and their dependencies: + ``` + conda search libgz-sim* --channel conda-forge --info + ``` + + Install the dependencies, replacing `<#>` with the required versions: + ``` + conda install gz-cmake<#> gz-common<#> gz-fuel-tools<#> gz-gui<#> gz-math<#> gz-msgs<#> gz-physics<#> gz-plugin<#> gz-rendering<#> gz-sensors<#> gz-tools<#> gz-transport<#> gz-utils<#> sdformat<#> --channel conda-forge + ``` + +3. Navigate to where you would like to build the library, and clone the repository. + ``` + # Optionally, append `-b gz-sim#` (replace # with a number) to check out a specific version + git clone https://github.com/gazebosim/gz-sim.git + ``` + +4. Configure and build + ``` + cd gz-sim + mkdir build + cd build + cmake .. -DBUILD_TESTING=OFF # Optionally, -DCMAKE_INSTALL_PREFIX=path\to\install + cmake --build . --config Release + ``` + +5. Optionally, install + ``` + cmake --install . --config Release + ``` + ## Documentation API documentation and tutorials can be accessed at [https://gazebosim.org/libs/gazebo](https://gazebosim.org/libs/gazebo) @@ -123,7 +189,10 @@ You can also generate the documentation from a clone of this repository by follo 1. You will need [Doxygen](http://www.doxygen.org/). On Ubuntu Doxygen can be installed using ``` + # Linux sudo apt-get install doxygen + # Windows + conda install doxygen --channel conda-forge ``` 2. Clone the repository @@ -137,7 +206,7 @@ You can also generate the documentation from a clone of this repository by follo mkdir build cd build cmake ../ - make doc + cmake --build . --target doc ``` 4. View the documentation by running the following command from the `build` directory. From 76305dfe9065db3b17dfa562c2ee8e6bafa7b1a3 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Tue, 17 Sep 2024 10:53:20 -0700 Subject: [PATCH 76/80] Update links in point cloud to mesh tutorial and fix screenshot link (#2632) * Update links and fix image * use image tag Signed-off-by: Ian Chen --- tutorials/point_cloud_to_mesh.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tutorials/point_cloud_to_mesh.md b/tutorials/point_cloud_to_mesh.md index 1e8a42dd03..04d710013c 100644 --- a/tutorials/point_cloud_to_mesh.md +++ b/tutorials/point_cloud_to_mesh.md @@ -21,7 +21,7 @@ After installing, open CloudCompare and import your point cloud file by going to Depending on the number of points in your point cloud, this could take several minutes. Once loaded, you should see the following tunnel section: -![Opening the point cloud](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/cloudcompare2.png) +\image html files/point_cloud_to_mesh/cloudcompare2.png Many 3D scans will be composed of millions, sometimes hundreds of millions of points. Converting a scan to a 3D model with that many points would be very difficult due to the number of polygons that would be created and the long processing time necessary to compute the normals. @@ -35,13 +35,13 @@ We'll still walk through reducing points, however, to make the process quicker. To reduce the number of points in your cloud, click on the tunnel so a yellow cube outline appears around it, then go to `Edit` > `Subsample`. -![Min. space between points](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/min_space.jpg) +\image html files/point_cloud_to_mesh/min_space.jpg The number you will need to enter in the `min. space between points` field will vary depending on your point cloud. A value of .01 was sufficient to bring our point cloud to an easy-to-manage 1 million points. Point count is visible in the `Properties` window on the lower left side of the screen. -![Point count of subsample](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/properties.png) +\image html files/point_cloud_to_mesh/properties.png How many points you reduce down to will largely depend on how long you are willing to wait for the point cloud to be converted into a mesh. The more points you start with, the longer it will take to compute the normals and create the mesh. @@ -49,7 +49,7 @@ The more points you start with, the longer it will take to compute the normals a After the operation is complete you’ll have two clouds in your scene: the original point cloud and your subsampled point cloud. Most operations in CloudCompare will create new point clouds and keep the original, so make sure that you have the new point cloud selected before running an operation. -![Selecting the new point cloud](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/secondcloud.png) +\image html files/point_cloud_to_mesh/secondcloud.png ### Create a Polygonal Mesh @@ -60,7 +60,7 @@ A normal is essentially the direction a polygon is facing. To do this, go to `Edit` > `Normals` > `Compute`. You'll see this dialog box: -![Choose Triangulation surface model](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/compute_normals.png) +\image html files/point_cloud_to_mesh/compute_normals.png You’ll see various options in the dialog box that appears. The main thing you’ll want to consider is what `Local surface model` to use. @@ -73,7 +73,7 @@ Now we get to actually convert our point cloud to a mesh. To do this go to `Plugins` > `PoissonRecon`. You'll see this dialog box: -![Octree depth and output density selection](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/outputdensity.png) +\image html files/point_cloud_to_mesh/outputdensity.png The value you enter in the `Octree depth` field will determine the polygon count of the created model. You may have to run the surface reconstruction a couple times with varying values before you land on a polygon count that is suitable for your needs. @@ -94,18 +94,18 @@ Our tunnel has turned into a blob shape. This is because the mesh that CloudCompare creates will always be water tight even if it has to add polygons where there are no points. We just want our tunnels, though, so we need to remove those unnecessary polygons. -![The blob shape](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/blob2.jpg) +\image html files/point_cloud_to_mesh/blob2.jpg This is where our scalar field comes in. In the mesh's `Properties` window go to `SF display params` and take the left handle in the graph and drag it to the right until it hits the area where the bulk of the scalar field starts. -![Adjusting scalar filed params](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/sf_display.png) +\image html files/point_cloud_to_mesh/sf_display.png This will display only the polygons that were created from the point cloud and hide the polygons used to make the model watertight. The polygons are only hidden however. We still need to actually remove them. -![Display original polygons](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/hidden_polygons2.jpg) +\image html files/point_cloud_to_mesh/hidden_polygons2.jpg To remove the hidden polygons go to `Edit` > `Scalar fields` > `Filter By Value`. @@ -114,11 +114,11 @@ Hitting export will simply export the mesh within that range. Instead, we'll hit `Split` to create two meshes. One with the polygons inside our specified range and one containing polygons outside that range. -![Splitting the mesh](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/split.png) +\image html files/point_cloud_to_mesh/split.png It is possible that you will get error "Visibility table not instantiated". This error causes only the "wanted" part of the mesh to be created when splitting, while the other ("unwanted") part will not be generated. But that is not a problem for our use-case. -![Error "Visibility table not instantiated"](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/error.jpg) +\image html files/point_cloud_to_mesh/error.jpg ### The Completed Model @@ -128,6 +128,6 @@ Your file format will depend on the software you want to use but `.obj` is a wid Before exporting, check your mesh for holes. If still checked, disable display of the pointcloud, so that only your output mesh is shown. Inspect ground parts of the mesh (or any other parts you are most interested in) and check if there aren't holes in it. If there are some, you can try to repeat the trimming step with more relaxed threshold. -![The completed mesh](https://raw.githubusercontent.com/gazebosim/gz-sim/main/tutorials/files/point_cloud_to_mesh/complete2.png) +\image html files/point_cloud_to_mesh/complete2.png You can find more information on CloudCompare and a more in depth look at the tools we used in this tutorial on [the CloudCompare website](https://www.cloudcompare.org/) and the [CloudCompare wiki](https://www.cloudcompare.org/doc/wiki/index.php?title=Main_Page). From cdca1f170761b02b6a84b733e87d1952f2b8315c Mon Sep 17 00:00:00 2001 From: Martin Pecka Date: Mon, 23 Sep 2024 10:36:49 +0200 Subject: [PATCH 77/80] tutorials/video_recorder: Added note about OGV support (#2634) Signed-off-by: Martin Pecka --- tutorials/video_recorder.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tutorials/video_recorder.md b/tutorials/video_recorder.md index fa655c9b1a..432bd94f21 100644 --- a/tutorials/video_recorder.md +++ b/tutorials/video_recorder.md @@ -19,6 +19,12 @@ recorder button gives you the video format options that are available. @image html files/video_recorder/video_recorder.png +> **NOTE** +> The OGV format might not be supported by the underlying libavcodec implementation. +> This is especially true on Windows with the conda-installed dependencies. +> There is no easy way to add the VP8 codec support except for building +> libavcodec manually and enabling the support. + Once an option is selected, recording starts immediately as indicated by a flashing video recorder icon. At anytime that you wish to stop recording, click on the flashing icon and select `Stop`. A file dialog window should pop up From bbe2cc603b2c02fb96cdcf8a5b03f165702f3dfa Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Thu, 26 Sep 2024 19:48:19 -0700 Subject: [PATCH 78/80] Prepare for 9.0.0 release (#2635) Signed-off-by: Ian Chen --- CMakeLists.txt | 2 +- Changelog.md | 75 +++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 75 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c97691a80..9f309499c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ find_package(gz-cmake4 REQUIRED) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -gz_configure_project(VERSION_SUFFIX pre1) +gz_configure_project(VERSION_SUFFIX) #============================================================================ # Set project-specific options diff --git a/Changelog.md b/Changelog.md index 9b2e73db93..620f3f922a 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,9 +1,82 @@ ## Gazebo Sim 9.x -### Gazebo Sim 9.0.0 (2024-09-XX) +### Gazebo Sim 9.0.0 (2024-09-25) 1. **Baseline:** this includes all changes from 8.6.0 and earlier. +1. Miscellaneous documentation fixes + * [Pull request #2634](https://github.com/gazebosim/gz-sim/pull/2634) + * [Pull request #2632](https://github.com/gazebosim/gz-sim/pull/2632) + * [Pull request #2628](https://github.com/gazebosim/gz-sim/pull/2628) + * [Pull request #2631](https://github.com/gazebosim/gz-sim/pull/2631) + * [Pull request #2627](https://github.com/gazebosim/gz-sim/pull/2627) + * [Pull request #2625](https://github.com/gazebosim/gz-sim/pull/2625) + * [Pull request #2622](https://github.com/gazebosim/gz-sim/pull/2622) + * [Pull request #2607](https://github.com/gazebosim/gz-sim/pull/2607) + * [Pull request #2606](https://github.com/gazebosim/gz-sim/pull/2606) + * [Pull request #2602](https://github.com/gazebosim/gz-sim/pull/2602) + * [Pull request #2601](https://github.com/gazebosim/gz-sim/pull/2601) + * [Pull request #2603](https://github.com/gazebosim/gz-sim/pull/2603) + * [Pull request #2578](https://github.com/gazebosim/gz-sim/pull/2578) + * [Pull request #2592](https://github.com/gazebosim/gz-sim/pull/2592) + * [Pull request #2582](https://github.com/gazebosim/gz-sim/pull/2582) + * [Pull request #2585](https://github.com/gazebosim/gz-sim/pull/2585) + * [Pull request #2576](https://github.com/gazebosim/gz-sim/pull/2576) + * [Pull request #2573](https://github.com/gazebosim/gz-sim/pull/2573) + * [Pull request #2571](https://github.com/gazebosim/gz-sim/pull/2571) + * [Pull request #2574](https://github.com/gazebosim/gz-sim/pull/2574) + * [Pull request #2564](https://github.com/gazebosim/gz-sim/pull/2564) + * [Pull request #2563](https://github.com/gazebosim/gz-sim/pull/2563) + * [Pull request #2562](https://github.com/gazebosim/gz-sim/pull/2562) + * [Pull request #2553](https://github.com/gazebosim/gz-sim/pull/2553) + +1. Fix log playback GUI display + * [Pull request #2611](https://github.com/gazebosim/gz-sim/pull/2611) + * [Pull request #2619](https://github.com/gazebosim/gz-sim/pull/2619) + +1. Add tutorial + example SDF for shadow texture size + * [Pull request #2597](https://github.com/gazebosim/gz-sim/pull/2597) + +1. Fix making breadcrumb static if it's a nested model + * [Pull request #2593](https://github.com/gazebosim/gz-sim/pull/2593) + +1. Update physics system error msg when plugin can not be loaded + * [Pull request #2604](https://github.com/gazebosim/gz-sim/pull/2604) + +1. Fix configuring global illumination GUI plugin parameters + * [Pull request #2594](https://github.com/gazebosim/gz-sim/pull/2594) + +1. Fix particle emitter color range image path warning + * [Pull request #2560](https://github.com/gazebosim/gz-sim/pull/2560) + +1. Fix empty gui world file + * [Pull request #2591](https://github.com/gazebosim/gz-sim/pull/2591) + +1. Fix crash on windows due to invalid log directory path + * [Pull request #2589](https://github.com/gazebosim/gz-sim/pull/2589) + +1. Use ogre2 for DEM worlds + * [Pull request #2586](https://github.com/gazebosim/gz-sim/pull/2586) + +1. Fix crash when running the optical tactile sensor world + * [Pull request #2561](https://github.com/gazebosim/gz-sim/pull/2561) + +1. Prevent follow actor plugin from crashing when actor is removed + * [Pull request #2577](https://github.com/gazebosim/gz-sim/pull/2577) + * [Pull request #2584](https://github.com/gazebosim/gz-sim/pull/2584) + +1. Fix hydrodynamics deprecation warning. + * [Pull request #2579](https://github.com/gazebosim/gz-sim/pull/2579) + +1. Removed actor population world due to bad merge + * [Pull request #2581](https://github.com/gazebosim/gz-sim/pull/2581) + +1. Fixed warning joint trayectory sdf + * [Pull request #2580](https://github.com/gazebosim/gz-sim/pull/2580) + +1. Fix looking up camera name in camera lens system + * [Pull request #2559](https://github.com/gazebosim/gz-sim/pull/2559) + 1. Add a flexible mechanism to combine user and default plugins * [Pull request #2497](https://github.com/gazebosim/gz-sim/pull/2497) From 55658151e3cfe8731ef3c46c0fa829dddec7cf00 Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Fri, 11 Oct 2024 15:17:37 -0700 Subject: [PATCH 79/80] fix custom sensor system example build (#2649) Signed-off-by: Ian Chen --- examples/plugin/custom_sensor_system/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/plugin/custom_sensor_system/CMakeLists.txt b/examples/plugin/custom_sensor_system/CMakeLists.txt index 47e398c64d..6aef7ce712 100644 --- a/examples/plugin/custom_sensor_system/CMakeLists.txt +++ b/examples/plugin/custom_sensor_system/CMakeLists.txt @@ -20,7 +20,7 @@ include(FetchContent) FetchContent_Declare( sensors_clone GIT_REPOSITORY https://github.com/gazebosim/gz-sensors - GIT_TAG main + GIT_TAG gz-sensors${GZ_SENSORS_VER} ) FetchContent_Populate(sensors_clone) add_subdirectory(${sensors_clone_SOURCE_DIR}/examples/custom_sensor ${sensors_clone_BINARY_DIR}) From 990f1c27d4f2ef69740bab433be6e8b7206d39ac Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Wed, 16 Oct 2024 10:28:25 -0700 Subject: [PATCH 80/80] Fix crash when multicopter motor system is attached to an empty model (#2653) Signed-off-by: Ian Chen --- src/systems/multicopter_motor_model/MulticopterMotorModel.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/systems/multicopter_motor_model/MulticopterMotorModel.cc b/src/systems/multicopter_motor_model/MulticopterMotorModel.cc index 5a711272bd..02fa87b774 100644 --- a/src/systems/multicopter_motor_model/MulticopterMotorModel.cc +++ b/src/systems/multicopter_motor_model/MulticopterMotorModel.cc @@ -411,7 +411,8 @@ void MulticopterMotorModel::PreUpdate(const UpdateInfo &_info, const auto parentLinkName = _ecm.Component( this->dataPtr->jointEntity); - this->dataPtr->parentLinkName = parentLinkName->Data(); + if (parentLinkName) + this->dataPtr->parentLinkName = parentLinkName->Data(); } if (this->dataPtr->linkEntity == kNullEntity)

uPs0(upqTc}=NyI^e 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 a(`luxrg#-_7!3i|^&$<7( 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 Tpg#qHpZ~Z`|MedC_w4@z>%Kf| literal 0 HcmV?d00001 diff --git a/tutorials/files/point_cloud_to_mesh/hidden_polygons2.jpg b/tutorials/files/point_cloud_to_mesh/hidden_polygons2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..584a98976b2476a5ab873039b9880915e732dc0d GIT binary patch literal 100371 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 literal 0 HcmV?d00001 diff --git a/tutorials/files/point_cloud_to_mesh/hidden_polygons2.png b/tutorials/files/point_cloud_to_mesh/hidden_polygons2.png deleted file mode 100644 index 6dfa068610d597b63b593751bb8331dd3e86a9fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150001 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 F`v(Loo<{%x diff --git a/tutorials/files/point_cloud_to_mesh/min_space.jpg b/tutorials/files/point_cloud_to_mesh/min_space.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e19615659bde1b31de5c021f342061d2f2187b4b GIT binary patch literal 28644 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