Dialog トピックファイルから関節を制御する(3)

Choregrapheなどを使わずに、iBotローカルもジュールに仕組みを組み込んで、Dialogのトピックファイルから関節を直接制御することをやっていた。そうすることで、対話と動作が様々な方法で、柔軟に結合できる。ロボット漫才には不可欠の機能である。
以下に一部試みたビデオがある。(まだ、動作はぎこちないが)

スクリプトファイルは以下のようなものである。関節硬直度の調整、現在のすべての関節状態をログに書き出し、一時保存する、保存した関節状態を復元する、関節状態を変更するに当たって必要な自動動作モードをすべてオフにしたりオンにしたりもできるようになっている。動作は、万歳とか拍手の用に、メソッドでまとめるようにした。ただし、コメントアウトしているが、個々の関節をそれぞれまとめてセットすることもできる。
# ここから
concept:(level)[ぜろ れい じゅう じゅ ふたじゅう ふたじゅ にじゅ にじゅう さんじゅう さんじゅ よんじゅう よんじゅ ごじゅう ごじゅ ろくじゅう ろくじゅ しちじゅう しちじゅ ななじゅう ななじゅ はちじゅう はちじゅ きゅうじゅう きゅうじゅ ひゃく]
concept:(switch) [おん おふ]
u:(拍手しなさい) わかりました。拍手します。 $joint_joint_001="tappingHand,5"
u:(自動動作を _~switch にしなさい) わかりました。自動動作を $1 にします。 $joint_joint_002="setAutoMove,$1"
u:(関節硬直度を _~level パーセントにしなさい) わかりました。関節硬直度を $1 パーセントにします。 $joint_joint_003="setStiffness,$1"
u:(右手をあげなさい) わかりました。右手をあげます。 $joint_joint_004="upRightHand"
u:(左手をあげなさい) わかりました。左手をあげます。 $joint_joint_005="upLeftHand"
u:(ばんざいをしなさい) わかりました。ばんざいします。 $joint_joint_006="banzai"
#u:(右手をあげなさい) わかりました。右手をあげます。 #$joint_joint_007="setJoints,RShoulderPitch:-70,RShoulderRoll:-10,wait:2500"
#u:(右手をさげなさい) わかりました。右手をさげます。 #$joint_joint_008="setJoints,RShoulderPitch:90,RShoulderRoll:-10"
u:(関節{状態}を保存しなさい) はい、関節状態を保存します。 $joint_joint_009="getAllJoints"
u:(関節{状態}を復元しなさい) はい、関節状態を復元します。 $joint_joint_010="restoreAllJoints"
# ここまで
最初にconceptとして入れてあるひらがなの読みは、硬直度の人間の数字を聞き取るためのものである。残念ながら、NAOはワイルドカードで人間の言葉を受け取れないのでconceptで、人間がいいそうな言葉を与えておかなければならない。ただし、これだけでは実際の数字にならない。WSIbotモジュールで、そのカナを数字に変換するメソッドを用意している。