このページではuniの関節パラメータファイルについて、2L1/2L2と違う点 を主に説明します。 関節パラメータファイル(2L1) と併せてご覧ください。
関節パラメータファイル例(uni 2005年11月版)
#右パラメータ Bone length 0 : 14.00 Bone length 1 : 53.76 Bone length 2 : 21.00 Bone length 3 : 53.76 Bone length 4 : 11.24 Bone length 100 : 88.32 Bone length 101 : 91.00 Link Inf 0 : 13.50 : 40.00 : 40.00 : 49.50 : 127.37 : 124.96 Servo Data 0 : -55.0 : 1607 : 0.0 : 3107 : 37.0 : 4187 Servo Data 1 : -34.0 : 1277 : 0.0 : 2357 : 63.0 : 4187 Servo Data 2 : -32.0 : 1487 : 17.0: 2687 : 60.0: 4187 Servo Data 8 : -45.0 : 3743 : 0.0 : 2690 : 45 : 1630 Servo Data 9 : -45.0 : 3743 : 0.0 : 2690 : 45 : 1630 #左パラメータ Bone length 0 : 14.00 Bone length 1 : 53.76 Bone length 2 : 21.00 Bone length 3 : 53.76 Bone length 4 : 11.24 Bone length 100 : 88.32 Bone length 101 : 91.00 Link Inf 0 : 13.50 : 40.50 : 40.00 : 50.50 : 121.67 : 125.22 Servo Data 3 : -32.0 : 1487 : 0.0 : 2447 : 67.0: 4247 Servo Data 4 : -61.0: 1037: 0.0 : 2867: 35.0: 3857 Servo Data 5 : -45.0 : 1487: -10.0 : 2687 : 55 : 4187 Servo Data 10 : -45.0 : 3743 : 0.0 : 2490 : 45 : 1630 Servo Data 11 : -45.0 : 3743 : 0.0 : 2760 : 45 : 1630 #胴体パラメータ Servo Data 6 : -18.5 : 1790: 0.0 : 2390: 18.5 : 2900 Servo Data 7 : -90.0: 2160: -30.0 : 3840 : 0.0 : 4800
ファイルの全体的な構造
行の構造
行種類キーワード
キーワード"Bone length"について
キーワード"Link Inf"について
マイコンやPCの中ではA-B間とB-C間で直線補間の計算をして任意の角度の時の出力値を計算 しています。また、RCサーボの番号と実際にRCサーボが装備されている場所の対応は 以下のようになっています。
使っているRCサーボの可動範囲全域(約180度)について出力値と実際の角度の対応を グラフ化したところ、特に0度と180度近辺で線形が崩れていましたが、uniではあまり 重要ではない部分だったので、2本の直線近似で良しとしました。 (ラジコンで使う様に中心±30度程度の範囲ならば1本でも良いと思います。)
//4節リンクのパラメータ struct LINKS { double off_q[2]; // サーボホーン軸、作用点軸の角度オフセット double io_q[2]; // サーボホーン軸、作用点軸の角度 0:答え 1:入力 double link_len[4]; // 各リンクの長さ 0:サーボホーン 1:サーボロッド // 2:作用点 3:ベース軸間距離 }; //脚に関するパラーメータ。プログラム実行開始時にファイルから読み込んで //初期化する。 2L3v1用 腕のデータも含む struct LEG_PRM { double lbone_length[5]; // 各関節間の距離 struct LINKS links[1]; double savo_st_en[5][6]; // サーボ角度−出力データ対応関係の読み込み // 角度1:データ1:角度2:データ2:角度3:データ3 }; //胴体(腰など)の関節のパラメータ struct BODY_PRM { double savo_st_en[2][6]; // サーボ角度−出力データ対応関係の読み込み // 角度1:データ1:角度2:データ2:角度3:データ3 }; //腕の関節のパラメータ struct ARM_PRM { double lbone_length[2]; // 各関節間の距離 double savo_st_en[2][6]; // サーボ角度−出力データ対応関係の読み込み // 角度1:データ1:角度2:データ2:角度3:データ3 };