...
このチュートリアルでは、SDKのインストールディレクトリを${SDK_DIR}
として記載します。
Note |
---|
外部ライブラリのビルドにつきましてはサポート対象外となっております。本章に記載の情報を参考に外部ライブラリをビルドしてください。問い合わせいただいてもサポートできかねますので予めご了承ください。 |
目次
...
Table of Contents | ||||
---|---|---|---|---|
|
...
OpenCV 4.7.0
Curl 7.87.0
SQLite 3.40.0
libjpeg (version : 9e)
C/C++モジュールをコンパイルする(OpenCV)
...
Code Block |
---|
$ sudo apt-get install cmake |
「setup_env.sh」を使用して SDK を使用するようにビルド環境をセットアップします。
Code Block |
---|
$ cd ${SDK_DIR}
$ source setup_env.sh ipro-ambaCV2X |
Info |
---|
ここでは「 |
OpenCVのソースコードをダウンロードする
公式サイトからOpenCVのソースコードをダウンロードします。
...
${SDK_DIR}/external/build/opencv/aarch64-linux-gnuディレクトリでOpenCVをビルドします。
Note |
---|
sudo makeのように実行すると一般ユーザではアクセスできない場所にファイル生成された場合などに失敗する可能性があります。sudo makeで実行する場合はUbuntu OSのユーザ設定を事前に確認ください。 |
Code Block |
---|
$ make |
Info |
---|
OpenCVのコンパイルには時間がかかるため、しばらく待ちます。 |
...
コピー先ディレクトリ ${SDK_DIR}/src/adamapp/opencv_edge_detection_app/external/include/opencv2 にファイルがコピーされていることを確認してください。
不要なファイルを削除する
作成されたOpenCVライブラリには、ライブラリのデバッグに使用するための情報が含まれています。
アプリケーション実行時には使用しないため、容量削減のためデバッグ情報を削除することをお勧めします。
Info |
---|
不要なファイルを削除するだけで数十MBの容量削減になります。アプリのファイルサイズが大きくなるとROM容量制限によりアプリ異常終了の原因となりますのでご注意ください。 |
Code Block |
---|
$ cd ${SDK_DIR}/src/adamapp/opencv_edge_detection_app/external/lib/aarch64-linux-gnu/
$ aarch64-linux-gnu-strip --strip-debug libopencv_world.so
$ aarch64-linux-gnu-strip --strip-debug libopencv_world.so.4.7.0
$ aarch64-linux-gnu-strip --strip-debug libopencv_world.so.407 |
サンプルアプリをビルドする
サンプルアプリ「opencv_edge_detection_app」をビルドして、カメラにインストールします(例:下記画像の緑枠からインストール可能)。
ビルド方法はSDK同梱のドキュメント「AdamAppDevelopmentManualForIpro_Vx_xx.pdf」の「How to develop AdamApp」を参照してください。ビルド方法は各SDKバージョンに応じて実施ください。
アプリ画面を開きます(下記画像の赤枠ボタン)。
...
下記画像のような、カメラが撮影した映像のエッジ検出された画像が表示されていれば成功です
...
C/C++モジュールをコンパイルする(Curl)
...
コンパイル環境を準備する
「setup_env.sh」を使用して SDK を使用するようにビルド環境をセットアップします。
Code Block |
---|
$ cd ${SDK_DIR}
$ source setup_env.sh ipro-ambaCV2X |
Info |
---|
ここでは「 |
libcurlのソースコードをダウンロードする
公式サイトからlibcurlのソースコードをダウンロードします。
...
...
...
Info |
---|
各OSに配慮したファイルも存在するため、過去のバージョンは画像赤枠のOld Releasesから取得することを推奨します。 |
ダウンロードしたソースコードを格納するディレクトリを作成します。
...
サンプルアプリ「update_sample_app」をビルドして、カメラにインストールします(例:下記画像の緑枠からインストール可能)。
ビルド方法はSDK同梱のドキュメント「AdamAppDevelopmentManualForIpro_Vx_xx.pdf」の「How to develop AdamApp」を参照してください。ビルド方法は各SDKバージョンに応じて実施ください。
アプリ画面を開きます(下記画像の赤枠ボタン)。
...
下記のようなメッセージが表示されていれば成功です
...
C/C++モジュールをコンパイルする(SQLite)
...
コンパイル環境を準備する
「setup_env.sh」を使用して SDK を使用するようにビルド環境をセットアップします。
Code Block |
---|
$ cd ${SDK_DIR}
$ source setup_env.sh ipro-ambaCV2X |
Info |
---|
ここでは「 |
SQLiteのソースコードをダウンロードする
公式サイトからSQLiteのソースコードをダウンロードします。
...
Code Block |
---|
$ cd ${SDK_DIR}/external/build/sqlite
$ cp [ダウンロードしたソースコード格納ディレクトリ]/sqlite-autoconf-3400000.tar.gz ./
$ tar -zxvf sqlite-autoconf-3400000.tar.gz
$ cd sqlite-autoconf-3400000.tar.gz |
Configureを実行する
${SDK_DIR}/external/build/sqlite/sqlite-autoconf-3400000 ディレクトリで実行します。
...
このチュートリアルでは、サンプルアプリ「sqlite_app」を例にします。
Note |
---|
sqlite_app の動作にはSDカードが必要です。SDカードを挿入できるカメラのみ確認可能です。 |
ライブラリのコピー
${SDK_DIR}/external/build/sqlite/sqlite-autoconf-3400000 ディレクトリで下記コマンドを実行します。
...
修正前)ADD_LIBS+= sqlite
↓
修正後)ADD_LIBS+= sqlite3
サンプルアプリをビルドする
サンプルアプリをビルドする前に、下記の画面にてSDカードをフォーマットします。(フォーマットしてよいSDカードか事前に確認ください、SDカードのデータは全て消去されます。)
フォーマットが完了したら、SDカードをext(ext4)フォーマットにしてSetボタンを押下します。
...
サンプルアプリ「sqlite_app」をビルドして、カメラにインストールします(例:下記画像の緑枠からインストール可能)。
ビルド方法はSDK同梱のドキュメント「AdamAppDevelopmentManualForIpro_Vx_xx.pdf」の「How to develop AdamApp」を参照してください。ビルド方法は各SDKバージョンに応じて実施ください。
アプリ画面を開きます(下記画像の赤枠ボタン)。
...
下記のような画面が表示されていれば成功です。
...
C/C++モジュールをコンパイルする(libjpeg)
...
Docker環境を構築する
Ubuntu(64-bit)環境でlibjpegを利用するためにDocker環境でコンパイルします。
★こちら★を参考にしてDocker環境を構築してください。こちらを参考にしてDocker環境を構築およびDockerイメージを作成してください。
libjpegのソースコードをダウンロードする
公式サイトからlibjpegのソースコードをダウンロードします。
...
ダウンロードするバージョンは、使用する機能に合わせて選択してください。
libjpeg (version : 9e)
ダウンロードしたファイルは、${SDK_DIR}/external/build/sample/docker/docker_volumeディレクトリに配置してください。
...
コンパイル手順ファイルを更新する
${SDK_DIR}/external/build/sample/docker/docker_volume/module_compile.shファイルに、コンパイル手順を記載します。
下記の内容をコピーしてください。
Code Block |
---|
#!/bin/sh -x
HOME_PATH=/home/docker
LIBJPEG_ARCHIVES=jpegsrc.v9e.tar.gz
LIBJPEG_DIR=jpeg-9e
## for libjpeg
cd ${HOME_PATH}
tar zxf ${LIBJPEG_ARCHIVES}
cd ${LIBJPEG_DIR}
./configure
make |
コンパイルする
Dockerを用いてlibjpegモジュールをコンパイルします。
${SDK_DIR}/external/build/sample/docker ディレクトリでDockerを実行してください。
Code Block |
---|
$ docker run --rm -it --name aarch64-ubuntu -v `pwd`/docker_volume:/home/docker compile/ubuntu-rel:0.1 |
${SDK_DIR}/external/build/sample/docker/docker_volume/jpeg-9eにコンパイル済みモジュールが作成されます。
AdamAppに配置する
作成されたモジュールを、AdamAppで使用できるように配置します。
チュートリアルではsrc/adamapp/jpeg_appを例とします。
libjpegを配置する
libjpegライブラリは以下のディレクトリにインストールされています。
${SDK_DIR}/external/build/sample/docker/docker_volume/jpeg-9e/.libs
libjpeg.so.9.5.0
上記ファイルを、AdamAppソースディレクトリにコピーしてください。
${SDK_DIR}/src/adamapp/jpeg_app/external/lib/aarch64-linux-gnu
Code Block |
---|
$ cp -r ${SDK_DIR}/external/build/sample/docker/docker_volume/jpeg-9e/.libs/libjpeg.so.9.5.0 ${SDK_DIR}/src/adamapp/jpeg_app/external/lib/aarch64-linux-gnu |
コピーしたら、シンボリックリンクを作成してください。
Code Block |
---|
$ cd ${SDK_DIR}/src/adamapp/jpeg_app/external/lib/aarch64-linux-gnu/
$ ln -s libjpeg.so.9.5.0 libjpeg.so.9
$ ln -s libjpeg.so.9 libjpeg.so |
コピーおよびシンボリックリンク作成後のディレクトリ構成は以下のようになります。
${SDK_DIR}/src/adamapp/jpeg_app/external/lib/aarch64-linux-gnu/libjpeg.so.9.5.0
${SDK_DIR}/src/adamapp/jpeg_app/external/lib/aarch64-linux-gnu/libjpeg.so.9
${SDK_DIR}/src/adamapp/jpeg_app/external/lib/aarch64-linux-gnu/libjpeg.so
libjpegヘッダファイルは以下のディレクトリにインストールされています。
${SDK_DIR}/external/build/sample/docker/docker_volume/jpeg-9e
jconfig.h
jmorecfg.h
jpeglib.h
上記3ファイルを、AdamAppソースディレクトリにコピーしてください。
${SDK_DIR}/src/adamapp/jpeg_app/external/include
Code Block |
---|
$ cp -r ${SDK_DIR}/external/build/sample/docker/docker_volume/jpeg-9e/jconfig.h ${SDK_DIR}/src/adamapp/jpeg_app/external/include
$ cp -r ${SDK_DIR}/external/build/sample/docker/docker_volume/jpeg-9e/jmorecfg.h ${SDK_DIR}/src/adamapp/jpeg_app/external/include
$ cp -r ${SDK_DIR}/external/build/sample/docker/docker_volume/jpeg-9e/jpeglib.h ${SDK_DIR}/src/adamapp/jpeg_app/external/include |
コピー後のディレクトリ構成は以下のようになります。
${SDK_DIR}/src/adamapp/jpeg_app/external/include/jconfig.h
${SDK_DIR}/src/adamapp/jpeg_app/external/include/jmorecfg.h
${SDK_DIR}/src/adamapp/jpeg_app/external/include/jpeglib.h
サンプルアプリをビルドする
サンプルアプリ「jpeg_app」をビルドして、カメラにインストールします(例:下記画像の緑枠からインストール可能)。
ビルド方法は各SDKバージョンに応じて実施ください。
アプリ画面を開いて(下記画像の赤枠ボタン)、カメラが撮影したjpeg画像が表示されていれば成功です。
...
チュートリアルは以上となります。