Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gazebo compatibility on jammy #82

Closed
wants to merge 18 commits into from
Closed

Conversation

christophfroehlich
Copy link
Contributor

see #77, I accidentally broke the old PR

@@ -4,6 +4,9 @@ name: Check Rolling Compatibility on Jazzy

on:
workflow_dispatch:
pull_request:
paths:
- '.github/workflows/rolling-compatibility-iron-binary-build.yml'
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- '.github/workflows/rolling-compatibility-iron-binary-build.yml'
- '.github/workflows/rolling-compatibility-jazzy-binary-build.yml'

@christophfroehlich
Copy link
Contributor Author

@azeey thanks for the hint with the skip-keys for rosdep. It compiles now, but it seems that the plugin can't be loaded

https://github.com/ros-controls/ros2_control_ci/actions/runs/9079260048/job/24948084469?pr=82

 [ruby $(which ign) gazebo-1] Library [/home/runner/work/ros2_control_ci/ros2_control_ci/.work/target_ws/install/gz_ros2_control/lib/libgz_ros2_control-system.so] does not export any plugins. The symbol [IgnitionPluginHook] is missing, or it is not externally visible.
 [ruby $(which ign) gazebo-1] [NON-XML-CHAR-0x1B][1;31m[Err] [SystemLoader.cc:103] [NON-XML-CHAR-0x1B][0m[NON-XML-CHAR-0x1B][1;31mFailed to load system plugin [[NON-XML-CHAR-0x1B][0m[NON-XML-CHAR-0x1B][1;31mgz_ros2_control-system[NON-XML-CHAR-0x1B][0m[NON-XML-CHAR-0x1B][1;31m] : couldn't load library on path [[NON-XML-CHAR-0x1B][0m[NON-XML-CHAR-0x1B][1;31m/home/runner/work/ros2_control_ci/ros2_control_ci/.work/target_ws/install/gz_ros2_control/lib/libgz_ros2_control-system.so[NON-XML-CHAR-0x1B][0m[NON-XML-CHAR-0x1B][1;31m].[NON-XML-CHAR-0x1B][0m[NON-XML-CHAR-0x1B][1;31m[NON-XML-CHAR-0x1B][0m

What is this thing with IgnitionPluginHook?

Copy link

@azeey azeey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The IgnitionPluginHook is coming from trying to use Fortress. In ros-controls/gz_ros2_control#277, I removed any mention of ignition, which cleaned up the codebase. Building ros_gz from source would help, but I'm not sure we can promise to keep ros_gz's rolling branch compatible with humble, so this might fail at some point.

gz/gz_dartsim_vendor:
type: git
url: https://github.com/gazebo-release/gz_dartsim_vendor.git
version: rolling
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you'll want to include https://github.com/gazebosim/ros_gz/ because it also needs to be built with the version of Gazebo used here and gz_ros2_control_demos depends on it.

From the logs, it looks like you're actually still using Fortress

2024-05-14T13:32:36.3189979Z 9: test_arm (gz_ros2_control_tests.TestFixture) ... [INFO] [ruby $(which ign) gazebo-1]: process started with pid [87741]
2024-05-14T13:32:36.3190753Z 9: [INFO] [create-2]: process started with pid [87743]
2024-05-14T13:32:36.3191362Z 9: [INFO] [robot_state_publisher-3]: process started with pid [87745]
2024-05-14T13:32:36.3191932Z 9: [INFO] [python3-4]: process started with pid [87747]
2024-05-14T13:32:36.3192797Z 9: [robot_state_publisher-3] [INFO] [1715693451.304287286] [robot_state_publisher]: got segment cart
2024-05-14T13:32:36.3194370Z 9: [robot_state_publisher-3] [INFO] [1715693451.304382593] [robot_state_publisher]: got segment slideBar
2024-05-14T13:32:36.3195930Z 9: [robot_state_publisher-3] [INFO] [1715693451.304394776] [robot_state_publisher]: got segment world
2024-05-14T13:32:36.3197397Z 9: [create-2] [INFO] [1715693451.326267146] [ros_gz_sim]: Requesting list of world names.
2024-05-14T13:32:36.3198299Z 9: [create-2] [INFO] [1715693451.796072830] [ros_gz_sim]: Requested creation of entity.
2024-05-14T13:32:36.3199012Z 9: [create-2] [INFO] [1715693451.796125348] [ros_gz_sim]: OK creation of entity.
2024-05-14T13:32:36.3200040Z 9: [INFO] [create-2]: process has finished cleanly [pid 87743]
2024-05-14T13:32:36.3200936Z 9: [INFO] [ros2-5]: process started with pid [87795]
2024-05-14T13:32:36.3202448Z 9: [ruby $(which ign) gazebo-1] [Msg] Ignition Gazebo Server v6.16.0
2024-05-14T13:32:36.3204526Z 9: [ruby $(which ign) gazebo-1] [Msg] Loading SDF world file[/usr/share/ignition/ignition-gazebo6/worlds/empty.sdf].
2024-05-14T13:32:36.3206871Z 9: [ruby $(which ign) gazebo-1] [Msg] Serving entity system service on [/entity/system/add]

Note the version 2024-05-14T13:32:36.3202448Z 9: [ruby $(which ign) gazebo-1] [Msg] Ignition Gazebo Server v6.16.0. Harmonic is 8.x

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, rosdep installs ros-iron-ros-gz-sim for example, which uses ignition-gazebo6-dev (fortress) and the rolling branch of gazebo_ros2_control is not working with it any more?

@christophfroehlich
Copy link
Contributor Author

The IgnitionPluginHook is coming from trying to use Fortress. In ros-controls/gz_ros2_control#277, I removed any mention of ignition, which cleaned up the codebase. Building ros_gz from source would help, but I'm not sure we can promise to keep ros_gz's rolling branch compatible with humble, so this might fail at some point.

Thanks for the explanation. ros_gz_bridge needs https://index.ros.org/p/rosidl_pycommon/#humble which is not released for humble. Trying to compile https://github.com/ros2/rosidl/tree/rolling/rosidl_pycommon from source as well? I have the feeling that this will not work (for a long time).

But then it still fails on iron with

   --- stderr: ros_gz_bridge
  CMake Error at CMakeLists.txt:83 (add_library):
    Target "ros_gz_bridge" links to target "yaml-cpp::yaml-cpp" but the target
    was not found.  Perhaps a find_package() call is missing for an IMPORTED
    target, or an ALIAS target is missing?
  
  
  CMake Generate step failed.  Build files cannot be regenerated correctly.

was there any change with CMake, exporting the targets?

I get the feeling that it is just not possible any more (with reasonable effort) to use the rolling-version of gz_ros2_control on older distros?

@azeey
Copy link

azeey commented May 20, 2024

There were some major changes in yaml_cpp_vendor for Jazzy including switching to ament_vendor_package and updating to yaml-cpp 0.8 (from 0.7), so I suspect that has something to do with it. In previous versions, you didn't have to link against the yaml-cpp::yaml-cpp target (see commit that fixed the build in ros_gz).

@christophfroehlich
Copy link
Contributor Author

Thanks for the hint. I see that this might not work well without lots of handcrafting in the future. We will try to support gazebo_ros2_control@rolling as long as possible for the older distros instead.

@azeey
Copy link

azeey commented May 21, 2024

@christophfroehlich I will mention that Gazebo classic has been removed from Noble, so any package that depends on it will not be releasable into rolling.

@christophfroehlich christophfroehlich deleted the gz_compatibility branch May 21, 2024 15:10
@christophfroehlich
Copy link
Contributor Author

@christophfroehlich I will mention that Gazebo classic has been removed from Noble, so any package that depends on it will not be releasable into rolling.

to specify my argument: we want to support it to be built from source. I know that binary releases won't happen for gazebo classic - related packages on rolling.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants