最近在英伟达tx2做了一些工作,需要安装tensorfow+ros,以便于进行一些机器人视觉的开发,为此踩了不少坑,特此做下一些记录,以便于以后查询。
notes:其实安装这些东西,最主要软件和硬件版本的升级与变化,所以在开始特此申明所用的软硬件版本
刷机包:JetPack-L4T-3.1-linux-x64.run
刷完机后tx2为
CUDA8.0+
cudnn6.0.21
ubuntu16.04
ros版本:kinetic
tensorflow 版本:Python2版1.4.1
文件储存地址:https://pan.baidu.com/s/1ral0F4S 密码 o4ae
参考这里
这一篇文章介绍的是tx1的刷机过程,讲得非常详细,tx2和tx1刷机过程类似,只需要将其中的tx1的相关选项为tx2即可,需要注意的是在这个界面
这是tx1的选择界面,对应tx2相同的界面建议在右上角选择full,因为只安装部分容易出一些问题,所以建议安装full版本的
notes:这给个刷机包会先在你本机的ubuntu上安装cuda和arm架构相关的东西,会改变本机的一些设置,所以不建议安装在自己常用的ubuntu系统的,解决办法是在vm中新建一个虚拟机,这个虚拟机建议储存空间50GB,因为会从网上下载10多GB的东西,当刷完机后选择不删除下载的文件,直接将这个虚拟机挂起,下次再刷机时就不用在下载10多G的东西。
这个虚拟机的网络选项需选为桥接模式,才能建立虚拟机和tx2的网络链接,否则会出现无法识别tx2 ip这种问题。
需要将vm上方栏 虚拟机->可移动设备 中的nvidia tx2相关设备连接到虚拟机,然后可以使用lsusb查看tx2是否与虚拟机成功连接,如出现nvidia相关及安装成功了
对于校园的同学,建议切换到外网下载,否则有些包校园网会下载失败
关于tensorflow的安装,对于tx2相对比较容易安装,因为刷机包已经为我们安装好的cuda和cudnn,这相对于pc来说少了一些麻烦的步骤。tensorflow 的安装分为从源码安装和pip直接安装.whl文件。
从源码安装可以参考下面的两篇:
https://www.jianshu.com/p/d3c50b7a00a7
http://www.ncnynl.com/archives/201706/1759.html
上一篇文章主要参考如何创建虚拟内存,因为想要编译tf这样的大工程,tx2的8GB内存不够使用,所以需要新建8GB虚拟内存,具体操作命令行主要包括
fallocate -l 8G swapfile
chmod 600 swapfile
mkswap swapfile
sudo swapon swapfile
swapon -s
然后就可以参照第二篇从源码安装tensorflow,如需要安装python2版本的tensorflow,只需将这篇文章中的python3改为python2即可。
但是经过多方查询验证,其实从源码安装tensorflow其实也是将源码编译成.whl文件,所以只要编译时所添加的参数是相同的,完全就可以用别人编译好的.whl文件,然后用pip安装即可。而对于tx2,只要用同一个刷机包刷机,参数都是相同的,所以强烈建议使用已经编译好的.whl文件安装tensorflow。
我刷机时使用的是JetPack-L4T-3.1-linux-x64.run,只要是使用同一个刷机包刷机,就可用轻松从下面提供的.whl中安装tensorflow .具体命令如下
参考:https://github.com/peterlee0127/tensorflow-nvJetson
1.安装依赖
sudo apt install python-numpy python-dev python-pip python-wheel
2.从网盘中下载下tensorflow1.4.1.whl,使用pip安装
:安装python2版本tensorflow1.4.1
sudo -H pip install tensorflow-1.4.1-cp27-cp27mu-linux_aarch64.whl
在python中输入命令import tensorflow
未报错及表示成功
参考文章:http://blog.csdn.net/weicao1990/article/details/52575314
直接运行如下命令即可
1. sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
2. sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 0xB01FA116
3. sudo apt-get update
4. sudo apt-get install ros-kinetic-desktop-full
5 sudo rosdep init
6 rosdep update
7 echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
8 sudo apt-get install python-rosinstall
新打开一个窗口,运行
$roscore
notes:sudo rosdep init 可能失败,解决办法参考
https://answers.ros.org/question/54150/rosdep-initialization-error/
先运行如下命令:
sudo apt-get install ca-certificates
然后再运行 sudo rosdep init 即可
至此,ros和tensorflow都安装成功了,在命令行中运行python
>import rensorflow
>import rospy
两句代码都能成功执行,说明两者都安装成功,且能在同一文件下同时执行,及能够在ros环境下运行tensorflow。之后会再写一片文章介绍如何将ros的图片消息转换为tensorflow中的数据。
后记:当时一直想要配置python3版本的tensorflow加ros,最后卡在了cv_bridge这个包这,因为想要转换ros图片数据为tensorflow中的图片数据就得用opencv做中继,opencv这块就很难配置了,挺麻烦,所以建议使用python2版本的tensorflow能够很好的兼容ros。