используя cv_bridge с python 3.6 на убунут 16.04 - PullRequest
0 голосов
/ 14 июля 2020

Мне нужно использовать python 3.6 в пакете kineti c ROS, который управляет изображениями с помощью opencv. Для передачи изображений в пакет и из него я использую cv_bridge, но он поддерживается только в python 2.7, поэтому я пытаюсь найти способ обойти это. Я видел сообщения о том, что это возможно, но я не могу воспроизвести результаты.

Ниже приведен файл докеров, который я использую для создания своей среды. Запуск, запуск оболочки python3 .6 и импорт cv_bridge

from cv_bridge.boost.cv_bridge_boost import getCvType

дает следующую ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)

запуск source /cv_bridge_ws/install/setup.bash не помогает. Как ни странно, если я запустил source /cv_bridge_ws/install/setup.bash в другой раз, он, похоже, сработает.

Как мне правильно настроить рабочую область для использования cv_bridge?

FROM ros:kinetic

RUN apt-get update && apt-get install -y \
    software-properties-common python-catkin-tools \
    curl wget python-dev build-essential checkinstall \
    libreadline-gplv2-dev libncursesw5-dev libssl-dev \
    libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

RUN apt-get update && apt-get install -y \
    ros-kinetic-cv-bridge \
    ros-kinetic-image-transport \
    ros-kinetic-tf \
    ros-kinetic-diagnostic-updater \
    ros-kinetic-ddynamic-reconfigure

RUN add-apt-repository -y ppa:deadsnakes/ppa \
    && apt-get update && apt-get install -y python3.6-dev

RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \
    python2 get-pip.py && python3.6 get-pip.py

RUN pip3 install opencv-python PyYAML cython rospkg

RUN ln -s /usr/lib/x86_64-linux-gnu/libboost_python-py35.so /usr/lib/x86_64-linux-gnu/libboost_python3.so
RUN mkdir --parents /cv_bridge_ws/src
WORKDIR /cv_bridge_ws
RUN catkin config \
    -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
    -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m \
    -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so
RUN catkin config --install
RUN git -C /cv_bridge_ws/src clone -b 1.12.8 https://github.com/ros-perception/vision_opencv.git 
RUN catkin config --extend /opt/ros/kinetic && \
    catkin clean --yes && \
    catkin build


...