问题描述
Conda虚拟环境中遇到的ROS相关代码运行错误,在调用CvBridge时遇到:
[ERROR] [1726660752.565442]: bad callback: <function image_callback at 0x7f843bbb27a0>
Traceback (most recent call last):
File "/opt/ros/noetic/lib/python3/dist-packages/rospy/topics.py", line 750, in _invoke_callback
cb(msg)
File "/root/catkin_ws/src/octo/main_inference.py", line 39, in image_callback
cv_img = bridge.imgmsg_to_cv2(msg, "bgr8")
File "/opt/ros/noetic/lib/python3/dist-packages/cv_bridge/core.py", line 163, in imgmsg_to_cv2
dtype, n_channels = self.encoding_to_dtype_with_channels(img_msg.encoding)
File "/opt/ros/noetic/lib/python3/dist-packages/cv_bridge/core.py", line 99, in encoding_to_dtype_with_channels
return self.cvtype2_to_dtype_with_channels(self.encoding_to_cvtype2(encoding))
File "/opt/ros/noetic/lib/python3/dist-packages/cv_bridge/core.py", line 91, in encoding_to_cvtype2
from cv_bridge.boost.cv_bridge_boost import getCvType
ImportError: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined symbol: ffi_type_pointer, version LIBFFI_BASE_7.0
原因及解决方案
cv_bridge 默认依赖于 libffi.8 库,而不是 libffi.7。由于这两个版本的 libffi 库存在冲突,导致 cv_bridge 无法正常工作。为了解决这个问题,你需要删除旧版本的 libffi.7 库文件。
rm ${CONDA_PREFIX}/lib/libffi.7.so
rm ${CONDA_PREFIX}/lib/libffi.so.7