[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
|
1-
101-
この機能を使うにはJavaScriptを有効にしてください
|
追加命令要望スレッド
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
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板