文章目录

  • 前言
  • 一、烧录系统镜像
  • 1. 下载JetPack4.4
  • 2. 烧录
  • 3.链接显示器启动系统
  • 4. 配置Samba服务器
  • 5. 通过Samba共享文件
  • 二、安装Jetbot
  • 1.克隆代码库
  • 2. 配置操作系统
  • 3. 构建docker容器
  • 4. 启动容器
  • 5. 禁用容器
  • 6. 相机问题解决
  • 总结



前言

目前,JetBot的官方环境有两种安装方式

  1. SD卡镜像安装
  2. Docker安装

由于官方镜像存放在谷歌云盘,国内无法下载,所以顺利成章的选择Docker安装。
参考资料:
 官方文档地址:jetbot.org/v0.4.3/index.html  官方代码库:https://github.com/NVIDIA-AI-IOT/jetbot


一、烧录系统镜像

1. 下载JetPack4.4

鉴于目前Docker安装方式仅支持JetPack4.4

docker 启动monogo Docker 启动多个smb_github


因此下载以下版本 https://developer.nvidia.com/jetpack-sdk-44-archive

docker 启动monogo Docker 启动多个smb_代码库_02


如果遇到网络不好的情况,可以移步到我的网盘下载:

链接:https://pan.baidu.com/s/1_mT8Q1w-29Ehv1ZTzYzCYA

提取码:sm5p

2. 烧录

使用balenaEtcher烧录SD卡镜像

docker 启动monogo Docker 启动多个smb_docker_03

3.链接显示器启动系统

需要一些简单的配置、语言、用户名、密码等

更新系统安装源
sudo apt-get update

更新软件 
sudo apt-get upgrade

4. 配置Samba服务器

1. sudo apt-get install samba samba-common-bin

2. sudo vim /etc/samba/smb.conf 

追加以下内容:
[nano]
path = /home/nano/
valid users = nano
browseable = yes
public = yes
writable = yes

3. 重启samba服务器
sudoo samba restart 

4. 修改密码
sudo smbpasswd -a nano

5. 通过Samba共享文件

在windows资源管理器中输入路径\\IP地址,然后根据提示输入用户名密码,然后就可以当成本地磁盘使用了。

二、安装Jetbot

1.克隆代码库

git clone http://github.com/NVIDIA-AI-IOT/jetbot.git

如果网络下载比较慢的话,可以打开网页,使用迅雷下载,解压后通过samba导入进去。如果文件没有可执行权限,可以在shell中添加

chmod -R +x ./jetbot

2. 配置操作系统

配置电源模式

cd jetbot
./scripts/configure_jetson.sh

配置环境变量

cd docker
source configure.sh

以上命令禁用了桌面,如果需要,可以手动打开

sudo systemctl set-default graphical.target

配置docker运行环境

./set_nvidia_runtime.sh

设置jupyter运行环境

export JETBOT_JUPYTER_MEMORY=500m
export JETBOT_JUPYTER_MEMORY_SWAP=3G

3. 构建docker容器

直接调用build脚本构建

./build.sh

报错如下:

docker 启动monogo Docker 启动多个smb_docker_04


build构建脚本内容如下:

cd base && ./build.sh && cd ..
cd models && ./build.sh && cd ..
cd display && ./build.sh && cd ..
cd jupyter && ./build.sh && cd ..
cd camera && ./build.sh && cd ..

尝试分开构建,首先是base

cd base
./build.sh

依然报错,尝试在shell直接运行build.sh中的命令

sudo docker build \
    --build-arg BASE_IMAGE=$JETBOT_BASE_IMAGE \
    -t $JETBOT_DOCKER_REMOTE/jetbot:base-$JETBOT_VERSION-$L4T_VERSION \
    -f Dockerfile \
    ../..

中途可能会遇到网络问题导致卡住或者报错,重新输入命令多试几次,大概率能好。如果还是有问题,可以按照我下面的方法解决。

问题1:下载TensorFlow遇到问题,服务器无法访问。
在英伟达官方下载中心找到了相同的版本,更改base/Dockfile中的如下内容

#ARG TENSORFLOW_URL=https://nvidia.box.com/shared/static/rummpy6q1km1wivomalpkwt2jy28mndf.whl 
#ARG TENSORFLOW_WHL=tensorflow-1.15.2+nv-cp36-cp36m-linux_aarch64.whl
ARG TENSORFLOW_URL=https://developer.download.nvidia.cn/compute/redist/jp/v44/tensorflow/tensorflow-1.15.2+nv20.6-cp36-cp36m-linux_aarch64.whl
ARG TENSORFLOW_WHL=tensorflow-1.15.2+nv20.6-cp36-cp36m-linux_aarch64.whl

问题2: github代码库下载问题

git clone https://github.com/NVIDIA-AI-IOT/torch2trt

github代码库间歇性访问不上,目前CSDN加速计划提供了部分github代码库的镜像,每天更新一次。根据github的地址,生成镜像站 网页地址

如果网页能打开,说明已经包含对应的镜像
git clone

base/DockerFile文件中做如下修改:

# =================
# INSTALL TORCH2TRT
# =================
ENV TORCH2TRT_REPO_DIR=/opt/
RUN cd ${TORCH2TRT_REPO_DIR} && \
    git clone  && \
    cd torch2trt && \
    python3 setup.py install
# RUN cd ${TORCH2TRT_REPO_DIR} && \
#     git clone https://github.com/NVIDIA-AI-IOT/torch2trt && \
#     cd torch2trt && \
#     python3 setup.py install

修改完毕后,再次输入构建命令完成安装。

回到docker目录下,打开build.sh文件,注释第一行

#cd base && ./build.sh && cd ..
	cd models && ./build.sh && cd ..
	cd display && ./build.sh && cd ..
	cd jupyter && ./build.sh && cd ..
	cd camera && ./build.sh && cd ..

构建其余模块

./build.sh

构建完毕后,通过docker images命令查看已安装镜像

docker images

docker 启动monogo Docker 启动多个smb_docker_05


如果报错说没有权限,则需要将用户加入docke用户组,命令重启生效

sudo usermod -aG docker XXXX

4. 启动容器

进入docker目录下, 查看启动脚本

source configure.sh

JUPYTER_WORKSPACE=${1:-$HOME}  # default to $HOME
JETBOT_CAMERA=${2:-opencv_gst_camera}  # default to opencv

if [ "$JETBOT_CAMERA" = "zmq_camera" ]
then
	./camera/enable.sh
fi

./display/enable.sh
./jupyter/enable.sh $JUPYTER_WORKSPACE $JETBOT_CAMERA

启动命令如下:

./enable.sh $HOME

5. 禁用容器

./disable.sh

6. 相机问题解决

首先禁用容器

./disable.sh

重新启用容器

JETBOT_CAMERA = zmq_camera ./enable.sh $HOME

替换notebook中的相机代码

from jetbot.camera.zmq_camera import ZmqCamera
camera = ZmqCamera()

总结

通过Docker部署软件步骤比较简洁,如果不愿意使用Docker,我也会在最近整理一份最新的手动制作JetBot镜像的方法。