在ROS中运行行人跟踪算法时出现的bug
出现上述问题原因是ros自带的cv_bridge用的是python2的,而代码是在python3下跑的,因此需要自己编译python3的cv_bridge。
网上有很多教程,但由于电脑装了anaconda,python版本较多,踩了不少坑,因此在这里记录一下。
以下是在ununtu18.04系统下的解决方案。(其它版本可能会因为ros的版本不同略有改动)
# 然后安装相关依赖包
sudo apt-get install python-catkin-tools python3-dev python3-catkin-pkg-modules python3-numpy python3-yaml ros-melodic-cv-bridge
mkdir -p catkin_ws_for_cvbridge/src
cd catkin_ws_for_cvbridge
#注意,该处需要根据你原本自带的系统python版本设定。16.04是python3.5, 18.04是python3.6
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
git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv
apt-cache show ros-melodic-cv-bridge | grep Version
cd src/vision_opencv/
git checkout 1.13.1
cd ../../
catkin build cv_bridge
source install/setup.bash --extend
仅在当前终端生效,新的终端需要重新激活,或者可以添加到~/.bashrc中。
cd ~/catkin_ws # 进入工作空间
conda activate pt_test # 进入虚拟环境
source ~/catkin_ws_for_cvbridge/install/setup.bash --extend #激活cv_bridge环境
rosrun person_tracking depth.py #开启跟踪