Ubuntu16.04配置ros,cuda,tensorflow,opencv-python,cv_camera以及一些问题
Author: 杭州电子科技大学-自动化学院-智能系统和机器人研究中心-Jolen Xie
文章目录
- Ubuntu16.04配置ros,cuda,tensorflow,opencv-python,cv_camera以及一些问题
- 一、ROS配置
- 二、 安装cuda9.0和cudcnn
- 三、安装tensorflow
- 三、安装opencv-python
- 四、安装相机驱动
- Python2.7遇到的一些问题
- 1. python2.7报错 SyntaxError: Non-ASCII character '\xe7' in file “xxxxx”on line 18, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
- 2. python2.7报错 TypeError: 'encoding' is an invalid keyword argument for this function
- 3. python2.7报错 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-78: ordinal not in range(128)
- 参考声明
一、ROS配置
ros官网链接安装教程
-
设置里切换国内源
-
设置你的sources.list
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
-
设置密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
-
安装ros
sudo apt-get update sudo apt-get install ros-kinetic-desktop-full
-
环境*设置
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc source ~/.bashrc
-
安装依赖
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
-
初始化rosdep(我这出现了报错)
sudo apt install python-rosdep sudo rosdep init rosdep update
报错:
ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Website may be down.
以下借鉴csdn博客
解决办法:(推荐方法一)
方法一(如果ubuntu默认的python版本不是2.7,则把下面所有路径中python2.7改为默认版本)-
下载rosdistro的包,github下载地址,转到我的码云,下载快一些下载地址,解压放在
/home/你用户名/
路径下 -
修改rosdistro这个包中rosdep/source.list.d/下的文件20-default.list文件,将这个文件中指向raw.githubusercontent.com的url地址全部修改为指向本地文件的地址,也就是该下载好的包的地址:以下是我修改好的样例:
# os-specific listings first yaml file:///home/xxx/rosdistro/rosdep/osx-homebrew.yaml osx # generic yaml file:///home/xxx/rosdistro/rosdep/base.yaml yaml file:///home/xxx/rosdistro/rosdep/python.yaml yaml file:///home/xxx/rosdistro/rosdep/ruby.yaml gbpdistro file:///home/xxx/rosdistro/releases/fuerte.yaml fuerte # newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
其中xxx是你的用户名
-
修改
/usr/lib/python2.7/dist-packages/rosdep2
该文件夹下面的sources_list.py
中的DEFAULT_SOURCES_LIST_URL
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
修改DEFAULT_SOURCES_LIST_URL路径:
DEFAULT_SOURCES_LIST_URL = 'file:///home/xxx/rosdistro/rosdep/sources.list.d/20-default.list'
-
修改一下两个文件夹里的代码:
修改文件1sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
修改URL:
REP3_TARGETS_URL = 'file:///home/xxx/rosdistro/releases/targets.yaml'
修改文件2:
sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
修改URL:
DEFAULT_INDEX_URL = 'file:///home/xxx/rosdistro/index-v4.yaml'
-
再次初始化rosdep
sudo rosdep init rosdep update
如果报错
ERROR: default sources list file already exists: /etc/ros/rosdep/sources.list.d/20-default.list Please delete if you wish to re-initialize
则执行
sudo rm -f /etc/ros/rosdep/sources.list.d/20-default.list
,再运行第5步。
可以roscore
测试一下安装是否成功方法二
网站https://www.ipaddress.com/
下查询raw.githubusercontent.com
的ip
修改hosts文件sudo gedit /etc/hosts
在文件下面添加:
所查ip raw.githubusercontent.com
然后执行:
sudo rosdep init rosdep update
-
二、 安装cuda9.0和cudcnn
参考csdn博客
1、安装cuda9.0
- 下载cuda9.0的链接
- 安装cuda9.0
sudo sh cuda_9.0.176_384.81_linux-run
可以按Ctrl+c跳过前面的协议阅读
Notice:
安装时提示 Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?
这里询问的是“是否安装更新显卡驱动driver”,一定要选择N,否则可能出现重启黑屏
接下来的选项可以选Y和默认配置
- 添加一些库
sudo apt install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
- 检查Device Node Verification
ls /dev/nvidia*
会显示
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm
如果存在上面信息则安装成功
- 设置环境变量
sudo gedit ~/.bashrc
在文件末尾加入
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
保存文件,让环境变量生效
source ~/.bashrc
- 检查上述的环境变量是否设置成功。
a.验证驱动版本
cat /proc/driver/nvidia/version
b.验证CUDA Toolkit
nvcc -V
c.最后,尝试编译cuda提供的例子,看cuda能否正常运行
打开终端输入
cd /home/xjl(user_name)/NVIDIA_CUDA-9.0_Samples
make
系统就会自动进入到编译过程,整个过程大概需要十几到二十分钟,请耐心等待。如果出现错误的话,系统会立即报错停止。如果编译成功,最后会显示Finished building CUDA samples。运行编译生成的二进制文件,编译后的二进制文件默认存放在NVIDIA_CUDA-9.0_Samples/bin中。
接着在终端中输入 :
cd bin/x86_64/linux/release
./deviceQuery
如果编译显示 Result = PASS代表成功,CUDA安装且配置成功,若失败 Result = FAIL
最后检查一下系统和CUDA-Capable device的连接情况
./bandwidthTest
看到显示Result=PASS则成功
2、安装cudnn
下载对应cuda9.0的cudnn,下载链接,需要注册登录nividia账号
-
解压tgz文件
tar -xzvf cudnn-9.0-linux-x64-v7.tgz
-
复制文件到cuda安装路径下
sudo cp cuda/include/cudnn.h /usr/local/cuda/include sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
-
然后查看cudnn版本,出现如下图则安装成功
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
三、安装tensorflow
1、安装cpu版本的tensorflow
-
下载安装pip安装工具
sudo apt-get install python-pip python-dev
-
下载cpu版本的tensorflow(使用清华源镜像加快下载速度, --default-time解决超时问题)
pip --default-time=100 install tensorflow-gpu==1.9.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
-
测试是否安装好
打开Python2.7测试import tensorflow as tf a = tf.constant(2.0) b = tf.constant(3.0) c = a + b with tf.Session() as sess: print(sess.run(c))
2、安装GPU版本tensorflow
a. 安装显卡驱动 (我的显卡是RTX2060)
Ubuntu下在settings /software&update/additional drivers里安装其中版本的显卡驱动,如果没有发现驱动,则用以下方法 ,以下参考csdn博客
-
卸载系统里低版本的英伟达驱动
sudo apt-get purge nvidia*
-
把显卡驱动加入PPA
sudo add-apt-repository ppa:graphics-drivers sudo apt-get update
-
禁用nouveau第三方驱动,之后也不需要改回来
sudo gedit /etc/modprobe.d/blacklist.conf
在最后两行添加:
blacklist nouveau options nouveau modeset=0
执行:
nvidia-smi
-
在settings /software&update/additional drivers里安装其中版本的显卡驱动
-
如果重启后设置里系统详细信息里还不是独显,则查看安全启动模式是否关闭,关机进入bois,关闭安全启动模式。
-
重启并查看显卡驱动信息
sudo update-initramfs -u #刷新内核
d. 安装tensorflow-GPU
参考csdn博客
-
查看Ubuntu系统安装的Python
cd /usr/bin ls | grep python
(若存在python3.0版本,需要进行下面操作)对python版本动态配置(注意python 3.5赋予的权重要小一些,否则不一定能从高版本切换至低版本):
# 如果以前配置了python,则删除之 sudo update-alternatives --remove-all python # python2赋予权重80 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 80 # python3赋予权重20 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 20 # 动态切换当前使用的版本,在出现的界面中根据需要选择1或者2, # 即可动态选择使用python 2.7还是python 3.5。 sudo update-alternatives --config python # 查看当前python版本 python -V
-
将pip服务器更换为国内的镜像服务器
加快包的下载速度,并且这样就不用一直在pip后面加
-i
命令了修改 ~/.pip/pip.conf (没有就创建一个):
# 如果不存在此文件夹,则创建之 mkdir ~/.pip sudo gedit ~/.pip/pip.conf
加入如下内容
[global] index-url=http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com
-
因为本文使用的是Python2.7,所以使用2.7安装tensorflow-GPU 1.9.0
安装指令如下:
# 如果本机未安装python和pip,则安装之 sudo apt-get install python-pip python-dev # 更新pip sudo pip install -U pip # 安装tensorflow-gpu 1.9.0 sudo pip install tensorflow-gpu==1.9.0
本文遇到的问题
ERROR: markdown 3.1.1 has requirement setuptools>=36, but you’ll have setuptools 20.7.0 which is incompatible.
三、安装opencv-python
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/
四、安装相机驱动
sudo apt-get install ros-kinetic-cv-camera
对于ros-kinetic-cv-camera_中可以kinetic可以根据系统版本来改
测试摄像头
安装image_view
sudo apt-get install ros-kinetic-image-view
列出摄像头设备
ls /dev/video*
修改权限
sudo chmod 777 /dev/video0
开启摄像头的包
rosrun cv_camera cv_camera_node
查看话题
rostopic list
开启画面
rosrun image_view image_view image:=/cv_camera/image_raw
Python2.7遇到的一些问题
1. python2.7报错 SyntaxError: Non-ASCII character ‘\xe7’ in file “xxxxx”on line 18, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
只需要在代码第一行加入
# encoding: utf-8
注意上面的空格,会有影响。
2. python2.7报错 TypeError: ‘encoding’ is an invalid keyword argument for this function
解决办法:
import io
with io.open('1.txt', 'r', encodeing='utf-8') as f:
pass
3. python2.7报错 UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-78: ordinal not in range(128)
这是python的编码问题,Unicode编码与ASCII编码的不兼容
解决办法:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
参考声明
[1] https://blog.csdn.net/nanianwochengshui/article/details/105702188 解决rosdep init的问题
[2]https://blog.csdn.net/lumingha/article/details/88857045 安装cuda和cudnn