2 つの入力と 1 つの出力を持つクラスを作成しようとしています。クラスは 1 秒間に 10 回呼び出されます。入力の 1 つは時間とともに変化しないリストですが、もう 1 つの入力は時間とともに変化します。
このクラスの出力は、入力リストのメンバーです。クラスは次のようになります。
import lib601.sm as sm
counter = 0
class FollowFigure(sm.SM):
def __init__(self, waypointsList):
self.waypoints = waypointsList
def getNextValues(self, state, inp):
global counter
sensors = inp
current_point = sensors.odometry.point()
if counter == 0:
while not(self.waypoints[0].isNear(current_point, 0.01)):
return (state, self.waypoints[0])
counter += 1
if counter == 1:
while not(self.waypoints[1].isNear(current_point, 0.01)):
return (state, self.waypoints[1])
counter += 1
if counter == 2:
while not(self.waypoints[2].isNear(current_point, 0.01)):
return (state, self.waypoints[2])
counter += 1
if counter == 3:
while not(self.waypoints[3].isNear(current_point, 0.01)):
return (state, self.waypoints[3])
そのため、クラスは時間とともに変化する条件をチェックする必要があり、その条件が満たされない場合は inp[0] を返し、それが満たされるまで待機し、他の条件はチェックしません。inp1[0] の条件が満たされた場合、次の while に進み、このクラスの次の呼び出しでは前の while をチェックしません。私はこれについて過去5時間考えていましたが、解決方法がわかりません。それほど難しいことではありません。たぶん私は十分に集中することができません。
このための for ループを作成しようとしましたが、このクラスは毎秒 10 回呼び出されるため、呼び出されるたびに反復がリセットされるため、必要な出力が得られない場合があります。ところで、このクラスは有限の長さの inp1 に対して機能するはずです。
編集: 上記のコードは、4 つの要素を持つ入力リストに適しています。