我正在使用一个scribbler机器人并用Python编写代码。当它看到一个障碍时,我试图阻止它
因此,我为左侧障碍物传感器,中央障碍物传感器和右侧障碍物传感器
创建了变量 left = getObstacle(0)
center = getObstacle(1)
right = getObstacle(2)
然后是if语句
if (left < 6400 & center < 6400 & right < 6400):
forward(1,1)
else:
stop()
基本上这个想法是,如果传感器读数低于6400,它应该向前移动,否则,它应该停止。在使用senses
函数测试scribbler时,我注意到当我将机器人放在一个物体附近时,它会读到6400左右。
以下是main()
代码
def main():
while True:
left = getObstacle(0)
center = getObstacle(1)
right = getObstacle(2)
lir = getIR(0)
rir = getIR(1)
if (left < 6400 & center < 6400 & right < 6400):
forward(1,1)
else:
stop()
为什么我的机器人不响应?当我把它放入shell时,Python代码没有显示任何错误,但我的机器人没有发生任何事情。
编辑:
一些代码更改。到目前为止,机器人将移动,但它不会停止。我的if和else语句是否不正确?
center = getObstacle(1)
def main():
if (center < 5400):
forward(0.5)
else:
stop()
答案 0 :(得分:0)
所以你的病情应该是:
if (left < 6400 and center < 6400 and right < 6400):
forward(1,1)
else:
stop()
答案 1 :(得分:0)
听起来你和原始代码很接近:
def main():
while True:
left = getObstacle(0)
center = getObstacle(1)
right = getObstacle(2)
#lir = getIR(0)
#rir = getIR(1)
if (left < 6400 and center < 6400 and right < 6400):
forward(1, 0.1)
else:
stop()
break
此循环测量left
,center
和right
和每次循环执行比较。我已将forward
的调用修改为仅在进行更多测量之前移动十分之一秒。此外,当不满足条件时,机器人和环路都会停止。
顺便说一下,您似乎没有使用lir
和rir
。