したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

追加命令要望スレッド

95ゆめの:2011/08/30(火) 20:51:05
こんばんわ。夢乃です。
ユニットの制御を行う局面で、簡単なフィードバック制御(比例制御など)を行いたくなる場合がよくあります。たとえば、目標とする座標からユニットが離れているようなら、その離れ具合に応じて増速するような方法です。
ユニットlabel1はまっすぐ一定速度で水平飛行中、
ユニットlabel1の真後ろにユニットlabel2が同じ向きを向いて追走中として、
たとえば
float x1, y1, z1;
float x2, y2, z2;
float length, speed2, acc2;
float Kp=(何か適切な値);
while(1){
system();
get_pos(label1, x1, y1, z1);
get_pos(label2, x2, y2, z2);
speed2 = get_speed(label2);
length = (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2);
acc2 = Kp * length;
speed2 = speed2 + acc2;
set_speed(label2, speed2);
}
といったスレッドを立てるようなことをしたいわけなんですが
せっかくset_speedの仕様ではmission.incに
systemcall int set_speed(int label, float speed);
とあるように引数が浮動小数点型を使えるのに対して、
get_speedの仕様が、mission.incに
systemcall int get_speed(int label);
として書かれている通り、戻り値がintのため、滑らかな速度の逐次フィードバック制御ができません。

(この例くらいの動作なら他の方法でも実現できますが、実際はもっと複雑な制御するときに問題になります)

修正をご検討いただければ幸いです。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板