ROS
docker
Pepper

Dockerを使用してPepperをROSで動かす手順(Mac・Ubuntu対応)

More than 1 year has passed since last update.

はじめに

この記事は、SoftbankのPepperをROSで動かすための手順をまとめた記事です。

ROSは公式ではUbuntuのみ対応しています。そのため、この記事ではDockerを使ってMac, Ubuntuユーザが手軽にROSを使えるようにしています。

WindowsでもPepperを動かせることは確認したのですが、画像等のGUI表示ができなかったのでここでは紹介しません。どなたかやり方知ってたら教えてください。

またこの手順はTech-Circleハンズオンの事前準備の手順も兼ねており、ハンズオンで必要なROSパッケージ等も含まれています。

Docker is 何?

Dockerを使えば、ROSを手元のPCに直接インストールすることなく、ROSに必要な環境がまるまる手に入るので、煩わしいインストール・セットアップ作業が不要になります。そのために、その環境が入ったDockerイメージをダウンロードする必要があります。

この記事では ykoga/pepper-ros-handson というTech-Circleハンズオンのためのイメージをダウンロードする例を示します。

PeppeをROSで動かす手順(所要時間 約40分)

  1. Naoqi-SDKのダウンロード、解凍
  2. Dockerインストール
  3. 使用するDockerイメージのダウンロード(約2.3GB)
  4. 動作確認
  5. PepperをROSで動かす

1.〜4.が準備、5.が実際にROSで動かす部分です。ハンズオンの事前準備は、4.動作確認 まで行ってください。
MacとUbuntuでやることが異なりますので、分けて解説します。

Mac

[Mac] 1. Naoqi-SDKのダウンロード、解凍

右上の sign in をクリックして、 アカウント作成 をクリックしてください。(既にアカウントをお持ちの方はサインインしてください。)
https://www.aldebaran.com/ja

範囲を選択_019.png

Aldebaranアカウントでログインした状態で、Developper Program に登録してください。Developper Programに登録することで下記SDKがダウンロードできるようになります。

https://community.aldebaran.com/ja/developerprogram

image

以下のPepper-SDK(Naoqi-SDK)を選んでダウンロードし、解凍してください。Macユーザであっても必ずLinux版をダウンロードしてください。

解凍した2つのディレクトリはどこにおいてもいいのですが、ここではホームディレクトリに置いておきましょう。

  • Python 2.7 SDK 2.4.2 Linux 64
  • C++ SDK 2.4.2 Linux 64

https://community.aldebaran.com/en/resources/software/language/en-gb

範囲を選択_021.png

[Mac] 2. Dockerインストール

2016/3/29 追記
Macでは、Dockerをインストールする前にVirtual Boxが必要です。
インストールされていない場合は、こちらでMac用インストーラをダウンロードしてインストールしてください。

次に、Dockerのインストールです。

# docker, docker-machineのインストール
brew install docker
brew install docker-machine

# defaultという名前のvirtualboxイメージを作成する
# VBoxManage list vmsで確認できる
docker-machine create --driver virtualbox default

## Docker起動
docker-machine start default

# Dockerで使う設定を反映
# ターミナルごとに実行する必要がある
eval $(docker-machine env default)

3,4行目は、Docker QuickStart Terminalというインストールされたアプリを開くと自動でやってくれます。その場合は、defaultという名前のvirtualboxイメージが作成されます。

  • Dockerコンテナ内でGUIを表示できるようにするためのツールのインストール
    こちらのインストーラを使ってQuartzインストールします。インストール後、一度ログアウトしてログインしなおしてください。その後、socatをインストールします。
socatインストール
brew install socat

[Mac] 3. 使用するDockerイメージのダウンロード

ROSとPepper関連パッケージが入ったDockerイメージをダウンロードします。

Dockerイメージをダウンロード
docker pull ykoga/pepper-ros-handson

# 正常にダウンロードされたことを確認
docker images
# REPOSITORY                 TAG                   IMAGE ID            CREATED             VIRTUAL SIZE
# ykoga/pepper-ros-handson   latest                0f1c04860a76        29 minutes ago      2.344 GB

Macの方でdocker pull、run動作時にエラーが出た場合は、一番下の"参考"を参照してください。

[Mac] 4. 動作確認

コンテナを起動
# ターミナル1
# GUI表示のために必要
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"

# ターミナル2
# コンテナ起動
# DISDPLAY=192.168.99.1:0には、ifconfigで調べたvbox0のIPアドレスを入力する
# --volume 以下には、保存したNaoqi-SDKのフォルダの絶対パスを入力する(Python,C++両方)。以下はホームディレクトリに置いた例
docker run -it --rm --name pepper_robot --hostname pepper_robot --env ROS_HOSTNAME=pepper_robot --env DISPLAY=192.168.99.1:0 --volume="$HOME/pynaoqi-python2.7-2.4.2.26-linux64/:/root/pynaoqi" --volume="$HOME/naoqi-sdk-2.4.2.26-linux64:/root/naoqi-sdk" ykoga/pepper-ros-handson terminator

新規にウィンドウが立ち上がるので、そこに以下のように入力します。
(水平分割は 右クリック+Split Horizontally または Ctrl+Shit+o
 垂直分割は 右クリック+Split Vertically または Ctrl+Shit+e )

立ち上がったターミナルで動作確認
# rqt_plotを起動するために必要
roscore

# GUIが使えるか確認
rqt_plot

# Naoqi-SDKがマウントできているか確認
ls ~/naoqi-sdk/
ls ~/pynaoqi/

下図のように表示されれば準備OKです。

範囲を選択_025.png

[Mac] 5. PepperをROSで動かす

ではいよいよPepperをROSで動かしてみましょう

コンテナ内でPepperを起動する
# ターミナル1
roscore

# ターミナル2
roslaunch pepper_bringup pepper_full.launch nao_ip:=PepperのIPアドレス nao_port:=9559 network_interface:=eth0

正常にROSでPepperと接続できれば下図のように表示されると思います。

pepper_bringup_full.png

(ターミナルの色が違うのは気にしないでください)

以下のコマンドでノードやトピックを調べて正常にデータを受信できているか確認しましょう。

  • rosnode list
  • rostopic list
  • rqt_image_view

例)rqt_image_view でPepperのカメラ画像を表示させた例
image

Ubuntu

[Ubuntu] 1. Naoqi-SDKをダウンロードし、解凍する

手順はMacと同じためそちらを参照してください。

[Ubuntu] 2. Dockerインストール

以下の手順はDocker1.9をインストールする例です。
もし既にDockerをインストール済みの方は、あまり古くなければ動作可能だと思います。

Dockerのインストール
curl -sSL https://get.docker.com | sh

# バージョンの確認
docker --version
#Docker version 1.9.1, build a34a1d5

# sudoをつけずにdockerコマンドを実行する
# 設定を反映するにするには再起動必要かも
sudo usermod -aG docker $USER

# この後、一旦ログアウトしログインしなおす

[Ubuntu] 3. 使用するDockerイメージのダウンロード

Dockerイメージをダウンロード
docker pull ykoga/pepper-ros-handson

# 正常にダウンロードされたことを確認
docker images
# REPOSITORY                 TAG                   IMAGE ID            CREATED             VIRTUAL SIZE
# ykoga/pepper-ros-handson   latest                0f1c04860a76        29 minutes ago      2.344 GB

[Ubuntu] 4. 動作確認

コンテナを作成
# GUI表示のために必要
xhost +

# コンテナ起動
# --volume 以下には、保存したNaoqi-SDKのフォルダの絶対パスを入力する(Python,C++両方)。以下はホームディレクトリに置いた例
docker run -it --rm --name pepper_robot --hostname pepper_robot --env DISPLAY=unix$DISPLAY --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" --volume="$HOME/pynaoqi-python2.7-2.4.2.26-linux64:/root/pynaoqi" --volume="$HOME/naoqi-sdk-2.4.2.26-linux64:/root/naoqi-sdk" ykoga/pepper-ros-handson terminator

# セキュリティ向上のためにコンテナから出たら戻しておくこと
# xhost -

新規にウィンドウが立ち上がるので、そこに以下のように入力します。
(水平分割は 右クリック+Split Horizontally または Ctrl+Shit+o
 垂直分割は 右クリック+Split Vertically または Ctrl+Shit+e )

立ち上がったターミナルで動作確認
# rqt_plotを起動するために必要
roscore

# GUIが使えるか確認
rqt_plot

# Naoqi-SDKがマウントできているか確認
ls ~/naoqi-sdk/
ls ~/pynaoqi/

下図のように表示されれば準備OKです。

範囲を選択_025.png

[Ubuntu] 5. PepperをROSで動かす

ではいよいよPepperをROSで動かしてみましょう。手順はMacと同じためそちらを参照してください。

参考

Macのdocker周りのエラー

以下の二つのエラーについては、dockerの再起動、再設定で解決できます。

  • docker pull時に "Network timed out" エラーが出てDockerイメージがダウンロードできない
Network timed out while trying to connect to https://index.docker.io/v1/repositories/library/node/images. 
You may want to check your internet connection or if you are behind a proxy.
  • dokcerコマンドを使うと、Cannot connect to the Docker daemon. Is the docker daemon running on this host?と出る

以下のようにしてdockerの再起動、再設定をしてください。

docker-machine restart default
eval $(docker-machine env default)