NAOの姿勢制御モジュールとスクリプト

キレキレダンスプロジェクトで、NAO用の姿勢制御モジュール WSSequenceと、それが解釈実行するスクリプト処理言語を作成した。

たとえば、以下のようなスクリプトを解釈して実行する。ポーズの実行、変数処理、ループ、センサー利用などができる。angles005_83などには、この間記載した全アングルの角度設定が入っている。ongroundは、指定の足の着地重量が指定された値以上になるまで待機するコマンドである。

#----------------------------------------------
# Walk005_2.mseq
# スクリプトバージョン 2 に対応
# ※ Stand or StandInit以外の態勢から
# walkなどの足の動作をすると、倒れる!
#----------------------------------------------
# 基本速度を設定
let,$spd,0.8
# 着地センサーのパラメータ設定
# 着地判定重量,判定時間[ミリ秒],時間ステップ[ミリ秒]
setparams,0.8,100,2
# 歩行可能初期状態を実現
execpose,speed,StandInit,$spd
# 50ミリ秒データによる歩行
# 歩行開始プロセス
execpose,speed,angles005_83,$spd
execpose,speed,angles005_84,$spd
execpose,speed,angles005_85,$spd
execpose,speed,angles005_86,$spd
execpose,speed,angles005_87,$spd
execpose,speed,angles005_88,$spd
# $1が 1,2,3 となる3回実行される(C++等とは異なる) 
loop,$i,1,3
    #歩行の1サイクルを記載
    println,第,$i,回、歩行ループ
    execpose,speed,angles005_141,$spd
    execpose,speed,angles005_142,$spd
    println,左足の着地チェック
    onground,left
    execpose,speed,angles005_143,$spd
    execpose,speed,angles005_144,$spd
    execpose,speed,angles005_145,$spd
    execpose,speed,angles005_146,$spd
    execpose,speed,angles005_147,$spd
    execpose,speed,angles005_148,$spd
    execpose,speed,angles005_149,$spd
    execpose,speed,angles005_150,$spd
    execpose,speed,angles005_151,$spd
    println,右足の着地チェック
    onground,right
    execpose,speed,angles005_152,$spd
    execpose,speed,angles005_153,$spd
end
# 歩行の停止プロセスに入る
execpose,speed,angles005_154,$spd
execpose,speed,angles005_155,$spd
execpose,speed,angles005_156,$spd
execpose,speed,angles005_157,$spd
execpose,speed,angles005_158,$spd
execpose,speed,angles005_159,$spd
execpose,speed,angles005_160,$spd
execpose,speed,angles005_161,$spd
execpose,speed,angles005_162,$spd
execpose,speed,angles005_163,$spd
execpose,speed,angles005_164,$spd
execpose,speed,angles005_165,$spd
execpose,speed,angles005_166,$spd
execpose,speed,angles005_167,$spd
execpose,speed,angles005_168,$spd
# 直立状態を回復する
execpose,speed,Stand,0.2