1. 문제
ROS에서 사용 중인 이미지를 yolo에 넣기 위해 cv_bridge를 이용하려고 합니다.
그런데 아래와 같은 오류가 발생했습니다.
ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)
2. 해결
아래 블로그를 참고해 해결했습니다.
위 블로그는 Xavier AGX에서 설치하는 명령어이므로 자신의 컴퓨터 환경에 맞게 고쳐줍니다.
(예: DPYTHON_LIBRARY 경로)
sudo apt-get install python-catkin-tools python3-dev python3-catkin-pkg-modules python3-numpy python3-yaml ros-melodic-cv-bridge
mkdir cvbridge_ws
cd cvbridge_ws
git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv
catkin init
catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6m.so
catkin config --install
apt-cache show ros-melodic-cv-bridge | grep Version
cd src/vision_opencv/
git checkout 1.13.1
cd ../../
catkin build cv_bridge
gedit ~/.bashrc
source ~/cvbridge_ws/install/setup.bash --extend # 맨 밑에 추가하기
source ~/.bashrc
빌드 중
No rule to make target '/usr/lib/aarch64-linux-gnu/libpython3.6m.so', needed by '/home/irl/catkin_ws/devel/.private/cv_bridge/lib/python3/dist-packages/cv_bridge/boost/cv_bridge_boost.so'. Stop.
이런 오류가 떴다면 libpython3.6m.so의 경로가 잘못 된 겁니다.
dpkg -L libpython3.6
위 명령어로 libpython3.6의 경로를 찾아서
catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/aarch64-linux-gnu/libpython3.6m.so
위에서 입력했던 명령어의 경로를 바꿔주고 다시 빌드해줍니다.
/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6m.so
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1
둘 다 해봤는데 둘 다 됩니다.
경로 바꿨으면 workspace 지우고 처음부터 다시하기!
빌드가 완료되었으면 잘 설치되었는지 확인합니다.
TEST
$ python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from cv_bridge.boost.cv_bridge_boost import getCvType
>>>
+추가
다른 블로그에서는 catkin_make로도 컴파일하던데
저는 catkin build로만 되네요.
혹시 이렇게 해도 오류가 뜬다면 ROS를 삭제 후 재설치해보세요
댓글