因为曾经顺利地装好过一个台式机,所以在装笔记本之前并没有想到我会在这个坑里挣扎一周多。

Linux装各种软件依赖经常需要各种试错,有时甚至被逼划出树形图来整理思路……网友们给出的解决方案有时候只适用于他的软硬件环境,搞定了问题后好心和大家分享,但其最后编译成功不代表总结没有错误。

本人配置如下:

硬件:惠普OMEN系列暗影精灵4笔记本,主板芯片型号Intel HM370,显卡型号Geforce GTX 1060。

软件:Ubuntu16.04,CUDA8.0,Cudnn5.1,Anaconda2-5.3.0,Tensorflow_gpu-1.2.0-cp27,OpenCV-3.2.0,ROS-kinetic

以下总结仅供参考,如有谬误欢迎指正:

0.网络不好不要搞!

1.首先需要禁用BIOS安全启动项,否则安装Nvidia驱动之后会发生循环登录等异常现象。

2.制作Ubuntu安装U盘不一定要用UltraISO等软件,直接解压也可。

3.系统安装过程以及安装之后都不需要修改grub。

4.Ubuntu安装完之后先更新软件(or type sudo add-apt-repository ppa:graphics-drivers/ppa && sudo apt update),更新之后Software & Updates的Additional Drivers页面就会有适当版本的N卡驱动安装选项,点击即可安装。

5.安装N卡驱动之后nouveau驱动已经被删除,不需要理会。在显卡驱动更换之前,会出现命令行界面(ctrl+alt+f1)滚动显示acpi错误(断开电源使用电池就没事)、电脑睡眠状态无法唤醒等奇怪现象,在显卡更新之后这些问题随之消失。(后续安装某些程序之后acpi错误再次出现)

6.改国内源能够提升apt命令速度。

7.后续安装搜狗输入法时,出现Terminal的字体变成灰色、桌面变成黑色的奇怪现象,原因未知,遂不敢再用搜狗。

8.CUDA版本要和显卡驱动版本的范围匹配。Tensorflow版本、CUDA版本以及Cudnn版本要匹配,如图所示:

9.为便于管理不同程序及其依赖,选择Anaconda。ROS1默认支持python2.7,所以安装Anaconda2。创建Tensorflow虚拟环境之后安装TF和Keras,无须安装bazel。

10.安装CUDA和OpenCV都无须降级gcc,先装cmake、ffmpeg、libgtk2.0-dev 和 pkg-config,再进行OpenCV和opencv_contrib源码安装,如下所述:

A.先在opencv的源码目录里新建一个build文件夹,然后进入这个文件夹,执行下面的(单行)命令:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2.0/modules/ -D PYTHON_INCLUDE_DIR=/home/zbh/anaconda2/include/python2.7 -D PYTHON_INCLUDE_DIR2=/home/zbh/anaconda2/include/python2.7 -D PYTHON_LIBRARY=/home/zbh/anaconda2/lib/libpython2.7.so -D PYTHON2_LIBRARY=/home/zbh/anaconda2/lib/libpython2.7.so -D PYTHON_PACKAGES_PATH=/home/zbh/anaconda2/lib/python2.7/site-packages/ -D BUILD_EXAMPLES=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_opencv_python3=OFF -D BUILD_opencv_python2=ON -D BUILD_TIFF=ON ..

(cmake参数要将python的路径引导至Anaconda下的python路径,而不是Ubuntu的python默认路径)

B.然后终端执行:

make -j4

sudo make install

C.最后从路径.../opencv-3.2.0/build/lib 拷贝cv2.so文件到路径.../anaconda2/lib/python2.7/site-packages 以及有关虚拟环境内的相应路径。

11.ROS-kinetic安装: http://wiki.ros.org/kinetic/Installation/Ubuntu。

ROS自带opencv3部分的lib,rosdep init 命令报错Website may be down的话,换个网络再试。

12.为了使ROS与Anaconda一起工作,必须安装在Anaconda中安装ROS依赖包:pip install -U rosinstall msgpack empy defusedxml netifaces。想要在ROS节点中调用tensorflow,上述命令要在Tensorflow虚拟环境里执行。

参考资料:

另外, 附Nvidia Xavier环境配置踩坑总结:

1.Xavier使用sdkManager只能安装Ubuntu18.04,主机系统版本无所谓。

2.下载新版本sdkManager,或者下载任意版本之后升级;Nvidia官网会出现下载异常,科学上网解决。

3.登录sdkManager或者进行到step2会出现不能联网,科学上网解决。

4.留足硬盘空间下载Jetpack4.2.3,在主机安装host components,有什么用?各别出错不影响后续步骤。不要找常用工作电脑作为主机,否则cuda等等host components可能对原有配置造成影响!darknet_ros出现“CUDA Error: __global__ function call is not configured”错误!

5.按照提示连接Xavier与主机,自动或手动模式无所谓,在Xavier上安装Target components。其中Jetson OS装到一半的时候需要在Xavier上点选配置、设置用户名密码,然后重启。主机端输入Xavier的用户名密码,就可以继续安装Jetson SDK components。

6.参考jetsonhacks/installROS 用installROS.sh装ROS 用installROS.sh装ROS,某些中文参考误事!

用installROS.sh安装后,出现错误The following packages have unmet dependencies:…… python-rospkg-modules but it is not going to be installed。按提示输入sudo apt --fix-broken install,出现错误dpkg: error processing archive……。解决办法:sudo dpkg -i --force-overwrite /…….deb。

7.安装darknet_ros顺利,但是安装usb_cam包的时候先后出现错误:缺少camera-info-manager、libavcodec/avcodec.h和libswscale,分别安装:sudo apt-get install ros-melodic-camer-info-manager、sudo apt install libavcodec-dev和sudo apt install libswscale-dev,即可完成编译。运行usb_cam的时候又提示无法运行image_view,原来是ros连image_view都没有,单独安装即可:sudo apt-get install ros-melodic-image-view。

8.参考jetsonhacks/installRealSenseROS 安装librealsense、RealSenseROS。安装完成以后注意修改.launch文件中的参数,才能与VINS配合使用。

9.在jetpack 4.2以后,Xavier可以支持USB无线网卡了。