linux安装海康工业相机MVS SDK(3.0)会导致ROS的jsk插件崩溃
现象如下:
xx@ubuntu:~$ rviz
[INFO] [1756454645.646669263]: rviz version 1.14.26
[INFO] [1756454645.646788858]: compiled against Qt version 5.12.8
[INFO] [1756454645.646854655]: compiled against OGRE version 1.9.0 (Ghadamon)
[INFO] [1756454645.651333654]: Forcing OpenGl version 0.
[INFO] [1756454645.993465190]: Stereo is NOT SUPPORTED
[INFO] [1756454645.994159158]: OpenGL device: llvmpipe (LLVM 12.0.0, 256 bits)
[INFO] [1756454645.994671335]: OpenGl version: 3.1 (GLSL 1.4).
[ERROR] [1756454654.469969516]: PluginlibFactory: The plugin for class 'jsk_rviz_plugin/HumanSkeletonArray' failed to load. Error: Failed to load library /opt/ros/noetic/lib//libjsk_rviz_plugins.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = /lib/x86_64-linux-gnu/libpcl_io.so.1.10: undefined symbol: libusb_set_option)
解决方案:
1. 检查冲突源
如果输出中包含海康SDK的路径,例如 /path/to/hikvision/sdk/lib
,这可能是冲突的来源。
2. 修改 ~/.bashrc
为确保优先使用系统默认的 libusb
,可以通过调整 ~/.bashrc
配置文件来重新设置 LD_LIBRARY_PATH
:
在文件末尾添加以下一行:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
原因分析
安装海康相机SDK后,系统原本的 libusb
依赖会被重新链接到海康SDK指定的路径。
由于 libusb
是许多外设程序的重要依赖库,这种更改可能导致其他设备驱动或程序(例如使用系统默认 libusb
的程序)出现冲突,从而触发上述错误。
参考文章:
解决海康相机SDK导致 `libusb_set_option` 问题的经验总结_libusb set option-CSDN博客
解决海康相机SDK导致 `libusb_set_option` 问题的经验总结 - 技术栈