アットマークテクノがArmadillo-IoT ゲートウェイ G4 上で動作確認できた機械学習モデルについての詳細をまとめた Armadillo-IoT G4 Model Zoo を公開しました。

概要
Armadillo-IoT G4 Model Zooでは動作確認済みの機械学習モデルについて、以下をまとめて紹介しています。
アットマークテクノがArmadillo-IoT ゲートウェイ G4 上で動作確認できた機械学習モデルについての詳細をまとめた Armadillo-IoT G4 Model Zoo を公開しました。
Armadillo-IoT G4 Model Zooでは動作確認済みの機械学習モデルについて、以下をまとめて紹介しています。
Armadillo-IoT(A6)の開発/メンテナンス等に使用するデフォルトのコンソールは、RS232Cインタフェースに設定されています。
ここでは、コンソールを拡張インタフェースのUARTに変更する方法を説明します。
活用例)
RS232Cインタフェースをコンソールではなく、他機器とのシリアル通信にしたい場合
→コンソールを拡張インタフェースのUARTに変更し、RS232Cインタフェースを他機器とのシリアル通信専用にする
Armadillo-640/IoT(A6)をネットワーク経由で、Webブラウザの画面から制御する方法です。
ここでは、lighttpd+php-cgiを使用します。
例として、WebブラウザからArmadillo-640/IoT(A6)の赤/緑LEDを制御します。
Armadillo-X1:製品アップデート/ソフトバージョン相関早見表(Linux-4.9/Buster版)
(2022年6月時点)
Armadillo-640/610:製品アップデート/ソフトバージョン相関早見表(Linux-4.14/Buster版)
(2022年6月時点)
Armadillo-IoT G3のユーザランドと同等に操作できるコンテナイメージを作成する方法
文字列の一部を置き換え、削除といった加工を行うにはsedコマンドを使用します。
sedコマンドで"s/置換元/置換後/g"と記述することで文字列の置き換えを行うことができます。
以下の例では、Armadillo.txtから"G3"とマッチする箇所を"Degu_G3"と置き換えます。
ファイル内の文字列を検索するにはgrepコマンドを使用します。
以下の例では、Armadillo.txtから"Armadillo-IoT"とマッチする行を検索します。
cオプションを使用するとマッチする行数を出力することもできます。
Armadillo-IoT A6を使ってセンサからのデータ収集・グラフ表示を行います。
本記事で紹介する正規表現の概要について下表にまとめます。
各正規表現の詳細な説明についてはその後に説明します。
本ブログはArmadillo Base OSに標準搭載されているSWUpdateで、簡易Webサーバーを用いてソフトウェアをリモートアップデートする方法を紹介します。
Armadillo-IoT G4のシリアルナンバーやArmadillo Base OSのバージョン及び、SWUpdateにおけるアップデートのバージョンの確認方法を説明します。
swupdate で使用する鍵を変更・追加する方法について本ブログに記載します。
本記事で紹介する正規表現の概要について下表にまとめます。
各正規表現の詳細な説明についてはその後に説明します。
本記事で紹介する正規表現の概要について下表にまとめます。
各正規表現の詳細な説明についてはその後に説明します。
コマンドが存在するパスを調べるには、whichコマンドを使用します。
※ここでは例として、systemctlコマンドについて調べます。
[armadillo ~]# which systemctl /usr/bin/systemctl
また、whereisコマンドを使用することで、指定したコマンドのマニュアル等が存在するパスも調べることができます。
[armadillo ~]# whereis systemctl systemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz
マニュアルのパスのみを調べる場合はman -wコマンドを使用します。
Linuxコマンドのリファレンスマニュアルを表示するにはmanコマンドを使用します。
コマンドの概要のみを表示す場合にはwhatisコマンドを使用します。
※ここでは例として、systemctlコマンドについて調べます。
任意のメモリ空間にアクセスする方法として devmem2 を使用する方法がありますが、似た機能を持つコマンドとして **memtool** があります。 **memtool** は debian パッケージとして配布されているため、ビルドせずに使用することができます。
本ブログではSWUpdateでソフトウェアアップデートが実行される条件についてご説明します。
Armadillo-IoT(G3):製品アップデート/ソフトバージョン相関早見表(Linux-4.9/Buster版)
(2022年6月時点)
SDブートを活用して、eMMC内のルートファイルシステムの一部を書き換える方法です。
活用例)
eMMC内のソフトが意図した動作をせず、起動途中で止まる、ログインできないなど操作不能の状態に陥った場合
→SDブートで起動して、eMMC内の問題となるソフトを停止、削除、正常なソフトに書き換える。
Armadillo-640を使ってセンサからのデータ収集・グラフ表示を行います。 今回のデモは、node-redというツールを使って、極力プログラムを書かずに作成しています。 最低限のコマンド入力は必要になりますが、あまりソフトウェア開発に知見の無いユーザ様でも実践できるものとなっています。 また、機器構成についても市販品のみで構成しておりますので、簡単に構成を再現してお試しいただけるものとなっています。
Armadillo-IoT(G3):製品アップデート/ソフトバージョン相関早見表(Linux-4.9/Stretch版)
(2022年6月時点)
/etc/atmark/containers/*.conf を用意することで、podman コンテナの自動起動等、起動時のオプションを設定することができます。
.conf ファイルの書き方については、Armadillo-IoT G4 のマニュアルを参考にしてください。
podman_start コマンドを使用することで .conf ファイルに記載されている podman コンテナを起動することができます。
podman_start コマンドの使用方法を以下に示します。
.tar ファイルを使用して podman イメージを Armadillo-IoT G4 に入れる方法として、podman イメージをまるごと .tar ファイルにする方法と、podman イメージの差分のみを .tar ファイルにする方法が挙げられます。
podman イメージの差分のみを .tar ファイルにする方法のメリットとして、.tar ファイルの容量を小さくすることができます。デメリットとして、アップデートの元となる podman イメージが Armadillo-IoT G4 に入っている必要があります。
podman イメージの差分を .tar ファイルに変換するには podman_partial_image コマンドを使用します。
podman_partial_image コマンドの使い方を以下に示します。
現在の Armadillo-IoT G4 のイメージを他の Armadillo-IoT G4 へインストールすることや、バックアップを目的に、使用している Armadillo-IoT G4 のイメージを取り出したい場合が考えられます。
Armadillo-IoT G4 からイメージファイルを作成するには、abos-ctrl make-installer コマンドを使用します。
abos-ctrl make-installer コマンドはインストールディスクイメージを作成して micro SD カードに書き込みますので、micro SD カードを挿入しておく必要があります。micro SD カードに Armadillo Base OS のインストールディスクイメージが含まれていない場合は、Armadillo Base OS のインストールディスクイメージをダウンロードする必要がありますので、Armadillo-IoT G4 をネットワークに接続しておく必要があります。
Armadillo Base OS は SWUpdate によってアップデートすることができます。
アップデートする際には、SWUpdate によるアップデートに含まれるファイルと /etc/swupdate_preserve_files に記載されているファイルで新しい rootfs を作ります。
そのため、 SWUpdate と /etc/swupdate_preserve_files に含まれていないファイルは消えてしまいます。
本ブログでは、 /etc/swupdate_preserve_files にファイルを記載する方法について説明します。
Armadillo Base OS に含まれていないファイルを /etc/swupdate_preserve_files に記載するには persist_file -p コマンドを使用します。
Armadillo Base OS は OS ・ブートローダー・コンテナ部分が二面化されており、SWUpdate によるアップデートやロールバックが行われたときに、自動的に今まで使用していた面と違う面に切り替わります。
違う面のファイルにアクセスするには、abos-ctrl mount-old コマンドを使用します。
以下に abos-ctrl mount-old コマンドを使用する例として、hogeというファイルを作成し、ロールバック後に前の面にあるhogeというファイルを現在の面に持ってきます。
コンテナの自動起動方法とその設定に必要なconfファイルについて記載しております。
Armadillo BaseOS ではルートファイルシステムに overlayfs を採用しています。
そのため、ファイルを変更した後 Armadillo-IoT G4 の電源を切ると変更内容は保持されません。
rootfs の変更内容を保持するには、変更したファイルに対して persist_file コマンドを使用します。
persist_fileコマンドの使い方を以下に示します。
本ブログではコンテナ作成時に使用するコンテナイメージを取得する方法をご説明します。
Podmanでreadonlyコンテナイメージを作成・削除する方法
Armadillo Base OSはOS・ブートローダー・コンテナ部分が二面化されており、起動が失敗した時に自動的にロールバックされます。
現在のルートファイルシステムの確認とロールバックが行われたかどうかの確認をするにはabos-ctrl statusコマンドを使用します。
本ブログでは、Armadillo-IoT G4上でOCR(Optical Character Recognition:光学文字認識)を実行する方法・結果について紹介します。今回は、機械学習によってOCRを行うPaddleOCRを使用しました。特徴として、 文字の傾きや日本語に対応しています。 PaddleOCRは、スマートフォンや組み込み用に対応しているPaddle Liteというフレームワークを使用して、Armadillo-IoT G4で実行しました。OCRの処理を行ったハードウェアはNPUではなくCPUになります。以下にソフトウェアの構成等についてまとめていますが、実行結果のみ知りたい方は「実行結果」をご覧ください。
本ブログではコンテナ内のタイムゾーンを変更する方法をご説明します。
Armadillo-IoT(G4):製品アップデート/ソフトバージョン相関早見表
(2022年5月時点)
Armadillo-IoT(G3L):製品アップデート/ソフトバージョン相関早見表(Linux-4.9/Buster版)
(2022年4月時点)
Armadillo-IoT(G3L):製品アップデート/ソフトバージョン相関早見表(Linux-4.9/Stretch版)
(2022年4月時点)
Armadillo製品に使用しているeMMC(ストレージ)の予備領域の確認方法について、eMMCの前提情報を交えつつご紹介します。
予備領域が残っているかどうかで寿命予測に活用できます。
Armadillo-IoT G4にシキノハイテック社製MIPIカメラKBCR-S08MMを接続して使用するための手順を紹介します。
本ブログはArmadillo-IoT G4(以下、G4)でNPU(Neural network Processing Unit)を使った物体検知(推論)を行う方法を説明します。モデルは学習済みのモデルMobilenet v1でTensorflow Liteを使用します。
開発中など、何らかの理由でSWUイメージ作成環境が変わってしまった場合(※)、
SWUイメージの鍵とArmadillo-IoT(G4)上の鍵と整合がとれず、以降のアップデートができなくなります。
※)基本的には、ソフトウェアアップデートの管理の点からSWUイメージ作成環境は変えないような運用が望ましい。
ここでは、SWUイメージ作成環境が変わってしまった場合に、Armadillo-IoT(G4)上の鍵を
新しいSWUイメージ作成環境の鍵にインストールし直す方法を説明します。
購入製品登録ための正規認証ファイルの取得には、Armadillo-X1/IoT(G3/G3L)上でget-board-infoを実行しますが、
Linuxディストリビューションによって、手順に若干の違いがあります。
正規認証ファイルの取得(get-board-info)が失敗する場合は、下記のようにLinuxディストリビューションを確認の上、
get-board-infoを実行ください。
Armadillo-IoT G4をLTE通信に接続するための手順を紹介します。
Cactusphere RS485 モデル(CT1510-W01) に 交流電流センサを接続し、 Azure IoT Central 上で 電流値の推移を可視化するシステムを構築してみました。 今回使用した交流電流センサは分割クランプ式のため、既設の設備や配電盤などの構成を変更することなく、 後付けで電流値を簡単に取得・見える化することができます。
シリアル通信で制御コードを含むデータの送信/受信する簡易的な方法です。
ここでは、pyserialを使用します。
コマンドのみで、シリアル通信で制御コードを含むデータを送信する方法です。
Armadillo-640のBT/THオプションモジュールを使ってビーコンの接近を感知し、警報を出力するシステムをご紹介しました。
Armadillo-640:BT/THオプションモジュールを使用してビーコンの接近を感知、警報を出力する
このシステムをArmadillo-IoT G3Lを使って構築し、動作することを確認しました。
基本的にはArmadillo-640と同様に、以下をインストールしておけばサンプルコードを動作させることが出来ます。
コマンドの出力と実行した時間を記録する方法
systemdのログはserviceの一つである、systemd-journald.serviceによって保存されます。 本ブログではsystemd-journald.serviceによって保存されたログの確認方法について紹介します。