Pepper やNaoで使用されているNaoqi OSのメモです。

NAOqi Core - 概要 | API | Advanced

ALMotionサイクルとの同期

サイクルごとに新しいコマンドを送信する必要があるリアクティブコードを書き込むときや、新しいセンサデータを使用するときは、ALMotionのサイクルと同期させると便利です。

ALMotion cycle

ALMotionサイクルには以下のステップが含まれています:
  • ''preProcess'イベントが発生
  • 前のデータがメモリからリフレッシュされる
  • デカルトデータが更新され利用可能になる
  • motion tasks?は新しい意図を提供する
  • 意図はモデル上で実行される
  • 意図がDCMに送られる
  • postProcessイベントが発生する
  • スリープ

モーションスレッドはDCMよりも低いリアルタイム優先度を使用し、起動時間 + サイクル数 * 20msの周年で実行しようとします。20ms以上遅れると追いつくのを止め、その時の最新のものから継続します。

ALMotionサイクルイベントの使用

おそらくモジュールジェネレータで作られたNAOqiモジュールから、あなたはブローカにアクセスでき、それを使ってMotionの preProcess イベントまたは postProcess イベントへの接続を作成できます。これにより、各サイクルの開始時または終了時に目覚めて、何らかの処理を行うことができます。ロボットの現在の状態を取得し、いくつかのコマンドを準備します。


// Your method that will be called
void YourModule::motionPreProcessCallback() {
// Do something very small every 20ms.
// You are in a real time thread, so beware.
// If you wish to do heavy processing, you should
// raise a signal that is consumed by another thread
}
void YourModule::subscribeMotionPreProcess() {
try {
// Register the callback
// The specialized proxy does not give access
// to the underlying module needed for this binding,
// so we get a generic proxy from the parent broker
getParentBroker()->getProxy("ALMotion")->getModule()->atPreProcess(
boost::bind(&YourModule::motionPreProcessCallback,this));
} catch(const AL::ALError& e) {
std::cout << "Motion preProcess callback registration failed" << std::endl;
}
}

DCMとALMotionの共存

同時にDCMALMotionを使うことが可能ですが、いくつかの予防措置が必要です。
ここはあまり良くできていないので、私達は次のバージョンで改善する予定です。

Motionの後のDCMの使用

With Smart Stiffness, the robot should have not enough stiffness to realize the desired motion.
Smart Stiffness?を無効にする:ALMotionはDCMに直接送られるコマンドアングルを取得せず、与えられた姿勢の Stiffness?を管理できません。
スマート剛性により、ロボットは所望の動作を実現するのに十分な剛性を有さなくてはなりません。

DCMの後のMotionの使用

DCMを使用すると、ALMotionのコマンドアングルは内部モデルに更新されません。 DCMとALMotionの間の急な移行を避けるため、2つのオプションがあります:
  • DCMを使用する前に、ジョイントアングルを以前の ALMotionの姿勢にリセットしてください

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

NAOqi - Developer guide

Creating an application?

Programming for a living robot?

Other tutorials?

Choregraphe Suite?

どなたでも編集できます