2019年5月31日 星期五

Jetson Naon Camera Support

Jetson Nano 支援的 IMX219 Cmaera 連接到主板上CSI-2 Connector. 另外也支援USB UVC 類型的 camera


IMX219 Camera 可直接購買 Raspberry Pi camera module V2 直上, 該模組有800萬畫素, 解析度支援到 3280x2464

v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Index       : 0
Type        : Video Capture
Pixel Format: 'RG10'
Name        : 10-bit Bayer RGRG/GBGB
Size: Discrete 3280x2464
Interval: Discrete 0.048s (21.000 fps)
Size: Discrete 3280x1848
Interval: Discrete 0.036s (28.000 fps)
Size: Discrete 1920x1080
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.017s (60.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.017s (60.000 fps)


gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM),width=1280, height=720, framerate=30/1, format=NV12' ! nvvidconv ! xvimagesink -e

USB Camera基本上只要有UVC支援都能用,選擇非常多

測試驅動

gst-launch-1.0 v4l2src device=/dev/video0 ! image/jpeg,width=1280,height=720,framerate=30/1 ! jpegparse ! jpegdec ! xvimagesink sync=false

IMX219 Camera 顏色校正

https://devtalk.nvidia.com/default/topic/1051913/how-to-close-gstreamer-pipeline-in-python/?offset=14

sudo cp camera_overrides.isp /var/nvidia/nvcam/settings
sudo chmod 664 /var/nvidia/nvcam/settings/camera_overrides.isp
sudo chown root:root /var/nvidia/nvcam/settings/camera_overrides.isp

在coding過程中,若Camera使用中程式不正常中止或Camera buffer overflow需要重啟Camera Daemon才能再次正常工作

sudo systemctl restart nvargus-daemon

2019年5月23日 星期四

Jetson Nano USB OTG

Jetson Nano 在RJ-45 port旁邊有個micro USB插座, 找一條USB線連接PC就能夠從PC上經由USB Ethernet登入到Jetson Nano, 非常之方便

Jetson Nano的IP address固定是192.168.55.1

從PC SSH登入
$ ssh <username>@192.168.55.1


另外,以此方式執行遠端Jetson Nano上的程式,若有輸出圖形視窗會得到錯誤訊息並跳出程式

gigijoe@gigijoe-desktop:~/object-tracking/build$ ./object-tracking-cuda 0
Wait for camera stable ... Ok

(object-tracking-cuda:9198): Gtk-WARNING **: 18:09:00.626: cannot open display:

修改PC端 /etc/ssh/sshd_config
-#    X11Forwarding no
+    X11Forwarding yes

再重新登入執行程式,圖形視窗會出現在PC端,很神奇吧





2019年5月21日 星期二

Jetson Nano initial setup

入手Nvidia Jetson Nano先做個簡單的初始設定紀錄



官網的簡介
https://devblogs.nvidia.com/jetson-nano-ai-computing/

1.依據官網上的步驟把系統映像檔寫到MMC card (32GB up)
https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit

Reference
https://www.pyimagesearch.com/2016/07/11/compiling-opencv-with-cuda-support/

2.短路J48使用5V / 4A的power adapter供電

3.上電開機後經過一連串設定及 user name / password 進入Ubuntu Desktop

4.系統上有4GB DDR memory在之後compile OpenCV會不夠用,先開個4GB swap

$ sudo fallocate -l 4.0G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile

$ sudo vi /etc/fstab

/swapfile none swap defaults 0 0
5.安裝必要開發套件

$ sudo apt-get update
$ sudo apt-get install cmake git
$ sudo apt-get install python-pip
$ sudo apt-get install python3-pip python3-pil

$ sudo apt-get install gstreamer1.0-tools gstreamer1.0-alsa \ 
gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \
gstreamer1.0-libav

$ sudo apt-get install libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-good1.0-dev \
libgstreamer-plugins-bad1.0-dev \
libgstrtspserver-1.0-dev

$ sudo apt-get install libgtk2.0-dev

$ sudo apt-get install cmake

6.分別下載 opencv 及 opencv_contrib
https://github.com/opencv/opencv/archive/4.4.0.zip
https://github.com/opencv/opencv_contrib/archive/4.4.0.zip
解壓縮後放在同一個目錄下

cd opencv-4.4.0
mkdir build
cd build

cmake -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.4.0/modules -DWITH_CUDA=ON -DCUDA_FAST_MATH=1 -DBUILD_EXAMPLES=OFF -DWITH_GSTREAMER=ON -DWITH_V4L=ON -DWITH_LIBV4L=OFF -D BUILD_opencv_python2=ON -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_opencv_python3=ON -DPYTHON3_INCLUDE_DIR2=/usr/include/python3.6m -DPYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_EXAMPLES=OFF -D CMAKE_INSTALL_PREFIX=/usr/local -DENABLE_CXX11=ON -D CMAKE_C_COMPILER=/usr/bin/gcc-7 ..

$ make -j $(($(nproc) + 1))
等待約三個小時...

$ sudo make install

7.安裝Jetson Stats, 這樣就能即時monitor CPU / GPU / Memory 狀態

$ sudo -H pip3 install jetson-stats

$jtop