Jetson Nano: Python OpenCVからMIPIカメラへアクセスする方法

参考にさせていただきました。

https://qiita.com/tsutof/items/2d2248ec098c1b8d3e32

 

今回で画面が緑色になってしまう問題を解決できるか!

試運転:shellからでは映像が出力できています。

 

Python3から nano_cam_test.py を実行してみるとエラーが出ます。

エラー:

たぶん、カメラが対応している解像度と違うからでしょう。

直してみましょう。

Jetson Nano: OpenCV 4.1.0をインストールする

やっていきましょう。

参考にさせていただきました。

  1. https://qiita.com/daisuzu_/items/8cc8de8ea8dc557a2aad
  2. https://qiita.com/wawoon/items/f61338d6e11a8e9521a4
  3. https://pysource.com/2019/08/26/install-opencv-4-1-on-nvidia-jetson-nano
  4. https://qiita.com/tsutof/items/2d2248ec098c1b8d3e32

自動インストールのシェルスクリプトを保存

下記、シェルスクリプトをファイル名 install_opencv4.1.0_Nano.shとしてホームディレクトリに保存します。まだ保存するだけです。

メモリ領域の確保

メモリ領域を確保するために下記4つを、順番にやりますが、一つ一つに時間がかかりますので、進まないからといってターミナルを4つ開かないように!(やって失敗したのは私だけで十分です。)

で、この4つではOpenCV4.1.2もOpenCV4.1.1もうまくいかなかったので、気を取り直して下記の3つをやりました。

おそらく、上記4つは必要ないと思いますので試しに飛ばしてみてください。(リブートしなかったのが良くなかったのか?したかどうかも覚えてませんw)

目的は同様にメモリの確保で、4GBでよいっぽい。デフォルトが2GBなので 式中の割る2を削除すればOKです。

リブートできたら、コンパイル~インストールしましょう。

Pythonでインポートして確認

import cv2してprint(cv.__version__)で

4.1.0と出力されたらOKです。

課題:MIPIカメラが使えない

・pythonからvideoCapture(0)したところ、MIPIカメラでは緑一色の画面しか出力されない。numpy.arrayなのでRGBを確認すると、きれいにすべての画素でR, G, B =[0, 255, 0] ですw 助けてくださいw

・安物のwebカメラではvideoCapture(1)したところ、問題なく映像が出力されています。ついでに顔認識などやってみましたが問題なし。

うーん、このままUVCカメラしか使えないのも尺ですしねえ。せっかくの800万画素のソニーIMX219センサが無駄になってしまう・・・

解決法ありましたら、コメントお願いします🙏

いつか4.1.2を入れられるようになりたいです。

Jetson Nano:カメラの試運転

使ったカメラ

SainSmart IMX219 AIカメラモジュールNVIDIA Jetson Nanoボード用8MPセンサー77度FoV

商品の謳い文句です

  • このカメラモジュールはNVIDIA Jetson Nano BoardとRaspberry PI CM3用に設計されています。
  • 800万画素のIMX219センサーを搭載し、77度の視野を備えています。 (ドライブボードは不要になりました。)
  • 1080 p @ 30 fps、720 p @ 60 fpsおよび640 x 480 p 60/90ビデオ録画をサポートします。 電源インターフェースにより、3.3Vの出力電源にも対応しています。
  • このカメラモジュールは、AIインテリジェント認識、顔認識、道路識別線認識、ナンバープレート認識などに広く使用されています。
  • 1年間の保証:製品についてご質問がある場合は、電子メールでお気軽にお問い合わせください。不良品が届く場合、または非人為的な故障が出る場合、無料交換できます。

パラメータ

CMOSサイズ:1/4インチ
絞り(F):2.8
焦点距離:2.4mm
視野:77度
歪み:<1%
解像度:3280 x 2464
4つのネジ穴:定位置用
サイズ:25mm×24mm×19mm

パッケージ一覧

1×SainSmart IMX219 AIカメラモジュール「発送重量:0.02kg」

マニュアル

http://wiki.sainsmart.com/index.php/101-40-249

カメラが機能するか確認します

カメラモジュールが正しく認識していると /dev/video0 というディレクトリが自動的に作成されますのでcd で確認してみましょう。

同時にwebカメラを接続してみたところvideo1というディレクトリも作成されました。

デスクトップにカメラ画像を映し出すには

$ nvgstcapture

と打ちます。

参考にさせていただきました。

http://www.neko.ne.jp/~freewing/raspberry_pi/nvidia_jetson_nano_setup_raspberry_pi_camera_module_v2/

Jetson Nano: 日本語入力できるようにする2 , Mozc , ibus

Jetson Nanoの日本語入力を設定します。

今回 ubuntuの言語はEnglishで設定しました。

mozcを導入して日本語を入力できるようにしましょう。

Jetson Nano:日本語入力できるようにする

これをやってみたのですが、まだ日本語入力ができませんでした。

なので今回は、さらにsettingsへ入って「地域と言語」から mozcとibusを導入することで日本語入力ができるようになりました。

どうやらibusが必要のようです。

Jetson Nano: Wifi接続 SSH接続, VNC接続

新規Jetson nanoを構築していきます。

現在、初めて立ち上げた状態です。

Wifi接続, SSH接続, VNC接続 までやってみましょう。

有線LANケーブルを接続

Wifi接続するためのドングルのドライバをインターネット経由でダウンロードできるように、有線LANを接続します。Chromiumブラウザがプリインストールされているのでインターネットに接続できるか確認しましょう。

無線Wifi接続

下記の記事を参考に行います。

・ドングル:PLANEX GW-450D2 (5GHz 専用なので無線ルータはaを使用します)

デスクトップ右上のwifiマークからwifiルータを指定してルータのpassword(暗号キー)を入力して接続します。

SSH接続

SSH接続を使うことによってWindowsマシン側からWifiルータを経由してJetsonのターミナルを動かすことができます。

cnt+alt+T でターミナルを起動し、ifconfigでIPアドレスを確認しましょう。192.168.xxx.xxxの部分です。

では、Windows側からJetson nanoに対してSSH接続をしていきます。

windowsマシンにTera Termをインストールし起動します。

IPアドレス、ユーザー名、パスワード等を入力します。

IPアドレスのポート番号は22のままでOKです。

サービスはSSH でバージョンはSSH2を選択します。

これで、ターミナルが開き接続されたことがわかると思います。

↓参考

Jetson Nano:初めての起動 wifi ssh接続の設定

VNC接続

VNC接続を使うことによってWindowsマシン側からWifiルータを経由してJetsonのデスクトップ画面を動かすことができます。

SSH接続ではターミナルだけだったのがVCN接続ならばGUIも遠隔で動かすことがでできます。

TigerVNCをインストールして実行

まず、WindowsマシンからVNC接続できるように、Jetson側の準備をします。

VNC接続にはTigerVNCを使用します。

現在、WindowsマシンからJetsonにSSH接続ができていてJetsonターミナルを遠隔操作できる状態なので、遠隔インストールして起動しましょう。

a view-only password を作成するかと聞かれるのでNOで結構です。

 

これで、Windowsマシンからの受け入れ準備ができました。

VNC-Viewerをインストールして実行

WindowsマシンにVNC-Viewerをインストールします。

VNC-Viewerを起動してJetsonのIPアドレスを指定してアクセスします。

 

 

 

 

 

Jetoson Nano:冷却ファン・電源スイッチ・リセットスイッチを取り付ける

冷却ファン・電源スイッチ・リセットスイッチを取り付ける

Jetoson Nanoに冷却ファン・電源スイッチ・リセットスイッチを取り付けてみました。

冷却ファン取り付け

2個NVIDIA Jetson Nanoファン、NVIDIA Jetson Nano開発キット用冷却ファン、40mm×40mm×10mm 5V DCブラシレスファン2ピンコネクタ静かなCPUクーラーラジエーター

をアマゾンで購入して取り付けました。無駄に2個セットになっております。

 

電源はGPIOから取りました。ブンブン回っております。

ちなみに、JetsonをShutdouwnしてもブンブン回り続けています。

 

電源スイッチとリセットスイッチの取り付け

まず、一番下のピン2本をジャンパーでショートさせることで、電源スイッチとリセットスイッチが有効になります。

下から2番目の黄色い線2本をショートさせるとリセット、下から4番め(つまり一番上)の赤白線をショートさせると電源ONになります。

 

 

Jetoson Nano に VScodeをインストールする

こんにちはKeita_Nakamoriです(^o^)

小学生向けにPythonの学習用にとJetson Nanoを久々に引っ張り出して有効活用しようと思いつきました。

Linux用のAnaconda3をイントールしようとしましたが無理なようなのであきらめてVScodeをインストールしようと思います。

まじめにやるならVScode本体をビルドしてからインストールしますが、下手をすると1時間くらいかかるので今回はビルド済みのパッケージをダウンロードしてインストールしました。

curlを使用するので

$sudo apt-get install curl

してから

$curl -L https://github.com/toolboc/vscode/releases/download/1.32.3/code-oss_1.32.3-arm64.deb -o code-oss_1.32.3-arm64.deb

そして

$sudo dpkg -i code-oss_1.32.3-arm64.deb

VScodeを立ち上げてみます。

$code-oss

インストールしたてのときはメニューがないので表示するための設定をします

  1. ctrl+shift+P でコマンドパレットを起動
  2. open user settingsと入力する
  3. window title barと入力する
  4. 下の方にwindow.titleBarStyleという項目があるのでcustomに変更する。

Restartするよう警告がでるの、Restartボタンをクリックする。

これでメニューバーが追加されたはずです。

左端にあるExtensions でpythonをインストールします。

pylintも入れたいですが、現状ではpip3すら入っていない状態ですので入れます。

$sudo apt install python-pip python3-pip

$pip3 install pylint

これで VScodeでpython開発ができます。\(^o^)/

 

Jetson Nano:Windowsマシンからファイルを転送する方法

Windowsマシンからファイルを転送する方法をメモっておきます。

Tera Termで SSH接続します。

ホストのIPアドレスをいれて、TCPポートは22でサービスはSSHでOKします。

IPアドレスは人によって違うので、予めJetson側のターミナルでifconfigで調べておいてください。

ユーザー名とパスワード(パスフレーズ)を入力してOKします。

ファイルを転送する

接続したらTera Termのコマンドプロンプトのウィンドウ上に転送したいファイルをドラッグアンドドロップします。

このままOKすればホームディレクトリに保存されます。送信先の枠に任意のディレクトリを指定することもできます。

 

とても簡単ですが、たまに忘れるのでメモっておきます。

Jetson Nano:VNC接続できました

今回参考にさせていただいたサイトはこちらです↓↓↓

https://qiita.com/iwatake2222/items/a3bd8d0527dec431ef0f

では、SSH接続に続いてVNC接続をやっていきましょう。

IPアドレスの確認

まずは、Jetson Nano側の作業です。

事前に Tera Term などでSSH接続して ターミナルで ifconfigしてIPアドレスを確認しておきましょう。 192.168.xxx.xxxという部分です。

TigerVNCをインストール

a view-only password を作成するかと聞かれますが、不要なので NO!です。

サーバーとしての環境を作成

 

# 別途、X環境を作る場合は、vncserver :1 などの番号にするそうで、どうやらJetson Nanoに普通につなげると、今現在ディスプレイに映っている画面ではなくてX環境というものが表示されてしまうようです。

前回、うまくVNC接続したと思ったのはこのX環境につながったものと思われます。Nvidiaと書いてある壁紙の画面になり、開いた記憶のないウィンドウ(開こうとしても出てこなかった?)が開かれてありました。当時は全く意味がわかりませんでした。

では、次にWindows10側の作業です。

事前にVNC Viewer(Windows版)をインストールしておきましょう。

起動させたら、メニューバーのFile >  New connection から、VNC Server: のところにIPアドレス 192.168.xxx.xxx を入力して OKします。

パスワードを聞かれるので入力してOKです。

これでつながるはずです。

初めて開くと若干汚いのですが、後で調整しましょう。

 

一旦サーバー環境を閉じます。

Jetson Nano側のターミナルでcntrol+c をおせば、強制終了できます。

VNC自動立ち上げ設定

次回から自動的にVNCサーバーが立ち上がるようにしましょう。

x0vncserver.serviceというファイルを作って、編集します。

 

x0vncserver.serviceの中身を下記のように書き換えましょう。

viを使うので、”a” を押して追記編集モードに入り、貼り付けたあとは”Esc”を押してコマンドモードに入り  “:wq! ” で保存強制終了できます。

名前とパスの一部は適宜書き換えてください。4箇所あります。

x0vncserver.service の手動試運転

まずはちゃんと動作するか手動で確認

OKなら再起動します

再起動後、サービスが起動しているか確認

正しく動いていたら、以下のコマンドで確認できます。

↓↓↓これが出ればOKです↓↓↓
x0vncserver.service loaded active running Remote desktop service (VNC)

VNC viewerの起動と接続

Windows10マシンのVNCビュワーを起動させて、File > New Connection から 接続先の指定をします。

VNC Server:IP address を入れます 192.168.xxx.xxx

(正確には 192.168.xxx.xxx:0 ですが、どちらでもOKです。)

OKします。

VNCパスワードを入力すると、VNCできます。

でも、画面が小さいですね。調整しましょう。

Jetson Nano:VNC接続できません・・・(見る価値なし)

SSH接続に続きましてGUIの方も操作したいので、VNC接続をやってみましょう。

とりあえず繋がりましたが、ただ、現時点でなにが間違っている部分とか無駄があると思われますのでもう少し研究が必要です

vnc4serverでやってみる

sudo apt install vnc4server をやろうとしたところ、

sudo dpkg –configure -a をしなさいと警告が出たのでやってみる。

気を取り直してsudo apt install vnc4server をやろうとしたところ、

sudo apt-get upgrade してみたら?と警告がでたのでやってみる。

再度気を取り直して。sudo apt install vnc4serverをやったところ、 使えませんこの場所にvnc4server パッケージを置くことは。と警告がでる。

まったくわかりません・・・。

 

以下はメモ 1回目はできたのに、2回目は上手く行かなかったやりかた

システムセッティングの中にスクリーンシェアリングがあるはずが、英語バージョンではなくなっている。

代わりにDesktop Sharing があるが クリックしても無反応。完全に詰んだ

 

今現在最も参考になったサイト

https://qiita.com/Tats_U_/items/c170f61a5e03ae045128

画面共有を設定する

GUI画面右上の歯車マークから System Settingsを選択します。

Sharing>Screen Sharingで

Allow connections to control the screen にチェックをいれて

Require a passwordにもチェックを入れて パスワードを指定します。

Networksは ONにします。

暗号化要件を無効にする

dconfエディタをインストールします

$ sudo apt install dconf-editor

起動します

$ dconf-editor

警告がでるので I’ll be careful を押します。

org/gnome/desktop/remote-access/require-encryption がONになっているところをOFFに変更します。

TigerVNCのインストール

開いているデスクトップの画面をリモートでも共有したい場合は次のコマンドも実行しておきましょう。←ってどういういみ?

パスワードの作成

VNC接続用のパスワードを設定します。

View-onlyパスワードはどうするか聞かれるのですが、noで結構です。

設定したパスワードは~/.vnc/passwdに保存されるようです。

VNCサーバを起動する

windowsマシンからSSH接続しているときにVNCサーバーを起動する場合は次のコマンドで起動します。

 

-localhost noがないと別のコンピュータからLAN等を経由して繋げないようです。要注意とのことです。

このコマンドを実行した後は、実行すると接続できますよと提示されたコマンドのコロン:とその直後の数字を確認してください。(大体は:1だと思います)SSHセッションなどを閉じても構いません。

 

もう一つの起動方法ですが、すでに起動しているデスクトップをミラーリングしたい場合は次のコマンドを入力します。

オプション部分をつけないとパスワード入力の段階で弾かれます。こちらはCtrl+Cで終了するタイプとのことです。

Tigervncをインストールする(windows側)

https://tigervnc.org/ の

https://bintray.com/tigervnc/stable/tigervnc/1.8.0 から

tigervnc64-1.8.0.exe をダウンロードしてインストールします。

SSH接続先でtigervncserver -localhost no したときに表示された

を見て、:7とあるので、TigerVNCを起動したあと、アドレスには192.168.xxx.xxxだけでなく 192.168.xxx.xxx:7 と後ろに追加してconnectボタンを押します。

 

 

 

====== 以下、メモ ============

参考

http://lime-piko.blog.jp/archives/16558731.html

https://qiita.com/iwatake2222/items/a3bd8d0527dec431ef0f

VNC Serverをインストールする

リモートからもGUIを使いたいので、vncサーバをセットアップする。vnc4serverといくつかのパッケージをインストールするとともに、設定ファイルの修正が必要。
 

ここで数分かかりました。

設定ファイルを修正しましょう。

vi で 下記のファイルを開きます。というか作ります。

下記の内容を書き込んで保存します。 Esc > :wqで書き込み保存です。

 

だめでした。

つぎにこれを^やってみます。

 

How to Remote Access to Ubuntu 16.04 from Windows

 

ってもう何がなんだかわかりません。

頭を冷やして後日再チャレンジします。