はじめに
ROS の初心者が、とっても簡単なROSアプリを作ってみました。(連載記事です)
今回の記事の概要
- 前回までに構築したアプリ3つを RDBOX で利用可能な状態にするため、以下の4つの DockerImage を作成する
- ros-raspbian (arm)
- picam_pub_photo (arm)
- picam_sub_photo (amd64)
- picam_view_photo (amd64)
- 作成した DockerImage(2~4)を DockerHub に登録する
- 今回使用した Dockerfile などの説明は長くなりそうなので別記事にする予定(時期未定)
事前準備
- 一部の ROS アプリは、Raspberry PI で稼働することを想定しています
- ARM アーキテクチャ向けのクロスbuild環境が必要になります
- 以下の情報を参照して、事前にクロスbuild環境を準備してください
構築手順
GitHub からソースファイル一式を clone
- DockerImage を作成するためには、Dockerfile を記述する必要がありますが、今回は GitHub より clone して使用します
- clone 後、example-picam/dockerfiles 内のファイルを使用します
- 以下(↓)は具体的な手順
$ mkdir -p ${HOME}/git
$ cd ${HOME}/git
$ git clone https://github.com/higuchi-toshio-intec/example-picam.git
環境変数などを設定し DockerHub へログイン
- DockerHub アカウントを持たない方は、事前に作成してください
- DockerHub へのログインに失敗する場合は、アカウントや認証情報を確認し再実行してください
- 以下(↓)は具体的な手順
- ↓ 'YourDockerHubAccount' は実際のアカウント情報に置き換える
$ BUILD_OPTS="--no-cache"
$ export HOCKERHUB_ACCOUNT="YourDockerHubAccount"
$ sudo docker login --username "${HOCKERHUB_ACCOUNT}"
[参考]ログイン成功時の表示
Password:
Login Succeeded
[参考]ログイン失敗時の表示
Password:
Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password
ros-raspbian
- DockerHubにて公開されている公式の raspbian/stretch をベースとした ROS 環境の DockerImage を作る
- なぜなら、Raspbian をベースとした ROS DockerImage を見つけることができなかった(2019/08上旬ころ)
- また、ros.org から提供されているパッケージを用いた ROS 環境のinstallが成功しない(パッケージ群の取得エラー)
- よって、Raspbian DockerImage をベースに ROS 環境を build する
- @dyson8910 さんの記事「Raspberry Pi 3 にROS kinetic をインストールしてみました。」を参考にしています
- この DockerImage は、他者利用を想定していないため、DockerHubには登録(push)していない
- 以下(↓)は具体的な手順
$ cd ${HOME}/git/example-picam/dockerfiles/ros-raspbian
$ sudo docker build -t "ros-raspbian" .
picam_pub_photo
- 静止画撮影し画像ファイルを Publish する ROS アプリの DockerImage を作る
- Raspberry PI (arm) での稼働を想定しており、前手順で作成した ros-raspbian DockerImage をベースに構築する
- 画像処理ツールとして OpenCV をインストールする
- 画像撮影は、OS の cron 機能を使い一定間隔で実施する
- この DockerImage は、RDBOX(k8s)からの利用を想定しており、公開されているDockerRepositoryである DockerHub に登録(push)する
- 以下(↓)は具体的な手順
$ cd ${HOME}/git/example-picam/dockerfiles/pub_photo
$ sudo docker build -t "${HOCKERHUB_ACCOUNT}/picam_pub_photo" ${BUILD_OPTS} .
$ sudo docker push "${HOCKERHUB_ACCOUNT}/picam_pub_photo"
picam_sub_photo
- 画像ファイルを Subscribe する ROS アプリの DockerImage を作る
- DockerHubにて公開されている公式の ROS DockerImage をベースに構築する
- 画像処理ツールとして OpenCV をインストール
- この DockerImage は、RDBOX(k8s)からの利用を想定しており、公開されているDockerRepositoryである DockerHub に登録(push)する
- 以下(↓)は具体的な手順
$ cd ${HOME}/git/example-picam/dockerfiles/sub_photo
$ sudo docker build -t "${HOCKERHUB_ACCOUNT}/picam_sub_photo" ${BUILD_OPTS} .
$ sudo docker push "${HOCKERHUB_ACCOUNT}/picam_sub_photo"
picam_view_photo
- 画像ファイルを参照する Flask アプリの DockerImage を作る
- DockerHubにて公開されている公式の Ubuntu DockerImageをベースに構築する
- この DockerImage は、RDBOX(k8s)からの利用を想定しており、公開されているDockerRepositoryである DockerHub に登録(push)する
- 以下(↓)は具体的な手順
$ cd ${HOME}/git/example-picam/dockerfiles/view_photo
$ sudo docker build -t "${HOCKERHUB_ACCOUNT}/picam_view_photo" ${BUILD_OPTS} .
$ sudo docker push "${HOCKERHUB_ACCOUNT}/picam_view_photo"
DockerHub repository の確認
- ブラウザを起動し以下のアドレスに接続する
- https://cloud.docker.com/u/YourDockerHubAccount/repository/list
- ↑ 'YourDockerHubAccount' は実際のアカウント情報に置き換える