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


NAOqi Audio - 概要 | API | Advanced

See also
ControlStiffness?, Joint?, Locomotion?, Cartesian?, Whole body?.
ReflexesSelf-collision avoidance?, External-collision avoidance?, Fall manager?, Smart Stiffness Diagnosis effect?, Push Recovery?, Slope compensation?.
IdleIdle?.
ToolsGeneral tools?, Motion task?.

利用

ALMotionは、ロボットを動かすのを容易にする方法を提供します。

制御

制御するための主要なグループは以下の4つになります。
  • 関節剛性 (基本的にモーターのオン/オフ): 参考 Stiffness control?,
  • 関節の位置 (補間、反応制御): 参考 Joint control?,
  • 歩く (距離および速度制御, 位置情報など): 参考 Locomotion control?,
  • 直交座標空間のロボットエフェクタ (逆運動学, 全身の制約): 参考 Cartesian control?.

反射

ALMotionSelf-collision avoidance?, External-collision avoidance?, Fall manager?, Smart Stiffness? , Diagnosis effect?のような反射も含みます。

反射は、デフォルトで有効になり、ロボットの動作を変更します。
より具体的には以下のようになります:
  • 自分や外部との衝突を避けるために動作を変更します。 (参考 Self-collision avoidance?, External-collision avoidance?)
  • ロボットが動いていない時に余裕を持って剛性を調整します。 (参考 Smart Stiffness?),
  • 落下を検知した時(参考 Fall manager?)や、潜在的に危険なデバイスで問題またはエラーが発生した場合(参考 reflexes-diagnosis?)、特定のタスクのトリガーとなります。


上級ユーザーは反射の全部、または一部を無効にする必要があるかもしれません。さらに詳細についてはこちらをご覧ください。Deactivation of non-critical safety reflexes?

Idle

このモジュールには、ユーザーコマンドが送信されていない時のロボットの動作を定義するツールも用意されています。こちらをご覧くださいIdle?

Tools

このモジュールは、関節の数、名前、限界、利用可能なセンサーなど、ロボットハードウェアに関する有益な情報へのアクセスも提供します。こちらをご覧くださいGeneral tools?

動作

ALMotionは50Hz(サイクル20ms)で動作します。

ALMotionでは、パブリックメソッドを呼び出してモーションを要求するたびに、そのモーションを処理するためのモーションタスクが作成されます。これらのタスクの管理方法については、Motion task?を参照してください。

パフォーマンスと制限

パフォーマンス
ALMotionはコアモジュールです。リフレクションを管理し、サイクルごとにモデルを更新するのでモジュールは一定のCPUを消費します。この消費は、歩くなどの特別な作業の間に増加する可能性があります。

以下のテーブルはALMotion CPUの消費率についての手がかりとなります。
Task \ ProcessorAtom (NAO V4)
update Model3%
walking10.8%

Pepperの特徴への適応

"NAO"と"Pepper"両方に対して、独特のMotionAPIを維持しようと努めてきました。

しかしいくつかの適応が必要でした。
GroupMain adaptationsFor further details, see ...
StiffnessManual Stiffness control is forbidden for Pepper‘s lower part.Stiffness control?
Locomotion controlSpecific stability constraints on the leg.Locomotion methods are prohibited if power hatch? is open.Locomotion control?
Cartesian controlMost of the methods are unusable.Cartesian control?
Whole Body controlDo not use any Whole Body control methods.Whole Body control?
Safety reflexesA specific safety reflex is dedicated.Push Recovery?
A specific safety reflex is dedicated.Slope compensation?
Frontal security distance is correlated with speed.External-collision avoidance?
Hardware issues trigger specific Rest reflexes?.Diagnosis effect?

取り掛かるには

以下はALMotionを使うための重要な情報です

軸の定義

ロボットの正面方向がX軸正の方向であり、右から左がY軸の方向であり、垂直方向がZ軸です。

国際単位系

ALMotion モジュールは国際単位系(メートル、秒、ラジアンなど)を用いてます。

関節や体の部位の名前をどう定義するか

選んだメソッドにより、ALMotionは関節や関節の集合や体の一部に名前をつけるよう要求します。
called ... are used by ...
Body parts EffectorsCartesian control? and Whole Body control?
Joint names can be called individually or by groupsChainsStiffness control?, Joint control?, General tools? and Motion task?.

詳細は、以下をご覧ください。
  • Effector & Chain definitions?,
  • “Body”, chains and joint names?,
  • Effectors?.

上級者へ

自分で最初からモーションをつくる

ALMotionの定義に精通していて、新しい反射などの高度な動作をC ++でさらに作成したい場合は、より良いオブジェクトトラッカー、または同時にDCMモジュールとALMotionを使用します。こちらをご覧ください:Motion - advanced?

非クリティカルセーフティ反射の無効化

非常に重大な反射の無効化は、通常の使用では許可されません。

重要でない反射を無効にするには、関連するsetNameOfReflexEnabledメソッドを使用します。

以下のリストは、反射の無効化が重要かどうかを示しています。

MethodNAOPepper
ALMotionProxy::setCollisionProtlectionEnabled?OKOK
ALMotionProxy::setDiagnosisEffectEnabled?OKOK
ALMotionProxy::setSmartStiffnessEnabled?OKOK
ALMotionProxy::setExternalCollisionProtectionEnabled?OKCritical, Arms excepted
ALMotionProxy::setFallManagerEnabled?CriticalCritical
ALMotionProxy::setPushRecoveryEnabled?NACritical

コメントをかく


ユーザーIDでかく場合はこちら

画像に記載されている文字を下のフォームに入力してください。

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

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

×

この広告は60日間更新がないwikiに表示されております。

Menu

NAOqi - Developer guide

Creating an application?

Programming for a living robot?

Other tutorials?

Choregraphe Suite?

どなたでも編集できます