YeongJunKim / issue

footprint of fixed error & some tips.
0 stars 0 forks source link

ros python3 cv_bridge error #4

Open YeongJunKim opened 4 years ago

YeongJunKim commented 4 years ago

해결한 링크

change interpreter
#!/usr/bin/python3
missing library
sudo apt-get install python3-pip python3-yaml
sudo pip3 install rospkg catkin_pkg
cv_bridge error
Traceback (most recent call last):
  File "/catkin_ws/src/ros_python3_issues/src/issue_cv_bridge.py", line 23, in <module>
    ros_image = bridge.cv2_to_imgmsg(numpy.asarray(empty_image), encoding="rgb8") # convert PIL image to ROS image
  File "/opt/ros/melodic/lib/python2.7/dist-packages/cv_bridge/core.py", line 259, in cv2_to_imgmsg
    if self.cvtype_to_name[self.encoding_to_cvtype2(encoding)] != cv_type:
  File "/opt/ros/melodic/lib/python2.7/dist-packages/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)

python2.7로 cv_bridge가 빌드되어있어서 이런 문제가 생긴다. python3로 변경해야한다.

install some tools
sudo apt-get install python-catkin-tools python3-dev python3-numpy
충돌을 막기 위해 새로운 workspace를 생성
mkdir ~/catkin_build_ws && cd ~/catkin_build_ws
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
clone official vision_opencv reo:
mkdir src
cd src
git clone -b melodic https://github.com/ros-perception/vision_opencv.git
finally, let's build and source the package:
cd ~/catkin_build_ws
catkin build cv_bridge
source install/setup.bash --extend
YeongJunKim commented 4 years ago

https://medium.com/@beta_b0t/how-to-setup-ros-with-python-3-44a69ca36674

https://stackoverflow.com/questions/49221565/unable-to-use-cv-bridge-with-ros-kinetic-and-python3 http://wiki.ros.org/catkin/Tutorials/create_a_workspace

setup bash까지

원래 catkin_ws 로 돌아와서 다시 빌드

catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so
YeongJunKim commented 4 years ago

Xavier NX

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

Or

Make it write in your python3 path.

catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/aarch64-linux-gnu/libpython3.6m.so
include_directories(include ${Boost_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS} "/usr/include/python3.6m")
YeongJunKim commented 4 years ago

Jetpack for XavierNX preinstalled opencv4.1.1 We need to downgrade for using opencv3.2

sudo apt -y --allow-downgrades install libopencv-dev=3.2.0+dfsg-4ubuntu0.1

and hold (avoid it being upgraded) with

sudo apt-mark hold libopencv-dev

refer to opencv downgrade in jetson nano