def activate():
if(ultrasonic.get_sample() < 10):
both.turn(power=-70, tacho_units=400, brake=False)
time.sleep(1)
bx,by = get_ballxy()
rx,ry,a = get_robotxya()
turn_to(brick,bx,by,rx,ry,a)
time.sleep(0.5)
move_to(brick,bx,by,rx,ry)
kickBall(brick,by)
else:
time.sleep(1)
bx,by = get_ballxy()
rx,ry,a = get_robotxya()
turn_to(brick,bx,by,rx,ry,a)
time.sleep(0.5)
move_to(brick,bx,by,rx,ry)
kickBall(brick,by,ry)
Thread(target=update_coordinates).start()
connect()
update_coordinates()
while True:
activate()
以上是我的代码的一部分。get_ballxy
并get_robotxya
返回对应物体的坐标,turn_to
andmove_to
方法显然使机器人转向物体并移动到它。值从服务器返回并作为后台进程存储在线程中。我的问题是如何确保我的机器人在循环运行时不会接受错误值或与以前相同的值?例如:
- 第一组值:
- 转向球移动到球并踢球;
- 等到球停止移动,然后只重新读取机器人的值,然后循环运行。
我该怎么做呢?我试着睡觉它time.sleep(seconds)
有时会起作用,然后过了一会儿它就发疯了。