NAOQIにDCMのサンプルがついている。=> ココ
fastgetsetsample
という名前になっている。
このなかには、DCMの使い方のいろいろなノウハウが詰まっている。DCMは、単独の動作を直接アクチュエーターやセンサー、LEDに送ることができるが、ここには、同時に、10msecという短い周期で、DCMからよびだすことができるコールバック関数の書き方が示されている。
このコールバック関数に記載すれば、ロボットのボディの全体状況を細かく制御できる。
たとえば、NAOが倒れた瞬間に、すべての関節状態の硬直性を一瞬にゼロにして、破壊を出来る限り回避する力を持っている。これは、NAOが足が地面から離れることをセンサーで感知したり、体の急速な傾きを感知したりして、その瞬間に、Stiffnessをゼロにする操作をしているからである。10msecあれば、その対応は十分できるのだろう。
ジャンプには、このコールバック関数は使わなくてもいいと思った。なにしろ、瞬発力が問題なので。先にも書いたように、コールバックを使わなくても、DCMコマンドを単体で叩いても、高速な動きは作れるからである。
しかし、ジャンプしたあとの体制の制御や、着地のことを考えると、このコールバック関数を使わなくてはならなくなるときが来るような気もするのだ。