Add colcon.pkg files to all packages#303
Conversation
Addresses issue tesseract-robotics#302 as discussed on rosdep issue 724.
Codecov Report
@@ Coverage Diff @@
## master #303 +/- ##
==========================================
- Coverage 75.64% 75.63% -0.02%
==========================================
Files 167 167
Lines 8431 8431
==========================================
- Hits 6378 6377 -1
- Misses 2053 2054 +1
|
|
What's the specific rationale here? If most (all?) of these packages are ROS-agnostic, and the wrappers are in IIUC, these are needed when packages contain resources ROS 2 packages should be able to find at runtime. For build dependencies it would seem this is already covered by CMake's Do all of these packages have plugins or other resources for ROS 2 packages to consume? |
|
This is supposed to fix the underlay issue on tesseract_ros2 when tesseract is in the upstream workspace and tesseract_ros2 is in the target workspace (tesseract-robotics/tesseract_ros2#21). Apparently it was temporarily patched in industrial_ci but that change will be reverted eventually. @Levi-Armstrong could give more details. I do agree that it feels like this should be unnecessary. |
|
This is to expose these packages to the ROS2 eco system so they are found by rosdep, ros2 find package library, plugins (Though this is just because we are using ROS2 libraries for finding plugin), etc.. Currently in ROS2 it leverages the AMENT_PREFIX_PATH for finding resources which by default non-ament package do not get added to this environment variable which was the case in ROS1. By adding the environment hooks this exposes these packages to ROS2 eco system. |
Ah, that 'bug'/omission.
Ok, so you do have a need for the runtime side of this.
Yes, I'd understood that. I was not aware you were using |
I just checked and the plugins are in tesseract_ros2, but the library they load are in tesseract_collision so without the hook it cannot be found because tesseract_collision is not in the AMENT_PREFIX_PATH. |
|
@mpowelson With this change we need to now remove the lines from tesseract_collision CMakeLists.txt. |
I'm somewhat confused. If it's a regular For the ROS wrapper-plugin to be found, that would need an index entry. That I understood. But the plain |
This is now handled in the tesseract_configure_package macro
|
@schornakj When dealing with the collision plugin for the ros2 package why did you also need to modify the AMENT_PREFIX_PATH environment variable? @gavanderhoorn Ah, I believe the issue may be that we are Privately linking against tesseract libraries for the plugins. |
|
@mpowelson it looks like benchmark is missing from the skip keys for the nightly ci build for xenial. |
Is there a specific reason for that? |
No, It should be public. |
* Add colcon.pkg files to all packages Addresses issue #302 as discussed on rosdep issue 724. * tesseract_collision: Remove pluginlib workaround This is now handled in the tesseract_configure_package macro * Add benchmark to the xenial nightly build skip keys
@Levi-Armstrong @gavanderhoorn Sorry for not responding to this especially quickly. As a cross-reference, when I was originally working through this I created an issue on In Summary: The ROS2 version of In More Detail: The When we get to ClassLoader, we have these lines: In our case, this tries to call The quickest way to get this working was to modify |
My confusion was specifically about the fact that it appeared the PR adds all packages to the resource index. Afaict only the packages which host resources which must be findable at runtime would need this. Your comments confirm my understanding. It's still unclear to me why the rest of the packages need to be on the resource index though. |
I do see your point, but is there any harm with having them all available? |
Addresses issue #302 as discussed on rosdep issue 724.