1: 2009-06-23 (火) 18:46:07 sho  |
現: 2009-06-23 (火) 19:34:55 sho  |
| | **歩行のためのパラメータ [#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 |
| | } | | } |
| | 歩行を制御するためのキースキャンです。例えば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 |