SDKパッケージの構造とビルド方法

 

目次


 

はじめに


AdamApp は、定められた形式(AdamApp パッケージ形式)にパッケージングをして、インス トールする必要があります。このため、AdamAppSDK では、AdamApp のビルドと AdamApp パッケージ 作成を、容易に行える環境を提供します。

本章では、AdamApp のビルド、及び、AdamApp パッケージ形式の作成に必要な情報と手順について、 AdamAppSDK で提供するサンプルプログラム(SkeletonSampleApp)を用いて説明します。

また、このチュートリアルでは、SDKのインストールディレクトリを${SDK_DIR}として記載します。

 

開発環境のディレクトリ構成


AdamAppSDK のディレクトリ構成は、以下のようになります。

${SDK_DIR}/ 追加アプリ作成トップディレクトリ

bin/ Adam 実行プログラムのディレクトリ

build_config/ make 用ルールファイルのディレクトリ

conf/ 設定情報用ディレクトリ

external/ AdamApp で利用する Open Source ライブラリファイルのディレクトリ

include/ AdamApp 用ヘッダファイルディレクトリ

lib/ AdamApp 用ライブラリファイルディレクトリ

src/ AdamApp のソースコードを格納するディレクトリ

tool/ ツール類のディレクトリ

www/ Adam の操作用 HTML ページを格納するディレクトリ(未使用)

sdk_version.txt AdamSDK のバージョンを書いたファイル

setup_env.sh make 環境設定用ファイル

 これ以降の節で、各ディレクトリ/ファイルの詳細な説明を行います。

 

include: AdamApp のヘッダーファイルのディレクトリ

include ディレクトリは、AdamApp(追加アプリ)を作成する際に必要なヘッダファイルを置いています。提供するヘッダファイルは以下の通りです。

AdamType.h Adam の型定義がされているヘッダファイルです。

AdamApi.h 追加アプリ用 API ヘッダです。

 

lib: AdamApp のライブラリのディレクトリ

lib ディレクトリは、AdamApp(追加アプリ)を作成する際に必要なライブラリファイルを置いています。提供するライブラリファイルは、以下の通りです。

libadam_common.so / libadam_common.a

Adam 共通ライブラリ: Adam 関連プロセスの共通ライブラリです。

libadam.so / libadam.a
追加アプリ用 API ライブラリ: 追加アプリ向けの API を提供するライブラリです。

なお、ライブラリファイルは、実行環境毎に異なるものを使う必要があります。このため、実行環境毎のディレクトリを作り、その下に、それぞれの実行環境用のライブラリファイルを用意しています。

${SDK_DIR}/lib/aarch64-linux-gnu/

i-pro ambaCV2X model 用ライブラリ

 

src: AdamApp のソースファイルのディレクトリ

src ディレクトリは、AdamApp(追加アプリ)のソースファイルを格納するディレクトリです。この srcディレクトリの直下に、AdamApp 毎のディレクトリをさらに作成して、そこにソースファイルを置くことを想定しています。
AdamApp のソースファイルの配置方法を理解しやすくするため、AdamApp のサンプルとして、srcディレクトリ直下に、skelton_sample_appディレクトリを配置しています。ユーザは、このskelton_sample_app ディレクトリをコピーして、そのコピーしたディレクトリ内でソースファイルを作成することで、ビルド環境の構築が容易になります。なお、skelton_sample_app ディレクトリ以下には、実際にビルド&可能な簡単なサンプルアプリケーションを格納していますので、AdamApp の API の使用方法の参考にすることができます。srcディレクトリ、及び、skelton_sample_app ディレクトリは、以下の構成になっています。

${SDK_DIR}/src/adamapp/

adamapp_setting.mk Make 用共通設定ファイル

adam_make_package.mk Make用共通ルールファイル

 

${SDK_DIR}/src/adamapp/skeleton_sample_app/

bin/ AdamApp 実行プログラムを格納するディレクトリ

conf/ コンフィギュレーション情報を格納するディレクトリ

data/ AdamApp 用外部データファイルを格納するディレクトリ

external/ AdamApp で使う外部ソフトウェアを配置するディレクトリ

setup/ セットアップスクリプトファイルを格納するディレクトリ

Makefile メイクファイル

configuration.txt コンフィギュレーションファイル

skeletonSampleApp.cpp サンプルアプリソースプログラム

 

bin: Adam 実行プログラムのディレクトリ

作成した AdamApp(追加アプリ)を実行させるために必要となる、Adam の実行プログラムを置いています。提供している実行プログラムは、下記のものになります。

adamCore : Adam の主制御を行うプログラムです。
adam.cgi : Adam の CGI プログラムです。HTTP サーバから呼び出されます。
sdkCam : sdkCAM のプログラムです。

なお、実行プログラムは、実行環境毎に異なるものを使う必要があります。このため、実行環境毎のディレクトリを作り、その下に、それぞれの実行環境用の実行プログラムを用意しています。

${SDK_DIR}/bin/

i686-linux-gnu/ PC(32bit 版)実行用バイナリ

X86_64-linux-gnu/ PC(64bit 版)実行用バイナリ

 

build_config: ビルド用基本設定ファイルのディレクトリ

build_config ディレクトリは、AdamApp アプリのビルドの際に必要となる make 用ルールファイルを格納しています。通常は、このディレクトリ以下のファイルを編集する必要はありません。もし、ユーザ独自で make ルールを変更したい場合には、このディレクトリ以下のファイルを編集してください。

 

tool: ツールのディレクトリ

tool ディレクトリは、コンフィギュレーション情報生成ツールなどの Adam 用のツールや、Adam 起動用スクリプトファイルなど、Adam 関連ファイルの作成や実行を行うツール類を格納したディレクトリです。
提供するツールは、下記のものになります。

adamapp_configurator コンフィギュレーションファイルからコンフィギュレーション情報を生成するスクリプト
httpdctl.sh httpd 起動、終了スクリプト (busybox httpd を使います)
startAdam.sh Adam 起動スクリプト
stopAdam.sh Adam 終了スクリプト

 

external: AdamApp に使用されるオープン ソース ライブラリのディレクトリ

external ディレクトリは、AdamApp のビルドに必要な Open Source のライブラリファイルを置いています。このディレクトリに格納されている Open Source の種類については、adamappsdk/external/license を参照してください。
なお、ライブラリファイルは、実行環境毎に異なるものを使う必要があります。このため、ターゲット毎のディレクトリを作り、その下に、それぞれの実行環境用のライブラリファイルを用意しています。

${SDK_DIR}/external/license/
external ディレクトリに格納されている Open Source のライセンスを置き場です。

 

${SDK_DIR}/external/lib/aarch64-linux-gnu/
i-pro ambaCV2X model 用ライブラリ

 

sdk_version.txt: SDK のバージョン ファイル

iPRO_CAMERA_SDK のバージョン情報が記載されています。

 

setup_env.sh: 設定ファイル

ビルドに必要な環境設定ファイルです。

 

AdamApp のパッケージ形式


AdamApp パッケージ形式とは、カメラにインストールする際のパッケージ形式です。 具体的には、下記に示すディレクトリ構成で、かつ、これらを zip 化 + 暗号化したものです。※C/C++を例に記載します。

bin/

AdamApp 実行プログラムを格納するディレクトリ

conf/

コンフィギュレーション情報を格納するディレクトリ

data/data_CV2X/data_CV5X

AdamApp 用外部データファイルを格納するディレクトリ
※data_CV2X/data_CV5X はSDK1.80以降のみ

 

external/

AdamApp で使う外部ソフトウェアを配置するディレクトリ

setup/

セットアップスクリプトファイルを格納するディレクトリ

上記のディレクトリに、AdamApp の実行プログラムや、コンフィギュレーション情報などの関連ファイ ルを配置します。それぞれのディレクトリの詳しい説明は、下記の通りです。

 

⚫ bin ディレクトリ: AdamApp 実行プログラムを格納するディレクトリ

bin ディレクトリは、AdamApp の実行プログラムを格納するディレクトリです。実行プログラ ム名は、任意の名前で構いません。 なお、AdamAppSDKを用いて、AdamAppをビルド、パッケージ化した場合には、このディレ クトリに、実行プログラムが自動的に配置されます。その際、実行プログラム名は、Makefile の PROG_NAME マクロで指定した名前となります。

⚫ conf ディレクトリ: コンフィギュレーション情報を格納するディレクトリ

conf ディレクトリは、AdamApp 用のコンフィギュレーション情報を格納するディレクトリで す。コンフィギュレーション情報は、applicense.bin と profile.binの 2つのファイルが必須です。 applicense.bin と profile.bin の 2 つのファイルは、adamapp_configurator というツールを用い て、コンフィギュレーションファイル(AdamAppSDK のサンプルでは、configuration.txt とい う名前で配置しています)から生成します。コンフィギュレーションファイルの記載方法につい ては、コンフィギュレーションファイルのフォーマットを参照してください。 なお、 AdamAppSDK を用いて、 AdamApp をビルド、パッケージ化した場合には、 configuration.txt から applicense.bin と profile.bin を自動的に生成して、このディレクトリに配 置します。

⚫ data/data_CV2X/data_CV5X ディレクトリ: AdamApp 用外部データファイルを格納するディレクトリ

data ディレクトリは、AdamApp 用外部データファイルを配置できる唯一のディレクトリで す。 AdamApp 用外部データファイルを、インストール時に同時にコピーしたい場合には、そのフ ァイルをこの下に配置します。インストール時に、コピーしたい AdamApp 用外部データファイ ルがない場合は、このディレクトリは空にしておきます。
data_CV2Xディレクトリは、ambaCV2X用のAdamApp 用外部データファイルを配置できるディレクトリで す。
data_CV5Xディレクトリは、ambaCV5X用のAdamApp 用外部データファイルを配置できるディレクトリで す。
ambaCV2XおよびambaCV5Xで共用する場合はdataディレクトリにAdamApp 用外部データファイルを格納すれば、共用されます。ambaCV2XおよびambaCV5XでAdamApp 用外部データファイルを区別する場合はdata_CV2Xディレクトリおよびdata_CV5Xディレクトリの下に配置します。

⚫ external ディレクトリ: AdamApp で使う外部ソフトウェアを配置するディレクトリ

AdamApp で利用する外部ソフトウェアのライブラリファイル(.a や.so ファイル)とヘッダファイル (.h .hpp .hxx ファイルなど)を、external ディレクトリ以下に配置してください。

⚫ setup ディレクトリ: セットアップスクリプトファイルを格納するディレクトリ

setup ディレクトリは、AdamApp のインストール時、アップデート時、アンインストール時に 実行させたいシェルスクリプトを格納します。記述できるシェルスクリプトは、Bourne Shell (実際には、Bourne Shell 互換シェルである ash を利用)スクリプトのみです。 シェルスクリプトは、下記の環境変数が渡されて実行されますので、シェルスクリプト内から これら環境変数を参照することができます。

ADAM_INSTALLID

AdamApp のインストール ID

 

ADAM_APP_DATA_DIR

AdamApp 用外部データファイルを格納するディレクトリのパス (= data ディレクトリのパス)

 

ADAM_APP_TMP_DIR

AdamApp の一時的なファイルを格納するディレクトリのパス

それぞれのシェルスクリプト名は、コンフィギュレーションファイルで指定します。 なお、シェルスクリプトを使うかどうかを、スクリプト毎に任意に設定可能です。使わない場 合は、コンフィギュレーションファイルに、シェルスクリプトのファイル名を記載しないでくだ さい。(その際、setup ディレクトリに、スクリプトファイルを配置しても問題は発生しません が、FlashROM の容量を無駄に消費することになりますので、配置しない方がよいです。)

➢ インストールスクリプト(任意)

AdamApp をインストールする際に実行されるシェルスクリプトです。AdamApp がインス トールされた直後に実行されます。

➢ アップデートスクリプト(任意)

AdamApp をアップデートする際に実行されるシェルスクリプトです。AdamApp がアップ デートされた直後に実行されます。

➢ アンインストールスクリプト(任意)

AdamApp をアンインストールする際に実行されるシェルスクリプトです。AdamApp がア ンインストールされる直前に実行されます。

 

Pythonの場合は下記の通りです。詳細な説明はC/C++と同様のため省略します。

bin/

AdamApp 実行プログラムを格納するディレクトリ

 

conf/

コンフィギュレーション情報を格納するディレクトリ

 

data/

AdamApp 用外部データファイルを格納するディレクトリ

 

python/

Python スクリプトファイルを格納するディレクトリ

 

setup/

セットアップスクリプトファイルを格納するディレクトリ

 

ターゲット依存マクロ


この節では、ターゲット依存マクロについて説明します。ターゲット依存マクロは、機種や OS などの違 いを示すもので、マクロ変数として定義され、ソースコード、ヘッダファイル、Makefileから利用すること ができます。開発者は、機種や OS などによって AdamApp の実装を変える必要がある場合、このマクロを 利用することで、作り分けることができます。

 

ソースファイルとヘッダーファイルのマクロ

ソースファイル、及び、ヘッダファイル用のターゲット依存マクロは、下記のマクロが定義されます。

Macro Name

Description

Macro Name

Description

Macro to represent the architecture (ADAM_TARGET_ARCH_XXX)

ADAM_TARGET_ARCH_aarch64-linux-gnu

Linux 64bit on aarch64 (For ambaCV2X)

Macro to represent the model name (ADAM_TARGET_MODEL_XXX)

ADAM_TARGET_MODEL_ipro

i-pro Model

Macro to represent the OS (ADAM_TARGET_OS_XXX)

ADAM_TARGET_MODEL_linux

Linux

Macro to represent the detail platform (ADAM_TARGET_PF_XXX)

ADAM_TARGET_PF_ipro_ambaCV2X_linux

i-pro Model / ambaCV2X / Linux

 

Makefileのマクロ

Makefile 用のターゲット依存マクロは、下記のマクロが定義されます。

Macro Name

Value

Description

Macro Name

Value

Description

ADAM_TARGET_ARCH

 

Macro to represent the architecture

 

aarch64-linux-gnu

Linux 64bit on aarch64 (For ambaCV2X)

ADAM_TARGET_MODEL

 

Macro to represent the model name

 

ipro

i-pro Model

ADAM_TARGET_OS

 

Macro to represent the OS

 

linux

Linux

ADAM_TARGET_PF

 

Macro to represent the detail platform

 

ipro_ambaCV2X_linux

i-pro Model / ambaCV2X / Linux

 

AdamApp パッケージの生成手順


この節では、AdamApp パッケージの具体的な作成手順について、AdamAppSDK のサンプルプログラム (SkeletonSampleApp)を用いて、説明します。 パッケージ作成手順は、大きく分けて、下記の 3 つのフェーズで構成されています。

 

1.ソースファイルの作成、Makefile の作成

 AdamApp のソースファイルを作成します。

2.関連ファイルの作成と配置

 AdamApp のビルド・動作に必要なファイルを作成し、適切なディレクトリに配置します。

3.ビルド & パッケージ作成

 AdamApp のビルド(コンパイル、リンク)と、パッケージ作成を行います。

 

それぞれの具体的な方法について、これ以降で説明していきます。

 

ソースファイルと Makefile を生成する

(1) ソースファイルの作成と配置

AdamAppSDK では、AdamApp のソースコードは、
<AdamAppSDK のインストールディレクトリ>/src/adamapp
以下に置くことを前提としています。

Pythonのソースコードは、

<AdamAppSDKのインストールディレクトリ>/src/adamapp-py

となります。

その前提に従って、AdamAppSDK 付属のサンプルプログラム(SkeletonSampleApp)のソースコードは、
<AdamAppSDK の イ ン ス ト ー ル デ ィ レ ク ト リ >/src/adamapp/skeleton_sample_app
に配置されています。
このため、新規に AdamApp を作りたい場合は、
<AdamAppSDK のインストールディレクトリ>/src/adamapp/<新規 AdamApp のディレクトリ名>

のディレクトリを作成し、その下にソースコード、及び、ヘッダファイル、Makefile を作成・配置する
ようにしてください。
なお、skeleton_sample_app ディレクトリをコピーして新規ディレクトリを作成することで、新規
AdamApp 作成に必要なファイル一式もコピーされますので、新規 AdamApp を作る場合は、
skeleton_sample_app ディレクトリをコピーして利用することをお薦めします。

※Pythonの場合はjpeg_appディレクトリを利用することをお薦めします。

 

(2) 外部ソフトウェアのライブラリとヘッダファイルの配置(必要であれば)

AdamApp で利用する外部ソフトウェアのライブラリファイル(.a や.so ファイル)とヘッダファイル
(.h .hpp .hxx ファイルなど)を、external ディレクトリ以下に配置してください。

 

(3) Makefile の編集

ソースファイル、ヘッダファイルの作成後、Makefile の編集を行います。Makefileは雛形が用意されて
いますので、その雛形に必要な情報を追記して完成させます。Makefile の雛形は、変数が並んでいて、
それらの変数に値を追記する形で構成されています。
下記は、サンプルプログラム(SkeletonSampleApp)のMakefile の雛形の中から、代表的な変数を抜き出し、説明したものになります。この説明を参考にして、Makefile の編集を行って下さい。

PROG_NAME= SkeletonSampleApp

PROG_NAME は、作成されるプログラム名を指定する変数です。 プログラム名には、英数字、ハイフン、アンダースコア、ピリオドを用いることが できます。また、プログラム名の長さは 32 文字までです。

SRC_FILES= skeletonSampleApp.cpp

SRC_FILES は、ビルド対象のソースファイルを指定する変数です。 ビルド対象のすべてのソースファイルを、この変数に指定してください。 なお、この変数は、C のソースファイル(.c の拡張子のファイル)、C++のソースフ ァイル(.cpp の拡張子のファイル)を混在して指定可能です。

ADD_LIB_PATH=$(ADAM_ADD_LIB_PATH)

ADD_LIB_PATH+=

ADD_LIB_PATH は、ライプラリパスを指定する変数です。 指定時には、パス名のみを記載してください。 Adam のライブラリ以外をリンクする場合に、追記して下さい。 なお、ADD_LIB_PATH に設定済みの値[$(ADAM_ADD_LIB_PATH)]は、消さない でください。

ADD_LIBS=$(ADAM_ADD_LIBS)

ADD_LIBS+=

ADD_LIBS は、リンクするライプラリ名を指定する変数です。 Adam のライブラリ以外をリンクする場合は、この変数に追記してください。 なお、ADD_LIBS に設定済みの値[$(ADAM_ADD_LIBS)]は、消さないでください。

ADD_INCLUDE_PATH=$(ADAM_ADD_INCLUDE_PATH)

ADD_INCLUDE_PATH+=

ADD_INCLUDE_PATH は、include パスを指定する変数です。 Adam の include ファイル以外を include する場合に、そのパスを追記して下さ い。 なお、ADD_INCLUDE_PATH に設定済みの値[$(ADAM_ADD_INCLUDE_PATH)]は、 消さないでください。

PROG_CPPFLAGS= $(ADAM_DFLAGS)

PROG_CPPFLAGS+=

PROG_CPPFLAGS は、プリプロセッサオプションを指定する変数です。 AdamApp 独自のプリプロセッサオプションがある場合は、この変数に追記して下さ い。 なお、PROG_CPPFLAGSに設定済みの値[$(ADAM_DFLAGS)]は、消さないでくださ い。

PROG_CFLAGS= $(ADAM_CFLAGS)

PROG_CFLAGS+=

PROG_CFLAGS は、C のコンパイルオプションを指定する変数です。 AdamApp 独自の C コンパイルオプションがある場合は、この変数に追記して下さ い。 なお、PROG_CFLAS に設定済みの値[$(ADAM_CFLAGS)]は、消さないでくださ い。

PROG_CXXFLAGS= $(ADAM_CXXFLAGS)

PROG_CXXFLAGS+= -fno-rtti

PROG_CXXFLAGS+=

PROG_CXXFLAGS は、C++のコンパイルオプションを指定する変数です。 AdamApp 独自の C++コンパイルオプションがある場合は、この変数に追記して下さ い。 なお、PROG_CXXFLAGS に設定済みの値[$(ADAM_CXXFLAGS)]は、消さないでく ださい。

 

ファイルの生成と配置

(1) AdamApp 用外部データファイルの作成と配置

AdamApp から Read/Write したいファイルがある場合は、skeleton_sample_app/data ディレクトリ
以下に、作成・配置してください。なお、data ディレクトリ以下に配置されたファイルは、AdamApp
パッケージ作成時に、AdamApp パッケージの中に一緒に含められます。このため、AdamApp が実行
時には、AdamApp から data ディレクトリに配置されたファイルにアクセスすることができます。

 

(2) スクリプトファイルの作成と配置

AdamApp は、インストール時(直後)、アップデート時(直後)、アンインストール時(直前) に、指定されたスクリプトを実行する機能を持っています。それぞれの時に、実行したいスクリプトがあれば、skeleton_sample_app/setup ディレクトリに配置してください。もし、実行したいスクリプトがなければ、配置する必要はありません。

 

(3) コンフィギュレーションファイルの作成

コンフィギュレーションファイルのフォーマットに示す記載方法に従って、コンフィギュレーションファイルを作成し、configuration.txt という ファイル名で、skeleton_sample_app/ディレクトリ直下に配置してください。

 

(4) 設定値ファイルの作成

AdamApp で、設定値管理機能を用いる場合は、こちらに従って、設定値管理ファイルを作成し、appPrefs.json というファイル名で、skeleton_sample_app/ディレクトリ直下に配置してください。

 

AdamApp のビルドとパッケージの生成

AdamApp に必要なファイルの作成と配置が完了したら、AdamApp のビルドとパッケージ作成を行いま
す。具体的には、(1)AdamApp の実行環境に対応する設定ファイルを読み込み、(2)make の実行、を実施し
ます。
詳しい手順について、SDK v1.71以前を利用される場合はこちらを参照ください。
SDK v1.80以降を利用される場合はこちらを参照ください。

 

ambaCV2XおよびambaCV5Xの拡張アプリを1ファイルにまとめてビルドする

ambaCV2XおよびambaCV5Xのアプリを1ファイルにまとめる方法を説明します。1ファイルにまとめる必要が無い場合は実施しなくても問題ありません。
事前にambaCV2XおよびambaCV5Xのアプリをビルドしておきます。例としてPythonのsqlite_appをビルドした場合は、下記のファイルが生成されることになります。

SQLiteSampleAppPy_V0_1_ambaCV2X.ext
SQLiteSampleAppPy_V0_1_ambaCV2X.zip
SQLiteSampleAppPy_V0_1_ambaCV5X.ext
SQLiteSampleAppPy_V0_1_ambaCV5X.zip

このまま、下記の通り対象のディレクトリに移動しmake packを実行します。

cd ${SDK_DIR}/src/adamapp-py/sqlite_app/ make pack

成功すると、ambaCV2XおよびambaCV5Xのアプリが1ファイルにまとめられます。

SQLiteSampleAppPy_V0_1_ambaCV2X5X.ext
SQLiteSampleAppPy_V0_1_ambaCV2X5X.zip

上記ファイルはambaCV2XカメラおよびambaCV5Xカメラに利用可能です。

make pack後ののファイルサイズが約99MB以下の場合に、ambaCV2XおよびambaCV5Xカメラ両方へのアップロードが可能です。実動作はご確認ください。

ambaCV2XおよびambaCV5Xのアプリが1ファイルにまとめられると、その分ファイルサイズが大きくなります。ファイルサイズが大きいとアプリが動作しない場合があります。ファイルサイズ上限はカメラの機種や状態に依存して変動しますので、ご注意ください。

 

コンフィギュレーションファイルのフォーマット


コンフィギュレーションファイルとは、AdamApp の動作に必要な情報を記述したファイルです。Adam
実行環境は、このファイルの内容を参照して、AdamApp の制御(インストール/開始など)を行います。このため、このファイルの内容が誤っている場合は、AdamApp のインストールや開始に失敗することがありますので、正確に記述してください。
なお、このファイルは、AdamApp パッケージの作成時に参照されますので、AdamApp 作成のための
make 実行前までに作成しておく必要があります。

具体的な記述例については、任意のサンプルアプリのconfiguration.txt を参照してください。

${SDK_DIR}/src/adamapp/[任意のサンプルアプリ]/configuration.txt

 

configuration.txt の各用語

コンフィギュレーションファイルの各項目は、タグと値で構成されており、下記のフォーマットで記述し ます。

# 行頭の「#」はコメントアウトを表わす

# head of line ‘#’ means comment out

TagName Value

TagName と Value の間の空白は、1文字以上のスペースか、タブで構成してください。行頭の「#」は、
コメントアウトを表わします。なお、行の途中に「#」が来ても、コメントアウトとは認識されませんの
で、ご注意ください。
具体的なタグの種類は、Table1.4.1-1 に示しています。また、Value に使える文字は、タグの種類によって異なりますので、こちらについても Table1.4.1-1 を参照してください。
記述の具体例を下記に示します。

# AdamApp 実行ファイル名の設定

# set of the name of execution file of AdamApp

APPLICATION SkeletonSampleApp

 

# AdamApp のバージョンの設定

# set of version of AdamApp

APPVERSION V0.01

また、項目によっては、複数設定することも可能です。複数設定する場合は、下記のように項目を複数の 項目を並べて記述してください。

# APPNAME(AdamApp の正式名称)の設定

# set of the official name of AdamApp

APPNAME0 Sample Application

APPNAME1 サンプルアプリケーション

APPNAME5 esempio di applicazione

コンフィギュレーションファイルに記載できるタグ名の種類は、下記の通りです。
なお、選択性に、「M(Mandatory)」と書かれている項目は、記述必須の項目です(何も書かれていてい
ない項目は、省略可能です)。

 

Table 1.4.1-1 コンフィギュレーションファイルに記載するタグの説明

タグ名

説明

複数指定

選択性

タグ名

説明

複数指定

選択性

ア プ リ ケ ー シ ョ ン 名 関 連 情 報

APPLICATION

AdamApp の実行ファイル名。 Makefile の PROG_NAME 変数と同じ名前を記載します。 使える文字は、英数字、ハイフン、アンダースコア、ピリオド で、256 文字以内です。

 

M

APPVERSION

AdamApp のバージョン。 使える文字は、英数字、ピリオドで、7 文字以内です。

 

M

APPNAME

AdamApp の正式名称。
この AdamApp の正式名称は、複数言語に対応しているため、
APPNAME0 Sample Application
というように APPNAME + リージョンコードというタグ名を構成
します。複数言語の正式名称を記載する場合には、この項目を複
数記載してください。

各言語に対応するタグ名は下記の通りです。

APPNAME0:英語

APPNAME1:日本語

APPNAME5:イタリア語

APPNAME7:フランス語

APPNAME9:ドイツ語

APPNAME11:スペイン語

APPNAME12:中国語

APPNAME13:ロシア語

APPNAME14:ポルトガル語

なお、APPNAME0(英語)は、必ず指定してください。その他の
APPNAME の指定については、任意です。
シングルクォートは使用できません。文字数は、32 文字以内です。
なお、文字コードは UTF-8 でなければなりません。

O

M

リ ソ ー ス 関 連 情 報

ROMSIZE (*1)

AdamApp が利用する ROM 使用量 (KB)。
この ROM 使用量には、AdamApp の実行ファイルだけでなく、
data ディレクトリに格納するファイルのサイズなども含みます。
AdamApp のインストール時に、この値を参照して、インストール可能かどうかを判断します。

 

M

RAMSIZE (*2)

AdamApp が利用する RAM 使用量(KB)
AdamApp のインストール時に、この値を参照して、インストール可能かどうかを判断します。
AdamApp の開始時に、この値を参照して、開始可能かどうかを判断します。

 

M

CPURATE (*2)

AdamApp が利用する CPU 使用率(%)

WEB API getApplicationListの応答に使用されます。

 

M

AIACCRATE (*3)

AdamApp が利用する AI アクセラレータ使用率(%)

 

 

AIMEMSIZE (*3)

AdamApp が利用する AI メモリ使用量(KB)

 

 

ス ク リ プ ト フ ァ イ ル 情 報

INSTALLER

インストール実行直後に実行されるシェルスクリプト名。
記述できるシェルスクリプトは、Bourne Shell(実際には、Bourne Shell 互換シェルである ash を利用)スクリプトのみです。
使える文字は、英数字、ハイフン、アンダースコア、ピリオドで、256 文字以内です。
なお、このシェルスクリプトを用いない場合は、値を記載しないか、この項目をコメントアウトしてください。

 

 

UPDATER

アップデート実行直後に実行されるシェルスクリプト名。
記述できるシェルスクリプトは、Bourne Shell(実際には、Bourne Shell 互換シェルである ash を利用)スクリプトのみです。
使える文字は、英数字、ハイフン、アンダースコア、ピリオドで、256 文字以内です。
なお、このシェルスクリプトを用いない場合は、値を記載しないか、この項目をコメントアウトしてください。

 

 

UNINSTALLER

アンインストール実行直前に実行されるシェルスクリプト名。
記述できるシェルスクリプトは、Bourne Shell(実際には、Bourne Shell 互換シェルである ash を利用)スクリプトのみです。
使える文字は、英数字、ハイフン、アンダースコア、ピリオドで、256 文字以内です。
なお、このシェルスクリプトを用いない場合は、値を記載しないか、この項目をコメントアウトしてください。

 

 

ラ イ セ ン ス 関 連 情 報

FUNCID

機能 ID。機能 ID は、AdamApp 毎に一意に割当てられる値で、通常、i-PRO 株式会社によって定められます。
この項目は、AdamApp に機能 ID を紐づけるためのものです。
使える文字は、16 進数で 8 桁の値です。

 

M

*1: ROMSIZE
以下の合計:
実行可能なファイルと共有ライブラリ(Linux サイズコマンドで取得した”text”と”data”のフィールドの合計値)。
Data ディレクトリの容量
Conf ディレクトリの容量

*2: RAMSIZE, CPURATE
初めにサンプルアプリケーションと同じ値を設定してください。最後に、i-PRO カメラ上でアプリケーションを実行した際の値を設定してください。これらのパラメータについてはResource Monitorを参照ください。
*3: AIACCRATE,AIMEMSIZE

サンプルアプリケーションと同じ値を設定してください。内部処理で使用されることはありません。

 

AIアクセラレーターの活用事例


i-pro ambaCV2X モデルのカメラには、AI の推論処理用アクセラレータ(CVFlow)を内蔵しています。
AdamApp からは、専用の API 経由でこのアクセラレータを使用することが可能です。API の入力として、アクセラレータ用のバイナリファイルが必要になります。以下の手順でバイナリの作成、およびAdamApp への組み込みを行ってください。

[手順]

  1. 学習済みの AI モデルを、アクセラレータ用のバイナリファイルに変換します。

  2. AdamApp パッケージの生成手順の記載手順にしたがって、AdamApp パッケージを作成します。この際に、手順 1.で作成したバイナリを data/cnn ディレクトリの下に置いてください。

 

Adam では、上記の手順 1.を行うためのツール(cvtool)を用意しています。cvtool の使用方法については、 AIモデル変換ツールを参照してください。

 

Appendix


Appendix A: 製品のセキュリティについて

製品セキュリティを確保するため以下の事に注意して開発してください。
・静的解析を実施してください。
・脆弱性の検証を行ってください。
・OSS 使用時には、最新の OSS を使用する、或いは、既知の脆弱性を確認してからご使用ください。

 

Appendix B: AdamApp で利用可能な CPU と RAM

AdamApp で利用可能な CPU 使用率及び RAM 使用量は、i-PRO カメラの機種によって異なります。
CPU 使用率が上限に達すると、カメラはそれ以上 AdamApp が CPU を使用しないように制限します。
メモリ使用量が上限に達すると、AdamApp は強制終了されます。
機種ごとの利用可能なリソース情報は下記 URL を参照下さい。

https://dev-partner.i-pro.com/space/TPFAQ/694780048

 

Appendix C: Pythonでの開発について

i-PROカメラのPython環境

i-PRO カメラにあらかじめインストールされている Python 環境は下記の通りです。

Interpreter : Python 3.7.9

External library : python adam module for ADAM API

Python版AdamAppの構造

Python 版 AdamApp は、下記の図に示すように、Main スレッドと Python スレッドから 構成されている。

Python スクリプトに関しては、基本的に Python スレッドで実行される。 ただし、stopCallback、httpCallback、appPrefCallback 等のコールバック関数については、 Main スレッドで実行される。 Python 版 AdamApp が起動すると、まず Main スレッドが生成される。Main スレッドは AdamAppの初期化処理を行った後、Pythonスレッドを生成する。PythonスレッドはPython インタープリタを起動し、pymain.py を読み込み、Python スクリプトを実行する。 Python スクリプトが最後まで実行されると、Python スレッドは自動的に終了する。その 後 Main スレッドが終了処理を行い、AdamApp が終了する。