Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用ROS动能和Python3忽略Cmake参数构建cv_桥接包_Python 3.x_Opencv_Cmake_Ros - Fatal编程技术网

Python 3.x 使用ROS动能和Python3忽略Cmake参数构建cv_桥接包

Python 3.x 使用ROS动能和Python3忽略Cmake参数构建cv_桥接包,python-3.x,opencv,cmake,ros,Python 3.x,Opencv,Cmake,Ros,我正在尝试将一个ROS包集成到我们的系统中,用于一个研究项目,需要cv_bridge包和python3才能使该包正常工作。目前我无法在python3中构建cv_桥包,尽管有多个步骤,不断地在python2目录中构建 在Ubuntu 16.04中使用ROS Dynamic。使用python3.5 错误消息: [ERROR] [1563897986.999724]: bad callback: <function color_callback at 0x7f00ffa06598> Tra

我正在尝试将一个ROS包集成到我们的系统中,用于一个研究项目,需要cv_bridge包和python3才能使该包正常工作。目前我无法在python3中构建cv_桥包,尽管有多个步骤,不断地在python2目录中构建

在Ubuntu 16.04中使用ROS Dynamic。使用python3.5

错误消息:

[ERROR] [1563897986.999724]: bad callback: <function color_callback at 0x7f00ffa06598>
Traceback (most recent call last):
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/topics.py", line 750, in _invoke_callback
cb(msg)
  File "/home/rival/Documents/Repos/ROS/src/rcnn_apple_detector/detection.py", line 84, in color_callback
image = bridge.imgmsg_to_cv2(image_msg, "bgr8")
  File "/home/rival/Documents/Repos/ROS/src/vision_opencv/cv_bridge/python/cv_bridge/core.py", line 163, in imgmsg_to_cv2
dtype, n_channels = self.encoding_to_dtype_with_channels(img_msg.encoding)
  File "/home/rival/Documents/Repos/ROS/src/vision_opencv/cv_bridge/python/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 "/home/rival/Documents/Repos/ROS/src/vision_opencv/cv_bridge/python/cv_bridge/core.py", line 91, in encoding_to_cvtype2
from cv_bridge.boost.cv_bridge_boost import getCvType
ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)
版本:

apt-cache show ros-kinetic-cv-bridge | grep Version
Version: 1.12.8-0xenial-20190320-142632-0800
柳絮配置:

-------------------------------------------------------------------------------------------------------------------------------------------------
Profile:                     default
Extending:             [env] /home/rival/Documents/Repos/ROS/devel:/opt/ros/kinetic
Workspace:                   /home/rival/Documents/Repos/ROS
---------------------------------------------------------------------------------------------------------------------------------------------------
Build Space:        [exists] /home/rival/Documents/Repos/ROS/build
Devel Space:        [exists] /home/rival/Documents/Repos/ROS/devel
Install Space:     [missing] /home/rival/Documents/Repos/ROS/install
Log Space:         [missing] /home/rival/Documents/Repos/ROS/logs
Source Space:       [exists] /home/rival/Documents/Repos/ROS/src
DESTDIR:            [unused] None
---------------------------------------------------------------------------------------------------------------------------------------------------
Devel Space Layout:          linked
Install Space Layout:        merged
---------------------------------------------------------------------------------------------------------------------------------------------------
Additional CMake Args:       -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.5m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.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.
采取的具体步骤:

sudo apt-get install python-catkin-tools python3-dev python3-catkin-pkg-modules python3-numpy python3-yaml ros-kinetic-cv-bridge

catkin clean

catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.5m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so

cd src/vision_opencv/
git checkout 1.12.8

catkin_make cv_bridge

source devel/setup.bash --extend
我希望使用cmake参数构建cv_桥,但它仍然被锁定在python2目录中。似乎cmake参数被忽略/没有正确定位。

我遵循了这一点

基本上,您需要创建新的catkin工作区,以便其配置不会与原始(python2)工作区发生冲突

  • 安装python3和依赖项。我喜欢在不使用sudo的情况下使用
    --user
    ,以使解决依赖冲突变得更容易

    sudo apt-get install python-catkin-tools python3-dev python3-numpy 
    sudo apt-get install python3-pip python3-yaml
    pip3 install rospkg catkin_pkg --user
    
  • 创建一个新的工作区

    mkdir py3_catkin_ws
    cd py3_catkin_ws
    mkdir src
    
  • 配置了python3的Init catkin(使用python3x版本)

  • 在新工作区中克隆和
    catkin build
    。照常继续。Python3现在应该能够定位
    cv_桥
    。这篇博文建议
    source install/setup.bash--extend
    ,但在我的例子中这不是必需的


  • 我在ROS Melodic、Ubuntu18.04和使用conda分离环境下也遇到了同样的问题。我开始犯一些奇怪的错误,比如找不到NumPy。在这一点上,这是一个太多的麻烦和可能的浪费时间

    这尤其令人恼火,因为我可以使用Python 3启动我的ROS节点,OpenCV工作得非常好,只是缺少了从ROS到CV的传输

    最后,我只是复制了
    cv_brdige
    中的行,这些行在没有导入
    cv_bridge
    包的情况下进行了翻译

    随着ROS越来越多,一揽子计划有望接踵而至,这在未来不会成为问题

    mkdir py3_catkin_ws
    cd py3_catkin_ws
    mkdir src
    
    catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so
    catkin config --install