本笔记本配置N卡1660Ti,Ubuntu18.04。需要用到ros、opencv、tensorflow(依赖于anaconda的版本)、python来实现openpose项目。之前是已有ros-melodic,然后,在anaconda的base环境下安装了python3.6,和conda下载的tensorflow1.13.1,和源码编译的opencv及opencv_contrib版本3。
一、此时环境如下:
conda base虚拟环境:

gedit ~/.bashrc中的变量:
# added by Anaconda3 4.3.0 installer
export PATH="/home/muxi/anaconda3/bin:$PATH"
export PYTHONPATH=/home/muxi/anaconda3/lib/python3.6/site-packages:$PYTHONPATH
#ros
source /opt/ros/melodic/setup.bashpython的环境:
muxi@muxi-Z2-Air:~$ python -c "import sys; print(sys.prefix)"
/home/muxi/anaconda3
muxi@muxi-Z2-Air:~$ which python
/home/muxi/anaconda3/bin/python
muxi@muxi-Z2-Air:~$ which python3
/home/muxi/anaconda3/bin/python3
muxi@muxi-Z2-Air:~$ python --version
Python 3.6.9 :: Anaconda, Inc.
muxi@muxi-Z2-Air:~$ python3 --version
Python 3.6.9 :: Anaconda, Inc.
muxi@muxi-Z2-Air:~$ python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())"
/home/muxi/anaconda3/include/python3.6m
muxi@muxi-Z2-Air:~$ python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
/home/muxi/anaconda3/lib/python3.6/site-packages
muxi@muxi-Z2-Air:~$ python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))"
/home/muxi/anaconda3/lib
opencv的环境:
muxi@muxi-Z2-Air:~$ pkg-config opencv --modversion #当前版本
3.2.0
muxi@muxi-Z2-Air:~$ whereis opencv #系统默认在/usr下找OpenCV
opencv: /usr/include/opencv /usr/share/opencv
muxi@muxi-Z2-Air:~$ pkg-config opencv --libs
-lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_datasets -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_line_descriptor -lopencv_optflow -lopencv_video -lopencv_plot -lopencv_reg -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_rgbd -lopencv_viz -lopencv_surface_matching -lopencv_text -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_xobjdetect -lopencv_objdetect -lopencv_ml -lopencv_xphoto -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_photo -lopencv_imgproc -lopencv_core
muxi@muxi-Z2-Air:~$ python -c "import cv2; print(cv2.__version__)"
3.4.1二、使用opencv的设置:
1、当在外部环境的C++程序里想要调用anaconda里编译的opencv,而不是/usr里的时,cmakelist里要set(OpenCV_DIR ~/opencv_cuda_anacondabase/opencv-3.4.1/build)。
2、当在Python(anaconda环境下)调用opencv,需要注释掉bashrc中source /opt/ros/melodic/setup.bash(因为ROS支持的python与anaconda的python有很复杂的冲突),或者在需要运行的python文件中的最前面添加两行:
import sys
sys.path.remove('/opt/ros/melodic/lib/python2.7/dist-packages')
三、CLion里使用Python项目的设置:
添加conda环境已存在的Python解释器

后来ros崩了,在系统环境里重装ros-melodic时报错:File "/home/muxi/anaconda3/lib/python3.6/site-packages/yaml/__init__.py", line 374
class YAMLObject(metaclass=YAMLObjectMetaclass):

这不是网络引起的超时问题,bashrc中屏蔽export PYTHONPATH,https://www.ncnynl.com/archives/201906/3147.html中sudo aptitude install ros-melodic-desktop-full安装ros解决冲突,roscore成功。
四、ROS和anaconda共存:
在CLion和终端下分别测试cv2和tensorflow,都能在roscore存在下成功,不用remove关于ros的path。
至此,初步搭建起存在cuda、anaconda、py、tensorflow、cv以及ros的C++、PY混合工程环境。


五、创建openpose的ROS工作空间
~./bashrc 里需要有 source opt/ros/melodic/setup.bash
#建立ros的workspace
mkdir -p catkin_openpose/src
cd catkin_openpose/src
catkin_init_workspace #生成catkin_openpose/src/CMakeList.txt
cd ..
catkin_make #编译生成catkin_openpose/build/和catkin_openpose/devel/
#创建功能包
cd src
catkin_create_pkg bagname std_msgs roscpp rospy #后面仨是包的依赖六、rviz
#安装rviz
sudo apt-get install ros-melodic-rviz1、运行 rviz 报错:rviz: error while loading shared libraries: libicui18n.so.58: cannot open shared object file: No such file or directory
执行:
which rviz #输出:/opt/ros/melodic/bin/rviz
ldd /opt/ros/melodic/bin/rviz
建立软链接:
sudo ln -s /home/muxi/anaconda3/lib/libicui18n.so.58 /usr/lib/x86_64-linux-gnu/libicui18n.so.58
sudo ln -s /home/muxi/anaconda3/lib/libicuuc.so.58 /usr/lib/x86_64-linux-gnu/libicuuc.so.58
sudo ln -s /home/muxi/anaconda3/lib/libicudata.so.58 /usr/lib/x86_64-linux-gnu/libicudata.so.58
2、运行 rviz 又报错:
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Reinstalling the application may fix this problem.
执行:
export QT_DEBUG_PLUGINS=13、再运行 rviz 输出详细报错:
In /home/muxi/Qt5.10.1/5.10.1/gcc_64/plugins/platforms/libqxcb.so:
Plugin uses incompatible Qt library (5.10.1) [release]
"The plugin '/home/muxi/Qt5.10.1/5.10.1/gcc_64/plugins/platforms/libqxcb.so' uses incompatible Qt library. (5.10.1) [release]"
not a plugin
QFactoryLoader::QFactoryLoader() checking directory path "/opt/ros/melodic/lib/rviz/platforms" ...
执行:
ldd /home/muxi/Qt5.10.1/5.10.1/gcc_64/plugins/platforms/libqxcb.so输出依赖正常,未见not found的动态库。
见https://stackoverflow.com/questions/63829991/qt-qpa-plugin-could-not-load-the-qt-platform-plugin-xcb-in-even-though-it ,说The problem was loading Qt in the conda environment.这里应该是说不能用5.10.0。
执行:
qmake -versionQMake version 3.1
Using Qt version 5.9.7 in /home/muxi/anaconda3/lib
执行:
conda list | grep 'qt'
那就用5.9.7吧,运行tf-pose-estimation也是用的5.9.7。
4、bashrc里加:
export QT_PLUGIN_PATH=~/anaconda3/pkgs/qt-5.9.7-h5867ecd_1/pluginsrviz成功。