はじめに
モニターにつながったJetson nanoを目の前に置いているけれども、WindowsからSSHでJetson nanoに繋いでDOCKERを動かして、pythonで作ったプログラムをJetson nanoの画面に表示したかったのですが、うまく表示できずにはまったので解決策のメモです。
環境
- Jetson nano
- docker
- jetson-interface
- Windows
- RLogin(SSHクライアント)
試したこと
通常のSSH接続と同じように以下のように実行
export DISPLAY=:0
~/jetson-interface/docker/run.sh
そうすると以下のエラー(※太字部分)が出てうまくいかなかった。
reading L4T version from /etc/nv_tegra_release
L4T BSP Version: L4T R32.7.1
size of data/networks: 644857380 bytes
CONTAINER: dustynv/jetson-inference:r32.7.1
DATA_VOLUME: --volume /home/ubuntu/jetson/jetson-inference/data:/jetson-inference/data --volume /home/ubuntu/jetson/jetson-inference/python/training/classification/data:/jetson-inference/python/training/classification/data --volume /home/ubuntu/jetson/jetson-inference/python/training/classification/models:/jetson-inference/python/training/classification/models --volume /home/ubuntu/jetson/jetson-inference/python/training/detection/ssd/data:/jetson-inference/python/training/detection/ssd/data --volume /home/ubuntu/jetson/jetson-inference/python/training/detection/ssd/models:/jetson-inference/python/training/detection/ssd/models
USER_VOLUME:
USER_COMMAND:
V4L2_DEVICES: --device /dev/video0
No protocol specified
xhost: unable to open display ":0"
解決策
以下の手順で実行すれば問題なくdockerの中からGUIを利用するプログラムを実行できるようになった。
export DISPLAY=:0
xhost +
~/jetson-interface/docker/run.sh
試したコード
root@sjet:/jetson-inference# python
Python 3.6.9 (default, Dec 8 2021, 21:08:43)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> img = cv2.imread('data/images/bird_0.jpg')
>>> cv2.imshow('display test', img)
>>> cv2.waitKey(0)
以下のように鳥の画像がJetson nanoにつながったモニターから出力された。
これで、Jetson nanoを好きなところからコントロールができる!!!
おまけ
jetson-interfaceのスクリプトを使わず、JetPackのdockerイメージを呼び出す際にGUIを利用する手順は以下の通り。
export DISPLAY=:0
xhost +
CONTAINER_IMAGE=nvcr.io/nvidia/l4t-ml:r32.7.1-py3
sudo docker pull $CONTAINER_IMAGE
sudo docker run --runtime nvidia -it --rm --network host -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix/:/tmp/.X11-unix \
$CONTAINER_IMAGE