はじめに
-
アルデバラン・アトリエ秋葉原の公式アカウントから「PepperタブレットにおけるJavaScript活用コンテンツ(QiMessaging JavaScript)」が公開されていますが、外部の PCから Pepperに接続する形での使用について確認してみました。
-
Aldebaranの githubアカウントで公開されている JavaScriptを使用します。
https://github.com/aldebaran/libqi-js -
qimessaging内には 1.0と 2のディレクトリがあります。
まずは Version 1.0 から
適当な Webサーバに配置した HTMLを表示し、そのページ内から QiMessaging JavaScriptを使用して Pepperに接続します。
こんな HTMLを用意します。Pepper(192.168.3.23)に接続して、ALTextSpeechで「Hello!」と言わせるだけです。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>qimessaging javascript v1.0</title>
<script src="libs/qimessaging/1.0/qimessaging.js"></script>
<script>
window.onload = function() {
var session = new QiSession("192.168.3.23");
session.socket().on('connect', function() {
console.log("connected!");
});
session.service("ALTextToSpeech").done(function(tts) {
tts.say("Hello!");
}).fail(function(error) {
console.log("Error!");
});
}
</script>
</head>
<body>
v1.0
</body>
</html>
ページ表示後、Pepperが「Hello」と言いましたので、まあ動いているようです。
[Warning] This version of QiMessaging is now deprecated. Please consider upgrading with help from the documentation. (qimessaging.js, line 1)
[Log] connected! (index_v1.html, line 13)
ただ、JavaScriptコンソールの表示を見ると、「 This version of QiMessaging is now deprecated. 」と言われています。
qimessaging.jsの先頭行に入っているようです。
console.warn("This version of QiMessaging is now deprecated. Please consider upgrading with help from the documentation.");
/*
** Copyright (C) Aldebaran Robotics
** See COPYING for the license
**
** Author(s):
** - Laurent LEC <llec@aldebaran-robotics.com>
**
*/
次に Version 2 を
Ver 2も試してみます。
ざっとソースを見たところ、QiSessionのコンストラクタのパラメータから違うようです。
function QiSession(host, resource)
function QiSession(connected, disconnected, host)
処理はあまり気にしなくても大丈夫そうな印象でしたので、とりあえず以下の状態で確認してみます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>qimessaging javascript v2</title>
<script src="libs/qimessaging/2/qimessaging.js"></script>
<script>
window.onload = function() {
var session = new QiSession(true, true, "192.168.3.23");
}
</script>
</head>
<body>
v2
</body>
</html>
Webサーバから取得して表示
JavaScriptコンソールに以下の内容が表示されました。
[Error] XMLHttpRequest cannot load http://192.168.3.23/libs/qimessaging/2/socket.io/1/?t=1426313694819. Origin http://localhost is not allowed by Access-Control-Allow-Origin. (index_v2.html, line 0)
「Access-Control-Allow-Origin」と、クロスドメイン関連のエラーっぽいです。まあ、そう言われればそうなのですが、Ver 1.0はなぜ動いたのでしょうか。
ローカルファイルをそのまま表示
js をファイルシステム上のフルパスで指定し、そのままブラウザで開きます。
<script src="/Library/WebServer/Documents/pepper/libs/qimessaging/2/qimessaging.js"></script>
JavaScriptコンソールには以下の内容が表示されました。
[Error] Failed to load resource: the server responded with a status of 404 (Not Found) (1, line 0)
Pepper側にアクセスはしていますが、Ver 2のファイルはないようです。パーミッション的にここにコピーするわけにはいかないようです。
$ pwd
/var/log/nginx
$ tail -f access_log
192.168.3.235 - - [14/Mar/2015:16:01:36 +0900] "GET /libs/qimessaging/2/socket.io/1/?t=1426316495939 HTTP/1.1" 404 143 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/600.3.18 (KHTML, like Gecko) Version/8.0.3 Safari/600.3.18"
$ pwd
/var/www/libs/qimessaging
$ ls -la
total 12
drwxr-xr-x 3 root root 4096 Oct 23 22:43 .
drwxr-xr-x 3 root root 4096 Oct 23 22:43 ..
drwxr-xr-x 2 root root 4096 Oct 23 22:43 1.0
/var/www/apps/等のコピーできる場所にコピーしたら動かせるだろうかとも思いましたが、
$ pwd
/var/www
$ ls -la
total 24
drwxr-xr-x 6 root root 4096 Oct 23 22:43 .
drwxr-xr-x 7 root root 4096 Nov 19 16:33 ..
lrwxrwxrwx 1 root root 42 Oct 23 22:43 apps -> /home/nao/.local/share/PackageManager/apps
drwxr-xr-x 3 root root 4096 Oct 23 22:43 libs
drwxr-xr-x 2 root root 4096 Oct 23 22:48 localhost
drwxr-xr-x 6 root root 4096 Oct 23 22:43 oldrobotwebpage
drwxr-xr-x 8 root root 4096 Oct 23 22:29 robotsgate
どうも ver 1.0では nginxが何やらリクエストを処理しているようで、そのまま ver 2の jsをコピーするだけでは動かないような感じがします。
location ^~ /libs/qimessaging/1.0/socket.io/ {
rewrite /libs/qimessaging/1.0/socket.io/(.*) /socket.io/$1 break;
proxy_pass http://127.0.0.1:8002;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
結論
結局 Ver 2は動かせてはいませんが、今のところ Pepper側も対応していないようですし、Ver 1.0を使うしかないようです。github版では deprecated と示されるのが気になりますが。
感想
- Ver 2ってどういう位置づけなんですかね。そのうち置き換わっていくのでしょうか?
- 新しい Pepperが届いた方は、ぜひバージョンを教えてください。たぶん 1.0だと思いますけど。
- ちなみに私は先日の 300台の販売では、表参道店の抽選に外れ、オンライン予約では 10:10にアクセスし、抽選にも入れませんでした(悲