Edited at

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

More than 3 years have 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)