Armadillo Base OS 開発ガイド


目次

1. はじめに
1.1. 本ドキュメントを読むことで習得できること
1.2. アイコンについて
1.3. 表記について
1.3.1. フォント
1.3.2. コマンド入力例
1.3.3. アイコン
1.4. サンプルソースコード
1.5. ライセンス
2. 本ドキュメントについて
2.1. 本ドキュメントで実施する作業
2.2. 本ドキュメントの成果物
3. 準備
3.1. 必要なもの
3.2. 事前準備
3.2.1. 開発環境の準備
3.2.2. 機械学習向け開発環境の準備 ./images/ML_icon.png
3.2.3. 接続物の準備
4. 基本的な開発の流れ
4.1. 機械学習を用いたアプリケーションの開発の流れ ./images/ML_icon.png
5. 仕様を検討・決定する
5.1. Armadillo Base OSにおけるアプリケーション仕様検討
5.2. podmanコンテナイメージの選定
5.2.1. コンテナを用いたシステムの設計 ./images/ADD_icon.png
5.3. ネットワーク構成の検討 ./images/ADD_icon.png
5.4. ハードウェアの拡張 ./images/ADD_icon.png
5.5. 機械学習を用いたアプリケーションについて ./images/ML_icon.png
5.5.1. 学習の手間
5.5.2. 推論の速度と精度
5.5.3. 開発時の技術的負債
6. サンプルアプリケーションの作成
6.1. サンプルアプリケーションの詳細
6.1.1. 詳細な動作
6.1.1.1. USBカメラから画像を取得
6.1.1.2. 画像からアナログメーターを検出
6.1.1.3. アナログメーター検出箇所から円を検出
6.1.1.4. メーターの読み取り
6.2. 推論モデルの作成 ./images/ML_icon.png
6.2.1. 教師データの用意
6.2.1.1. 画像の用意
6.2.1.2. アノテーション
6.2.2. 推論モデルの生成
6.3. podmanコンテナを作成する
6.3.1. 開発前の準備
6.3.2. サンプルコンテナをビルド
6.3.3. コンテナ内に入る
6.4. アプリケーション実行の準備をする
6.5. アプリケーションを作成する
6.5.1. ファイル構成
6.5.2. コンテナ内のファイルの編集
6.5.3. アプリケーションの動作確認
6.5.4. podmanコンテナの保存
6.5.5. podmanコンテナのエクスポート
6.5.6. podmanコンテナとアプリケーションの自動実行
6.5.6.1. confファイルの作成
6.5.6.2. 設定の確認
6.6. 動作確認
6.7. USBカメラから映像を取得するように変更
6.7.1. 撮影対象のparameter.jsonを作成
6.7.2. パラメータファイルの配置
6.7.3. .confファイルの設定
6.7.4. 自動実行の確認
7. インストールディスクの作成
7.1. インストールディスクとは
7.2. インストールディスクを作成する準備を行なう
7.2.1. Armadillo Base OSの更新
7.2.1.1. /etc/swupdate_preserve_fileへの追記
7.2.1.2. アップデートの実行
7.2.2. SWUpdateの初期設定
7.2.3. パスワードの確認と変更
7.2.4. 開発中のみ使用していたコンテナイメージの削除
7.2.5. 開発したコンテナイメージをtmpfsに移行する
7.3. 開発したシステムをインストールディスクにする
7.3.1. インストール時に任意のシェルスクリプトを実行する
7.4. インストールディスクの動作確認
8. 製造・量産する
8.1. ユーザ製品の製造・量産の流れ
8.2. クローンインストールディスクを用いてイメージ書き込みを行なう
8.2.1. インストール時に任意の処理を行なう
8.2.1.1. 個体ごとに異なる固定IPアドレスを設定する
8.2.1.2. インストール実行時のログを保存する
8.2.2. インストールを実行する
9. Appendix
9.1. SWUpdateを用いてソフトウェアをアップデートする
9.1.1. SWUpdateによる初回アップデート
9.2. 作成したコンテナを他のArmadilloに組み込む
9.2.1. podman loadでコンテナイメージを組み込む
9.2.2. SWUpdateでコンテナイメージを組み込む
9.3. Device Treeを変更しハードウェアを拡張する
9.3.1. Device Treeとは
9.3.2. Device Treeをカスタマイズする
9.3.3. 開発中のDTBファイルの書き換え
9.3.3.1. 作成したDTBファイルに差し替えて期待した動作をしなかった場合
9.3.4. DTB確定後の書き換え
9.3.4.1. SWUpdateによる初回アップデート
9.3.4.2. DTBファイルアップデート用のswuイメージを作成する
9.4. コンテナデザインパターン
9.4.1. 複数コンテナで処理を行いコンテナ間でデータを共有する
9.4.2. 複数コンテナ間でデータを共有し、クラウドにアップロードする
9.4.3. コンテナを増やす
9.4.4. ホストコマンドを実行する
9.4.4.1. イベントをトリガにホストコマンドを実行する
9.4.4.2. 任意のタイミングでホストコマンドを使用する
9.5. 機械学習と NPU の使いどころ
9.5.1. 機械学習を活用できる範囲
9.5.2. NPU でできること
9.5.3. 機械学習と NPU を使うことの課題
9.5.4. 機械学習以外の方法
9.5.4.1. Julius を動かす
9.6. ネットワーク
9.6.1. Armadillo-IoT ゲートウェイ G4 のネットワーク概要
9.6.1.1. ネットワークデバイスの種類
9.6.1.2. ネットワーク設定方法
9.6.2. podman のネットワークの仕組み
9.6.2.1. podman のネットワークモード
9.6.2.2. コンテナの IP アドレス
9.6.2.3. ネットワーク関連の Capability
9.6.3. ネットワーク構成例とその設定方法
9.6.3.1. 各 Ethernet ポートを ローカルネットワーク に接続し 3G/LTE は WAN に接続する
9.6.4. 量産製造時のネットワーク設定
9.6.4.1. 全ての機器が同一の設定内容の場合
9.6.4.2. 機器ごとに設定内容が異なる場合
9.6.5. 運用開始後に設定を変更する
9.6.5.1. SWUpdate でネットワーク設定を変更する

図目次

1.1. 機械学習関連情報アイコン
1.2. 補足情報アイコン
1.3. クリエイティブコモンズライセンス
2.1. Armadillo Base OS上でのアプリケーション開発の流れ
2.2. 詳細なアプリケーション開発の流れ
2.3. サンプルアプリケーションの動作
3.1. Armadillo-IoT ゲートウェイ G4への周辺機器の接続
3.2. 接続後のイメージ
4.1. 開発時のイメージ
6.1. サンプルアプリケーションの詳細な動作の流れ
6.2. 元画像
6.3. 物体検出した箇所をもとに画像を切り出し
6.4. 円を検出
6.5. 画像の枠が円に外接するようにリサイズ
6.6. 直線を検出
6.7. Google Images Downloadのインストール
6.8. Google Images Downloadの実行
6.9. Google Images Downloadでダウンロードしたファイル
6.10. 画像ファイルを連番でリネーム
6.11. labelImgをインストールする
6.12. Linux環境におけるlabelImg実行例
6.13. labelImgの起動
6.14. 出力形式の変更
6.15. アノテーション元の選択
6.16. アノテーション情報の保存先の選択
6.17. 作業効率化のための設定1
6.18. 作業効率化のための設定2
6.19. ラベル付け例
6.20. アノテーション情報ファイルを確認
6.21. label_map.pbtxt作成例
6.22. podman関連ファイルをeMMC上に保存する
6.23. Dockerfileのダウンロード
6.24. サンプルコンテナのイメージのビルド
6.25. コンテナ内に入る
6.26. コンテナへパッケージをインストール
6.27. サンプルアプリケーションのダウンロードと展開
6.28. サンプルアプリケーションを構成するファイル
6.29. ATDEからArmadilloへファイルを送信
6.30. コンテナ内にエディタをインストールする
6.31. サンプルアプリケーションの動作確認
6.32. Armadillo-IoT ゲートウェイ G4への周辺機器の接続
6.33. westonを終了
6.34. podmanコンテナから抜ける
6.35. 起動中のpodmanコンテナを確認する
6.36. 停止中のpodmanコンテナを確認する
6.37. podmanコンテナの変更を保存する
6.38. podmanコンテナイメージを外部ストレージに出力する
6.39. sample_container.conf作成例
6.40. sample_container.confのダウンロード
6.41. podman_startの実行例
6.42. sample_container.confの永続化
6.43. コンテナの停止・削除
6.44. サンプル動画に対して物体検出
6.45. サンプル動画内のアナログメーターを読む
6.46. config_param.pyのダウンロードと起動
6.47. アナログメーターを正面から捉えたサンプル画像(image.png)
6.48. アナログメーターの中心をクリック
6.49. 各スケールの位置をクリック
6.50. 各スケールの数値を入力
6.51. 各スケールの数値を入力
6.52. /var/app/rollback/volumes/assetsの作成
6.53. parameter.jsonを配置
6.54. USBカメラを使用するsample_container.conf作成例
6.55. USBカメラの映像からアナログメーターの値を取得
6.56. sample_container.confの永続化
7.1. 任意のファイルパスを/etc/swupdate_preserve_filesに追記する
7.2. Armadillo Base OSをアップデートする
7.3. パスワードを変更する
7.4. 作成済みコンテナ一覧を表示する
7.5. コンテナを削除する
7.6. コンテナイメージ一覧を表示する
7.7. R/Oがfalseのイメージを削除する
7.8. R/Oがtrueのイメージを削除する
7.9. podmanのデータの保存先をtmpfsに変更する
7.10. 開発完了後のシステムをインストールディスクイメージにする
7.11. インストールディスク使用時のログ
7.12. インストールに失敗したArmadilloに出力されるメッセージ
8.1. Windows PCにインストールディスクを接続する
8.2. ip_config.txtの内容
8.3. IPアドレスの確認
8.4. allocated_ips.csvの内容
8.5. インストールログを保存する
8.6. インストールログの中身
9.1. mkswuの取得
9.2. mkswuの初期設定を行う
9.3. swuイメージの配置
9.4. コンテナイメージファイルをインポートする
9.5. 作業用ディレクトリの作成と書き込むファイルのダウンロード
9.6. usb_container_sample.desc作成例
9.7. swuイメージの作成
9.8. アップデート用ファイル群の配置
9.9. DTBファイルの配置
9.10. 作業用ディレクトリの作成と各種ファイルの配置
9.11. usb_dtb_sample.desc作成例
9.12. swuイメージの作成
9.13. アップデート用ファイル群の配置
9.14. センサから読み取ったデータをPCに出力するシステム構成図
9.15. センサからデータを読み取りクラウドに出力するシステム構成図
9.16. 複数のセンサからデータを読み取るシステム構成図
9.17. TensorFlow Lite のインストール
9.18. ONNX Runtime のインストール
9.19. ArmNN のインストール
9.20. OpenCV のインストール
9.21. Julius のインストール
9.22. PIL のインストール
9.23. コンテナ内に入る
9.24. コンテナへ Julius をインストール
9.25. ディクテーションキットのダウンロード
9.26. 音声認識を実行
9.27. nmcli のコマンド書式
9.28. nmtui 起動後の画面
9.29. ブリッジモードの構成
9.30. ブリッジモード時のネットワークインターフェース一覧 (ホスト OS)
9.31. ブリッジモード時のネットワークインターフェース一覧 (コンテナ内)
9.32. hostモードの構成
9.33. host モード時のネットワークインターフェース一覧 (ホスト OS)
9.34. host モード時のネットワークインターフェース一覧 (コンテナ内)
9.35. ネットワークの構成
9.36. 有線 LAN インターフェースの設定を行う (nmcli)
9.37. nmtui を起動する
9.38. nmtui 起動後の画面
9.39. nmtui コネクション選択画面
9.40. nmtui コネクション種別選択画面
9.41. nmtui コネクション入力画面
9.42. nmtui IPv4設定画面
9.43. nmtui Route設定画面
9.44. nmtui デフォルトゲートウェイ無効化
9.45. nmtui コネクション Activate画面
9.46. nmtui コネクション Deactivate後の画面
9.47. 有線 LAN インターフェース設定を永続化する
9.48. 3G/LTE 回線の接続設定を行う
9.49. ファイアーウォールの設定を行う
9.50. ファイアーウォールの設定を永続化する
9.51. ネットワークデバイスの状態を確認する
9.52. IP アドレスの設定を確認する
9.53. ルーティングテーブルの内容を確認する
9.54. ファイアーウォールの設定を確認する
9.55. .conf ファイル設定例 (IPv4 の場合)
9.56. .conf ファイル設定例 (IPv6 の場合)
9.57. コンテナ起動方法 (IPv4 の場合)
9.58. コンテナ起動方法 (IPv6 の場合)
9.59. コンテナ内に入る (IPv4, IPv6 共通)
9.60. ATDE上へのコネクションファイルのコピーとパーミッションの設定を行う
9.61. network-setting.desc ファイルを作成する
9.62. コネクションファイルを含む swu イメージを作成する