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になります。

 

 

Androidアプリ:KotlinでDog To Headの開発

こんにちはー。\(^o^)/

今回は最近学んでいるプログラミング言語Kotlinで簡単なアンドロイドアプリを作成しました。

アプリの機能

ドグ付きチェーンによって品物が搬送されロータリー機械へ入っていく状況を考えます。ロータリー機械の特定のポケット番号と特定のドグ付きチェーン番号を一致させたいとき、ロータリー機械をあと何周すれば一致するかを算出します。

 

入力値について

まず、機械構成としてロータリー機械の全ポケット数、チェーンの全ドグ数を入力します。

次にロータリー機械の特定のポケット番号に入るチェーンドグ位置にある「現在のドグ番号」を入力し、最後にそのチェーンドグ位置に何番のドグが来てほしいいか「目標とするドグ番号」を入力します。

以上、合計4つの入力値があります。

結果の出力

ボタンを押すことで、ロータリー機械をあと何周すれば一致するかを算出し、一番下のtextViewに書き出します。

画面構成:activity_main.xml

 

内部演算:MainActivity.kt

 

strings.xml

画面構成を作成したときに、追加したボタンなどにエラーマークがでるので、ソレを消すためにこのファイルを少しいじると修正できるのですが、やらなくても動きますので今回は何もいじっていません。

 

 

 

Kotlinでおみくじアプリ作ってみた。

Kotlinでおみくじアプリ作ってみました。

actibity_main.xml

おみくじの結果を表示するテキストビューとおみくじプログラムを起動させるためのボタンを配置しました。

ボタンのonClickプロパティにはgetOmikujiを入力しておきます。

このgetOmikujiが関数名として使用されます。

テキストビューのIDはresultTextViewとしておきましたが、これがオブジェクト名として機能しますので、スクリプト内ではresultTextView.textなど、プロパティと組み合わせて指定していきます。

strings.xml

エラーが出るので、result_textとbutton_textを定義して解決します。

MainActivity.kt

メインのスクリプトです。randomをうまく使います。

デバック用にLog.nも使ってみました。

 

Kotlinの基礎

Kotlinの基礎をざーっとやってみました。

新しいプログラミング知識として、getter、 setter、アクセス修飾子、ジェネリクス、インターフェース、 null安全 の概念が得られました。

学習メモを下に貼っておきます。

次回はアンドロイドアプリ開発をやっていきましょう。

 

仮想環境でkotlinを学習する方法

こんちには アンドロイド開発してますか~~~~\(^o^)/。

前回はAndroid Studioでアプリを作ってみたのですが、javaの書き方では動くものの、kotlinの書き方ではGUIがうまく動きませんでした・・・。

先にKotlin力を強化するべきなのでkotlin boot camp(英語)を始めたのですが、説明が早すぎるのと、冗長であること、唐突にコードが出てきて、何をやっているのかを推測することに思考を持っていかれるので自分には合いませんでした。使用したIDEはInterij です。

ということで、日本語で学べる

定番ドットインストール

を試しているところです。

しかし、一筋縄ではいきません!エラー頻発しますのでおすすめできる方法ではありません。

この記事の範囲だけで2日かかってます。暇な人はやっていきましょう。

もう一度いいますが、おすすめしません。

仮想環境構築ツールvartualBoxをインストール

URL : https://www.virtualbox.org/wiki/Downloads

VirtualBox 6.1.4 platform packages を Windows hosts からダウンロードして実行するとインストールできました。

vartualBoxを操作するためにVagrantをインストール

URL : https://www.vagrantup.com/downloads.html

Windowsの64-bitをダウンロードして実行するとインストールできました。

Power Shellから、Vagrantを使用する準備を行う

Power Shellを起動して、コマンドを打っていきます。

ホームディレクトリ上に新規ディレクトリを作成します。

$ mkdir MyVagrant

作成したディレクトリに移動します

$ cd MyVagrant

仮想環境のディレクトリを作成します。

$mkdir MyCentOS

作成したディレクトリに移動します。

このディレクトリの中にCentOS仮想環境設定ファイルを作成します。

$ vagrant init bento/centos-6.8

CentOS仮想環境設定ファイルVagrantfileを修正します。

ホームディレクトリ(ユーザ名とか) > MyVagrant > MyCentOS の中にVagrantfileファイルが出来上がっているのでメモ帳で開いて、下記の部分の頭についている# を削除および左詰めします。これでこの仮想環境へは192.168.33.10としてアクセスできるようになります。

修正前:

# config.vm.network “private_network”, ip: “192.168.33.10”

修正後:

config.vm.network “private_network”, ip: “192.168.33.10”

ファイルをセーブして閉じます。

仮想マシンを起動します

再び Power Shellに戻って、仮想マシンを起動します。

$ vagrant up

このとき、エラーがでました。

2回続けて$ vagrant up しましたが、同様のエラーを出力しました。

$ vagrant halt して停止してから $ vagrant up するも改善されません。

解決手順:

  1. Vagrantをアンインストール
  2. VartualBoxをアンインストール
  3. VartualBoxをインストール
  4. Vagrantをインストール

これだけです。

あとから、調べてみたら「VT-x という設定項目を有効にする」だとか「Hyper-Vを無効にする」だとかありましたが、いじっていません。

vagrantを再インストールする必要も無かった可能性があります。

最後に $ vagrant status で runningしているか確認して、仮想マシンの起動は完了です。

仮想マシンMyCentOSにアクセスするためにPuttyをインストールする。

URL: https://www.chiark.greenend.org.uk/~sgtatham/putty/

The latest version is 0.73. Download it here.

とありますので、ダウンロードして実行するとインストールできました。

起動して、Host name or IP adress のところに 192.168.33.10を入力します。

以後、入力しなくていいようにMyCentOSと入れて SaveしてOpenします。ログインとパスワードを聞かれますので、両方vagrantと入力すればOKです。

Kotlinをインストールする。

さあ、やっとKotlinをインストールするところまで来ました。

現在PuttyからVagrantにログインしている状態で、ホームディレクトリには、vagrantしかないはずです。

この下に新規ディレクトリkotlin_lessons を作成して、今後のKotlin練習スクリプト置き場にしましょう。

現在地: /home/vagrant/kotlin_lessons

URL: https://kotlinlang.org/docs/tutorials/command-line.html

Getting Start の Working with the Command Line Compiler の Tutorials の

SDKMAN!の項目に従ってインストールをします。

$ curl -s https://get.sdkman.io | bash

しかし、unzipしてから実行するようエラーがでましたので、

$ sudo yum -y install zip unzip

してから今一度

$ curl -s https://get.sdkman.io | bash

しかしここでPuttyがダウンしてしまいます。

Java をインストールしてみるも・・・

Puttyで再接続して

$  sudo yum -y install java-1.8.0-openjdk-devel

してみるもPuttyがダウンしてしまいます。

困った・・・。

Puttyを再インストール

基本に立ち返って、Puttyを再インストールしたらうまくいきました。

$  sudo yum -y install java-1.8.0-openjdk-devel

JavaはOKです。

次にKotlinです。

$ curl -s https://get.sdkman.io | bash

ALL done!したら その下に指示があるとおり

$  source “/home/vagrant/.sdkman.bin.sdkman-init.sh”

をします。そして

$ sdk install kotlin

うまくいきました。困ったときは再インストールですね。

GUI的にアクセスするためにCyberDuckをインストール

URL: https://cyberduck.io/

からインストールします。

CyberDuckを起動して192.168.33.10 ポート22へ接続します。

ID とPWはvagrantです。

Kotlinスクリプトを作成します

では、予め作成しておいたディレクトリkotlin_lessonsの中に新規ファイルmyapp.ktを作成します。

これをatomとかInteriJで開いてサンプルコードとして

 

を書いて保存します。

Kotlinスクリプトを実行しましょう

再び、仮想マシンに戻ります。

コンパイルします

myapp.kt -include-runtime -d myapp.jar

コンパイルしたjarファイルを実行します。

java -jar myapp.jar

実行できたらOKです。

以上! 仮想環境でKotlinを実行するでした!

初心者はこんなことするくらいなら、仮想環境なんて作らずに直接windows上で InteriJを使えばよいと思います!