diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml index 8cd493a50..d98993ca0 100644 --- a/.docker/docker-compose.yml +++ b/.docker/docker-compose.yml @@ -40,7 +40,7 @@ services: build: args: from: diegoferigo/gym-ignition:base - ignition_codename: dome + ignition_codename: edifice CMAKE_BUILD_TYPE: Debug context: . dockerfile: cicd-devel.Dockerfile @@ -50,7 +50,7 @@ services: build: args: from: diegoferigo/gym-ignition:base - ignition_codename: dome + ignition_codename: edifice CMAKE_BUILD_TYPE: Release context: . dockerfile: cicd-devel.Dockerfile diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index 0e44ae267..f2755e4e3 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -20,6 +20,7 @@ jobs: - User - Developer ignition: + - edifice - dome # - citadel @@ -109,7 +110,8 @@ jobs: cd /workspace/src wget -O - ${TAGS_YAML} | vcs import SYSTEM_VERSION=$(lsb_release -cs) - apt-get -y install $(sort -u $(find . -iname 'packages-'$SYSTEM_VERSION'.apt' -o -iname 'packages.apt') | tr '\n' ' ') + #apt-get -y install $(sort -u $(find . -iname 'packages-'$SYSTEM_VERSION'.apt' -o -iname 'packages.apt') | tr '\n' ' ') + apt-get -y install $(sort -u $(find . -iname 'packages-'$(lsb_release -cs)'.apt' -o -iname 'packages.apt') | grep -v -E "^libignition|^libsdformat") cd /workspace colcon graph colcon build \ @@ -163,13 +165,13 @@ jobs: # User installation - name: '[User] Create wheel' - if: matrix.type == 'User' && matrix.ignition == 'dome' + if: matrix.type == 'User' && matrix.ignition == 'edifice' shell: bash -i -e {0} run: pip3 wheel -w dist/ . # Note: calling "pip wheel" with "--global-option" forces dependencies to be build from their sdist. # Since it's very slow, we create the wheel from setup.py without isolation. - name: '[User] Create wheel' - if: matrix.type == 'User' && matrix.ignition != 'dome' + if: matrix.type == 'User' && matrix.ignition != 'edifice' shell: bash -i -e {0} run: | pip3 install \ @@ -191,11 +193,13 @@ jobs: # ============ - name: '[ScenarI/O] Python Tests' + shell: bash -i -e {0} run: | cd tests pytest -m "scenario" - name: '[ScenarI/O] Python Tests with Valgrind' + shell: bash -i -e {0} if: failure() run: | apt-get install -y --no-install-recommends valgrind @@ -204,11 +208,13 @@ jobs: valgrind --log-file=/tmp/valgrind.log pytest -s -m "scenario" || colour-valgrind -t /tmp/valgrind.log - name: '[gym_ignition] Python Tests' + shell: bash -i -e {0} run: | cd tests pytest -m "gym_ignition" - name: '[gym_ignition] Python Tests with Valgrind' + shell: bash -i -e {0} if: failure() run: | pip3 install colour-valgrind @@ -265,8 +271,8 @@ jobs: - name: Publish package to PyPI if: | github.repository == 'robotology/gym-ignition' && matrix.type == 'User' && - ((github.event_name == 'release' && github.event.action == 'published' && matrix.ignition == 'dome') || - (github.event_name == 'push' && matrix.ignition == 'dome' && github.ref == 'refs/heads/devel')) + ((github.event_name == 'release' && github.event.action == 'published' && matrix.ignition == 'edifice') || + (github.event_name == 'push' && matrix.ignition == 'edifice' && github.ref == 'refs/heads/devel')) uses: pypa/gh-action-pypi-publish@master with: user: __token__ diff --git a/CMakeLists.txt b/CMakeLists.txt index ea0cea97a..7128af792 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -146,7 +146,7 @@ add_install_rpath_support( if(NOT IGNITION_DISTRIBUTION) include(FindIgnitionDistribution) - set(SUPPORTED_IGNITION_DISTRIBUTIONS "Dome" "Citadel") + set(SUPPORTED_IGNITION_DISTRIBUTIONS "Edifice" "Dome" "Citadel") foreach(distribution IN LISTS SUPPORTED_IGNITION_DISTRIBUTIONS) diff --git a/README.md b/README.md index d45365f74..9e5eef31b 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ our simulations, visit the _Motivations_ section of the [website](https://roboto ## Setup -1. Install the latest Ignition suite following the [official instructions](https://ignitionrobotics.org/docs/dome). +1. Install the Ignition suite following the [official instructions](https://ignitionrobotics.org/docs/edifice). 1. Execute `pip install gym-ignition`, preferably in a virtual environment. **Note**: `gym-ignition` currently only supports the latest version of the ignition suite. For more information on supported versions please refer to the [Support Policy](https://robotology.github.io/gym-ignition/master/installation/support_policy.html). diff --git a/cmake/FindIgnitionDistribution.cmake b/cmake/FindIgnitionDistribution.cmake index d625ee11d..f2cde4e4e 100644 --- a/cmake/FindIgnitionDistribution.cmake +++ b/cmake/FindIgnitionDistribution.cmake @@ -7,6 +7,7 @@ # In the future we could pull and parse the tags.yaml file. set(IGNITION-GAZEBO_CITADEL_VER 3) set(IGNITION-GAZEBO_DOME_VER 4) +set(IGNITION-GAZEBO_EDIFICE_VER 5) macro(find_ignition_distribution) diff --git a/cmake/ImportTargetsEdifice.cmake b/cmake/ImportTargetsEdifice.cmake new file mode 100644 index 000000000..8099dbb8c --- /dev/null +++ b/cmake/ImportTargetsEdifice.cmake @@ -0,0 +1,73 @@ +include(AliasImportedTarget) + +# https://ignitionrobotics.org/docs/edifice/install#edifice-libraries + +alias_imported_target( + PACKAGE_ORIG sdformat11 + PACKAGE_DEST sdformat + TARGETS_ORIG sdformat11 + TARGETS_DEST sdformat + NAMESPACE_ORIG sdformat11 + NAMESPACE_DEST sdformat + REQUIRED TRUE + ) + +alias_imported_target( + PACKAGE_ORIG ignition-gazebo5 + PACKAGE_DEST ignition-gazebo + TARGETS_ORIG ignition-gazebo5 core + TARGETS_DEST ignition-gazebo core + NAMESPACE_ORIG ignition-gazebo5 + NAMESPACE_DEST ignition-gazebo + REQUIRED TRUE + ) + +alias_imported_target( + PACKAGE_ORIG ignition-common4 + PACKAGE_DEST ignition-common + TARGETS_ORIG ignition-common4 + TARGETS_DEST ignition-common + NAMESPACE_ORIG ignition-common4 + NAMESPACE_DEST ignition-common + REQUIRED TRUE + ) + +alias_imported_target( + PACKAGE_ORIG ignition-sensors5-all + PACKAGE_DEST ignition-sensors-all + TARGETS_ORIG ignition-sensors5-all + TARGETS_DEST ignition-sensors-all + NAMESPACE_ORIG ignition-sensors5 + NAMESPACE_DEST ignition-sensors + REQUIRED TRUE + ) + +alias_imported_target( + PACKAGE_ORIG ignition-rendering5 + PACKAGE_DEST ignition-rendering + TARGETS_ORIG ignition-rendering5 + TARGETS_DEST ignition-rendering + NAMESPACE_ORIG ignition-rendering5 + NAMESPACE_DEST ignition-rendering + REQUIRED TRUE + ) + +alias_imported_target( + PACKAGE_ORIG ignition-gazebo5-rendering + PACKAGE_DEST ignition-gazebo-rendering + TARGETS_ORIG ignition-gazebo5-rendering + TARGETS_DEST ignition-gazebo-rendering + NAMESPACE_ORIG ignition-gazebo5 + NAMESPACE_DEST ignition-gazebo + REQUIRED TRUE + ) + +alias_imported_target( + PACKAGE_ORIG ignition-physics4 + PACKAGE_DEST ignition-physics + TARGETS_ORIG ignition-physics4 + TARGETS_DEST ignition-physics + NAMESPACE_ORIG ignition-physics4 + NAMESPACE_DEST ignition-physics + REQUIRED TRUE + ) diff --git a/docs/sphinx/info/faq.rst b/docs/sphinx/info/faq.rst index ff0519d0f..04ef2b6ce 100644 --- a/docs/sphinx/info/faq.rst +++ b/docs/sphinx/info/faq.rst @@ -24,7 +24,7 @@ On GNU/Linux distributions that ship an old OpenGL version, the GUI could fail t error like *Unable to create the rendering window*. The reason is that Ignition Gazebo has `ogre-next `_ (also known as ogre2) as default rendering engine, and it requires OpenGL greater than 3.3. -You can find more details `here `_. +You can find more details `here `_. The workaround we recommend is modifying the file ``~/.ignition/gazebo/gui.config`` as follows: diff --git a/docs/sphinx/installation/support_policy.rst b/docs/sphinx/installation/support_policy.rst index 37b020370..b2270f13b 100644 --- a/docs/sphinx/installation/support_policy.rst +++ b/docs/sphinx/installation/support_policy.rst @@ -12,15 +12,16 @@ We do not yet provide direct support to other operating systems. The table below recaps the project requirements of the :ref:`Stable ` and :ref:`Nightly ` channels: -+-------------+-----------------+--------+------------------+----------+------------+---------+ -| Channel | C++ | Python | Ignition | Ubuntu | macOS [*]_ | Windows | -+=============+=================+========+==================+==========+============+=========+ -| **Stable** | >= gcc8, clang6 | >= 3.8 | `Dome`_ (binary) | >= 20.04 | No | No | -+-------------+-----------------+--------+------------------+----------+------------+---------+ -| **Nightly** | >= gcc8, clang6 | >= 3.8 | `Dome`_ (source) | >= 20.04 | No | No | -+-------------+-----------------+--------+------------------+----------+------------+---------+ ++-------------+-----------------+--------+---------------------+----------+------------+---------+ +| Channel | C++ | Python | Ignition | Ubuntu | macOS [*]_ | Windows | ++=============+=================+========+=====================+==========+============+=========+ +| **Stable** | >= gcc8, clang6 | >= 3.8 | `Dome`_ (binary) | >= 20.04 | No | No | ++-------------+-----------------+--------+---------------------+----------+------------+---------+ +| **Nightly** | >= gcc8, clang6 | >= 3.8 | `Edifice`_ (source) | >= 20.04 | No | No | ++-------------+-----------------+--------+---------------------+----------+------------+---------+ .. _`Dome`: https://ignitionrobotics.org/docs/dome/install +.. _`Edifice`: https://ignitionrobotics.org/docs/edifice/install .. [*] Ignition officially supports macOS and also ``gym-ignition`` could be installed on this platform. However, we do not currently test this configuration and we cannot guarantee support.