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.2. 推論モデルの作成 ./images/ML_icon.png
6.2.1. 教師データの用意
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.6. 動作確認
6.7. USBカメラから映像を取得するように変更
6.7.1. 撮影対象のparameter.jsonを作成
6.7.2. パラメータファイルの配置
6.7.3. .confファイルの設定
6.7.4. 自動実行の確認
7. 量産時のイメージ書き込み手法
8. 量産用インストールディスクの作成
8.1. インストールディスクとは
8.2. インストールディスクを作成する準備を行なう
8.2.1. Armadillo Base OSの更新
8.2.2. SWUpdateの初期設定
8.2.3. パスワードの確認と変更
8.2.4. 開発中のみ使用していたコンテナイメージの削除
8.2.5. 開発したコンテナイメージをtmpfsに移行する
8.3. 開発したシステムをインストールディスクにする
8.3.1. インストール時に任意のシェルスクリプトを実行する
8.4. インストールディスクの動作確認
9. 量産用swuイメージの作成
9.1. swuイメージとは
9.2. SWUpdateで量産を行なう際の流れ
9.3. 初回アップデート用swuイメージの作成
9.4. 書き込むイメージの準備
9.5. descファイルの記述
9.5.1. イメージ書き込み時にログを残したい場合
9.6. swuイメージの作成
9.7. SWUpdateの実行とテスト
9.7.1. SWUpdateの実行
9.7.2. SWUpdate後のテスト
10. 製造・量産する
10.1. ユーザ製品の製造・量産の流れ
10.2. クローンインストールディスクを用いてイメージ書き込みを行なう
10.2.1. インストール時に任意の処理を行なう
10.2.2. インストールを実行する
10.3. SWUpdateを用いてイメージ書き込みを行なう
10.3.1. SWUpdateの処理内容を変更したい場合
10.3.2. インストールを実行する
11. Appendix
11.1. SWUpdateを用いてソフトウェアをアップデートする
11.1.1. SWUpdateによる初回アップデート
11.2. 作成したコンテナを他のArmadilloに組み込む
11.2.1. podman loadでコンテナイメージを組み込む
11.2.2. SWUpdateでコンテナイメージを組み込む
11.3. Device Treeを変更しハードウェアを拡張する
11.3.1. Device Treeとは
11.3.2. Device Treeをカスタマイズする
11.3.3. 開発中のDTBファイルの書き換え
11.3.4. DTB確定後の書き換え
11.4. コンテナデザインパターン
11.4.1. 複数コンテナで処理を行いコンテナ間でデータを共有する
11.4.2. 複数コンテナ間でデータを共有し、クラウドにアップロードする
11.4.3. コンテナを増やす
11.4.4. ホストコマンドを実行する
11.5. 機械学習と NPU の使いどころ
11.5.1. 機械学習を活用できる範囲
11.5.2. NPU でできること
11.5.3. 機械学習と NPU を使うことの課題
11.5.4. 機械学習以外の方法
11.6. ネットワーク
11.6.1. Armadillo-IoT ゲートウェイ G4 のネットワーク概要
11.6.2. podman のネットワークの仕組み
11.6.3. ネットワーク構成例とその設定方法
11.6.4. 量産製造時のネットワーク設定
11.6.5. 運用開始後に設定を変更する

図目次

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の永続化
8.1. 任意のファイルパスを/etc/swupdate_preserve_filesに追記する
8.2. Armadillo Base OSをアップデートする
8.3. パスワードを変更する
8.4. 作成済みコンテナ一覧を表示する
8.5. コンテナを削除する
8.6. コンテナイメージ一覧を表示する
8.7. R/Oがfalseのイメージを削除する
8.8. R/Oがtrueのイメージを削除する
8.9. podmanのデータの保存先をtmpfsに変更する
8.10. 開発完了後のシステムをインストールディスクイメージにする
8.11. インストールディスク使用時のログ
8.12. インストールに失敗したArmadilloに出力されるメッセージ
9.1. Armadilloに書き込みたいソフトウェアをATDEに配置
9.2. descファイルの記述例(Armadillo-IoT ゲートウェイ G4の場合)
9.3. descファイルの記述例(Armadillo-IoT ゲートウェイ A6Eの場合)
9.4. ログを残す際のdescファイルの記述例(Armadillo-IoT ゲートウェイ G4の場合)
9.5. ログを残す際のdescファイルの記述例(Armadillo-IoT ゲートウェイ A6Eの場合)
9.6. mkswuコマンドの実行
9.7. 各イメージをUSBメモリに配置
9.8. USBメモリをアンマウント
10.1. Windows PCにインストールディスクを接続する
10.2. ip_config.txtの内容
10.3. IPアドレスの確認
10.4. allocated_ips.csvの内容
10.5. インストールログを保存する
10.6. インストールログの中身
11.1. mkswuの取得
11.2. mkswuの初期設定を行う
11.3. swuイメージの配置
11.4. コンテナイメージファイルをインポートする
11.5. 作業用ディレクトリの作成と書き込むファイルのダウンロード
11.6. usb_container_sample.desc作成例
11.7. swuイメージの作成
11.8. アップデート用ファイル群の配置
11.9. DTBファイルの配置
11.10. 作業用ディレクトリの作成と各種ファイルの配置
11.11. usb_dtb_sample.desc作成例
11.12. swuイメージの作成
11.13. アップデート用ファイル群の配置
11.14. センサから読み取ったデータをPCに出力するシステム構成図
11.15. センサからデータを読み取りクラウドに出力するシステム構成図
11.16. 複数のセンサからデータを読み取るシステム構成図
11.17. TensorFlow Lite のインストール
11.18. ONNX Runtime のインストール
11.19. ArmNN のインストール
11.20. OpenCV のインストール
11.21. Julius のインストール
11.22. PIL のインストール
11.23. コンテナ内に入る
11.24. コンテナへ Julius をインストール
11.25. ディクテーションキットのダウンロード
11.26. 音声認識を実行
11.27. nmcli のコマンド書式
11.28. nmtui 起動後の画面
11.29. ブリッジモードの構成
11.30. ブリッジモード時のネットワークインターフェース一覧 (ホスト OS)
11.31. ブリッジモード時のネットワークインターフェース一覧 (コンテナ内)
11.32. hostモードの構成
11.33. host モード時のネットワークインターフェース一覧 (ホスト OS)
11.34. host モード時のネットワークインターフェース一覧 (コンテナ内)
11.35. ネットワークの構成
11.36. 有線 LAN インターフェースの設定を行う (nmcli)
11.37. nmtui を起動する
11.38. nmtui 起動後の画面
11.39. nmtui コネクション選択画面
11.40. nmtui コネクション種別選択画面
11.41. nmtui コネクション入力画面
11.42. nmtui IPv4設定画面
11.43. nmtui Route設定画面
11.44. nmtui デフォルトゲートウェイ無効化
11.45. nmtui コネクション Activate画面
11.46. nmtui コネクション Deactivate後の画面
11.47. 有線 LAN インターフェース設定を永続化する
11.48. 3G/LTE 回線の接続設定を行う
11.49. ファイアーウォールの設定を行う
11.50. ファイアーウォールの設定を永続化する
11.51. IPv6 の無効化を行う
11.52. ネットワークデバイスの状態を確認する
11.53. IP アドレスの設定を確認する
11.54. ルーティングテーブルの内容を確認する
11.55. ファイアーウォールの設定を確認する
11.56. .conf ファイル設定例 (IPv4 の場合)
11.57. .conf ファイル設定例 (IPv6 の場合)
11.58. コンテナ起動方法 (IPv4 の場合)
11.59. コンテナ起動方法 (IPv6 の場合)
11.60. コンテナ内に入る (IPv4, IPv6 共通)
11.61. ATDE上へのコネクションファイルのコピーとパーミッションの設定を行う
11.62. network-setting.desc ファイルを作成する
11.63. コネクションファイルを含む swu イメージを作成する