我正在尝试编写一个具有两个输入和一个输出的类。该类每秒调用 10 次。其中一个输入是不随时间变化的列表,但另一个输入随时间变化。
此类的输出是输入列表的成员。类应该看起来像这样。
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 个元素的输入列表。