Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

目次

...

Table of Contents
minLevel1
maxLevel4

はじめに

...

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

...

また、このチュートリアルでは、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/

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

...

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 で使う外部ソフトウェアを配置するディレクトリ

...

bin/

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

conf/

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

data/

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

python/

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

setup/

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

ターゲット依存マクロ

...

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

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

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

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

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 つのフェーズで構成されています。

...

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

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

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

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

...

PROG_CXXFLAGS= $(ADAM_CXXFLAGS)

PROG_CXXFLAGS+= -fno-rtti

PROG_CXXFLAGS+=

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

ファイルの生成と配置

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

...

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

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

AdamApp に必要なファイルの作成と配置が完了したら、AdamApp のビルドとパッケージ作成を行いま
す。具体的には、(1)AdamApp の実行環境に対応する設定ファイルを読み込み、(2)make の実行、を実施し
ます。
詳しい手順について、これ以降で説明します。

(1) ビルド用環境設定ファイルの読み込み

ビルド用環境設定ファイルとして、setup_env.sh が用意されています。これを source コマンドを用いて読み込むことで、環境設定が完了します。その際、AdamApp を動作させる実行環境に応じて、引数を指定する必要があります。

指定できる引数は下記の通りです。

i-pro ambaCV2X 用の AdamApp を作成する場合:

 ipro-ambaCV2X

下記に、それぞれの場合の詳細な手順を示します。

Code Block
$ cd ${SDK_DIR}
$ source setup_env.sh ipro-ambaCV2X
Info

下記のようなメッセージが表示されれば、ビルド用環境設定ファイルの読み込みは成功です。

***** /usr/local/linaro-aarch64-2018.08-gcc8.2/bin/aarch64-linux-gnu-gcc found. *****
PF_BASEDIR = /home/user/adamappsdk
BUILD_TARGET = ipro-ambaCV2X
TARGET_FOR_ADAM = ambaCV2X
TARGET_ARCH = aarch64-linux-gnu
VERBOSE = 0
PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

(2) make の実行(AdamApp のビルド&パッケージの作成)

続いて、AdamApp(追加アプリ)のビルドとパッケージ作成を行うために、make を実行します。
make を実行すると、ビルドとパッケージの作成を一気に行います。make が成功した場合には、
skeleton_sample_app ディレクトリ直下に、

SkeletonSampleApp :

SkeletonSampleApp の実行プログラム

SkeletonSampleApp.zip :

SkeletonSampleApp のパッケージ

SkeletonSampleApp.ext :

SkeletonSampleApp.zip を Base64 化したもの

の 3 つのファイルが生成されます。

Code Block
$ cd src/adamapp/skeleton_sample_app
$ ls –CF
Makefile configuration.txt skeletonSampleApp.cpp
bin/ data/ setup/
$ make
(略)
$ ls –CF
Makefile bin/ setup/
SkeletonSampleApp* configuration.txt skeletonSampleApp.cpp
SkeletonSampleApp.ext conf/ skeltonSampleApp.d
SkeletonSampleApp.zip data/ skeltonSampleApp.o

make の実行によって、生成されるファイルの詳細な説明は、下記の通りです。

SkeletonSampleApp.zip :

必要な情報を格納した bin, data, config, setup の各ディレクトリを zip 化したパッケージファイルで す。

SkeletonSampleApp.ext :

...

詳しい手順について、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を実行します。

Code Block
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カメラに利用可能です。

Note

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

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

 

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

...

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

...

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

configuration.txt の各用語

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

...

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)。

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

M

CPURATE (*2)

AdamApp が利用する CPU

使用率(%)。

使用率(%)

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

M

AIACCRATE (*

2

3)

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


AdamApp の開始時に、この値を参照して、開始可能かどうかを判断します。

AIMEMSIZE (*3)

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


AdamApp の開始時に、この値を参照して、開始可能かどうかを判断します。

ス ク リ プ ト フ ァ イ ル 情 報

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 桁の値です。

Info

AdamApp 開発時には、0000FF01~0000FFFF の間で設定してください。
なお、AdamApp 毎に違う機能 IDを設定してください。
もし、同じ機能 ID を設定されたAdamApp をインストールした時、後からインストールした AdamApp は、インストールエラーになります。

M

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

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

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

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

...

Note

・AI アクセラレータは i-pro ambaCV2X モデル向けの AdamApp でのみ、利用可能です。

・ツール(cvtool)は AdamAppSDK には含まれていません。必要な場合には、i-PRO 株式会社にお問合せください。

...

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 スレッドから 構成されている。

...