Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 42 Current »

目次


はじめに


ここでは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

必ずUbuntu内にSDKのzipファイルをコピーしてからzipファイルを展開してください。Windowsなど他OSで展開してからUbuntuに移動させると正常に動作しません。

これで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

必ずUbuntu内にSDKのzipファイルをコピーしてからzipファイルを展開してください。Windowsなど他OSで展開してからUbuntuに移動させると正常に動作しません。

これでWindows OS でのDocker環境の準備は完了です。「ビルド環境の準備」に進んでください。 

Ubuntuを終了させるときは、powershellを開き wsl --shutdown を入力します。

ビルド環境の準備


Dockerをインストールした後は、アプリをビルドするための環境を用意します。GUI環境の場合はVisual Studio Codeを使用します。

・CUI環境での動作は、お問い合わせいただいてもサポートできません。
・GUI環境でVisual Studio Code以外を用いて開発した場合、サポートできませんので、Visual Studio Codeを利用することをおすすめします。
Visual Studio Code 1.88以降のバージョンでubuntu 18.04ベースのコンテナを起動しようとすると「Visual Studio CodeでサポートされていないOSバージョンに接続しようとしています。」というメッセージが表示されます。許可することでコンテナを起動することができます。

Windowsの場合、下記などからダウンロードしてください。
Visual Studio Code - Code Editing. Redefined

Linuxの場合、下記コマンドなどでダウンロードしてください。

sudo snap install --classic code

.devcontainer拡張機能のダウングレードは下記から実施可能です。

20240206-144300.png

続いて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

必ずUbuntu内にSDKのzipファイルをコピーしてからzipファイルを展開してください。Windowsなど他OSで展開してからUbuntuに移動させると正常に動作しません。
ただし、Docker Desktop環境ではWindows OS上でzipファイルを展開してください。

zipファイル名は取得したSDKファイルに読み替えてください。

開発者ライセンス(development.key)をSDK/confフォルダに配置しておいてください。

展開されたディレクトリに移動します。

cd ${SDK_DIR}

GUI 環境でVisual Studio Code を使う

${SDK_DIR}にてVisual Studio Codeを起動します。

code .

Docker Desktopを利用している場合はVisual Studio Codeを起動して${SDK_DIR}フォルダを開いてください。

画面左下の><マークをクリックするとコマンドパレットが開きますので、「Reopen in Container」を選択します。

.devcontainer/Dockerfileに従ってDockerイメージのビルドが始まります。右下の「Starting Dev container (Show logs)」をクリックすると進捗状況が確認できます。

初回は時間がかかりますので、お待ちください。

画面左下の><マークの右が「Dev Container: iPRO Camera SDK」と表示されたら準備完了です。

右下の「ターミナル」タブを開きます。右側に「bash」と表示されていることを確認ください。

もしbashが表示されていない場合はDev Containersと記載のある部分の右側の”+”を押し、bashを選択してください。

makeする前に環境設定を行います。

ご利用するカメラのSoC(ambaCV2X or ambaCV5X)については下記より確認ください。

i-PROカメラへのソフトウェアインストール条件 - Technology Partner - Confluence (atlassian.net)

  • 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ファイルにまとめてビルドする

詳細はこちらを参照ください。

動作確認

作成した.extファイルのアプリをカメラにインストールして動作確認します。

ここでは下記のようにWebブラウザからカメラにアクセスし、インストールを試します。

SDK ver.1.80以前からSDK ver.2.00以降への開発環境移行手順


下記手順を実施いただく必要があります。Python版のみですので、C版は実施不要です。

ここではSDK ver.2.00以降のディレクトリを${SDK_DIR_ver2.00}とします。

SDK ver.1.80以降で動作していた開発アプリ(hoge_sample_appとします)を下記のように移動します。

${SDK_DIR_ver2.00}\src\adamapp-py\hoge_sample_app

SDK ver.2.00の下記フォルダをコピーします。

${SDK_DIR_ver2.00}\src\adamapp-py\additional_info_sample_app\.c_cxx_src

下記構成になるように移行した開発アプリフォルダにペーストします。

${SDK_DIR_ver2.00}\src\adamapp-py\hoge_sample_app\.c_cxx_src

移行が完了したらビルドして動作することを確認してください。

  • No labels