LoginSignup
13
13

More than 5 years have passed since last update.

QiBuildでPepperを動かしてみる。[C/C++]

Last updated at Posted at 2015-06-04

前書き

初めまして、2015年の5月からロボットクリエイターを名乗らせてもらっています。RYOといいます。

Qiitaの書き方にまだ慣れていないので、その点はご容赦いただければと思います。

今回、記事にしようと思ったのは、Pepperの先輩である、NAOを使って、赤外線通信を実装しようと思ったことから始まります。

ドキュメントを読んで、いろいろ調べているうちに、AldebaranさんのGitHubにたどり着きました。

そこに、C++で書かれたInfraredのコードがあったので試してみようと思い、まずはそれの導入として、今回の記事を書くに至ります。

前提

RYOの開発環境


機種名 : MacBook Pro
OS : Yosemite 10.10.3
プロセッサ名 : Intel Core i5 2.6 GHz
メモリ : 16 GB
グラフィック : Intel Iris 1536MB

その他 : iTerm2
英語力 : 英検三級

注意


  • Windows,Linuxについては検証しておりません。

  • この記事を書くにあたって、主に公式ドキュメントの、[C++ SDK Installation]の項目を参考にしています。

※公式ドキュメントには

A - Compiler and IDE
B - Cross-platform build system

という項目が載っていますが、今回IDEやCross-platformは利用しないで、行うので、割愛させてもらいます。

追記(2015/06/09):
また、brewというMacのパッケージ管理マネージャーである、brewを利用しています。

Homebrew
http://brew.sh/index_ja.html

を参考に、インストールしてください。

zsh
% ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

でインストールできます。

概要

まずは大まかな流れを書いていこうと思います。

  1. SDKのダウンロード
  2. qibuildをインストール
  3. アプリケーションのビルド

詳細

1. SDKのダウンロード

Ⅰ. Aldebaranの公式サイトからSDKをダウンロードしてきます。

追記(2015/06/04):おそらく、NAOやPepperのヒモ付をしていないとDL出来ません。

僕がDLしてきたのは、naoqi-sdk-2.1.3.3-mac64.tar.gzです。
Windowsの方も、Linuxの方も、C++SDKをDLしてもらえば、大丈夫かと思います。

Ⅱ. DLしてきたファイルを解凍します。

この、解凍して出来たフォルダを任意の場所に移します。

ここで注意していただきたいのが、qibuildの環境を作成する際に、

qibuild init

を行うのですが、階層構造などもまとめて、.qiというフォルダに保存されるようなので、後々移動させる必要がない場所に移してください。

また、パスに日本語名があるとバグの原因になることがあるので、そのようにならない場所がオススメです。

僕は以下の位置におきました。
ex) /Users/ryo/NAOqiSDK/naoqi-sdk-2.1.3.3-mac64

2. qibuildをインストール

Ⅰ.cmake,pythonをインストール

macであれば

brew install cmake
brew install python

でそれぞれインストールできます。

公式ドキュメントには

CMake version 2.8.3 or higher
Python 2.7

となっていますので、

CMake : ver2.8.3~
python : python2.7

をインストールしておいてください。

ちなみに僕がインストールしたものは以下のようになっています。

zsh
% python -V
Python 2.7.10

% cmake /V                                                                                                                                                                                                                                         
cmake version 3.2.2

追記(2015/06/09):

Ⅱ.qibuildのインストール

Pythonのパッケージ管理システム、pipを利用して、qibuildをインストールします。

コメントの方にも書きましたが、

pip install qibuild

でインストールすることが出来ます。

Ⅲ.初期設定

NAOqiSDKディレクトリ下に、"workspace"と言う名のディレクトリを作成します。
このディレクトリが作業環境になります。

zsh
% pwd
/Users/ryo/NAOqiSDK
% mkdir workspace
% ls
naoqi-sdk-2.1.3.3-mac64 workspace

追記(2015/06/12):
workspaceを作成したら、そのworkspace下で初期化を行います。

qibuild init

zsh
% cd workspace/
~/NAOqiSDK/workspace % qibuild init

これを行うと、.qiというフォルダが作成され、その中に、

path.conf qibuild.xml worktree.xml

と言った、ファイルが作成されます。
何か、qibuildを使っていて、不具合がおきてやり直す場合は、.qiというファイルを削除してください。

続いて、エディタの設定を行います。
公式ドキュメントには、QtCreaterを使ったほうが良いみたいなことが書いてあるみたいですが、スルーしていきます。

qibuild config --wizard

上記のコマンドを使うことによって、エディタの設定が行えます。
一覧に表示されるのは、自分の所有しているエディタみたいです。

zsh
% qibuild config --wizard
Found CMake: /usr/local/bin/cmake
:: Please choose a generator
   1 Unix Makefiles     (default)
   2 Ninja
   3 Xcode
   4 CodeBlocks - Ninja
   5 CodeBlocks - Unix Makefiles
   6 CodeLite - Ninja
   7 CodeLite - Unix Makefiles
   8 Eclipse CDT4 - Ninja
   9 Eclipse CDT4 - Unix Makefiles
   10 KDevelop3
   11 KDevelop3 - Unix Makefiles
   12 Kate - Ninja
   13 Kate - Unix Makefiles
   14 Sublime Text 2 - Ninja
   15 Sublime Text 2 - Unix Makefiles
> 1
:: Please choose an IDE
   1 None   (default)
   2 QtCreator
   3 Eclipse CDT
   4 Xcode
> 1

今回は、どちらもデフォルトの1にしました。

Ⅳ.ToolChainの作成

NAOqiSDKを用いてビルドする際の関連付けのです。

まずは、以下の通りにコマンドを実行します。

qitoolchain create mytoolchainA ~/NAOqiSDK/naoqi-sdk-2.1.3.3-mac64/toolchain.xml

qitoolchain createとはtoolcahinを作るためのコマンドです。今回はDLしてきたSDK内のtoolcahinを利用するために、mytoolchainAという名前をつけて、クリエイトしました。

mytoolchainAというところは、好きな名前をつけて大丈夫なようです。

zsh
% pwd                                                                                                                                                                                                                                           
/Users/ryo/NAOqiSDK
% qitoolchain create mytoolchainA ~/NAOqiSDK/naoqi-sdk-2.1.3.3-mac64/toolchain.xml
Updating toolchain mytoolchainA with feed /Users/ryo/NAOqiSDK/naoqi-sdk-2.1.3.3-mac64/toolchain.xml ...
Adding packages
* (1/1) libnaoqi
Done

次に、いま作成したものを、開発環境で使えるようにします。
ここの説明は公式ドキュメントには載っていないものですが、やったらうまくいったので、多分大丈夫だと思います。
多分大丈夫だと思います。大事なことなので(ry

qibuild add-config -t mytoolchainA mytoolchainB

先ほど、toolchainを作成しましたが、作成しただけでは使えるようになっていません。
なので、コンフィグに追加してあげることで利用可能になります。

mytoolchainBはおそらく、config名みたいなものだと思います。これを実際に使って、ビルドを行っていくので、わかり易い名前をつけておきましょう。

zsh
% pwd                                                                                                                                                                                                                                           
/Users/ryo/NAOqiSDK
% qibuild add-config -t mytoolchainA mytoolchainB

*補足:
zsh
% pwd                                                                                                                                                                                                                                           
/Users/ryo/NAOqiSDK
% qibuild -h
    add-config          Add a build configuration
% qibuild add-config -h
usage: qibuild add-config [-t TOOLCHAIN] name

optional arguments:
  -t TOOLCHAIN, --toolchain TOOLCHAIN

必要なところだけ、抜き出しましたが、ヘルプは上記のようになっています。


Ⅴ.実際にビルドする

ビルドするには元となるソースが必要なので、SDKに付属する"helloworld"を利用します。

zsh
% pwd                                                                                                                                                                                                                                           
/Users/ryo/NAOqiSDK
% cp -r naoqi-sdk-2.1.3.3-mac64/doc/dev/cpp/examples/core/helloworld workspace

helloworldディレクトリに移動します。

zsh
% pwd                                                                                                                                                                                                                                           
/Users/ryo/NAOqiSDK
% cd workspace/helloworld
% pwd
/Users/ryo/NAOqiSDK/workspace/helloworld
% tree
.
├── CMakeLists.txt
├── example.html
├── example.rst
├── helloworld.cpp
├── helloworld.h
├── index.html
├── index.rst
├── main.cpp
├── qiproject.xml
└── testhelloworld.cpp

*treeコマンドはbrewでインストールしてあります。

これで、必要なファイルの用意が出来ました。
ここからは実際にビルドを行っていきましょう。

qibuild configure -c mytoolchainB

このコマンドで、toolchainの先ほど作ったコンフィグを読み込んでいます。

zsh
% qibuild configure -c mytoolchainB
Current build worktree: /Users/ryo/NAOqiSDK/workspace
Using toolchain: mytoolchainA
* (1/1) Configuring helloworld
-- The C compiler identification is AppleClang 6.1.0.6020053
-- The CXX compiler identification is AppleClang 6.1.0.6020053
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Using qibuild 3.8.1
-- Binary: helloworld
-- Binary: testhelloworld
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/ryo/NAOqiSDK/workspace/helloworld/build-mytoolchainB

実行後、ディレクトリの中を見るとbuild-mytoolchainBというディレクトリが作成されます。

最後に、

qibuild make -c mytoolchainB

実行ファイルを作成します。

zsh
% qibuild make -c mytoolchainB
Current build worktree: /Users/ryo/NAOqiSDK/workspace
Using toolchain: mytoolchainA
* (1/1) Building helloworld
Scanning dependencies of target helloworld
~中略~
[100%] Built target testhelloworld

これで、実行ファイルが作成されました。
あとは実行するだけです。

zsh
% ./helloworld --pip 169.254.158.71
dyld: Library not loaded: libboost_signals.dylib
  Referenced from: /Users/ryo/NAOqiSDK/workspace/helloworld/build-mytoolchainB/sdk/bin/./helloworld
  Reason: image not found
zsh: trace trap  ./helloworld --pip 169.254.158.71

実行しようとした、ライブラリがないぞ!と怒られました。
なので、パスを通してあげます。

zsh
% export DYLD_LIBRARY_PATH=DYLD_LIBRARY_PATH:~/NAOqiSDK/naoqi-sdk-2.1.3.3-mac64/lib

これで再度実行します。

zsh
% ./helloworld --pip 169.254.158.71
~前略~
Saying hello to the console ...
Hello world
Calling say method of ALTextToSpeech module ...
~後略~

「へるおおるるど」という感じに発音しましたが、一応出来たということでいいでしょう。

後書き

もともとC/C++のディベロッパーだったこともあり、C/C++で開発できるなら!と思ってやっと開発環境が整いました。
もちろん、NAO・Pepperの開発は主にpythonでは有るのですが、他の言語も充実してくると嬉しいですね。
最後まで読んで頂きありがとうございました。

参考資料

13
13
3

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
13
13