V1.0 2020/10/8

抜粋版
はじめてのＡＷＳ_Ｇｒｅｅｎｇｒａｓｓ開発キット～ネット環境不要でＡＷＳ ＩｏＴを動作させ、ＧＰＵ搭載のエッジデバイスで
ＡＩ，ＩｏＴの最大活用～

設定・開発編（Ｊｅｔｓｏｎ版）

AWS IoT Greengrass
スペクトラム・テクノロジー株式会社
https://spectrum-tech.co.jp
sales@spectrum-tech.co.jp
all rights reserved 2020 spectrum technology co.

1

目次• 開発キットページ
5• 接続構成• 開発キット 設定
1.
2.
3.
4.
5.
6.
7.
8.

Ｊｅｔｓｏｎ組立
Ｊｅｔｓｏｎ起動
Ｊｅｔｓｏｎ初期設定
全体構成
ハードウエア概要
ソフトウエア概要
プロトコルスタック
オプションハードウエア設定• Ubuntu運用マニュアル
1.
2.
3.
4.

UbuntuについてLinux基本コマンド
Ubuntu基本操作
日常運用（ウイルススキャン、更新）
all rights reserved 2020 spectrum technology co.

6
8
10
18
19
20
21
22

抜粋版のためページと本文は一致しませ
ん

24
24
26
27
2

目次

ページ

• Ｊｅｔｓｏｎ ＡＩ開発
1. 概要
2. ＡＩ開発メニュ
3. 開発内容①

29
30

Ｈｅｌｌｏ ＡＩ ｗｏｒｌｄ• 画像分類• 物体認識• ライブカメラ物体認識• 物体認識（色分け）• ライブカメラ物体認識（色分け）• 転移学習（Ｐｙｔｏｒｃｈ）• 再学習（ＴｅｎｓｏｒＲＴ）

52
54• 犬・猫編
• 植物編

②

31
38
41
44
49
51

抜粋版のためページと本文は一致しませ
ん

58

ＡＷＳ設定

all rights reserved 2020 spectrum technology co.

3

目次

ページ

• Ｊｅｔｓｏｎ ＡＩ開発
1. 概要
2. ＡＩ開発メニュ
3. 開発内容①②③

Ｈｅｌｌｏ ＡＩ ｗｏｒｌｄ
ＡＷＳ設定
ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ
A)
B)
C)
D)
E)
F)

④

抜粋版のためページと本文は一致しません

ＡＷＳ Ｇｒｅｅｎｇｒａｓｓとは
用途
ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ設定
ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ Ｃｏｒｅ設定、起動
Ｈｅｌｌｏ ｗｏｒｌｄ事例
デバイス間通信事例

65
65
66
70
72
85

G) デバイス・シャドー通信事例
H) クラウド連携（ＤｙｎａｍｏＤＢ連携）事例
I) ライブカメラ物体認識事例

97
108
126

Ｙｏｌｏ（Ｄａｒｋｎｅｔ）：写真、動画 物体認識
all rights reserved 2020 spectrum technology co.

138
4

開発キット（Ｊｅｔｓｏｎ版） 接続構成
Jetson nano
ＨＤＭＩ

モニタ

ＵＳＢ

ＡＣ／ＤＣ電源
５Ｖ４Ａ

インターネット接続用
Ether 又は wifi

VNCは遅くて使用できませんインターネット

all rights reserved 2020 spectrum technology co.

5

開発キット設定
1. Ｊｅｔｓｏｎ組立① 外部電源用ショートピン設定• 添付の外部電源（５Ｖ４Ａ）を使用するために
ショートピンを設定します。
• ＵＳＢ電源の場合は、立ち上がらないことがありますので、ＵＳＢ電源は使用しないでください。

all rights reserved 2020 spectrum technology co.

出荷時は、ショートされていません6開発キット設定
1. Ｊｅｔｓｏｎ組立② ＦＡＮ取付• 添付のＦＡＮをネジ４本で接続• メス側は、ラジオペンチ等ではさんで、オスのネジを挿入して、ネジ止めします。
• 電源ケーブルを左側から黒、赤で接続します。

③ ケース組立• 内側のネジ４本を先に、スペーサを入れて固定• 内側のネジ４本が足になります。
• 周りのケース４個と上のケースをはめ込みネジ止めします。
• 注意：ＵＳＢなどを収容する側のケースは無理すると割れます。

赤黒

all rights reserved 2020 spectrum technology co.

7

開発キット設定
2. Ｊｅｔｓｏｎ起動① マイクロＳＤカードを挿入
・既にマイクロＳＤカードは挿入済。
・取り出しは、押すと少し飛び出します。
・挿入時は、金属面を上にして差します。

all rights reserved 2020 spectrum technology co.

8

開発キット設定マニュアル
2. Ｊｅｔｓｏｎ起動②

電源、ＬＡＮケーブル、モニター、キーボード接続
ノートＰＣの場合は、表示されません

A)
C)
D)
B)

A) ＡＣ／ＤＣ電源• 外部電源を接続
B) ＬＡＮケーブル又はＷｉＦｉドングル接続• 左図は、ＬＡＮ接続例
C) モニタ接続• モニター（ＴＶ、ＰＣでＨＤＭＩ端子のあるもの）を準備します。
• ＨＤＭＩケーブルにより、 Ｊｅｔｓｏｎとモニタを接続します。
D) マウス、キーボード接続• マウス、キーボードがBluetoothで接続されている場合は、Bluetooth USBと接続します。

all rights reserved 2020 spectrum technology co.

9

開発キット設定
3. Ｊｅｔｓｏｎ初期設定① Ｊｅｓｔｏｎ ｎａｎｏ起動• Ｕｂｕｎｔｕの画面が立ち上がります。
• ｍａｓａをクリックしてパスワードを入力• パスワード：jetson• 後ほど、パスワードは変更できます。
• アカウントは変更できますが、フォルダ名など変更になるためプ
ログラムにより動作しない場合がありますので、自己責任でお願いします。
• ロック画面の場合は、マウスで画面を下にドラッグします。

all rights reserved 2020 spectrum technology co.

10

開発キット設定
3. Ｊｅｔｓｏｎ初期設定② デスクトップ画面
アイコン説明• 左バー：アクティビティ
設定、ターミナルなど• 右上：回線接続、日本語
入力、スピーカ、時計、
電源

all rights reserved 2020 spectrum technology co.

11

開発キット設定
3. Ｊｅｔｓｏｎ初期設定⑤ Ｓａｍｂａ設定（Windowsから） Windowsネットワークとフォルダを共有しま
Ｊｅｔｓｏｎがでない場合は、ｉｐアド
す
レスを直接入力¥¥192.168.1.xx

Windowsネットワーク• ＪＥＴＳＯＮを選択• Ｓｈａｒｅの配下にＪｅｔｓｏｎのフォルダが見えます。

all rights reserved 2020 spectrum technology co.

12

開発キット設定
４． 全体構成AWS clouds

AWS Lambda

AWS IoT Core

ローカル環境JetsonPublishercameraAWS IoT
Greengrass Core

Amazon DynamoDB

IoT shadow

Subscriber

all rights reserved 2020 spectrum technology co.

13

開発キット設定
５．ハードウエア概要
品名

項目

内容

Jetson nanoＣＰＵ

Quad-core ARM A57 @ 1.43 GHzＧＰＵ

128-core Maxwell

メモリ

4GB RAMＯＳ

Ubuntu 18.04 LTS

インターフェース

1000base-T, USB 3.0x4, 2.0x1, HDMIx2, microSD
カード, 40 GPIO pin,I2C, SPI,UART

電源／消費電力

Micro USB typeB 2A 5V （起動失敗することがあ
ります、添付の5V4Aの電源を利用ください）

サイズ

115x90x50mm

ケース収納時

付属品

内容

備考

ケース

透明のみ

ファン

小型ファン、速度調整はありません。

5V4A AC/DC電源

AC100Vからの電源になります。

microSD 64GB

Ubuntu OS及び必要なプログラム
Python3.6, 関連pip 、opencv、tensorRT

マニュアル

設定・開発編ＨＤＭＩケーブルは付属しておりません。別途オプション品等を購入ください
all rights reserved 2020 spectrum technology co.

備考

WiFiは別ドングルが要

14

開発キット設定
６．ソフトウエアの概要
区分

ソフト名

バージョン

OS

ubuntu18.04 LTSAWSAWS greengrass

1.11

AWS IoT device SDK for python

1.4

画像

Opencv

3.4.10プログラム

python3

3.6.9

AWS 使用時は、python3.7

C++

7.5

C++は使用できますが、解説はpythonのみになります。

TensorRT

7.1.3

Jetpack4.4使用

cuDNN

8.0+cuda10.2

yolo

Yolov4他

Pytorch

1.6.0

AI

pip

pillow, matplotlib, numpy、
scipy,keras, sklearn, requests,
h5py,git,pip他

all rights reserved 2020 spectrum technology co.

備考

必要なモジュール

15

開発キット設定
７．プロトコルスタック

Python3：プログラム言語
C++:本資料では未説明
Application

LambdaAWS IoTcore

Yolo

Pytorchアプリ

AWS
Greengrass

AWS IoT device
SDK

AWS

TensorRT

cuDNN

ＡＩ
画像処理

OpenCV
CUDA

UbuntuJetson nano
all rights reserved 2020 spectrum technology co.

ＯＳ
ハード
16

Ubuntu運用
1. UbuntuについてＬｉｎｕｘの中でも一番シェアの高いＯＳです。２００４年にＤｅｂｉａｎ系から派生。

2. Linux基本コマンド① システム関係• 起動：電源を入れると自動で起動します。
• 再起動：$ reboot
又は、左上のメニューの「ゲストを再起動• 終了：$ shutdown
又は、左上のメニューの「ゲストをシャットダウン」• ログアウト $ exit
ルートからログアウトします• 日本語／英語の入力切替：半角／全角のボタン（ＥＳＣボタンの下）

all rights reserved 2020 spectrum technology co.

17

Ubuntu運用
2.

Linux基本コマンド② ディレクトリ操作、コピー、移動、削除
masa@jetson:~$cd /home/masa/Documents ディレクトリの切り替え
masa@jetson :/home/masa/Documents$ ls ファイルとディレクトリの表示（表示したら操作したいファイルを右クリック
でコピペして操作します
masa@jetson:~$ cp ファイル名 ディレクトリ 配下のディレクトリのファイルを別のディレクトリへコピー
masa@jetson:~$ mv ファイル名 ディレクトリ 配下のディレクトリのファイルを別のディレクトリへ移動
masa@jetson:~$ rm ファイル名
ファイルの削除
便利な機能
rm –help
コマンドのオプションが分からない場合は、ヘルプで問い合わせる。すべてのコマンド共通(マイナスを２個とhelp)③ ユーザ権限、プロセス他
masa@jetson :~ $ su スーパーユーザ（root)に切り替え、パスワードを入力
masa@jetson:~$ sudo
ルート権限で各種コマンドを実施します。
masa@jetson:~$ ps a
現状の動いているプロセスを表示
masa@jetson:~$ kill
特定のプロセスを強制終了
masa@jetson:~$ apt-get install pkg パッケージのインストールなどに使用
masa@jetson:~$ date
日付、時間の設定を行います。
masa@jetson:~$ leafpad /etc/network/interfaces
インタフェースに記述してい内容を変更します。Viよりも使いやすいです。

④ モジュール、usb、メモリ、ＨＤＤなどの表示
masa@jetson:~$ lsmod
masa@jetson:~$ lsusb
masa@jetson:~$ free –mt
masa@jetson:~$ df

linuxのモジュールリスト表示
usbのデバイス表示
メモリ使用状態表示
ＨＤＤ（マイクロＳＤ）の使用状態表示
all rights reserved 2020 spectrum technology co.

18

Ubuntu運用
3. 基本操作① 表示画面と内容
主に使用するもの
・ブラウザ：Ｃｈｒｏｍｅ・フォルダ：Ｄｏｃｕｍｅｎｔｓ内に必要なファイルがあります。
・コマンド：コマンド画面を立ち上げて、
python3のプログラムを動作させます。

all rights reserved 2020 spectrum technology co.

19

Ｊｅｔｓｏｎ ＡＩ開発
１．概要
• Ｊｅｔｓｏｎは、Ｎｖｉｄｉａが提供する、GPUを搭載し、高速化された並列処
理用のビジュアルコンピューティングプラットフォームで画像認識、
機械学習や自動運転等を想定した組込み用として開発された。
CUDAに対応し、Ｅｄｇｅコンピューティング代表格である 。
• また、NVIDIA Jetson Nano は、Ｊｅｔｓｏｎの中でも最小のモデルで、小型で低コスト、かつ低消費電力で、AI デバイス開発を可能にします。
エントリレベルのネットワーク ビデオ レコーダー (NVR)、ホーム ロ
ボット、分析機能をフルに搭載したインテリジェント ゲートウェイなど、
組み込み IoT アプリケーションの新しい世界を開きます。
• Ｊｅｔｓｏｎプロジェクト：
https://developer.nvidia.com/embedded/community/jetson-projects

all rights reserved 2020 spectrum technology co.

20

Ｊｅｔｓｏｎ ＡＩ開発
２．開発メニュー①

Ｈｅｌｌｏ ＡＩ ｗｏｒｌｄ• 画像分類• 物体認識• ライブカメラ物体認識• 物体認識（色分け）• ライブカメラ物体認識（色分け）• 転移学習（Ｐｙｔｏｒｃｈ）• 再学習（ＴｅｎｓｏｒＲＴ）• 犬・猫編
• 植物編

②
③

ＡＷＳ設定
ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ

A)
B)
C)
D)
E)
F)

ＡＷＳ Ｇｒｅｅｎｇｒａｓｓとは
用途
ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ設定
ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ Ｃｏｒｅ設定、起動
Ｈｅｌｌｏ ｗｏｒｌｄ事例
デバイス間通信事例

G) デバイス・シャドー通信事例
H) クラウド連携（ＤｙｎａｍｏＤＢ連携）事例
I) ライブカメラ物体認識事例④

Ｙｏｌｏ（Ｄａｒｋｎｅｔ）：写真、動画 物体認識
all rights reserved 2020 spectrum technology co.

21

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容① Ｈｅｌｌｏ ＡＩ ｗｏｒｌｄ

コマンド$ cd /home/masa/Documents/jetsoninference/build/aarch64/bin$ python3 imagenet-console.py --network=googlenet
images/orange_0.jpg output_0.jpg• https://github.com/dusty-nv/jetson-inference#hello-ai-world• 画像分類 その１ python3

デスクトップ上のよく使うコマンドからコピペしてください。

• モデル：googlenet, ResNet-18を使って画像を分類し、確率を算出します。ＴｅｎｓｏｒＲＴ使用• 以下のフォルダに移動し、プログラムを動作させます。
本キットでは、python3のみ利用可能です。
$ cd /home/masa/Documents/jetson-inference/build/aarch64/bin$ python3 imagenet-console.py --network=googlenet images/orange_0.jpg output_0.jpg• --network=モデルを指定、 images/orange_0.jpg：同じフォルダ内のimageのorange_0.jpgの写真を使い、確率を算出• Ｏｒａｎｇｅで97％の確率で出力。１回目のモデル使用には、５分位学習にかかります。

all rights reserved 2020 spectrum technology co.

22

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容① Ｈｅｌｌｏ ＡＩ ｗｏｒｌｄ

コマンド$ cd /home/masa/Documents/jetsoninference/build/aarch64/bin$ python3 imagenet-console.py --network=resnet-18
images/jellyfish.jpg output_jellyfish.jpg• https://github.com/dusty-nv/jetson-inference#hello-ai-world• 画像分類 その２ python3、ｒｅｓｎｅｔ－１８• モデル：googlenet, ResNet-18を使って画像を分類し、確率を算出します。ＴｅｎｓｏｒＲＴ使用• 以下のフォルダに移動し、プログラムを動作させます。
$ cd /home/masa/Documents/jetson-inference/build/aarch64/bin$ python3 imagenet-console.py --network=resnet-18 images/jellyfish.jpg output_jellyfish.jpg• --network=モデルを指定、 同じフォルダ内のimageのjellyfish.jpgの写真を使い、確率を算出• Ｊｅｌｌｙｆｉｓｈで９９％の確率で出力。１回目のモデル使用には、５分位学習にかかります。

all rights reserved 2020 spectrum technology co.

23

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容① Ｈｅｌｌｏ ＡＩ ｗｏｒｌｄ

コマンド$ cd /home/masa/Documents/jetsoninference/build/aarch64/bin$ python3 imagenet-console.py --network=resnet-18
images/coral.jpg output_coral.jpg• https://github.com/dusty-nv/jetson-inference#hello-ai-world• 画像分類 その３ python3、ｒｅｓｎｅｔ－１８• モデル：googlenet, ResNet-18を使って画像を分類し、確率を算出します。ＴｅｎｓｏｒＲＴ使用• 以下のフォルダに移動し、プログラムを動作させます。
$ cd /home/masa/Documents/jetson-inference/build/aarch64/bin$ python3 imagenet-console.py --network=resnet-18 images/coral.jpg output_coral.jpg• --network=モデルを指定、 同じフォルダ内のimageのcoral.jpgの写真を使い、確率を算出• Ｃｏｒａｌ ｒｅｅｆで９６％の確率で出力。１回目のモデル使用には、５分位学習にかかります。

all rights reserved 2020 spectrum technology co.

24

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容① Ｈｅｌｌｏ ＡＩ ｗｏｒｌｄ

コマンド$ cd /home/masa/Documents/jetsoninference/build/aarch64/bin$ python3 imagenet-camera.py --camera=/dev/video0 -width=640 --height=480• https://github.com/dusty-nv/jetson-inference#hello-ai-world• ライブカメラ画像分類 python3• モデル：googlenet, ResNet-18を使って、ライブカメラで画像を分類し、確率を算出します。Ｔｅｎ

ｓｏｒＲＴ使用• 以下のフォルダに移動し、プログラムを動作させます。
$ cd /home/masa/Documents/jetson-inference/build/aarch64/bin$ python3 imagenet-camera.py --camera=/dev/video0 --width=640 --height=480• --network=指定しない場合は、googlenet, camera= =/dev/video0:ｗｅｂカメラのデバイス、--width, --height
は画面サイズです。
• フレームの調整が上手くゆきませんでした。フレーム全体を左にドラッグすると左半分になります。

動物などの画像を写してくださいall rights reserved 2020 spectrum technology co.

25

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容① Ｈｅｌｌｏ ＡＩ ｗｏｒｌｄ

コマンド$ cd /home/masa/Documents/jetsoninference/build/aarch64/bin$ python3 detectnet-console.py --network=ssd-mobilenetv2 images/peds_0.jpg output1.jpg• https://github.com/dusty-nv/jetson-inference/blob/master/docs/detectnet-console-2.md• 物体認識 その１ 歩行者 python3• モデル：ssd-mobilenet-v2（９１種類の物体を認識、詳細はこちら）を使って、物体を認識し、確率を算出します。ＴｅｎｓｏｒＲＴ使用• 以下のフォルダに移動し、プログラムを動作させます。
$ cd /home/masa/Documents/jetson-inference/build/aarch64/bin$ python3 detectnet-console.py --network=ssd-mobilenet-v2 images/peds_0.jpg output1.jpg• ９０％以上の確率で人物を認識。

all rights reserved 2020 spectrum technology co.

26

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容① Ｈｅｌｌｏ ＡＩ ｗｏｒｌｄ

コマンド$ cd /home/masa/Documents/jetsoninference/build/aarch64/bin$ python3 detectnet.py /dev/video0• https://github.com/dusty-nv/jetson-inference#hello-ai-world• ライブカメラ物体識別その２ python3• モデル： ssd-mobilenet-v2（９１種類の物体を認識、詳細はこちら）により、ライブカメラを使って物体を識別し、確率を算出します。ＴｅｎｓｏｒＲＴ使用• 以下のフォルダに移動し、プログラムを動作させます。前ページよりも簡単$ cd /home/masa/Documents/jetson-inference/build/aarch64/bin$ python3 detectnet.py /dev/video0

all rights reserved 2020 spectrum technology co.

27

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容① Ｈｅｌｌｏ ＡＩ ｗｏｒｌｄ

コマンド$ cd /home/masa/Documents/jetsoninference/build/aarch64/bin$ python3 segnet-console.py --network=fcn-resnet18cityscapes images/city_0.jpg output4.jpg• https://github.com/dusty-nv/jetson-inference#hello-ai-world• 物体色分け 市街地景色 python3• モデル： fcn-resnet18-cityscapes（市街地の景色）を使って物体を識別し、色分けします。Ｔｅｎｓ

ｏｒＲＴ使用• 以下のフォルダに移動し、プログラムを動作させます。
$ cd /home/masa/Documents/jetson-inference/build/aarch64/bin$ python3 segnet-console.py --network=fcn-resnet18-cityscapes images/city_0.jpg output4.jpg• 右のクラスで画像を色分けします。自動運転などに利用します。

all rights reserved 2020 spectrum technology co.

28

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容① Ｈｅｌｌｏ ＡＩ ｗｏｒｌｄ

コマンド$ cd /home/masa/Documents/jetsoninference/build/aarch64/bin$ python3 segnet-camera.py --network=fcn-resnet18-sun -camera=/dev/video0• https://github.com/dusty-nv/jetson-inference#hello-ai-world• ライブカメラ物体色分け 屋内の家具、壁 python3• モデル： fcn-resnet18-sun（屋内の家具、壁）を使って物体を識別し、色分けします。ＴｅｎｓｏｒＲ

Ｔ使用• 以下のフォルダに移動し、プログラムを動作させます。
$ cd /home/masa/Documents/jetson-inference/build/aarch64/bin$ python3 segnet-camera.py --network=fcn-resnet18-sun --camera=/dev/video0

all rights reserved 2020 spectrum technology co.

29

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容② ＡＷＳ設定• 手順１：ＡＷＳアカウントの作成• https://aws.amazon.com/jp/register-flow/• 必要なメールアドレス、パスワードなどを入力します。

all rights reserved 2020 spectrum technology co.

30

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容② ＡＷＳ設定• ＡＷＳトップ画面• 利用する場合に、地域を意識して設定してください。地域毎に料金が変わったり、利用できるサービスが限定されている場合があります。

all rights reserved 2020 spectrum technology co.

31

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ• https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/what-is-gg.html
A) ＡＷＳ Ｇｒｅｅｎｇｒａｓｓとは• ネット環境がなくても、ローカル側でＡＷＳ ＩｏＴ環境を実現します。また必要によりクラウド側のＡＷＳ ＩｏＴ、ＤｙｎａｍｏＤＢなどとも通信ができます。
• ローカル側のデバイスとＭＱＴＴで通信し、クラウドと同じ動きをします。
• ローカル側での通信は無料です。
• ローカル側のみで機械語学習の推論（ＡＩ）が利用できます。

B)

用途• 工場の装置管理• ビル管理• 農場の環境管理• 監視カメラの情報共有
all rights reserved 2020 spectrum technology co.

32

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ• https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/gg-config.html
Ｃ） ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ設定• ＡＷＳ ＩｏＴのコンソールにログイン• ＡＷＳのトップ画面から、ＡＷＳ ＩｏＴ ｃｏｒｅ又は ＩｏＴ Ｇｒｅｅｎｇｒａｓｓを選択• ＡＷＳ Ｇｒｅｅｎｇｒａｓｓのグループを作成して、証明書などをダウンロードします。

A) グループ作成を選択

all rights reserved 2020 spectrum technology co.

33

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ

コマンド$ cd /home/masa/Documents/helloworld• https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module3-I.html
Ｅ） Ｈｅｌｌｏ ｗｏｒｌｄ事例• 最も基本的な、Ｈｅｌｌｏ ｗｏｒｌｄの事例です。
• 添付のｚｉｐファイルを使ってＬａｍｂｄａ関数を作成し、ＡＷＳ ＩｏｔコンソールからＪｅｔｓｏｎにディプロイします。下図に流れを記載します。
$ cd /home/masa/Documents/helloworld
hello_world_python_lambda.zip
JetsonのフォルダにあるｚｉｐファイルをＰＣ側に取り出しますJetsonAWS clouds
ディプロイ

AWS Lambda

AWS IoT Core

all rights reserved 2020 spectrum technology co.

AWS IoT Greengrass

34

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ• https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module3-I.html
Ｅ） Ｈｅｌｌｏ ｗｏｒｌｄ事例• 最も基本的な、Ｈｅｌｌｏ ｗｏｒｌｄの事例です。
• 添付のｚｉｐファイルを使ってＬａｍｂｄａ関数を作成し、ＡＷＳ ＩｏｔコンソールからＪｅｔｓｏｎにディプロイします。
• Ｌａｍｂｄａ関数の作成• Greengrass_helloworldと入力• Python3.7• 関数の作成
all rights reserved 2020 spectrum technology co.

35

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ• https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module3-I.html• Ｅ） Ｈｅｌｌｏ ｗｏｒｌｄ事例• 最も基本的な、Ｈｅｌｌｏ ｗｏｒｌｄの事例です。
• 添付のｚｉｐファイルを使ってＬａｍｂｄａ関数を作成し、ＡＷＳ ＩｏｔコンソールからＪｅｔｓｏｎにディプロイします。
• ＡＷＳ ＩｏＴコンソールで、ディプロイデータを作成• 既に作成した、グループのｊｅｔｓｏｎにｌａｍｂｄａ関数、サブスクリプションを追加します。

Jetson側でデプロイ前に以下を実施のこと
sudo /greengrass/ggc/core/greengrassd start••

ディプロイのタグを選択
アクション＞ディプロイの実施••

進行中＞正常に終了しました
完了です。

all rights reserved 2020 spectrum technology co.

36

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ• https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module3-I.html• Ｅ） Ｈｅｌｌｏ ｗｏｒｌｄ事例• 最も基本的な、Ｈｅｌｌｏ ｗｏｒｌｄの事例です。
• ディプロイ後、ＡＷＳ ＩｏＴコンソールでサブスクリプションのテストを実施。

•••

テストのタグを選択
トピック：hello/worldと入力
サブスクリプション••

Ｊｅｔｓｏｎ側と通信ができていると
Ｈｅｌｌｏｗｏｒｌｄと端末バージョンが次々表示されます。

all rights reserved 2020 spectrum technology co.

37

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ• https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module4.html• Ｆ） デバイス間通信事例• 基本的な、ＭＱＴＴプロトコルを使い、ＩｏＴ Ｇｒｅｅｇｒａｓｓをコアとして、二つのデバイスでＰｕｂｌｉｓｈ，Ｓｕｂｓｃｒｉｂｅで通信を行う事例です。
• Ｐｕｂ／ＳｕｂのデバイスをＡＷＳ ＩｏＴコンソールで作成し、サブスクリプションを設定します。今回はＬｕｍｂｄａ関数は使用しません。
• 通信回線が不要でローカル環境で動作します。なお設定時は回線が必要です。
Ｃｌｏｕｄ

今回は、ＩｏＴ Ｇｒｅｅｎ
ｇｒａｓｓ，Ｐｕｂ，Ｓｕｂは同一のＪｅｔｓｏｎに設定します。

all rights reserved 2020 spectrum technology co.

38

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ• https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module4.html• Ｆ） デバイス間通信事例• 基本的な、ＭＱＴＴプロトコルを使い、ＩｏＴ Ｇｒｅｅｇｒａｓｓをコアとして、二つのデバイスでＰｕｂｌｉｓｈ，Ｓｕｂｓｃｒｉｂｅで通信を行う事例です。
• Ｐｕｂ／ＳｕｂのデバイスをＡＷＳ ＩｏＴコンソールで作成し、サブスクリプションを設定します。今回はＬｕｍｂｄａ関数は使用しません。
• Ｐｕｂ／Ｓｕｂデバイス設定。

•

デバイス追加•新しいデバイスの作成。

all rights reserved 2020 spectrum technology co.

39

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ

コマンド$ cd /home/masa/Documents/aws-iot-device-sdkpython/samples/greengrass/publish$ python3 basicPubSub.py --endpoint greengrass-ats.iot.us-east2.amazonaws.com --rootCA root.ca.pem --publisher.cert.pem --key
publisher.private.key --clientId HelloWorld_Publisher --topic'hello/world/pubsub' --mode publish --message 'Hello, World! Sent
from HelloWorld_Publisher'• https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module4.html• Ｆ） デバイス間通信事例• 基本的な、ＭＱＴＴプロトコルを使い、ＩｏＴ Ｇｒｅｅｇｒａｓｓをコアとして、二つのデバイスでＰｕｂｌｉｓｈ，Ｓｕｂｓｃｒｉｂｅで通信を行う事例です。
• Ｐｕｂ／ＳｕｂのデバイスをＡＷＳ ＩｏＴコンソールで作成し、サブスクリプションを設定します。今回はＬｕｍｂｄａ関数は使用しません。
• Ｊｅｔｓｏｎ側で通信テスト。
• エンドポイント名確認$ cd /home/masa/Documents/aws-iot-device-sdk-python/samples/greengrass/publish• Ｐｕｂｌｉｓｈ側で使用するダウンロードした証明書を解凍$ python3 basicPubSub.py --endpoint greengrass-ats.iot.us-east-2.amazonaws.com --rootCA
root.ca.pem --cert publisher.cert.pem --key publisher.private.key --clientId HelloWorld_Publisher -topic 'hello/world/pubsub' --mode publish --message 'Hello, World! Sent from HelloWorld_Publisher'• 送信するとpublished xxと２秒おきに送信

all rights reserved 2020 spectrum technology co.

40

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ• https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/IoT-SDK.htm• Ｆ） デバイス間通信事例• 基本的な、ＭＱＴＴプロトコルを使い、ＩｏＴ Ｇｒｅｅｇｒａｓｓをコアとして、二つのデバイスでＰｕｂｌｉｓｈ，Ｓ
ｕｂｓｃｒｉｂｅで通信を行う事例です。
• Ｐｕｂ／ＳｕｂのデバイスをＡＷＳ ＩｏＴコンソールで作成し、サブスクリプションを設定します。今回はＬｕｍｂｄａ関数は使用しません。
• 同一セグメントの別端末からのＰｕｂ／Ｓｕｂ設定と通信• AWS IoT Device SDK for Python をインストール（Ｐｉ例）$ git clone https://github.com/aws/aws-iot-device-sdk-python.git$ cd aws-iot-device-sdk-python$ sudo python3 setup.py install• 通信テストは、Ｊｅｔｓｏｎで実施した、ＰｕｂＳｕｂと同様

Ｐｉ

all rights reserved 2020 spectrum technology co.

Ｐｉ

Ｊｅｔｓｏｎ41

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ• https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module5.html• Ｇ） デバイス・シャドー通信事例• 信号機（Ｔｒａｆｆｉｃ ｌｉｇｈｔ）と信号制御器（Ｌｉｇｈｔ ｓｗｉｔｃｈ）間の情報をシャドーを通して制御する事例• クラウド側と情報を同期することも出来ます。
• Ｔｒａｆｆｉｃ ｌｉｇｈｔのクラウド同期の開始。
• Ｊｅｔｓｏｎで ｓｗｉｔｃｈ，ｔｒａｆｆｉｃｌｉｇｈｔの通信を開始• ＡＷＳ ＩｏＴコンソール：管理＞モノ＞gg_trafficlight>シャドウ＞ｃｌａｓｓｉｃ ｓｈａｄｏｗを選択受信すると２０秒毎にステイタスが変わりますall rights reserved 2020 spectrum technology co.

42

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ• https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/module6.html• Ｈ）クラウド連携（ＤｙｎａｍｏＤＢ連携）事例• 信号機（Ｔｒａｆｆｉｃ ｌｉｇｈｔ）と信号制御器（Ｌｉｇｈｔ ｓｗｉｔｃｈ）間の情報をシャドーを通して制御する事例に追加してＤｙｎａｍｏＤＢにデータをアップします。
• グループロール作成、Ｌａｍｂｄａ関数作成・設定、サブスクリプション設定、ディプロイ、通信テスト

all rights reserved 2020 spectrum technology co.

43

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ• https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/config_subs.html• Ｈ）クラウド連携（ＤｙｎａｍｏＤＢ連携）事例• 信号機（Ｔｒａｆｆｉｃ ｌｉｇｈｔ）と信号制御器（Ｌｉｇｈｔ ｓｗｉｔｃｈ）間の情報をシャドーを通して制御する事例に追加してＤｙｎａｍｏＤＢにデータをアップします。
• ＤｙｎａｍｏＤＢ確認• Ｊｅｔｓｏｎ側でＴｒａｆｆｉｃｌｉｇｈｔ，ｓｗｉｔｃｈを動作させ、そのデータが約２分毎に入っているかＤｙｎａｍｏＤＢを確認する

テーブルが出来ていな
い場合は作成する
テーブル名：CarStats
パーテーション：Time
で作成

表示されない場合は、エラーログなどを調査してください。詳しくは、上記ドキュメント参照
all rights reserved 2020 spectrum technology co.

44

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ• Ｉ） ライブカメラ物体認識事例• Ｈｅｌｌｏ ＡＩ Ｗｏｒｌｄで説明したライブカメラによる物体認識を利用して、そのプログラムをＬａｍｂｄａ関数を使い、Ｇｒｅｅｎｇｒａｓｓに設定。カメラが認識した物体と確率をＳｕｂｓｒｉｂｅｒにリアルタイム出力します。
ＪｅｔｓｏｎのＧＰＵにより高速で、物体認識

AWS clouds

AWS IoT CoreAWS Lambda

ローカル環境cameraJetsonAWS IoT Greengrass

Subscriber

all rights reserved 2020 spectrum technology co.

45

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容③ ＡＷＳ Ｇｒｅｅｎｇｒａｓｓ• https://github.com/dusty-nv/jetson-inference/blob/master/docs/detectnet-camera2.md• Ｉ） ライブカメラ物体認識事例• Ｈｅｌｌｏ ＡＩ Ｗｏｒｌｄで説明したライブカメラによる物体認識を利用して、そのプログラムをＬａｍｂｄａ関数を使い、Ｇｒｅｅｎｇｒａｓｓに設定。カメラが認識した物体と確率をＳｕｂｓｒｉｂｅｒにリアルタイム出力します。
• 通信テスト• カメラが自動で起動します。Ｓｕｂｓｃｒｉｂｅｒ側を動作させ物体認識のデータを確認する。
• $ cd /home/masa/Documents/gg_detect/subscribe• $ python3 basicPubSub.py --endpoint greengrass-ats.iot.us-east-2.amazonaws.com --rootCA
root.ca.pem –cert subscriber.cert.pem --key subscriber..private.key --clientId HelloWorld_Subscriber -topic 'detect' --mode subscribe

all rights reserved 2020 spectrum technology co.

46

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容④Ｙｏｌｏ（Ｄａｒｋｎｅｔ）

コマンド$ cd /home/masa/darknet$ ./darknet detector test cfg/coco.data cfg/yolov4.cfg
yolov4.weights• 写真 物体認識• https://github.com/AlexeyAB/darknet• Ｄａｒｋｎｅｔが提供するＹｏｌｏは、一番高速で物体認識をするモデルです。ＴＥＤで紹介されています。
• モデル：Ｙｏｌｏｖ４。最新モデルで詳細に認識• 以下のフォルダに移動して、プログラムを動作$ cd /home/masa/darknet• 写真$ ./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights$ enter imagepath: data/dog.jpgと入力します。
• 同じ写真で４つの物体を識別

all rights reserved 2020 spectrum technology co.

47

Ｊｅｔｓｏｎ ＡＩ開発
３．開発内容④ Ｙｏｌｏ（Ｄａｒｋｎｅｔ）

コマンド$ cd /home/masa/darknet$ ./darknet detector demo cfg/coco.data cfg/yolov3tiny.cfg yolov3-tiny.weights -c 0

• 動画 物体認識• https://github.com/AlexeyAB/darknet• Ｄａｒｋｎｅｔが提供するＹｏｌｏは、一番高速で物体認識をするモデルです。ＴＥＤで紹介されています。
• モデル：Ｙｏｌｏｖ３。前出のＪｅｔｓｏｎでも使われています• 以下のフォルダに移動して、プログラムを動作$ cd /home/masa/darknet• ライブカメラ$ ./darknet detector demo cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights -c 0
・まずまず早い

人を認識

all rights reserved 2020 spectrum technology co.

48