大学での研究にてChoreonoidを使用しており、ロボットの駆動部を旋回させようとしているのですが質問があります。
Bodyファイルでロボットの回転関節の関節可動範囲(JointRange)を-90°~90°として指定したのですがシミュレーションを開始してジョイスティックで操作すると指定した角度以上に回転を続けてしまう(関節変位ビュー上で90°を超えて赤文字で120°のようになってしまう)のですがどうすれば解決するでしょうか。
とても拙いものですがロボットの旋回部を旋回させようとしているプログラムも添付しておきます。載せ方が間違っていたらごめんなさい。
static const double P = 100.0;
static const double D = 100.0;
Link* table_F = tables[0]; //旋回(前)
double q_tF = table_F->q(); //現在角度
double dq_tF = (q_tF - t_prev[0]) / timeStep; //現在角速度
double dq_ref_tF = 0.5 * pos[1]; //ジョイスティックの入力調整
if (pos[1] == 0.0) {
table_F->u() = -P * q_tF - D * dq_tF;
} else{
table_F->u() = P * (0.0 - q_tF) + D * (dq_ref_tF - dq_tF);
}
t_prev[0] = q_tF;