Ubuntu16.04配置ros,cuda,tensorflow,opencv-python,cv_camera以及一些问题

13 篇文章 0 订阅
8 篇文章 0 订阅

Ubuntu16.04配置ros,cuda,tensorflow,opencv-python,cv_camera以及一些问题

Author: 杭州电子科技大学-自动化学院-智能系统和机器人研究中心-Jolen Xie

一、ROS配置

​ ros官网链接安装教程

  1. 设置里切换国内源

  2. 设置你的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'
    
  3. 设置密钥

    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
    
  4. 安装ros

    sudo apt-get update
    sudo apt-get install ros-kinetic-desktop-full
    
  5. 环境*设置

    echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    
  6. 安装依赖

    sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
    
  7. 初始化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改为默认版本)

    1. 下载rosdistro的包,github下载地址,转到我的码云,下载快一些下载地址,解压放在/home/你用户名/路径下

    2. 修改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是你的用户名

    3. 修改/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'

    4. 修改一下两个文件夹里的代码:
      修改文件1

      sudo 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'

    5. 再次初始化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.comip
      修改hosts文件

      sudo gedit /etc/hosts
      

      在文件下面添加:

      所查ip	raw.githubusercontent.com
      

      然后执行:

      sudo rosdep init
      rosdep update
      

二、 安装cuda9.0和cudcnn

参考csdn博客

1、安装cuda9.0

  1. 下载cuda9.0的链接
  2. 安装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和默认配置

  1. 添加一些库
sudo apt install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
  1. 检查Device Node Verification
 ls /dev/nvidia*

会显示

 /dev/nvidia0    /dev/nvidiactl    /dev/nvidia-uvm

如果存在上面信息则安装成功

  1. 设置环境变量
 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
  1. 检查上述的环境变量是否设置成功。

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账号

  1. 解压tgz文件

     tar -xzvf cudnn-9.0-linux-x64-v7.tgz
    
  2. 复制文件到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*
    
  3. 然后查看cudnn版本,出现如下图则安装成功

     cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
    

三、安装tensorflow

1、安装cpu版本的tensorflow

  1. 下载安装pip安装工具

    sudo apt-get install python-pip python-dev
    
  2. 下载cpu版本的tensorflow(使用清华源镜像加快下载速度, --default-time解决超时问题)

    pip --default-time=100 install tensorflow-gpu==1.9.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
    
  3. 测试是否安装好
    打开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博客

  1. 卸载系统里低版本的英伟达驱动

    sudo apt-get purge nvidia*
    
  2. 把显卡驱动加入PPA

    sudo add-apt-repository ppa:graphics-drivers
    sudo apt-get update
    
  3. 禁用nouveau第三方驱动,之后也不需要改回来

    sudo gedit /etc/modprobe.d/blacklist.conf
    

    在最后两行添加:

    blacklist nouveau
    options nouveau modeset=0
    

    执行:

    nvidia-smi
    
  4. 在settings /software&update/additional drivers里安装其中版本的显卡驱动

  5. 如果重启后设置里系统详细信息里还不是独显,则查看安全启动模式是否关闭,关机进入bois,关闭安全启动模式。

  6. 重启并查看显卡驱动信息

    sudo update-initramfs -u #刷新内核
    
d. 安装tensorflow-GPU

参考csdn博客

  1. 查看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
    
  2. 将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
    
  3. 因为本文使用的是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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值