【Jetson nano】ラジコン自動運転開発日記(8)~USBカメラの接続~

ラジコン自動運転

はじめに

ラジコンにjetson nanoを搭載することで簡易的な自動運転車両*1(Jetracer)を作ることができます.

市販のJetracer*2は高額のため,安く車体が大きいものを活用して作成していきます.

今回はUSBカメラとDocker L4tの接続をしていきます.
思ったよりも簡単にできてよかったです.

docker runファイル

docker runファイルの構築をこちらのサイト*3を参考に作成していきます.

こちらのサイトはCSIカメラ向けなので,USB用に追記します.

ここ*4によるとdeviceが必要なので追記します.

#!/bin/bash -eu

xhost +

sudo docker run \
    -it \
    --rm \
    --net=host \
    --runtime nvidia \
    --device /dev/video0:/dev/video0:mwr\
    -e DISPLAY=$DISPLAY \
    -v /tmp/.X11-unix/:/tmp/.X11-unix \
    -v /tmp/argus_socket:/tmp/argus_socket \
    -v /home/share:/home/share \
    nvcr.io/nvidia/l4t-ml:r32.5.0-py3

docker runの実行

maki@maki-jetson2:/home/share/SampleCamera$ ./drun_sample_camera.sh 
access control disabled, clients can connect from any host
allow 10 sec for JupyterLab to start @ http://localhost:8888 (password nvidia)
JupterLab logging location:  /var/log/jupyter.log  (inside the container)
root@maki-jetson2:/# 

カメラ画像の取得

こちらのサイト*5を参考にカメラ取得プログラムをLabに記載すると.

import cv2

# VideoCapture オブジェクトを取得します
capture = cv2.VideoCapture(0)

while(True):
    ret, frame = capture.read()
    # resize the window
    windowsize = (800, 600)
    frame = cv2.resize(frame, windowsize)

    cv2.imshow('title',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

capture.release()
cv2.destroyAllWindows()

file

カメラの画像を取得できます.

おわりに

今回はDocker L4tにUSBカメラを連携させて表示してみました.

参考サイト

1 :Jetson最新情報やTPUとの比較
2 :JetRacer AI Kit
3 :Jetson上のDockerコンテナでCSIカメラを使用する
4 :dockerでウェブカメラの映像を表示する
*5 :Pythonでカメラを制御する【研究用】

コメント

タイトルとURLをコピーしました