本次Jetbot实验全程都在 Jetson Nano 2GB开发套件上面运行。在组装Jetbot教学系统之前,最好先把Jetbot系安装到JetsonNano 2GB上,这样可以先对每个元件进行独立的测试,确认元件能正确工作之后再进行组装的步骤。
否则一旦先组装好再测试的话,如果发现某个元件有问题,或者线路(杜邦线、电源线)没接好,就得拆下来测试后再组装,这个过程非常折磨人,因此建议在组装之前,先个别测试每个元件之后再进行组装,会减少很多麻烦。
Jetbot需要与很多周边设备互动,并且使用很多深度学习框架以及Jupyter交互界面进行操作,因此需要安装与调试的内容很多,主要包括以下部分:
1. jtop性能监控软件:这个软件对于熟悉Jetson设备的人来说是非常熟悉的。
2. 摄像头调用库:独立支持CSI摄像头的接口
3. 深度学习工具:包括Python相关库,以及pytorch、torchvision库与TensorFlow模型仓、torch2trt工具等
4. Jupyter交互环境:包括Jupyter Lab、Jupyter Clickable ImageWidget以及一些扩展包
5. 周边调用库:包括支持I2C接口的python3-smbus库、创建支持PiOLED显示的服务与对PCA9685+TBB6612控制板的调用。
6. 添加4GB SWAPFILE与修正一些小错误:
7. 其他
为了减少使用者的逐步安装之苦,Jetbot提供三种安装方式,现在就一一为大家说明,请任选其中一种就可以。
完整镜像安装Jetbot
这是Jetbot一开始推出来的时候所使用的方法,至今还继续沿用。执行步骤如下:
(1) 下载Jetbot镜像:
根据所使用的机型是Jetson Nano或2GB版本,选择对应的下载路径,目前最新版本是基于Jetpack 4.5的基础上搭建,然后打包成镜像文件提供下载。请到https://jetbot.org/master/software_setup/sd_card.html(下图)点选:
这种方式最常遇到的问题,就是镜像文件存放在Google Drive上,国内下载可能会出现阻碍,目前也没找到任何Mirror站提供这两个镜像文件,这是用户需要自行客服的部分。
(1) 准备一张32GB以上的TF卡,用Etcher将上面下载的镜像烧录进TF卡;
(2) 将TF卡插入设备后开机即可使用,系统用户名、密码以及Jupyter界面的密码都是 ”jetbot”
对于Ubuntu操作系统不是太熟的使用者,推荐使用这种方法是最单纯的。
l 在原有系统上创建:
如果您已经在JetsonNano(含2GB)上开发某些深度学习应用,并计划与Jetbot进行整合,那么前面一种方式就需要您将现有项目全部移植到Jetbot的环境里,这并不是一种非常理想的方式。
这里有两种方法能在您现有的Jetapck开发环境中,安装Jetbot智能无人车项目,不过请确认您的TF卡还有足够的空间,如果将SWAP挡一起算进去,建议至少有10GB空间是比较保险的。
第一件事情,就是将Github的开源代码,复制一份到您的Jetson Nano(含2GB)上,请执行以下指令:
接下来看看这两种可以操作的方式,Jetbot项目都为我们准备好对应的脚本,因此只要执行这些脚本就可以,只是有些小地方需要做点修正就可以:
1.在系统上直接用脚本安装:
在jetbot/scripts里有个”create-sdcard-image-from-scratch.sh”脚本,将所有Jetbot所需要的依赖库、软件与环境调试步骤,全部写在这个脚本里面,只要执行以下指令就能自动执行。
$ cd scripts
$ sudo ./create-sdcard-image-from-scratch.sh
$./scripts/configure_jetson.sh # 关闭图形桌面,并设定成10W运行模式
$./scripts/enable_swap.sh # 添加SWAP空间
但这种方法存在一个比较大的风险,就是安装过程中,有些Python库版本会与您原本调试好的版本产生冲突的可能,特别是numpy版本以及tensorflow、pytorch相关的库,一旦造成冲突,要重新还原是个大工程。
除非您对这些库之间的版本依赖比较熟悉,否则并不推荐使用这个方式,虽然这种安装所需要的时间最短,但是潜藏的风险是最大的。
2. 使用Docker容器技术:
这是实用性最高的方式,不仅Docker集成技术会将Jetbot操作环境与实体环境进行隔离,避开软件版本冲突的风险,还能与您现有开发环境共存,进一步将JetsonNano 2GB上所开发的项目有效集成,也让TF卡利用率能发挥到最高,是我们比较推荐的一种安装方式。
创建Jetbot容器的脚本在目录下的docker目录里,请先将工作位置移到这里:
$ cd ~/jetbot/docker
这个安装过程,最好先用USB或网络(有线或WIFI)与Jetson Nano 2GB连线,透过SSH远程操作会比较合适,因为过程会将Jetson Nano(含2GB)的图形桌面关闭,并且最后需要在PC上用浏览器开启Jupyter操作界面。
Jetbot团队提供创建Docker版本的脚本是基于Jetpack 4.4版本,如果您目前使用Jetpack 4.5以上版本的话,需要对base/build.sh、<base>、<camera>、<display>、<jupyter>、<models>下面的Dockerfile进行小幅度修改。下面以Jetpack 4.5版本为例:
(1) 修改base/build.sh:删除 ”BASE_IMAGE=$JETBOT_BASE_IMAGE”
(2) 修改base/Dockerfile文件的两行设定值:
Ø 将第1行 r32.4.3-pth1.6-py3 改成r32.5.0-pth1.6-py3
Ø 第102行 ”RUN apt install -y python3-smbus&& pip3 install pyzmq”提前到jupyter的安装之前,例如移到第77行
Ø 为前一个安装行最后的 ”pyzmq” 指定版本,改成 ”pyzmq==22.0.0”
(3) 修改models、display、jupyter、camera下面的Dockerfile:
Ø 执行以下指令就可执行替换任务:
全部修改存档后,回到docker目录下执行创建脚本:
整个过程在Jetson Nano 2GB上大约需要90分钟,会创建或下载以下6个镜像文件:
(1) nvcr.io/nvidia/l4t-pytorch:r32.5.0-pth1.6-py3:从NVIDIA的镜像仓中下载,作为Jetbot镜像的基础,因为这是Jetbot深度学习的基础环境。
(2) jetbot/jetbot:base-0.4.3-r32.5.0:提供深度学习环境与周边调度管理机制
(3) jetbot/jetbot:jupyter-0.4.3-r32.5.0:Jupyter互动式操作嗯环境
(4) jetbot/jetbot:display-0.4.3-r32.5.0:负责在PiOLED显示内容
(5) jetbot/jetbot:camera-0.4.3-r32.5.0:负责摄像头调度的功能
(6) jetbot/jetbot:model-0.4.3-r32.5.0:存放项目需要的预训练模型
创建完毕之后,执行以下指令看看是否创建齐全:
$ docker images
后面所显示的“SIZE” 是叠加上去的,全部实际所占用的空间大约5GB,所以不用太担心TF卡空间是否会不足。
最后设置Jetbot相关环境,并重启设备:
$ ./scripts/configure_jetson.sh # 关闭图形桌面,并设定为10W执行模式
$ ./scripts/enable_swap.sh # 创建4GBSWAP 空间
$ sudo reboot
接下去就启动Jetbot软件,执行以下指令将启动位置设为在 $HOME/jetbot
检查系统是否启动?可以用docker ps指令看看服务是否正常允许,如果显示以下信息,表示这个系统已经启动。
到这里就完成Docker版Jetbot系统的安装。
登陆Jupyter操作界面
这里需要一台Jetson Nano 2GB以外的电脑,可以是Windows、Linux、Mac操作系统的PC机,透过网络连线的方式,用浏览器登陆Jupyter界面来操作Jetbot。
必须确保两台电脑在同一个网段,而且可以互相访问(ping),最简单的方式就是用具备数据传输的MicroUSB连接线,将Jetson Nano 2GB 与 PC之间进行直连(如下图),当连线成功之后,Jetson Nano 2GB就能有”192.168.55.1”这个固定的IP,这样出来是最简便的。
只要在PC上执行 “ping 192.168.55.1” 能正确通信,接下去就可以在PC上开启一个浏览器(推荐用Chrome)输入”<IP_OF_JETSON_NANO_2GB>:8888”,例如这里就在浏览器网址输入框输入 ”192.168.55.1:8888” 就可以。
第一次进入的时候会要求输入密码,系统预设为“jetbot”,输入之后就能进入下面画面的Jupyter操作界面,这里的根目录就是 ”enable.sh”后面跟随参数所指定的路径,可以自行调整。
如果能打开的话,就表示这台Jetbot已经处于能工作的状态,就可以开始进入后面的内容。关于Jupyter的操作,请自行在网上查找,这里不单独提供使用说明。接下去的内容就会在这个界面上进行操作。[完]