2016年12月5日月曜日

Pynaoqi SDK 2.1.4をUbuntu 16.04で動かすときにハマったことと解決策

僕はSoftbank Pepperを動かすSDKとしてchoregraphe,pynaoqi,qimessaging.jsを主に使っています。
先日Ubuntu 14.04をUbuntu 16.04にアップグレードして、pynaoqiの環境構築を行って動かしてみたところ、2つのエラーが発生しました。
 
エラー1 : libqipython.soを開けませんでした
pynaoqiでUbuntu 16.04でaldebaranの公式マニュアルの通りに環境構築をしたときに以下のエラーが発生しました。

>>> import naoqi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
    import qi
  File "/path/to/pynaoqi-python2.7-2.1.4.13-linux64/qi/__init__.py", line 72, in <module>
    from _qi import Application as _Application
ImportError: libqipython.so: cannot open shared object file: No such file or directory


このエラーはpynaoqiディレクトリにあるlibqipython.soをqi/__init__.pyが発見できないというエラーです。
この問題は共有ライブラリのパスを通すことで解決できます。

export LD_LIBRARY_PATH="/path/to/naoqi:$LD_LIBRARY_PATH"
sudo ldconfig
 
を実行することで解決できます。 

エラー2  : libboost_python.1.55.0.soを開けませんでした
次に、
ImportError: libboost_python.1.55.0.so: cannot open shared object file: No such file or directory 
 というエラーが発生しました。

 qi/__init__.pyを見てみると、

    deps = [
            "libboost_python.so",
            "libboost_system.so",
            "libboost_chrono.so",
            "libboost_program_options.so",
            "libboost_thread.so",
            "libboost_filesystem.so",
            "libboost_regex.so",
            "libboost_locale.so",
            "libboost_signals.so",
            "libqi.so",
            "libqitype.so",
            "libqimessaging.so",
            "libqipython.so"
    ]


 というコードが発見できます。

 また、
readelf -Ws libqipython.so | grep "boost"
を実行すると、*boost*python*のキーワードが入ったシンボルが発見できるかと思います。

pynaoqiのディレクトリにはlibboost_python.soがあるので、
__init__.py -> libqipython.so -> libboost_python.so -> libboost_python.so.1.55.0
という依存関係が判明しました。

この問題は、libboost-1.55.0の共有ライブラリをpynaoqi/以下に入れれば解決できます。
Ubuntu 16.04では
ls /usr/lib/x86_64-linux-gnu | grep "libboost" 
apt-cache search libboost
を実行してみると、*1.58*というキーワードが発見できたことに対し、*1.55*のキーワードは存在しなかったので、ubuntu 16.04のPC内とaptレポジトリにはlibboost-1.58しか存在しないことがわかりました。

この場合は適当なライブラリに入っているlibboost_*.so.1.55.0の共有オブジェクトファイルを取ってくることで解決できます。

naoqi c++ sdkをダウンロードして展開し、lib/以下を見てみると、libboost_*.so.1.55.0の共有オブジェクトが発見できるので,
cp -a path/to/naoqicpp/lib/*.so*.1.55.0 /path/to/pynaoqi
を実行することによってこの問題を解決できます。

これで
>> import naoqi
が成功するとおもいます。

この記事はSoftbank Robotics Community Wikiにも投稿しています。(英語)
https://community.ald.softbankrobotics.com/en/forum/import-issue-pynaoqi-214-ubuntu-7956#node-12298

2016年12月2日金曜日

Pepperハッカソン & 講習会① : いきさつ


祖母の東京の家で暮らしていたPepperが金沢工業大学の研究所に引っ越ししてきました!
研究室のみんなはPepperに興味しんしん!
Pepperとあいさつしたり、一緒に踊ったりして、楽しみました!!!

でも、研究室のみんなは工学部の大学生!
今あるロボットを使うだけじゃなくて、作りたいのが工学部の学生!!!

そこでぼくが、Pepperハッカソン & 講習会を提案したところ、研究室の大学生から「やりたい!」「ぜひ!」「いいね!」という声が!!!!!

そこでPepperハッカソン & 講習会を企画・開催することになりました。
「研究室のゼミの一環としてやろう」という話が大学教授からも出て、開催が決定しました!



Pepperを通して、生活支援ロボットのソフトウエア・人工知能開発を体験してもらいたい!!
生活支援ロボットソフトウエア人工知能を自分で作ることの楽しさを知ってもらいたい!!

次回Pepperハンズオンについて書きます!お楽しみに!