最終更新:ID:HukTMs0QQA 2017年02月22日(水) 21:29:45履歴
- ''preProcess'イベントが発生
- 前のデータがメモリからリフレッシュされる
- デカルトデータが更新され利用可能になる
- motion tasks?は新しい意図を提供する
- 意図はモデル上で実行される
- 意図がDCMに送られる
- postProcessイベントが発生する
- スリープ
モーションスレッドはDCMよりも低いリアルタイム優先度を使用し、起動時間 + サイクル数 * 20msの周年で実行しようとします。20ms以上遅れると追いつくのを止め、その時の最新のものから継続します。
// 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の姿勢にリセットしてください
- DCMで移動した関節の剛性を削除してリセットする。 (ALMotionProxy::setStiffnesses)
コメントをかく