シーケンスモジュールがロボットで問題なく動いた。意外と早く出来てしまった(笑)
シーケンススクリプトを実行する。シーケンスとは、多様なポーズを時間的につなげて、一つのモーションを作ることだ。(私の作った言葉。Choregraphe のタイムラインに似ているかな)
上の動画は、サリーちゃんに昔流行ったギャグ「だっちゅーの」をやってもらった。シーケンスファイルは、次のような感じのスクリプトになっている。これを指定場所に置いておく。私の場合は、ロボットのコンピュータのフォルダ、/home/nao/ibot/user/sequence だ。ここに同時に、Choregrapheで作った様々なポーズがファイル化してある、xapファイルも置いておく。
# ------------------------------------------------------------ # # msweq だちゅーのポーズ(サリーちゃん用) # # #から始まる行、空白行はスキップ # コマンド、スピード制御、ポーズ名、スピード(最速を1とした割合) # 時間は全て、ミリ秒であらわす # ------------------------------------------------------------ # ゆっくり立ち上がる(スピード制御、数字は1.0が最大) execpose,speed,Stand,0.2 # 1秒立った姿勢を維持する sleep,1000 # ゆっくり「だっちゅー」のポーズをとる execpose,speed,Dachuno,0.2 # そのポーズを3秒維持する sleep,3000 # ポーズを時間制御に変更する # 4秒かけてスタンドゼロのポーズを取る #execpose,time,StandZero,4000 # 4秒かけてStandinitのポーズを取る execpose,time,StandInit,4000 sleep,1000 # 3秒かけて座るポーズにはいる execpose,time,Sitdown,3000 # 座ると、自動的にstiffnessが0.0にセットされる:モータの加熱回避で必要 #sleep,1000
このスクリプトは、ロボットの内部モジュールwsmotionライブラリによって読み取られ実行される。呼び出すためには、まず、qichatのスクリプトの良きところで、$motion_getposes_1="sally_pose.xap"という、メモリイベントを発生させる。=の右側に、Choregrapheのポーズリストファイルを指定する。全てのポーズが名前と、関節角度付きで入っている。これを実行したのち、$motion_sequence_1="dachuno.mseq" というシーケンスファイル(=の右側)の実行のためのメモリイベントを発生させる。どちらも、変数は、これで確定していて、変更は不可である。
テストに次のようなトピックファイルを用意した。
topic: ~wsmotion-181224 () language: jpj # モーションテスト u:({サリーちゃん} やってください) はいわかりました $motion_getposes_1="sally_pose.xap" データ読み込みました $motion_sequence_1="dachuno.mseq" \pau=7000\ だっちゅーの
「だっちゅーの」の前の\pau=7000\(7秒停止)が気になる。呼び出しているNAOQIのAPIには、ブロッキングコールと書いているので、実行終えるまでは次に進まないと思っていたら、どんどん次を読んで実行してしまうので、だっちゅーのという言葉とギャグがかみ合わなくなってしまっているので、つけたが、いやに長く必要になっている。