はじめに
初めてROSを触る人が、DockerでROSのコンテナを立ち上げてARマーカーをUSBカメラで検出するまでの流れを記録として残します。
ROS melodicのDocekrイメージのPullから、ar-track-alvar
パッケージの動作確認までが目標です。
この記事では、X serverを用いたGUI環境と、USBカメラのデバイス情報を設定してROS melodic
コンテナをrun するところまで紹介します。
環境
| 環境
:--:| :--: |
OS | Ubuntu 18.04 LTS
プロセッサ | Intel Core i7-6700HQ CPU
RAM | 8GB
GPU | GeForce GTX960M
ROS | melodic
このシリーズについて
複数回に分けて紹介します。
0. 環境設定編(Windows10にUbuntuをデュアルブートして、Dockerをセットアップする)
- ROSのコンテナを作成する この記事です
- AR検出用のパッケージをセットアップする
docker imageのインストール
ROS1の中では melodicが最新なのでイメージをインストールします
ターミナルで以下を実行してください。
$ docker pull {image-name:tag-name}
例
$ docker pull orsf/ros:melodic-desktop-full-bionic
タグの中身の違いは現状わかっていません。
例えば、stretchとか検索するとraspbianというワードが出るから、リソース小さいマシン用なのかな?
ちなみにpull済のイメージ一覧は次のコマンドで知ることができます。
$ docker image ls
container の起動
イメージからコンテナを作成します。
このときに外部接続の設定と、USB deviceの設定をしないとROSコンテナ内でGUI画面が出てきません。
(エラーメッセージ cannot connect X server
とか、カメラ画像が出てこない事象に悩みます。)
docker tutorialのスクリプトを参考にrun スクリプトで設定を
行いました。
$ docker run -it \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
--device="/dev/video2:/dev/video2" \
--name="AR_Env" \
osrf/ros:melodic-desktop-full-bionic \
rqt
export containerId=$(docker ps -l -q)
device
やname
, 使うイメージは適宜読み替えてください。
次の項で、デバイス情報取得で調べ方を記述します。
usbカメラデバイスdevice
の情報取得
$ lsusb
コマンドがないときは、
$ apt-get install lsusb
でインストールできます
$ v4l2-ctl -d /dev/video0 --all
私の環境の場合、/dev/video2
がusbcamだったのでこちらの情報を使っています。
X severの準備
noVNCとか使いたかったのですが、いまのところ難しかったのでdocker tutorialより
シンプルだけど、安全でない 方法でとりあえず動かします。
runのスクリプトを実行する前に、Ubuntu側のX server設定を変更しておきます。
$ xhost +local:root
Ubuntuを立ち上げる都度設定してあげないと、作ったコンテナがstart しないという事態を経験します。
そうゆうときは
$ docker logs {container name}
で何が起こっているか見ることができます。(Xseverに繋がらないからstartできない、とか)
コンテナのrunスクリプトを実行すると起動します。device
で設定したUSBカメラを接続していないとコンテナがstartしないのでご注意ください。
おわりに
USBカメラを接続した状態でROSのコンテナが起動でき、撮影した画像をGUIで表示する準備ができました。