1: 2009-06-23 (火) 18:46:07 sho | 現: 2009-06-23 (火) 19:34:55 sho | ||
---|---|---|---|
Line 5: | Line 5: | ||
**歩行のためのパラメータ [#c81bd850] | **歩行のためのパラメータ [#c81bd850] | ||
TWalkParam WalkParam = { | TWalkParam WalkParam = { | ||
- | WalkParamが歩行のパラメータです。 | + | WalkParamが歩行のパラメータの構造体です。 |
LegDim :{ // 脚リンク長さ初期値 [mm *10] | LegDim :{ // 脚リンク長さ初期値 [mm *10] | ||
R:{{{ 327, 74, 0}, // Pivot→ID1 | R:{{{ 327, 74, 0}, // Pivot→ID1 | ||
Line 59: | Line 59: | ||
} | } | ||
歩行を制御するためのキースキャンです。例えばwを1度入力するとWalkParamのwsを50増やす、つまり歩幅5mmで前進します。次にxを3回押すとwsを150減らす、つまりwsが-100になり歩幅10mmで後退します。 | 歩行を制御するためのキースキャンです。例えばwを1度入力するとWalkParamのwsを50増やす、つまり歩幅5mmで前進します。次にxを3回押すとwsを150減らす、つまりwsが-100になり歩幅10mmで後退します。 | ||
+ | **プラグイン設定 [#j65e763c] | ||
+ | // 歩行サブルーチン登録 | ||
+ | fd_AddPlugin ((TFDPluginFunc)Walk, 0, &WalkPart, &WalkParam); | ||
+ | 歩行の関数はFREEDOMライブラリの中にはありません。ですので歩行関数をプラグインとして登録する必要があります。以下引数の紹介です。 | ||
+ | (TFDPluginFunc)Walk | ||
+ | 歩行の関数です。 | ||
+ | 0 | ||
+ | 歩行の関数は割り込みの中で実行されます。割り込みは一定周期で実行されるプログラムのようなものです。この引数を0にすると割り込みが実行されると必ずその中でWalk関数が実行されます。1にすると割り込み2回に1回Walk関数が実行されます。1回お休みします。 | ||
+ | &WalkPart | ||
+ | 歩行を行う体の部位を指定します。 | ||
+ | TApplyPart WalkPart = { | ||
+ | Priority: 5, | ||
+ | PartNum: 10, | ||
+ | part:{ | ||
+ | &((THumanoid*)0)->Servos.RightLeg[0], | ||
+ | &((THumanoid*)0)->Servos.RightLeg[1], | ||
+ | &((THumanoid*)0)->Servos.RightLeg[2], | ||
+ | &((THumanoid*)0)->Servos.RightLeg[3], | ||
+ | &((THumanoid*)0)->Servos.RightLeg[4], | ||
+ | &((THumanoid*)0)->Servos.LeftLeg[0], | ||
+ | &((THumanoid*)0)->Servos.LeftLeg[1], | ||
+ | &((THumanoid*)0)->Servos.LeftLeg[2], | ||
+ | &((THumanoid*)0)->Servos.LeftLeg[3], | ||
+ | &((THumanoid*)0)->Servos.LeftLeg[4], | ||
+ | } | ||
+ | }; | ||
+ | 歩行を行うのは必ず脚なのでこのように設定します。 | ||
+ | &WalkParam | ||
+ | 歩行のためのパラメータの章で紹介したパラメータです。 | ||
+ | **歩行開始 [#u20d8d6e] | ||
+ | WalkParam.cmd = CMD_START_WALK; | ||
+ | WalkParamのcmdをCMD_START_WALKにすると歩行を開始します。 | ||
+ | あとはWalkParamのws(歩幅), wh(腰上げ量), lf(脚持ち上げ量), pf(脚押しこみ量), kf(脚持ち上げ保持量), rs(右側横歩き歩幅), ls(左側横歩き歩幅), speed(歩行動作速度)に好きな値を代入して歩行を操作します。ta(旋回角度)はFREEDOMjr.IIIには旋回軸が無いので機能しません。 | ||
+ | cmdにCMD_DECEL_WALKを入れるdecel |