Jetson Xavier NXの上で、DockerベースでJetracerを構築する方法のまとめ。
JetPack
JetPack4.6はTensorRT 8系になるので、TensorRT 7系のJetPack 4.5.1を使用する
Docker
DLI用のDockerがいろいろなパッケージがインストール済みなので、これをベースにする。
sudo docker run \
-it \
--rm \
--runtime nvidia \
--network host \
--volume ~/data:/nvdli-nano/data \
--volume /tmp/argus_socket:/tmp/argus_socket \
--volume ~/jetracer:/nvdli-nano/jetracer \
--device /dev/video0 \
--privileged \
nvcr.io/nvidia/dli/dli-nano-ai:v2.0.1-r32.5.0
Dockerの起動確認
Jetson Xavier NXのhttp://IPアドレス:8888
で、JupyterLabが起動している事を確認する。
Password |
---|
dlinano |
/hello_camera/csi_camera.ipynb を実行し、カメラ画像が表示される事を確認
I2Cの確認
sudo i2cdetect -y -r 8
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- 08 -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- -- -- -- --
JetRacerのインストール
JupyterLabのTerminalを立ち上げて、JetRacerのインストール
cd /nvdli-nano/jetracer
git clone https://github.com/NVIDIA-AI-IOT/jetracer
cd jetracer
python3 setup.py install
Xavier NXのI2C Busnumは8を使う(Nanoは0)ので、Adafruit_Blinkaを最新版にUpdateでする。最新版はXavier NXのボードが識別できるようにUpdateが入っている。
cd /nvdli-nano/jetracer
git clone https://github.com/adafruit/Adafruit_Blinka
cd Adafruit_Blinka
python3 setup.py install
Torch2TRTのインストール
Jupyterのターミナルから下記コマンドでインストール
cd /nvdli-nano/jetracer/
git clone https://github.com/NVIDIA-AI-IOT/torch2trt
cd torch2trt
python3 setup.py install --plugins
Dockerを保存
この処理は、Dockerの中でおこなうのではなく、Dockerを起動した階層でおこなう。もう1つTerminalを起動し、起動したDockerのイメージをcommitする。
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
108cc5ed8a2e nvcr.io/nvidia/dli/dli-nano-ai:v2.0.1-r32.5.0 "/bin/sh -c '/bin/ba…" 7 minutes ago Up 3 minutes
CONTAINER IDを指定してDockerをcommit。上記の場合は、CONTAINER IDは、108cc5ed8a2e
。ユニークであれば省略可能なので、前から3桁の108
を使用。
sudo docker commit 108 jetracer
起動中のDockerを停止する
sudo docker stop 108
Dockerを再起動時に自動起動する設定(--restart always)で起動
sudo systemctl enable docker.service
sudo docker run \
-it \
--restart always \
--runtime nvidia \
--network host \
--volume ~/data:/nvdli-nano/data \
--volume /tmp/argus_socket:/tmp/argus_socket \
--volume ~/jetracer:/nvdli-nano/jetracer \
--device /dev/video0 \
--privileged \
jetracer
カメラの初期化
camera.running = False
camera.cap.release()