0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ROS melodic で ARマーカーを検出するための環境設定 ① Unbuntu 上で Docker コンテナを立ち上げるまで

Posted at

はじめに

初めて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をセットアップする)

  1. ROSのコンテナを作成する この記事です
  2. AR検出用のパッケージをセットアップする

docker imageのインストール

ROS1の中では melodicが最新なのでイメージをインストールします
ターミナルで以下を実行してください。

イメージのダウンロード
$ docker pull {image-name:tag-name}$ docker pull orsf/ros:melodic-desktop-full-bionic

タグの中身の違いは現状わかっていません。
例えば、stretchとか検索するとraspbianというワードが出るから、リソース小さいマシン用なのかな?

ちなみにpull済のイメージ一覧は次のコマンドで知ることができます。

pull済のイメージの確認
$ docker image ls

container の起動

イメージからコンテナを作成します。
このときに外部接続の設定と、USB deviceの設定をしないとROSコンテナ内でGUI画面が出てきません。

(エラーメッセージ cannot connect X server とか、カメラ画像が出てこない事象に悩みます。)

docker tutorialのスクリプトを参考にrun スクリプトで設定を
行いました。

コンテナの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)

devicename, 使うイメージは適宜読み替えてください。
次の項で、デバイス情報取得で調べ方を記述します。

usbカメラデバイスdeviceの情報取得

こちらを参考にさせていただきました

Ubuntu側でUSBデバイスの確認
$ lsusb

コマンドがないときは、

$ apt-get install lsusb

でインストールできます

これだとPCのビルトインcamの情報が出ました
$ v4l2-ctl -d /dev/video0 --all

私の環境の場合、/dev/video2がusbcamだったのでこちらの情報を使っています。

X severの準備

noVNCとか使いたかったのですが、いまのところ難しかったのでdocker tutorialより
シンプルだけど、安全でない 方法でとりあえず動かします。

runのスクリプトを実行する前に、Ubuntu側のX server設定を変更しておきます。

$ xhost +local:root

Ubuntuを立ち上げる都度設定してあげないと、作ったコンテナがstart しないという事態を経験します。
そうゆうときは

conteinorのlogを確認
$ docker logs {container name}

で何が起こっているか見ることができます。(Xseverに繋がらないからstartできない、とか)

コンテナのrunスクリプトを実行すると起動します。deviceで設定したUSBカメラを接続していないとコンテナがstartしないのでご注意ください。

おわりに

USBカメラを接続した状態でROSのコンテナが起動でき、撮影した画像をGUIで表示する準備ができました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?