Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.Sign up
Play old bagfiles #69
This PR adds a plugin to rosbag to play back rosbags of ros1. It relies on #70
The problem is once again
We currently don't understand why the
Not in this PR:
Here is a longer description of the problems with this build:
On some systems, the build tries to find
On yet other systems, the build actually links against
System 1: It works but I get CMake warnings.
CMakeLists output for package rosbag2_bag_v2_plugins:
But: Everything works. The test that generates the warning (there are a few other tests with the same warning) run without a hitch.
The problem seems to be (justification following in part 2) the call to nodeletlib. Here is the beginning of the CMake output generating the warning above - I highlighted the nodeletlib search by inserting blank lines
However, nodeletlib, albeit wanted, isn't actually linked. This is the
So: No nodelets and everything works fine. Why do I think that those are the problem?
System 2: It doesn't link (with test) or doesn't run (without tests)
CMakeLists outputs the same problems for package rosbag2_bag_v2_plugins as above. The paths are just a little more telling because the build is isolated:
However, this time the tests don't link:
The error speaks for itself: nodeletlib can't be linked against class_loader. The path above indicates that the ros2 class loader will be used to link against and obviously, this has to fail.
If we don't build the tests, everything gets build, because the final linking is only done at startup time. That's when the problem resurfaces with a very nice crash.
So, what's the difference? The CMake output of the build is similar to the first system - we search and find the module nodeletlib. However, this time, the library
For some reasons, this bridge is linked against nodeletlib - and that's creating an issue further down the line. But why is it linked against nodeletlib?
System 3 Everything works
in the CMake build output simply don't exist nor does the CMake warning. No linking against nodeletlib occurs.
I looked at all of them and they were clear. However, nodelets apparently has services (if you source ros1 and call rossrv list, you get nodel/NodeletList and a few others), so that's the problem.
But that means I can't link against ros1_bridge if pluginlib is used...
Yeah, that sounds reasonable.
It should be straight forward to skip that specific library then since it shouldn't be necessary in order to use the services from that package.
This is from the code generation and I get the same error message when building
N.B: I tried to switch paths around and it turns out that this will always only work if you source the ROS 1 workspace before you source the ROS 2 workspace. When you switch paths, not even