Versions Compared

Key

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

Table of contents

...

Table of Contents
minLevel1
maxLevel4

Overview

...

This tutorial explains how to develop a container app using the iPRO Camera SDK, using a sample app. In this tutorial, the installation directory of the SDK is indicated as ${SDK_DIR}.

Info

Container AdamApp is for cameras with SoC ambaCV5X and firmware version 3.30 or later, and can be developed with SDK version 2.10 or later. Please check here for camera SoC.

How to build

...

Use of Developer License

You should already have applied for and obtained a developer license (development.key), so place it in the SDK/conf folder.

...

Building the sample app

Here we will go through the steps to build a sample app as an example.

...

The app name and version name are taken from the first image value found at the top of docker_compose.yaml. For example, if image: “skeleton_sample_app:0.0.6” is written, the file name will be skeleton_sample_app_0.0.6.ext (zip).

Operation check

Install it on your camera (for example, you can install it from the green frame in the image below). Select the .ext file you created and install it. Open the app screen (red frame button in the image below).

...

If the text is displayed as in the image below, the operation was successful.

...

Build procedure using external libraries

...

Building a sample app with external libraries

If you want to develop an app that uses external libraries, you can use them by including them in the Dockerfile.

...

  • [app name]_[version name].ext

  • [app name]_[version name].zip

Operation check

Install it on your camera (for example, you can install it from the green frame in the image below). Select the .ext file you created and install it. Open the app screen (red frame button in the image below).

...

If the image captured by the camera is displayed when you start the app, as shown below, then the app was successful.

...

Adding other external libraries

If you want to use any external libraries, edit the Dockerfile.

Note

Building external libraries is not supported. Please refer to the information in this chapter to build external libraries. Please note that we cannot provide support even if you contact usout of our technical support. Followings are the reference.

For documentation on Dockerfile, see:

...

The following describes the content for i-PRO cameras.

 

以下にskeletonThe following explanation will be based on the following files included in skeleton_sample_appに含まれている下記ファイルをベースに説明します。app.

${SDK_DIR}\src\adamapp\skeleton_sample_app\Dockerfile.ext

Code Block
ARG CADAMBUILDBASE_PATH
ARG CADAMAPPBASE_PATH
FROM ${CADAMBUILDBASE_PATH} AS build-env

WORKDIR /app
COPY . ./
WORKDIR /iprosdk
RUN chmod +x setup_env.sh
RUN /bin/bash -c "source setup_env.sh ambaCV5XCEXinternal && \
    cd /app && \
    make clean && \
    make"


# Application environment (arm64v8)
FROM ${CADAMAPPBASE_PATH} AS aplbase
RUN useradd -ms /bin/bash moduleuser
WORKDIR /app
COPY --chown=moduleuser:moduleuser --from=build-env /app/configuration.txt /app/
COPY --chown=moduleuser:moduleuser --from=build-env /app/data/ /app/data/
COPY --chown=moduleuser:moduleuser --from=build-env /app/setup/ /app/setup/
COPY --chown=moduleuser:moduleuser --from=build-env /app/bin/ /app/bin/
COPY --chown=moduleuser:moduleuser --from=build-env /app/conf/ /app/conf/

USER moduleuser

CMD ["bash"]

  • 1行目から12行目はアプリのビルドを行っています。

  • 3行目のFROMに指定しているイメージはi-PROが提供する開発環境のイメージとなります。カメラで動作するアプリをビルドするためのライブラリ等が含まれていますので、変更しないでください。

  • 6行目では、skeleton_sample_appフォルダ内のすべてのファイル (.dockerignoreに記載したファイルを除く) をビルドイメージ内にコピーしています。

  • 9-12行目で、setup_env.shによる環境設定およびアプリのビルドを実施しています。この行は変更しないでください。

  • ビルドに必要な独自のOSSを取り込みたい場合は、4-5行目の間に追加してください。以下は、libjpegをインストールする場合の例です。Lines 1 to 12. Build the app.

  • Line 3. The image specified in FROM is the development environment image provided by i-PRO. It contains libraries for building apps that run on the camera, so please do not change it.

  • Line 6. All files in the skeleton_sample_app folder (except for files listed in .dockerignore) are copied into the build image.

  • Lines 9 to 12. This sets up the environment using setup_env.sh and builds the app. Do not change these lines.

  • Lines 4 to 5. If you want to include your own OSS required for the build, add it between lines 4 and 5. The following is an example for installing libjpeg.

    Code Block
    #install libJpeg
    RUN apt update && \
        apt install -y libjpeg-dev && \
        apt-get clean && \
        rm -rf /var/lib/apt/lists/* 

     

  • また、OSSをソースコードからビルドしたい場合も同様に追加することができます。以下はEclipse You can also add OSS if you want to build it from source code. Below is an example of building the Eclipse Paho C Client Library for the MQTT Protocolをソースコードからビルドする場合の例です。Protocol from source code.

    Code Block
    RUN apt-get update &&\
        apt-get install -y build-essential gcc make cmake cmake-gui cmake-curses-gui
    
    WORKDIR /paho
    RUN git clone https://github.com/eclipse/paho.mqtt.c.git && \
        mkdir /tmp/build.paho && \
        cd /tmp/build.paho && \
        cmake -DPAHO_WITH_SSL=TRUE /paho/paho.mqtt.c && \
        cmake --build .
  • 18行目から27行目はext内に含まれ、実際にカメラ上で動作するイメージのビルド手順です。基本的な流れは、1-12行目でビルドしたバイナリをコピーする形となります。

  • 16行目のFROMに指定しているイメージはi-PROが提供するアプリケーションのベースとなるイメージとなります。カメラでで動作するための必要最小限のファイルが含まれていますので、変更しないでください。

  • 17行目では、カメラ内で動作させるためのユーザーを作成しています。i-PROカメラではroot権限でコンテナを動作させることは禁止されています。

  • 19-23行目は、既にビルドしたバイナリや、必要なファイルをイメージにコピーしています。

  • 25行目で実行ユーザーを17行目で作成した”moduleuser”に設定しています。

  • 27行目では、このイメージの起動時のデフォルトのコマンドを指定しています。実際にはdocker-compose.yamlファイルで、ビルドしたアプリが最初に起動するように上書きされます。

  • 17行目以降で、独自に使用するライブラリがある場合はコピーを行うコードを追加します。以下はlibjpegをコピーするコードの例です。Lines 18 to 27. These are the steps to build the image included in the ext that actually runs on the camera. The basic flow is to copy the binary built in lines 1-12.

  • Line 16. The image specified in FROM is the base image for the application provided by i-PRO. It contains the minimum files required to run on the camera, so do not change it.

  • Line 17. This creates a user to run in the camera. The i-PRO camera prohibits running containers with root privileges.

  • Lines 19 to 23. Copy the already built binaries and necessary files to the image.

  • Line 25. The execution user is set to the “moduleuser” created in line 17.

  • Line 27. This specifies the default command for this image when it starts. This overrides the docker-compose.yaml file so that the app you built starts first.

  • Line 17. From line 17 onwards, add code to copy any libraries you wish to use. Below is an example of code to copy libjpeg.

    Code Block
    # copy libjpeg
    COPY --from=build-env /usr/lib/aarch64-linux-gnu/libjpeg.so.8.2.2 /usr/lib/aarch64-linux-gnu/
    RUN ln -sf /usr/lib/aarch64-linux-gnu/libjpeg.so.8.2.2  /usr/lib/aarch64-linux-gnu/libjpeg.so.8 && \
        ln -sf /usr/lib/aarch64-linux-gnu/libjpeg.so.8.2.2  /usr/lib/aarch64-linux-gnu/libjpeg.so
  • どのファイルをコピーする必要があるかは、ビルドしたバイナリに対してlddコマンドを使用したり、apt-getでインストールした場合は、dpkg -L コマンドを使用したりして調べてください。To find out which files you need to copy, use the ldd command on the binary you built, or the dpkg -L command if you installed it with apt-get.