LoginSignup
22
21

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-03-26

はじめに

この記事は、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がダウンロードできるようになります。

image

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

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

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

範囲を選択_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) 
22
21
6

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
22
21