このページでは関節パラメータファイルについて説明します。 私の運動系のロボットの制御プログラムは、元を辿ってゆくと、 シミュレーションプログラムへたどり着きます。そのため、 シミュレート対象のロボットの外形等の諸元を簡単に変更できるように、各関節間の長さ等を プログラムの外にテキストファイルで持っています。私はコレを関節パラメータファイルと 呼んでいます。
2L1v4までは、6L1のファイルをそのまま関節数を増やして行った形で使用していましたが、 2L1v5で考え方を整理し、新しく設計し直しました。
関節パラメータファイル例(2L1v6 2002年7月版)
#右足パラメータ Bone length 0 : 14.00 Bone length 1 : 6.00 Bone length 2 : 13.50 Bone length 3 : 36.00 Bone length 4 : 95.00 Bone length 5 : 100.00 Bone length 6 : 35.00 Bone length 7 : 20.00 Bone length 8 : 20.00 Bone length 9 : 40.00 Bone length 10 : 30.00 Link Inf 0 : 13.50 : 47.50 : 30.00 : 50.00 : 103.40 : 104.60 Link Inf 1 : 13.00 : 47.00 : 25.00 : 48.50 : 104.30 : 104.30 Link Inf 2 : 18.00 : 41.50 : 30.00 : 40.45 : 104.31 : 104.31 Link Inf 3 : 13.00 : 69.00 : 20.30 : 70.93 : 93.20 : 97.80 Link Inf 4 : 0.00 : 0.00 : 0.00 : 0.00 : 0.00 : 0.00 Link Inf 5 : 11.00 : 53.12 : 20.00 : 53.88 : 99.62 : 101.62 Servo Data 0 : 0.000 : 255.000 : 109.500 : -137.515 Servo Data 1 : 0.000 : 255.000 : 147.500 : 141.653 Servo Data 2 : 0.000 : 255.000 : 38.000 : 135.370 Servo Data 3 : 0.000 : 255.000 : 99.000 : 134.056 Servo Data 4 : 0.000 : 255.000 : 120.000 : 133.509 Servo Data 5 : 0.000 : 255.000 : 135.000 : 133.509 #左足パラメータ Bone length 0 : 14.00 Bone length 1 : 6.00 Bone length 2 : 13.50 Bone length 3 : 36.00 Bone length 4 : 95.00 Bone length 5 : 100.00 Bone length 6 : 35.00 Bone length 7 : 20.00 Bone length 8 : 20.00 Bone length 9 : 40.00 Bone length 10 : 30.00 Link Inf 0 : 13.50 : 48.70 : 30.00 : 49.00 : 103.40 : 104.60 Link Inf 1 : 13.00 : 47.00 : 25.00 : 48.50 : 104.30 : 104.30 Link Inf 2 : 18.00 : 41.50 : 30.00 : 40.45 : 104.31 : 104.31 Link Inf 3 : 13.00 : 69.00 : 21.50 : 70.93 : 93.20 : 97.80 Link Inf 4 : 0.00 : 0.00 : 0.00 : 0.00 : 0.00 : 0.00 Link Inf 5 : 11.00 : 53.12 : 20.00 : 53.88 : 99.62 : 102.62 Servo Data 0 : 0.000 : 255.000 : 157.000 : -145.792 Servo Data 1 : 0.000 : 255.000 : 83.000 : 141.653 Servo Data 2 : 0.000 : 255.000 : 254.000 : 133.481 Servo Data 3 : 0.000 : 255.000 : 140.000 : 133.358 Servo Data 4 : 0.000 : 255.000 : 143.000 : 133.509 Servo Data 5 : 0.000 : 255.000 : 129.000 : 133.509
ファイルの全体的な構造
行の構造
行種類キーワード
キーワード"Bone length"について
キーワード"Link Inf"について
中立位置とは、そのサーボがついている関節の中立位置におけるサーボへの出力データです。
変換係数とは、逆運動学計算の結果、最終的に各軸(サーボの軸まで含めて)の角度は ラジアンで出てきます。(C言語の関数がラジアンで値を返してくるため)この角度を0〜255に 変換するときの係数です。各RCサーボのバラツキや工作のばらつきを反映します。
struct LINKS { double off_q[2]; // サーボホーン軸、作用点軸の角度オフセット double io_q[2]; // サーボホーン軸、作用点軸の角度 0:答え 1:入力 double link_len[4]; // 各リンクの長さ 0:サーボホーン 1:サーボロッド // 2:作用点 3:ベース軸間距離 }; struct LEG_PRM { double lbone_length[12]; // 各関節間の距離 struct LINKS links[6]; //4節リンクの長さと角度 double savo_st_en[6][4]; // 各サーボの有効データの min : max : 中立 : 変換係数 };