ROSとPepperを接続すると移動や認識などの各種情報が可視化できます。SLAM機能などの開発支援となるROSを使ってみよう!
はじめに
ROS(Robot Operating System)はWillow Garage社が開発したBSDライセンスのオープンソースソフトウェアです。
現在はOSRF(Open Source Robotics Foundation)が管理しています。
ロボット・アプリケーション開発を支援するための多くのライブラリとツールを提供しています。
このROSを使ってPepperを接続することで移動や認識などの各種情報が可視化できます。
それでは早速接続する方法を解説していきましょう。
環境準備
ROSはUbuntu Linux環境で動作するのでUbuntuを用意する必要があります。
そしてROSは複数バージョンが存在しますが、すでにPepperと接続して動作確認されているものをインストールします。
今回は以下のUbuntuとROSのバージョンをインストールします。
- Ubuntu Linux 14.04 (Trusty)
- ROS Indigo
この記事ではmacOSにある仮想マシン環境(Parallels Desktop)にインストールしているUbuntuを使います。
- macOS Hight Sierra (10.13.3)
- Paralles Desktop 12
ROS Indigoのインストール
UbuntuにROSをインストールするために各種ドライバやソフトウェアについてインターネットからのダウンロードを許可する設定にします。
Ubuntuの「システム設定」-「ソフトウェアとアップデート」の「Ubuntuのソフトウェア」タブにある設定が全てチェックされていることを確認してください。
デフォルトでは全てチェックされていると思います。
*ROS IndigoのインストールはROS.orgサイト を参考にしています。
1.Sources.listの設定
Packages.ros.orgからソフトウェアをUbuntu14.04でダウンロードできるように設定します。
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'
2.鍵の設定
ROSパッケージの信頼を証明するために鍵を設定します。
$ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
3.Ubuntuアップデート
UbuntuにあるDebianパッケージを最新のものにします。
$ sudo apt-get update
4.ROS Indigoのインストール
ROS Indigoをインストールします。ここでは全てのデスクトップ環境をインストールします。
$ sudo apt-get install ros-indigo-desktop-full
5.rosdepの初期化
ROSを使用可能にする前に、rosdepを初期化する必要があります。
$ sudo rosdep init
$ rosdep update
6.環境設定
ROSの環境変数を設定します。Ubuntuを起動する度に自動的に設定できるようにします。
$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
7.rosinstallの準備
rosinstallツールを使えるようにします。
$ sudo apt-get install python-rosinstall
ROSとPepperを接続ための環境作成
次にROSとPepperを接続します。
Pepperと接続するにはPython NAOqi SDKを使います。ここではNAOqi2.5.5を使います。
*ROSとPepperの接続は以下のサイトを参考にしています。
1.Python 2.7 SDK 2.5.5 Linux 64の取得
Softbank RoboticsのDeveloperポータルサイト からSDKをダウンロードします。
SDKをダウンロードすると以下のように展開します。
$ mkdir ~/naoqi
$ cp ~/Downloads/pynaoqi-python2.7-2.5.5.5-linux64.tar.gz ~/naoqi
$ cd ~/naoqi
$ tar xzf pynaoqi-python2.7-2.5.5.5-linux64.tar.gz
2.SDK環境変数の設定
SDKを使えるようにするため以下の環境変数を設定します。
$ export PYTHONPATH=~/naoqi/pynaoqi-python2.7-2.5.5.5-linux64/lib/python2.7/site-packages:$PYTHONPATH
$ echo 'PYTHONPATH=~/naoqi/pynaoqi-python2.7-2.5.5.5-linux64/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.bashrc
$ export NAOqi_DIR=~/naoqi/pynaoqi-python2.7-2.5.5.5-linux64
$ echo 'NAOqi_DIR=~/naoqi/pynaoqi-python2.7-2.5.5.5-linux64' >> ~/.bashrc
PYTHONPATHが通ってるかをPythonを実行してnaoqiライブラリがインポートできるかで確認します。
$ python
>>> import naoqi
エラーがでなければパスが通っています。
3.Pepper用パッケージインストール
まずはROSのパッケージをインストールします。
$ sudo apt-get install ros-indigo-driver-base ros-indigo-move-base-msgs ros-indigo-octomap ros-indigo-octomap-msgs ros-indigo-humanoid-msgs ros-indigo-humanoid-nav-msgs ros-indigo-camera-info-manager ros-indigo-camera-info-manager-py
次にPepper用のパッケージをインストールします。
$ sudo apt-get install ros-indigo-pepper-.*
※インストール最後に設定の確認画面が表示されるので、「Tab」キーを押して「<ok>」を選択状態にしてエンターキーを押します。
その後に表示される画面についても「Tab」キーを押して「<yes>」を選択してエンタキーを押します。
その他に必要なパッケージ(naoqi_driver)をソースコードから取得します。
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ git clone https://github.com/ros-naoqi/naoqi_driver.git
ビルドするために依存関係にあるものをインストールします。
$ rosdep install -i -y --from-paths ./naoqi_driver
取得したソースからパッケージをビルドします。
$ source /opt/ros/indigo/setup.sh
$ cd ../ && catkin_make
仮想マシン環境のUbuntuでビルドがエラーとなる場合は、仮想環境で割り当てられているメモリ量を増やしてみてください。
ここまでできればROSとPepperを接続するための環境作成は完了です。
ROSとPepperを接続
上記までの環境作成ができれば、あとはツールを使ってPepperと接続します。
それではPepperを可視化するためのRVizを使ってみましょう。
まずはROSを起動します。Terminalを起動して以下のコマンドを実行します。
$ roscore
次にROSとPepperを接続します。ここではPython版を使用して接続します。
roscore実行中のとは別の新しいTerminalを起動して以下のコマンドを実行します。
$ roslaunch pepper_bringup pepper_full_py.launch nao_ip:=<PepperのIPアドレス> roscore_ip:=<ROSのIPアドレス>
そしてRVizを起動します。さらに新しいTerminalを起動して以下のコマンドを実行します。
$ rosrun rviz rviz
RVizは起動後に.rvizファイルを開くとPepperと接続します。
ROS.orgに記載されている場所には.rvizファイルがなかったのでネット上で使えるファイルを探して利用します。
今回は以下のファイルを使いました。
うまく行けば以下のようにPepperとPepper目線の画像が表示されます。
RVizを終了するときはアプリケーションを閉じれば終了します。Terminalで実行中のコマンドは「Ctrl+C」で終了します。
最後に
ロボット開発でよく使われるROSは、Pepper以外にも様々なロボットに対応しています。
また、実機がなくてもビジュアルで開発できるようなライブラリも提供されているようです。
それらの記事もまた掲載したいと思います。