はじめに
この記事は、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分)
- Naoqi-SDKのダウンロード、解凍
- Dockerインストール
- 使用するDockerイメージのダウンロード(約2.3GB)
- 動作確認
- PepperをROSで動かす
1.〜4.が準備、5.が実際にROSで動かす部分です。ハンズオンの事前準備は、4.動作確認 まで行ってください。
MacとUbuntuでやることが異なりますので、分けて解説します。
Mac
[Mac] 1. Naoqi-SDKのダウンロード、解凍
右上の sign in をクリックして、 アカウント作成 をクリックしてください。(既にアカウントをお持ちの方はサインインしてください。)
https://www.aldebaran.com/ja
Aldebaranアカウントでログインした状態で、Developper Program に登録してください。Developper Programに登録することで下記SDKがダウンロードできるようになります。
以下のPepper-SDK(Naoqi-SDK)を選んでダウンロードし、解凍してください。Macユーザであっても必ずLinux版をダウンロードしてください。
解凍した2つのディレクトリはどこにおいてもいいのですが、ここではホームディレクトリに置いておきましょう。
- Python 2.7 SDK 2.4.2 Linux 64
- C++ SDK 2.4.2 Linux 64
[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をインストールします。
brew install socat
[Mac] 3. 使用するDockerイメージのダウンロード
ROSとPepper関連パッケージが入った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です。
[Mac] 5. PepperをROSで動かす
ではいよいよPepperをROSで動かしてみましょう
# ターミナル1
roscore
# ターミナル2
roslaunch pepper_bringup pepper_full.launch nao_ip:=PepperのIPアドレス nao_port:=9559 network_interface:=eth0
正常にROSでPepperと接続できれば下図のように表示されると思います。
(ターミナルの色が違うのは気にしないでください)
以下のコマンドでノードやトピックを調べて正常にデータを受信できているか確認しましょう。
- rosnode list
- rostopic list
- rqt_image_view
例)rqt_image_view でPepperのカメラ画像を表示させた例
Ubuntu
[Ubuntu] 1. Naoqi-SDKをダウンロードし、解凍する
手順はMacと同じためそちらを参照してください。
[Ubuntu] 2. Dockerインストール
以下の手順はDocker1.9をインストールする例です。
もし既に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 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です。
[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)