文章目录
开发板看看他香不香IO定义设置一下root密码吧更换源赶紧配置VNC已安装组件的使用cudaOpenCVcuDNNjetson nano 安装 TensorFlow GPU安装pip安装那些机器学习领域的包安装TensorFlow GPU版ROS安装什么是ROS选用ROS系统准备工作开始安装将安装源添加到source.list添加公钥和更新系统安装ROS初始化ROS将ROS配置信息写入环境变量,保证每一个终端启动时,都会自动执行setup.bash安装一些依赖包测试一下ROS是否正确安装,输入下面的命令如果没有访问外服的能力一定会遇到的问题解决方案0x01解决方案0x02掉坑经验安装pygame增加SWAP开发板
看看他香不香
Jetson Nano 2GB是一款单板计算机,具有四核1.4GHz ARM CPU和内置的Nvidia Maxwell GPU。它是最便宜的Nvidia Jetson机型,针对的是购买树莓派的业余爱好者。
那里有很多AI开发板和加速器模块,但Nvidia拥有一大优势——它与桌面AI库直接兼容,不需要你将深度学习模型转换为任何特殊格式即可运行他们。
它使用几乎所有每个基于Python的深度学习框架都已使用的相同的CUDA库进行GPU加速。这意味着你可以采用现有的基于Python的深度学习程序,几乎无需修改就可以在Jetson Nano 2GB上运行它,并且仍然可以获得良好的性能(只要你的应用程序可以在2GB的RAM上运行)。
它将为强大的服务器编写的Python代码部署在价格为59美元的独立设备上的能力非常出色。
这款新的Jetson Nano 2GB主板也比Nvidia以前的硬件版本更加光鲜亮丽。
第一个Jetson Nano机型莫名其妙地缺少WiFi,但该机型随附一个可插入的WiFi模块,因此你不必再加上杂乱的以太网电缆了。他们还将电源输入升级到了更现代的USB-C端口,并且在软件方面,一些粗糙的边缘已被磨掉。例如,你无需执行诸如启用交换文件之类的基本操作。
Nvidia积极地推出了一款价格低于60美元的带有真实GPU的简单易用的硬件设备。似乎他们正以此为目标瞄准树莓派,并试图占领教育/爱好者市场。看看市场如何反应将是很有趣的。
根据NVIDIA官方提供的性能对照表,2GB版在不同AI软件的性能表现能达到Raspberry Pi 4的数十倍之谱。(图中将Raspberry Pi 4的性能表现标准化为1)
在操作系统部分,笔者使用NVIDIA提供的最新版本Jetson Nano镜像文件,安装完成后会发现它的桌面环境改为LXDE18.04,与先前的Ubuntu接口有些许不同,但是整体操作仍相当接近。
值得注意的是,在第一次开机的初始设置过程中,系统会建议用户激活Swap功能,若选择默认选项,系统则会自动创建容量约为4.95GB的换置空间,以在主内存容量不足的时候存储资料,发挥虚拟内存的功效。不过由于Swap的实际路径为microSD内存卡,所以带宽与访问性能将受到很大的限制,而且反复访问也可能会加速耗损内存卡寿命。
性能表:
最新版操作系统将桌面环境改为LXDE 18.04,与先前的Ubuntu接口有些不同。
我感觉用这个桌面系统主要原因就是在不用到桌面很多功能的时候可以减少系统开销
55美元在某宝上大概420元左右就可以搞一手,和最新的树莓派4价格差不多。可以接触一些树莓派根本学不到的东西比如 cuda ,和一堆需要用到GPU的功能,你说香不香呢。
但是也有缺点:
资料很少,仅有非常少的开发文档,而官方给的一些东西都是英文,我这个英语菜鸡表示有点难受。支持的系统有限,只有ubuntu没有自带的WIFI和蓝牙如果不想拉网线的话只能多买一个适配器了。
IO定义
设置一下root密码吧
登录以后只是一般用户一些东西并不是非常方便。
sudo passwd root
更换源
deb http://mirrors.tuna./ubuntu-ports/ bionic main multiverse restricted universedeb http://mirrors.tuna./ubuntu-ports/ bionic-security main multiverse restricted universedeb http://mirrors.tuna./ubuntu-ports/ bionic-updates main multiverse restricted universedeb http://mirrors.tuna./ubuntu-ports/ bionic-backports main multiverse restricted universedeb-src http://mirrors.tuna./ubuntu-ports/ bionic main multiverse restricted universedeb-src http://mirrors.tuna./ubuntu-ports/ bionic-security main multiverse restricted universedeb-src http://mirrors.tuna./ubuntu-ports/ bionic-updates main multiverse restricted universedeb-src http://mirrors.tuna./ubuntu-ports/ bionic-backports main multiverse restricted universe
apt-get update
赶紧配置VNC
在开发之前首先需要配置一下VNC,不然你会在电脑键盘和jetson 的键盘之间切来切去非常麻烦。
如何安装
jetson nano官方镜像中已安装有vnc软件vino-server,只需进行一些配置即可使用。
1、确认系统已经安装好后打开系统设置,找到桌面共享,你会发现打不开,据说这是个bug。
解决方法:
第一步:在终端输入这句指令编辑此文件
sudo gedit /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml
第二步:滑到最后面文末的位置,将下面这段内容全部粘贴进去
<key name='enabled' type='b'><summary>Enable remote access to the desktop</summary><description>If true, allows remote access to the desktop via the RFBprotocol. Users on remote machines may then connect to thedesktop using a VNC viewer.</description><default>false</default></key>
第三步:输入以下指令编译一下刚才编辑过的文件
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
2、打开桌面共享设置后按照如下配置即可,密码不用太复杂,好像不设置也可以。
3、 开机设置
4、配置VNC设置
gsettings set org.gnome.Vino prompt-enabled falsegsettings set org.gnome.Vino require-encryption false
已安装组件的使用
Jetson-nano的OS镜像已经自带了JetPack,cuda,cudnn,opencv等都已经安装好,并有例子,这些例子安装路径如下所示
cuda
Jetson-nano中已经安装了CUDA10.2版本,但是此时你如果运行 nvcc -V是不会成功的,需要你把CUDA的路径写入环境变量中。OS中自带Vim工具 ,所以运行下面的命令编辑环境变量
sudo vim ~/.bashrc
在最后添加
export CUDA_HOME=/usr/local/cuda-10.2export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATHexport PATH=/usr/local/cuda-10.2/bin:$PATH
然后保存退出
对了最后别忘了source一下这个文件。
source ~/.bashrc
source后,此时再执行nvcc -V执行结果如下
nvcc: NVIDIA ® Cuda compiler driver
Copyright © - NVIDIA Corporation
Built on Sun_Sep_30_21:09:22_CDT_
Cuda compilation tools, release 10.0, V10.0.166
beckhans@Jetson:~$
OpenCV
Jetson-nano中已经安装了OpenCV4.1版本,可以使用命令检查OpenCV是否安装就绪
但是比较可惜的是这些库没有CUDA以及扩展模块如果需要的话需要自己编译
pkg-config opencv4 --modversion
编译
g++ xxx.cpp -o xxx -L /usr/lib/aarch64-linux-gnu/libopencv* -I /usr/include/opencv4/
cuDNN
cd /usr/src/cudnn_samples_v7/mnistCUDNN #进入例子目录
sudo make #编译一下例子
sudo chmod a+x mnistCUDNN # 为可执行文件添加执行权限
./mnistCUDNN # 执行
cudnnGetVersion() : 7301 , CUDNN_VERSION from cudnn.h : 7301 (7.3.1)Host compiler version : GCC 7.3.0There are 1 CUDA capable devices on your machine :device 0 : sms 1 Capabilities 5.3, SmClock 921.6 Mhz, MemSize (Mb) 3964, MemClock 12.8 Mhz, Ecc=0, boardGroupID=0Using device 0Testing single precisionLoading image data/one_28x28.pgmPerforming forward propagation ...Testing cudnnGetConvolutionForwardAlgorithm ...Fastest algorithm is Algo 1Testing cudnnFindConvolutionForwardAlgorithm ...^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.325104 time requiring 3464 memory^^^^ CUDNN_STATUS_SUCCESS for Algo 0: 0.387500 time requiring 0 memory^^^^ CUDNN_STATUS_SUCCESS for Algo 2: 0.540729 time requiring 57600 memory^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 4.965156 time requiring 207360 memory^^^^ CUDNN_STATUS_SUCCESS for Algo 7: 5.46 time requiring 2057744 memoryResulting weights from Softmax:0.0000000 0.9999399 0.0000000 0.0000000 0.0000561 0.0000000 0.0000012 0.0000017 0.0000010 0.0000000 Loading image data/three_28x28.pgmPerforming forward propagation ...Resulting weights from Softmax:0.0000000 0.0000000 0.0000000 0.9999288 0.0000000 0.0000711 0.0000000 0.0000000 0.0000000 0.0000000 Loading image data/five_28x28.pgmPerforming forward propagation ...Resulting weights from Softmax:0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 0.9999820 0.0000154 0.0000000 0.0000012 0.0000006 Result of classification: 1 3 5Test passed!Testing half precision (math in single precision)Loading image data/one_28x28.pgmPerforming forward propagation ...Testing cudnnGetConvolutionForwardAlgorithm ...Fastest algorithm is Algo 1Testing cudnnFindConvolutionForwardAlgorithm ...^^^^ CUDNN_STATUS_SUCCESS for Algo 0: 0.113750 time requiring 0 memory^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.119792 time requiring 3464 memory^^^^ CUDNN_STATUS_SUCCESS for Algo 2: 0.236198 time requiring 28800 memory^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 1.031719 time requiring 207360 memory^^^^ CUDNN_STATUS_SUCCESS for Algo 5: 5.049948 time requiring 203008 memoryResulting weights from Softmax:0.0000001 1.0000000 0.0000001 0.0000000 0.0000563 0.0000001 0.0000012 0.0000017 0.0000010 0.0000001 Loading image data/three_28x28.pgmPerforming forward propagation ...Resulting weights from Softmax:0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000714 0.0000000 0.0000000 0.0000000 0.0000000 Loading image data/five_28x28.pgmPerforming forward propagation ...Resulting weights from Softmax:0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 1.0000000 0.0000154 0.0000000 0.0000012 0.0000006 Result of classification: 1 3 5Test passed!
jetson nano 安装 TensorFlow GPU
安装pip
因为Jetson Nano中已经安装了Python3.6版本,所以安装pip还是比较简单的
sudo apt-get install python3-pip python3-dev
安装后pip是9.01版本,需要把它升级到最新版,升级后pip版本为19.0.3。这里面升级后会有一个小Bug,需要手动改一下
python3 -m pip install --upgrade pip #升级pip
sudo vim /usr/bin/pip3 #打开pip3文件
将原来的
from pip import mainif __name__ == '__main__':sys.exit(main())
改成
from pip import __main__if __name__ == '__main__':sys.exit(__main__._main())
修改结束后保存。运行pip3 -V成功后显示
pip 21.1.1 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)
安装那些机器学习领域的包
sudo apt-get install python3-scipysudo apt-get install python3-pandassudo apt-get install python3-sklearnpip3 install CPython #必须有这一步,否则h5py编译会出错
安装TensorFlow GPU版
(1)确认CUDA已经被正常安装
nvcc -V
如果能看到CUDA版本号,即为正确安装
(2)安装所需要的包
sudo apt-get install python3-pip libhdf5-serial-dev hdf5-tools
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
pip3 install -U pip
pip3 install -U CPython testresources setuptools
pip3 install -U numpy1.16.1 future0.17.1 mock3.0.5 h5py2.9.0 keras_preprocessing1.0.5 keras_applications1.0.8 gast==0.2.2 futures protobuf pybind11
(3)安装TensorFlow GPU版本
pip3 install /home/yuri/WorkSpace/TensorFlow/tensorflow-2.2.0+nv20.6-cp36-cp36m-linux_aarch64.whl
至于这个轮文件可以到英伟达官方下载链接下载
wget https://developer./compute/redist/jp/v44/tensorflow/tensorflow-2.2.0+nv20.6-cp36-cp36m-linux_aarch64.whl
ROS安装
什么是ROS
ROS是一个机器人操作系统,大家可以想一想Windows操作系统,Windows系统可以打开文件夹,进行文件管理,播放多媒体,用户按照Windows系统开放的接口,可以编写Windows应用程序。ROS系统也是一样,它封装了一些对机器人控制的基本接口,只要我们遵循这些接口制定的规则,我们也可以开发出机器人控制应用。
选用ROS系统
主流的ROS有Melodic Morenia,ROS Kinetic Kame等等,大家可以理解为Liunx系统平台下也分为Ubuntu,CentOS等等。由于主流系统中目前只有Melodic Morenia支持Ubuntu18.04,所以也没得选,就Melodic Morenia了。
准备工作
其实也没啥准备的,这里有个小建议,就是准备一张新的SD卡安装ROS,一是因为ROS挺大,二是如果装了ROS,又拿同一套系统建立模型,会影响速度。SD卡建议32G以上。
开始安装
将安装源添加到source.list
sudo sh -c ‘echo “deb /ros/ubuntu $(lsb_release -sc) main” > /etc/apt/sources.list.d/ros-latest.list’
添加公钥和更新系统
sudo apt-key adv --keyserver 'hkp://:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654sudo apt update
安装ROS
sudo apt install ros-melodic-desktop-full
上面的命令是把ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators一起安装了,你也可以单独安装,我就懒得写了,自己查官网去吧。
初始化ROS
sudo rosdep initrosdep update
将ROS配置信息写入环境变量,保证每一个终端启动时,都会自动执行setup.bash
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrcsource ~/.bashrc
安装一些依赖包
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
测试一下ROS是否正确安装,输入下面的命令
roscore
如果没有访问外服的能力一定会遇到的问题
说白了就是在DNS解析的时候,直接访问127.0.0.1
可以自己ping 一下试试
解决方案0x01
如果你正遇到这个问题,那么第一个解决方案就是,更换网络,你可以尝试使用你的手机热点,然后继续尝试以下指令。
sudo rosdep init
rosdep update
解决方案0x02
该解决方案是针对由于以下两个无法正常访问,但可以ping通,于是修改hosts文件,加入以下两个网址的IP地址实现访问。
sudo gedit /etc/hosts
199.232.28.133
151.101.228.133
修改完成后,在终端执行
sudo rosdep init
rosdep update
掉坑经验
经过测试用校园网访问不超过,移动手机热点访问不成功,电信手机热点访问成功
安装pygame
$ sudo apt-get install libsdl-image1.2-dev ffmpeg libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev
$ sudo apt-get -y install libfreetype6-dev
$ pip3 install pygame
增加SWAP
Nano入门教程基础篇-增加swap空间
说明:
介绍如何增加swap空间
步骤:
生成swapfile文件sudo fallocate -l 4G /var/swapfilesudo chmod 600 /var/swapfilesudo mkswap /var/swapfilesudo swapon /var/swapfile设置为自动启用swapfile
sudo bash -c ‘echo “/var/swapfile swap swap defaults 0 0” >> /etc/fstab’