-
Notifications
You must be signed in to change notification settings - Fork 89
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
MoveIt2 move_group can't find class plugins #264
Comments
Hi, I've no experience with MoveIt. I'd need to wait for your |
@wentasah Here's a flake that can reproduce the
You should get the same log as above. Take note of the lines like:
The |
Now I can reproduce your problem with the missing capabilities. You mentioned that "plugin objects are in place". As I don't have any moveit experience, I don't really know where should these objects be located. I tried searching all dependencies for files with names similar to what's printed in the error messages, but it didn't find anything. Can you tell me which objects it is supposed to load? |
The plugins are described in the plugin description file (you may have a different hash but look for
This file lists the plugin classes (in this case MoveIt Move Group "capabilities") and points to the shared library object that contains them. This
It is my understanding that the All of these things seem to be in place for the |
I've discovered a program in the move group package that lists the available capabilities. This one seems to find the plugins just fine?!
|
I found the same issue reported upstream, so this might not be a problem with Nix packaging here: moveit/moveit2#1907 |
I encountered the same issue but have also not found a solution |
Were you able to fix this? I am also getting the same error. What do you mean by using |
Sadly, I was not able to fix this. As I am not a MoveIt expert, it is unclear to me, where exactly this originates and this issue also does not mention a solution except reinstallation. I did not have more time to look into this. |
So looking into this myself as well, it seems that the Essentially, going back up the callstack from
The This is in turns due to the The debug output (which I hacked by changing the log level of some of the logging functions) of some of the
In a normal run (outside of Nix), we get something like this:
|
Rather, the init functions from the plugins defined within However, when loading the library manually:
Those get called. I tried looking for different linker flags passed on by Nix using |
[EDIT] Keeping the message below for context, but this explanation does not hold upon further investigations.
|
I stand corrected, it is a bit more than just that.
The issue is that Outside of Nix:
Within of Nix:
|
Cool, thanks for looking into this :) So turning off |
Unfortunately no. I think that my theory is wrong after looking into it some more... The one key difference I can see in the linker commands between normal and Nix build is that Nix does not have |
No clue where that comes from yet though. |
Hm okay, sadly this is a bit too deep for my CS knowledge, so I cannot help you there. |
I am actively looking into this issue as well. Will keep you guys updated with any breakthrough. |
Outside of Nix you get:
While inside we get:
|
I am testing on humble, and it does not work for me? How were you able to get it to function on humble? |
I am obtaining this error: [ros2_control_node-5] Warning: class_loader.impl: SEVERE WARNING!!! A namespace collision has occurred with plugin factory for class mock_components::GenericSystem. New factory will OVERWRITE existing one. This situation occurs when libraries containing plugins are directly linked against an executable (the one running right now generating this message). Please separate plugins out into their own library or just don't link against the library and use either class_loader::ClassLoader/MultiLibraryClassLoader to open.
[ros2_control_node-5] at line 253 in /nix/store/QJKWYVARM2R71DKBM2L5YRVH6P7F3FVR-ros-humble-class-loader-2.2.0-r3/include/class_loader/class_loader/class_loader_core.hpp Is any one also obtaining this error? I wonder if this error is related. |
If you run the following command: LD_PRELOAD=/nix/store/xxx/lib/libmoveit_move_group_default_capabilities.so.2.5.5 nixGL ros2 launch <robot-moveit-config> demo.launch.py The simulation launches and finds all the required capabilties. So, it looks like the shared object files are not in the correct place or the symlinks to the shared object files for the move_group_default_capabilities.so are incorrect. |
I think the issue is that the
Fixing the dependencies within the CMake files solved my issues and I was able to run the Fanuc demo launch file. I think that this is not apparent outside of Nix, because some of the libraries MoveIt is linking to add |
Were you able to apply these changes through |
I had to patch the CMake files since you need to change the calls to |
Do you plan on upstreaming these patches by any chance? If not, posting them here would be greatly appreciated. Great work by the way, and thanks. |
As much as I'd like to post the patches here or upstream them right now, I first have to wait for the official permission from the company. |
The LD_PRELOAD trick worked for me, but that was causing issues with other shell use. Using patchelf to insert the dependencies worked for me;
|
I am trying to understand the changes in order to fix something similar with pluginlib and composable nodes. |
After some patching and cherry picking issues I almost have a workable ROS 2 Humble environment with MoveIt2 and RViz2.
However, the
move_group
package that expects to load its capabilities from plugins have trouble finding them, even though the plugin objects themselves and the resource index stuff seem to be in place. Strangely enough the MoveIt2 planning pipelines, which are also plugins, get loaded fine...I'm not exactly sure on how to continue debugging this. Did anyone encounter this with other packages before? I can't seem to find many references to relevant problems with plugins in past issues.
Later today I'll (try to) provide a way to reproduce this easily, but for now here's a log of running
ros2 launch moveit_resources_fanuc_moveit_config demo.launch.py
(Fanuc instead of Panda here because Panda config package is broken in the Humble release ofMoveIt
...The text was updated successfully, but these errors were encountered: