条件によって値を1ずつ増加させる制御を行いたいです。
xy座標にて、現在地点が目標地点に近づいたら次の目標地点を入力とし、また近づいたらさらに次の目標地点を入力…という制御を行いたいです。
今は現在地点と目標地点との距離dが10cm以内になった時に変数「point_local」に+1して、pointの値によって入力(目標地点)を変更するプログラムを書いています。
しかしシミュレーションを行うとpoint_localの値が1ずつ増加せずに、一瞬のうちに6や11といった値になり上記の制御を行えずにいます。サンプリング時間との影響も考えましたが解決策が見つからず質問させていただきました。
指定した操作を1度だけ行うような関数、またはシーケンス制御のような手法はありますでしょうか?何卒、ご助言いただければ幸いです。
以下に作成したプログラムを載せます。回答の参考にしてください。
function y=titen_ref(x)
if t == 0 ;
x_ref = 2 ;
y_ref = 0 ;
end
d = ((x_ref-x_now)^2+(y_ref-y_now)^2)^(1/2) ;
point_local = evalin('base','point_base') ;
if d <= 0.1
point_local = point_local + 1 ;
assignin('base','point_base',point_local) ;
end
if point_local == 0
x_ref = 2 ;
y_ref = 0 ;
elseif point_local == 1
x_ref = 5 ;
y_ref = 5 ;
else
x_ref = 9 ;
y_ref = 9 ;
end
y = [x_ref,y_ref]