【问题标题】:ROS Noetic (Ubuntu 20.04) - CV Bridge Not WorkingROS Noetic (Ubuntu 20.04) - CV 桥不工作
【发布时间】:2021-11-21 11:32:55
【问题描述】:

Ubuntu 20.04 LTS 蟒蛇 3.8 ROS Noetic Desktop 完整安装

确认我确实有文件/lib/libgdal.so.26

已经执行pip3 install opencv-python 已经执行sudo apt install --reinstall gdal-bin libgdal-dev python3-gdal 已经执行sudo apt-get install ros-noetic-cv-bridge -- 上面的结果是ros-noetic-cv-bridge已经是最新版本了。

但是当我的代码运行时

from cv_bridge.boost.cv_bridge_boost import getCvType

我明白了

ImportError: /lib/libgdal.so.26: undefined symbol: sqlite3_column_table_name 不知该如何处理

注意:我按照Unable to use cv_bridge with ROS Kinetic and Python3的说明进行操作

我尝试用“noetic”替换“kinetic”并将版本号替换为我的(1.15.0)。

按照指示执行catkin build cv_bridge,但给了我一些奇怪的输出。

警告 cc1plus:警告:/home/tdadmin/.local/bin/python3.6m:不是目录 cc1plus:警告:/home/tdadmin/.local/bin/python3.6m:不是目录 cc1plus:警告:/home/tdadmin/.local/bin/python3.6m:不是目录 cc1plus:警告:/home/tdadmin/.local/bin/python3.6m:不是目录 cd /home/tdadmin/catkin_workspace/build/cv_bridge; catkin build --get-env cv_bridge | catkin env -si /usr/bin/make --jobserver-auth=3,4;光盘-

我不知道它为什么要看 python3.6m。我按照 3.8 的说明设置了可执行行。

E:下面是~/catkin_workspace/src/vision_opencv/cv_bridge/CMakeLists.txt 内容。

cmake_minimum_required(VERSION 3.0.2)
project(cv_bridge)

find_package(catkin REQUIRED COMPONENTS rosconsole sensor_msgs)

if(NOT ANDROID)
  find_package(PythonLibs)

  if(PYTHONLIBS_VERSION_STRING VERSION_LESS "3.8")
    # Debian Buster
    find_package(Boost REQUIRED python37)
  else()
    # Ubuntu Focal
    find_package(Boost REQUIRED python)
  endif()
else()
find_package(Boost REQUIRED)
endif()

set(_opencv_version 4)
find_package(OpenCV 4 QUIET)
if(NOT OpenCV_FOUND)
  message(STATUS "Did not find OpenCV 4, trying OpenCV 3")
  set(_opencv_version 3)
endif()

find_package(OpenCV ${_opencv_version4} REQUIRED
  COMPONENTS
    opencv_core
    opencv_imgproc
    opencv_imgcodecs
  CONFIG
)

catkin_package(
  INCLUDE_DIRS include
  LIBRARIES ${PROJECT_NAME}
  CATKIN_DEPENDS rosconsole sensor_msgs
  DEPENDS OpenCV
  CFG_EXTRAS cv_bridge-extras.cmake
)
catkin_python_setup()

include_directories(include ${Boost_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})

if(NOT ANDROID)
add_subdirectory(python)
endif()
add_subdirectory(src)
if(CATKIN_ENABLE_TESTING)
  add_subdirectory(test)
endif()

# install the include folder
install(
  DIRECTORY include/${PROJECT_NAME}/
  DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
)
          

                                                                                                                                                                 

也就是说这个目录下还有很多其他的 CMakeLists.txt,包括

./src/vision_opencv/cv_bridge/python、./src/vision_opencv/cv_bridge/test、./src/vision_opencv/cv_bridge/、./src/vision_opencv/cv_bridge/src

E2 : 这些是来自catkin build cv_bridge的结果

catkin build cv_bridge
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Profile:                     default
Extending:          [cached] /opt/ros/noetic
Workspace:                   /home/tdadmin/catkin_workspace
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Build Space:        [exists] /home/tdadmin/catkin_workspace/build
Devel Space:        [exists] /home/tdadmin/catkin_workspace/devel
Install Space:      [exists] /home/tdadmin/catkin_workspace/install
Log Space:          [exists] /home/tdadmin/catkin_workspace/logs
Source Space:       [exists] /home/tdadmin/catkin_workspace/src
DESTDIR:            [unused] None
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Devel Space Layout:          linked
Install Space Layout:        merged
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Additional CMake Args:       -DPYTHON_EXECUTABLE=/usr/bin/python3.8 -DPYTHON_INCLUDE_DIR=/usr/include/python3.8 -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.8.so
Additional Make Args:        None
Additional catkin Make Args: None
Internal Make Job Server:    True
Cache Job Environments:      False
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Whitelisted Packages:        None
Blacklisted Packages:        None
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Workspace configuration appears valid.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[build] Found '4' packages in 0.0 seconds.                                                                                                                                                      
Starting  >>> cv_bridge                                                                                                                                                                         
Finished  <<< cv_bridge                [ 0.9 seconds ]                                                                                                                                          
[build] Summary: All 1 packages succeeded!                                                                                                                                                      
[build]   Ignored:   3 packages were skipped or are blacklisted.                                                                                                                                
[build]   Warnings:  None.                                                                                                                                                                      
[build]   Abandoned: None.                                                                                                                                                                      
[build]   Failed:    None.                                                                                                                                                                      
[build] Runtime: 0.9 seconds total.   

【问题讨论】:

  • 您是否也更改了DPYTHON_INCLUDE_DIRDPYTHON_LIBRARY 标志?你的CMakeLists.txt 文件是什么样的?
  • 你用python3.8编译过opencv吗?如果没有,试试这个,然后在 python 3.8 的 ros 中编译 cv_bridge
  • @DrYuanShenghai 我对此比较陌生,我主要只是使用 Python。在python中用ros编译是什么意思?
  • @BTables 是的,我也更新了这些。 CMakeLists.txt 存在于我机器上的几十个地方。我应该告诉你哪一个?
  • @Jibril 每个包都有自己的CMakeLists.txt,这就是catkincmake 在构建每个包时知道要做什么。我很好奇cv_bridge 包中的那个。 Catkin 在单个上下文中构建所有包,所以我相信如果 cv_bridge 中不明确的规则可能会在某处被覆盖

标签: python opencv importerror ros


【解决方案1】:

我认为这是混合路径和采购工作目录的问题。现在您有两份cv_bridge,一份在您的本地工作区,一份在/opt。如果一切都通过 apt 正确安装,您可以打开一个 new 终端并仅获取已安装的包:source /opt/ros/noetic/setup.bash 然后使用 python 命令行尝试from cv_bridge.boost.cv_bridge_boost import getCvType,它应该可以工作。如果不是,您应该通过sudo apt remove ros-noetic-cv-bridge 卸载并重新安装。如果可行,您应该删除工作区中的本地副本。

【讨论】:

  • 新鲜终端。 source /opt/ros/noetic/setup.bash 是否收到了同样的错误。退出 Python3,做了sudo apt remove ros-noetic-cv-bridge。用 Python3 重复第一步,得到No module named cv_bridge。退出 Python。做了sudo apt install ros-noetic-cv-bridge。打开Python3,和以前一样的错误。
猜你喜欢
  • 2023-01-14
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
  • 2020-08-22
  • 2020-11-11
  • 2023-02-16
  • 1970-01-01
  • 2023-01-29
相关资源
最近更新 更多