问题描述
在ROS中运行行人跟踪算法时出现的bug
出现上述问题原因是ros自带的cv_bridge用的是python2的,而代码是在python3下跑的,因此需要自己编译python3的cv_bridge。
网上有很多教程,但由于电脑装了anaconda,python版本较多,踩了不少坑,因此在这里记录一下。
以下是在ununtu18.04系统下的解决方案。(其它版本可能会因为ros的版本不同略有改动)
解决方案
- 首先注意安装环境
操作要在系统的真实空间中,不要在conda建立的虚拟空间中操作!!!
即先打开一个新终端,并且运行conda deactivate命令,确保退出所有虚拟空间。(即最前面没有”(base)”) - 进入python3的环境并安装相关依赖包
# 然后安装相关依赖包
sudo apt-get install python-catkin-tools python3-dev python3-catkin-pkg-modules python3-numpy python3-yaml ros-melodic-cv-bridge
- 创建一个工作空间用于存放待编译的 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
- Instruct catkin to install built packages into install place
catkin config --install
- 在catkin_workspace工作空间中克隆 cv_bridge
git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv
- 查看合适的版本
apt-cache show ros-melodic-cv-bridge | grep Version
这里可以看到版本为1.13.1
- 切换到该版本
cd src/vision_opencv/
git checkout 1.13.1
cd ../../
- 开始编译
catkin build cv_bridge
- 激活环境
source install/setup.bash --extend
仅在当前终端生效,新的终端需要重新激活,或者可以添加到~/.bashrc中。
- 在conda虚拟环境下使用
这里用行人检测来示例,虚拟环境名为”pt_test”
cd ~/catkin_ws # 进入工作空间
conda activate pt_test # 进入虚拟环境
source ~/catkin_ws_for_cvbridge/install/setup.bash --extend #激活cv_bridge环境
rosrun person_tracking depth.py #开启跟踪
文章出处登录后可见!
已经登录?立即刷新