1. Ryo87

    Posted

    Ryo87
Changes in title
+QiChatを使ってPepperを自由に動かす。【イベント】
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,271 @@
+##始めに
+Qichatを使えば、Dialogボックスだけである程度の物事を管理できるようになるので、その辺をまとめた記事がなかったので、作成しようと思います。
+
+今回も、先に記事を公開して、暇があるタイミングで更新していくスタンスで行きたいと思います。
+
+##確認方法
+###確認環境
+MacBook Pro (Retina, 13-inch, Late 2013)
+コレグラフ2.1.3
+NAO 2.1.3(basic Channelインストール済み)
+うちにはNAOしかいないのでとりあえず、NAOで。
+Pepper欲しい。
+
+##方針
+とりあえず、チュートリアルとして、ルールの使い方や、コンセプトの使い方を簡単に説明して、そのあとは本題のイベントを使った話とか、コラボラティブな話とか書いていきたいです。
+
+##イベント
+###Dialogのイベント
+1. Dialog/Answered
+
+ 自分の言った言葉を繰り返す。
+
+ ```
+ u:(こんにちは) こんにちは
+ u:(なんて言ったの) わたしは $Dialog/Answered と言った。#わたしはこんにちはと言った。
+ ```
+
+1. Dialog/Failure
+
+ Dialog/Fallbackまたは、Dialog/NotUnderstoodを2回行うと、3回目に呼び出される。
+
+ ```
+ u:(e:Dialog/NotUnderstood) 失敗 #2回発動
+ u:(e:Dialog/Failure) 三回も失敗してやんの―
+ ```
+
+1. Dialog/Fallback
+
+ Fallbackと一致すると発動。
+ どうしたら発動するのかわからない。
+
+1. Dialog/IsStarted
+
+ Dialogが起動していればTrueを返す、らしい?
+
+ >Event: "Dialog/IsStarted"
+ >True if ALDialog is started.
+
+
+ ```
+ u:(e:onStart) こんにちは
+ u:(こんにちは) ["$Dialog/IsStarted==True ひまなの?" "けっ!"] #あれ?けっ!って言われたんだけど...
+ ```
+
+1. Dialog/LastInput
+
+ 最後の入力を繰り返す。
+
+ ```
+ u:(おはよう) $Dialog/LastInput #おはよう
+ ```
+
+
+1. Dialog/NotSpeaking5
+1. Dialog/NotSpeaking10
+1. Dialog/NotSpeaking15
+1. Dialog/NotSpeaking20
+
+ 話をしないで、5,10,15,20秒経つと発話する。
+
+ ```
+ u:(e:Dialog/NotSpeaking5)  なんか話してー
+ u:(e:Dialog/NotSpeaking10) 話してよー
+ u:(e:Dialog/NotSpeaking15) 私の事嫌いになった?
+ u:(e:Dialog/NotSpeaking20) もーあなたなんか嫌い!!
+ ```
+
+ なんだか、ヘコんできた。
+
+1. Dialog/NotUnderstood
+1. Dialog/NotUnderstood2
+1. Dialog/NotUnderstood3
+
+ 聞き取れなければ、1,2,3と反応が変わります。
+
+ ```
+ u:(e:Dialog/NotUnderstood) わかりません。
+ u:(e:Dialog/NotUnderstood2) わかんない!
+ u:(e:Dialog/NotUnderstood3) わからないって言ってるでしょ!!
+ ```
+
+1. Dialog/SameRule
+
+ 下のような感じで使えると思ったんだけど。動かなかった。
+
+
+ ```
+ u:(e:onStart) あなたは人ですか?
+ u1:(そうです) もう一度聞きます。あなたは人ですか? $Dialog/SameRule 
+ u1:(いいえ) ですよねー!そんな顔してますもんね。
+ ```
+
+
+
+####ここまでで。
+Qichatで記述して、間違った行は反応してくれないみたい。(未確認)
+
+###NAOqi Event
+>NAOqi Event
+>http://doc.aldebaran.com/2-1/naoqi-eventindex.html
+
+数が多すぎるので、使いそうなものだけ列挙してみます。
+1. EngagementZones系
+2. ALBasicAwareness系
+3. Touch系
+4. Recognized系
+
+### Qichatの活用すると面白そうなスクリプト
+
+以下のものの中から、いくつかピックアップして紹介したいと思います。
+
+>QiChat - すべての構文
+>http://doc.aldebaran.com/2-1/naoqi/audio/dialog/aldialog_syntax_toc.html#dialog-toc
+
+####【Skin】ルールの自作
+
+>Qichat - Skin
+>http://doc.aldebaran.com/2-1/naoqi/audio/dialog/dialog-syntax_full.html#transformation-rules
+
+ルールというとu1,u2,u3...のというインデントで整形したものを指しています。
+ただ、これだけだと、NAO個人(個ロボット?)を表現することが難しいです。
+何が言いたいかというと、アプリケーションによってキャラクターが代わったり、声の大きさ、高さ、速さが代わって安定したNAOというキャラクターが存在しにくくなります。
+
+まずは簡単に説明しましょう。例えば、上で利用した例文ですが、
+
+
+```
+u:(e:onStart) あなたは人ですか?
+ u1:(そうです) もう一度聞きます。あなたは人ですか?
+ u1:(いいえ) ですよねー!そんな顔してますもんね。
+```
+
+まぁなんというか普通です。
+これにスキンを使用すると、以下のようになります。【あくまでイメージです。正しいものは以下説明を見てください。】
+
+```
+u:(e:onStart) あなたは人ですかにゃん?
+ u1:(そうです) もう一度聞きます。あなたは人ですかにゃん?
+ u1:(いいえ) ですよにゃー!そんな顔してますもんにゃー。
+```
+
+簡単に猫型ロボットの完成です。
+え?うちのNAOは赤い子ですよ?
+
+具体的な作り方を見て行きましょう。
+##### Skinの構文
+
+######基本構文
+
+```
+s:(ロボットの発話) 修飾子
+s:(ロボットの発話)
+修飾子
+```
+普通の、"u"を使って書いていたものが"s"に代わったと思ってもらえば大丈夫です。
+
+######^addword
+s:(ロボットの発話) ^addword(言い回し, 位置, 頻度)
+・言い回し
+ 言い回しに関しては、単語、文、concept等が使えます。
+・位置
+ a. 整数値: その位置に言い回しを追加してくれます。
+ b. "end": 文末に言い回しを追加してくれます。
+ c. "top": 文頭に言い回しを追加してくれます。
+・頻度
+ "1"で毎回適用、"0"は適用しない。
+
+```
+
+u:(こんにちは) こんにちは、人間!
+u:(元気) 元気だよ
+
+s:(こんにちは、人間) ^addword(わたしはお前の父だ。, end, 1)
+s:(*) ^addword(へい, start, 1)
+
+```
+
+>人間:こんにちは (52.05%)
+>ロボット:へいこんにちは、人間!わたしはお前の父だ 。
+>人間:元気 (67.62%)
+>ロボット:へい元気だよ
+
+このような感じで使えます。
+
+######^replace
+s:(ロボットの発話) ^replace(言い回し1, 言い回し2, 頻度)
+・言い回し
+ 言い回し1を言い回し2に置き換えます。
+・頻度
+ "1"で毎回適用、"0"は適用しない。
+
+```
+u:(e:onStart) あなたは人ですか?
+ u1:(そうです) もう一度聞きます。あなたは人ですか?
+ u1:(いいえ) ですよね!そんな顔してますもんね。
+
+s:({*} ですか {*}) ^replace(ですか, ですかにゃん, 1)
+s:({*} ね {*}) ^replace(ね, にゃー, 1)
+```
+>ロボット:あなたは人ですかにゃん ?
+>人間:<...> いいえ <...> (62.24%)
+>ロボット:ですよにゃー!そんな顔してますもんにゃー 。
+
+今回例文で、"ね"の一文字だけを登録してサンプルとしましたが、実際にそれで行うと、
+
+>ロボット:今日は何の日?にゃーのひだよー!
+>ロボット:ごめんにゃー
+>ロボット:息のにゃーを止めてやる
+>ロボット:おかにゃーが欲しいです
+
+みたいな感じで、全然話の内容が入ってこなくなります。ご注意ください。
+(文字で登録するのではなく、単語などで登録すると良いと思います。)
+
+####【^start,^wait,^stop,^run】外部モーションの呼び出し
+#####^start
+モーション、またはbehaviorを開始する。
+#####^wait
+実行中のモーション、またはbehaviorを終わるまで待機する。
+#####^stop
+実行中のモーション、またはbehaviorを終了させる。
+#####^run
+モーション、またはbehaviorを開始する。(途中で中断される可能性あり)
+#####sample
+AnimatedSayで見慣れているかと思いますが、既存モーションを利用して動作をさせることが出来ます。
+既存モーションは"animations"というアプリを参考にしてください。
+
+```
+Hello! ^start(animations/Stand/Gestures/Hey_1) Nice to meet you ^wait(animations/Stand/Gestures/Hey_1)
+```
+
+![スクリーンショット 2015-06-30 17.13.03.png](https://qiita-image-store.s3.amazonaws.com/0/35860/c6efdf77-bb53-015b-250d-59243a57edbd.png "スクリーンショット 2015-06-30 17.13.03.png")
+
+
+
+
+
+####【^startSound,^waitSound,^stopSound,^runSound】外部音源の呼び出し
+#####^startSound
+音源の再生を開始する。
+#####^waitSound
+音源の再生を終わるまで待機する。
+#####^stopSound
+音源の再生を終了させる。
+#####^runSound
+音源の再生を開始する。(途中で中断される可能性あり)
+
+
+
+##感想
+まだまだ、ドキュメントを読み足りていないので、細かく目を通したい。
+この記事も、まだまだ書き足りていないので、どんどん書き足していこうと思っています。
+今後とも宜しくお願いします。
+
+
+##参考URL
+
+>Qichat - Syntax
+>http://doc.aldebaran.com/2-1/naoqi/audio/dialog/dialog-syntax_full.html#dialog-rules
+
+>Qichat - Cheatsheet
+>http://doc.aldebaran.com/2-1/naoqi/audio/dialog/aldialog_syntax_cheat_sheet.html?highlight=cheat