31: 2011-11-07 (月) 17:50:28 eid7gud | 現: 2011-11-13 (日) 15:08:44 takaboo | ||
---|---|---|---|
Line 69: | Line 69: | ||
****Humanoid16Axis.h [#oba7d5c8] | ****Humanoid16Axis.h [#oba7d5c8] | ||
fd.hで宣言されている一部の構造体を、人型向に再定義しています。他に、再定義に伴うAPIのウォーニングを抑止するための関数の型変換といったマクロも含まれます。 | fd.hで宣言されている一部の構造体を、人型向に再定義しています。他に、再定義に伴うAPIのウォーニングを抑止するための関数の型変換といったマクロも含まれます。 | ||
+ | |||
+ | このヘッダファイルで定義されるTHumanoid/THumanoidHomePosition/THumanoidMotion構造体はあくまで便宜的な定義に過ぎず、FREEDOM III Libraryで定義されているTStructure/THomePosition/TPose構造体と同じものとして扱われます。 | ||
****HumanoidSpecAX12.c [#g8816dc3] | ****HumanoidSpecAX12.c [#g8816dc3] | ||
Line 80: | Line 82: | ||
****HumanoidWalk.c [#d2e45c8a] | ****HumanoidWalk.c [#d2e45c8a] | ||
- | IKによるダイナミック歩行サブルーチンで、TASK4にて動作します。 | + | IKによるダイナミック歩行サブルーチンで、TASK4にて動作します。セマフォとしてSEM_USER3が使用されます。~ |
+ | 片脚6軸構成を想定し、各軸間距離(TLegDim)と足の座標(TFootPos)を元にIKを解き(CalInvkine関数)ます。足の裏と腰が常時平行である事を前提として簡単化していますので、この条件が崩れると計算は破綻します。~ | ||
+ | TASK4では歩容を決定づけるパラメータ(TLimitWalkParam, TWalkParam, TWalkSysParam)を元に経過時間とGait関数にて歩容を作り出し、必要に応じてfd_SendMomentMotionを使ってアクチュエータへ角度にて指令するといった具合です。なお、外部からはSetWalkSysParam, SetWalkParam, GetWalkStat関数にて全ての挙動を操作します。 | ||
+ | |||
+ | 歩容を決定付けるTWalkParam構造体には、以下のメンバが含まれます。 | ||
+ | -int16_t CentroidHight~ | ||
+ | 重心位置を[mm*10]で指定。 | ||
+ | -int16_t Step~ | ||
+ | 前後方向の歩幅を[mm*10]で指定。+で前、-で後方向に歩く。 | ||
+ | -int16_t WaistHight~ | ||
+ | 腰を下げる量を[mm*10]で指定。 | ||
+ | -int16_t FootLift~ | ||
+ | 足持ち上げ量を[mm*10]で指定。 | ||
+ | -int16_t SidleStep~ | ||
+ | 左右横歩きの歩幅を[mm*10]で指定。+で右、-で左方向に横歩きする。 | ||
+ | -int16_t TurnAngle~ | ||
+ | 旋回角度を[deg*10]で指定。ヨー軸が無いため、実質機能しない。 | ||
+ | -int16_t Speed~ | ||
+ | 歩行動作速度を指定。 | ||
****HumanoidSampleMotionData.c [#oc3fe248] | ****HumanoidSampleMotionData.c [#oc3fe248] | ||
人型用のデフォルト用ホームポジションと、いくつかのモーションデータの定義、さらにはそれらのデータをSDカードへ書込むためのサブルーチンが定義されています。 | 人型用のデフォルト用ホームポジションと、いくつかのモーションデータの定義、さらにはそれらのデータをSDカードへ書込むためのサブルーチンが定義されています。 | ||
+ | |||
+ | ホームポジションはアクチュエータやアセンブリ方法による個体差があるため、ここで定義される値が全ての筐体に無条件で適用できるものではありません。必ず微調整がなされた上で使用すべき重要なパラメータです。~ | ||
+ | モーションデータは角度データであるため本来は個体差が無いものですが、角度から位置へ変換してアクチュエータへ指令されるために、アクチュエータの利にありティーに依存します。また、重心位置等が考慮されながら実行されるものではないため、やはり微調整が必要なパラメータとなります。~ | ||
+ | なお、ほとんどのサンプルプログラムではこれらのデータをSDカード上に書き込んだ上で運用する前提になっており、各サンプルプログラム内に微調整を行うためのサブルーチンが含まれています。 | ||
**一覧 [#fafbd7e6] | **一覧 [#fafbd7e6] |