目次
はじめに
ここではDockerイメージを利用してiPRO Camera SDKアプリの開発環境を構築する手順を説明します。
また、このチュートリアルではSDKのインストールディレクトリを${SDK_DIR}
として記載します。
このチュートリアルはSDK ver.1.80以降のみ対応しています。SDK ver.1.80未満では利用できませんので注意ください。
事前準備
まず開発するOSを選択します。Linux OSとWindows OSのいずれかを選択してください。
SDK ver.1.80での開発はLinux OSのGUI環境のみサポート対象です。Windows OSやCUI環境での開発は問題が発生してもサポートできません。Linux OS導入までのお試し用でご利用ください。
Linux OS でのDocker環境の準備
ここでの手順は下記環境にて実施しています。
OS: Ubuntu 22.04.2 LTS (Jammy Jellyfish)
Docker Engineのバージョン: 23.0.1
プロキシ経由でインターネットに接続されている環境の場合、プロキシサーバーの設定を実施しておいてください。
Dockerをインストールする前に、古いバージョンのアンインストールを行います。
sudo apt-get remove docker docker-engine docker.io containerd runc
アンインストールしてよい環境かどうか、事前に確認してください。
Dockerをインストールできるようにするためのアプリをインストールします。
sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release
Dockerの公式GPG鍵を追加します。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
ここでcurlの証明書エラーが出た場合、ca-certificatesが最新ではない、または正しくインストールできていない可能性があります。
sudo apt-get install --reinstall ca-certificates
でca-certificatesを再インストールして直るか、ご確認ください。
Dockerの安定版リポジトリをセットアップします。
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Dockerエンジンをインストールします。
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
dockerコマンドはデフォルトではroot権限が必要なので、ユーザー権限でも実行できるように、dockerグループにユーザーを追加します。
sudo gpasswd -a $(whoami) docker
docker daemonの再起動 またはうまく行かない場合はPC再起動してください。
sudo systemctl restart docker
docker.sockにグループでの書き込み権限を付与します。
sudo chgrp docker /var/run/docker.sock
Dockerが使えるかどうかのテストを行います。
docker run --rm hello-world
以下のように表示されればインストール成功です。
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 2db29710123e: Pull complete Digest: sha256:ffb13da98453e0f04d33a6eee5bb8e46ee50d08ebe17735fc0779d0349e889e9 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
成功しなかった場合、下記で成功するか確認してください。
sudo docker run --rm hello-world
ここでPCを再起動します。(必ず再起動を実施してください。)
次に、Ubuntu内にSDKのzipファイルをコピーします。こちらからSDKを取得してください。
home/[ユーザー名] など任意の場所に[SDKのZIPファイル]をコピーします。
Ubuntuのウィンドウでunzipをインストールします。
sudo apt install unzip
これでLinux OS でのDocker環境の準備は完了です。「ビルド環境の準備」に進んでください。
Windows OS でのDocker環境の準備(Windows + Docker Desktop)
Docker Desktopを利用する場合、利用する会社の従業員数や年間収入によっては有料になる可能性があります。正確な情報はDocker の入手 — Docker-docs-ja 24.0 ドキュメントを参照ください。
利用する場合は、下記などを参照してください。
参考公式ドキュメント: Windows に Docker Desktop をインストール — Docker-docs-ja 24.0 ドキュメント
2022/11/02時点でWindows 10 21H2環境ではWindows + Docker Desktop環境を構築した実績があります。2022/11/02以降の環境作成は外部サイトの情報を検索ください。
Windows OS でのDocker環境の準備(Windows + WSL + Docker Engine)
WSLをインストールします。WSLの動作要件は、Windows 10 バージョン 2004 以上 (ビルド 19041 以上) または Windows 11 です。詳細はこちらを参照ください。
Powershellを起動し、WSLをインストールします。
wsl --install
Ubuntu 20.04LTSをインストールします。
wsl --install -d Ubuntu-20.04
インストールが終わるとUbuntuのウィンドウが表示されますので、ユーザー名とパスワードを設定します。ここではユーザー名: ipro、パスワード iPRO12345 とします。
下記サイトの記載に従ってDocker Engineをインストールします。この際、「Docker Engineのインストール」章までを実施してください。(それ以降は動作しません)
Docker Engine インストール(Ubuntu 向け) | Docker ドキュメント (matsuand.github.io)
WSLでインストールするUbuntuは起動ソフトがsystemdではなくsysvinitのため、起動方法が異なります。
dockerコマンドはデフォルトではroot権限が必要なので、ユーザー権限でも実行できるように、dockerグループにユーザーを追加します。
sudo gpasswd -a $(whoami) docker
以下のコマンドでdockerを起動させます。
sudo /etc/init.d/docker start
動作確認のために以下のコマンドを実行します。実行しているPCがインターネットに接続できる必要があります。
docker run --rm hello-world
以下のように結果が表示されたらOKです。
ipro@PC-HP2208N0013R:~$ docker run --rm hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 719385e32844: Pull complete Digest: sha256:fc6cf906cbfa013e80938cdf0bb199fbdbb86d6e3e013783e5a766f50f5dbce0 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
Ubuntu起動時に自動的にdockerを起動させるためには以下の設定を行います。 エディタはお好みのもので問題ありません。
nano ~/.bashrc
末尾に以下の行を追加します。
sudo /etc/init.d/docker start sleep 3 sudo docker run --privileged --rm tonistiigi/binfmt --install all
WSL経由でUbuntuを起動している場合、イメージの再起動でqemuの関連付けが消えてしまう現象を確認しています。下の2行はその暫定対応となります。
この設定を行うとWSLでUbuntuを起動したときにパスワードの入力を求められます。
Ubuntu内にSDKのzipファイルをコピーします。こちらからSDKを取得してください。
Windowsのエクスプローラを開き、左側のツリーからLinux → Ubuntu-20.04をクリックします。
home/[ユーザー名] など任意の場所に[SDKのZIPファイル]をコピーします。
Ubuntuのウィンドウでunzipをインストールします。
sudo apt install unzip
これでWindows OS でのDocker環境の準備は完了です。「ビルド環境の準備」に進んでください。
Ubuntuを終了させるときは、powershellを開き wsl --shutdown を入力します。
ビルド環境の準備
Dockerをインストールした後は、アプリをビルドするための環境を用意します。GUI環境の場合はVisual Studio Codeを使用します。
・CUI環境での動作は、お問い合わせいただいてもサポートできません。
・GUI環境でVisual Studio Code以外を用いて開発した場合、サポートできませんので、Visual Studio Codeを利用することをおすすめします。
Windowsの場合、下記などからダウンロードしてください。
Visual Studio Code - Code Editing. Redefined
Linuxの場合、下記コマンドなどでダウンロードしてください。
sudo snap install --classic code
続いてVisual Studio Code Dev Containers拡張機能をインストールします。まずVisual Studio Codeを起動します。Linuxの場合は端末でcodeと入力すると起動できます。左のメニューからextentionsを選び、検索ウィンドウに「Dev Containers」と入力します。
リストに表示される Dev Containersを選択してInstallボタンを押下します。
参考情報:Developing inside a Container using Visual Studio Code Remote Development のGetting startedを参照ください。
拡張アプリのビルド方法
SDKファイルを展開します。
既にSDKのzipファイルを任意のフォルダに配置していると思いますので、任意のフォルダに展開します。
cd [任意のフォルダ] unzip iPRO_CAMERA_SDK_Vx_xx_Container.zip
zipファイル名は取得したSDKファイルに読み替えてください。
展開されたディレクトリに移動します。
cd ${SDK_DIR}
GUI 環境でVisual Studio Code を使う
${SDK_DIR}
にてVisual Studio Codeを起動します。
code .
画面左下の><マークをクリックするとコマンドパレットが開きますので、「Reopen in Container」を選択します。
.devcontainer/Dockerfileに従ってDockerイメージのビルドが始まります。右下の「Starting Dev container (Show logs)」をクリックすると進捗状況が確認できます。
初回は時間がかかりますので、お待ちください。
画面左下の><マークの右が「Dev Container: iPRO Camera SDK for CV2 environment」と表示されたら準備完了です。
右下の「ターミナル」タブを開きます。右側に「bash」と表示されていることを確認ください。
もしbashが表示されていない場合はDev Containersと記載のある部分の右側の”+”を押し、bashを選択してください。
makeする前に環境設定を行います。
ambaCV2Xの拡張アプリをビルドしたい場合
source setup_env.sh ipro-ambaCV2X
ambaCV5Xの拡張アプリをビルドしたい場合
source setup_env.sh ipro-ambaCV5X
PC再起動した際など、makeする前に環境設定が再度必要になります。makeできない場合は環境設定を行っていることを確認してください。
これでアプリをビルドすることが出来ます。例としてC/C++のskeleton_sample_appをビルドしたい場合は、下記の通り対象のディレクトリに移動しmakeを実行します。
cd ${SDK_DIR}/src/adamapp/skeleton_sample_app/ make
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カメラに利用可能です。
ambaCV2XおよびambaCV5Xのアプリが1ファイルにまとめられると、その分ファイルサイズが大きくなります。ファイルサイズが大きいとアプリが動作しない場合があります。ファイルサイズ上限はカメラの機種や状態に依存して変動しますので、ご注意ください。