ros-drivers/ros2_ouster_drivers

Register driver node as component

SteveMacenski opened this issue · 0 comments

This would ordinarily be easy, however because the driver is templated to allow for multiple future implementations of Ouster sensors (or new variants, or even other vendors with a similar interface) the class loader that deals with the components under the hood yields the following warning:

[ouster_driver-1] Warning: class_loader.impl: SEVERE WARNING!!! A namespace collision has occured with plugin factory for class rclcpp_components::NodeFactoryTemplate<ros2_ouster::OS1Driver>. 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.
[ouster_driver-1]          at line 238 in /opt/ros/eloquent/include/class_loader/class_loader_core.hpp

Given its a warning, and the collision I'm not sure tangibly impacts performance as long as each component is loaded into another process, I don't think its a show-stopper if you need it. However it is ugly and should be resolved.

I've commented out the registration macros in the driver_types.hpp and CMakeLists.txt files for now until this is resolved or looked at further.