今年より、アクアリングの仲間になりましたエンジニアのTaijimanです。
今回は、僕より少し先輩のPepper君のQiMessagingライブラリを使用して、先輩の秘密をさぐってみたいと思います。
使用方法は、以下のタグをHTMLに追加すれば、使用できるようになります。
ローカルで試験的に使用するため、pepper先輩のIPを指定しています。
1 2 |
<script type="mce-text/javascript" src="http://192.168.1.10/libs/qimessaging/1.0/jquery.min.js"></script> <script type="mce-text/javascript" src="http://192.168.1.10/libs/qimessaging/1.0/qimessaging.js"></script> |
以下のリンクからもソースを取得できるようです。
https://github.com/aldebaran/libqi-js
接続方法は、以下のようになります。
接続成功時、接続失敗時にJavaScriptコンソールに出力します。
ローカルで使用するので、こちらにもIPを指定します。
1 2 3 4 5 6 7 8 9 10 |
var pepper = {}; (function($){ var pepper_ip = '192.168.1.10'; pepper.qi = new QiSession(pepper_ip); pepper.qi.socket().on('connect', function(){ console.log('pepper:connect'); }).on('disconnect', function(){ console.log('pepper:disconnect'); }); })(jQuery); |
PepperのNAOqi APIを使用するには、以下のような記述で使用できるようになります。
doneが成功時、failが失敗時の処理ですね。
1 2 3 4 5 |
pepper.qi.service('ALTextToSpeech').done(function(als){ console.log('ALTextToSpeech:OK'); }).fail(function(err){ console.log('ALTextToSpeech',err); }); |
今回は、NAOqi APIがどこまで使用できるのか試してみたいので、
以下のようなメソッドを作って、実行してみます。
(本当はtimeoutも設定すべきですが・・)
成功時には、pepper.{サービス名}でその機能を実行できるようにしています。
1 2 3 4 5 6 7 8 9 |
function qiSessionTest(services) { for (var i in services) (function(name) { pepper.qi.service(name).done(function(als){ pepper[name] = als; }).fail(function(err){ console.log(name,err); }); })(services[i]); } |
サービス名称は、以下のページを参考に配列に加工します。
http://doc.aldebaran.com/2-1/naoqi/index.html
1 2 3 4 5 6 7 |
var naoqiApis =[ 'ALAutonomousLife', 'ALBehaviorManager', 'ALConnectionManager', 'ALExtractor' // 以下、省略 ]; qiSessionTest(naoqiApis); |
ALRobotPose以外、deprecatedな機能もほとんど実行できるようですね。
ALExtractor, ALModule, ALVisionExtractorsは親クラスなのでAPIとしては使えないのはわかりますが、ALLandmarkDetectionが使えないのは、解せない・・・。
ALLandMarkDetectionに変更すると・・・
使えるようです。
JavaScriptコンソールで以下のようにたたくとPepper先輩が話します。
1 |
pepper.ALTextToSpeech.say('こんにちわ').done(function(data){console.log(data);}).fail(function(err){console.log(err);}); |
getMethodListで使用できるメソッドの配列、getMethodHelpで使用方法がとれるので、
各APIの説明は、JavaScriptコンソールで調べるほうが簡単ですね。
Pepper先輩は、家族構成は教えてくれませんが、NAOqi APIを使ってブラウザから操れることがわかりました。
javascriptで操作するとか、ウェブの知識、技術を活用できるので、
SVGあたりと組み合わせたら、もっとおもろいことができそうですね。