シーケンスモジュールが出来た

シーケンスモジュールがロボットで問題なく動いた。意外と早く出来てしまった(笑)

シーケンススクリプトを実行する。シーケンスとは、多様なポーズを時間的につなげて、一つのモーションを作ることだ。(私の作った言葉。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には、ブロッキングコールと書いているので、実行終えるまでは次に進まないと思っていたら、どんどん次を読んで実行してしまうので、だっちゅーのという言葉とギャグがかみ合わなくなってしまっているので、つけたが、いやに長く必要になっている。